syslog命令

By admin in 百科 on 2019年10月14日

更多请关注 Linux命令大全

大奖888网页版登陆 1

syslog 介绍

syslog是Linux系统默认的日志守护进程。默认的syslog配置文件是/etc/syslog.conf文件。程序,守护进程和内核提供了访问系统的日志信息。因此,任何希望生成日志信息的程序都可以向
syslog 接口呼叫生成该信息。
几乎所有的网络设备都可以通过syslog协议,将日志信息以用户数据报协议(UDP)方式传送到远端服务器,远端接收日志服务器必须通过syslogd监听UDP
端口514,并根据
syslog.conf配置文件中的配置处理本机,接收访问系统的日志信息,把指定的事件写入特定文件中,供后台数据库管理和响应之用。意味着可以让任何事件都登录到一台或多台服务器上,以备后台数据库用off-line(离线)
方法分析远端设备的事件。 通常,syslog
接受来自系统的各种功能的信息,每个信息都包括重要级。/etc/syslog.conf
文件通知 syslogd 如何根据设备和信息重要级别来报告信息。 

三种方式:unix域套接字、udp端口514以及特殊的设备/dev/klog  

关于syslog协议介绍

在Unix类操作系统上,syslog广泛应用于系统日志。syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器。接收syslog的服务器可以对多个设备的syslog消息进行统一的存储,或者解析其中的内容做相应的处理。常见的应用场景是网络管理工具、安全管理系统、日志审计系统。

完整的syslog日志中包含产生日志的程序模块(Facility)、严重性(Severity或
Level)、时间、主机名或IP、进程名、进程ID和正文。在Unix类操作系统上,能够按Facility和Severity的组合来决定什么样的日志消息是否需要记录,记录到什么地方,是否需要发送到一个接收syslog的服务器等。由于syslog简单而灵活的特性,syslog不再仅限于
Unix类主机的日志记录,任何需要记录和发送日志的场景,都可能会使用syslog。

长期以来,没有一个标准来规范syslog的格式,导致syslog的格式是非常随意的。最坏的情况下,根本就没有任何格式,导致程序不能对syslog
消息进行解析,只能将它看作是一个字符串。

在2001年定义的RFC3164中,不过这个规范的很多内容都不是强制性的,常常是“建议”或者“约定”,也由于这个规范出的比较晚,很多设备并不遵守或不完全遵守这个规范。接下来就介绍一
下这个规范。

约定发送syslog的设备为Device,转发syslog的设备为Relay,接收syslog的设备为Collector。Relay本身也可以发送自身的syslog给Collector,这个时候它表现为一个Device。Relay也可以只转发部分接收到的syslog消息,这个时候它同时表现为Relay和Collector。

syslog消息发送到Collector的UDP 514端口,不需要接收方应答,RFC3164建议
Device
也使用514作为源端口。规定syslog消息的UDP报文不能超过1024字节,并且全部由可打印的字符组成。完整的syslog消息由3部分组成,分别是PRI、HEADER和MSG。大部分syslog都包含PRI和MSG部分,而HEADER可能没有。

大多数出现调用syslog向/dev/log这个套接字发送日记消息。

syslog 使用方法

在/var/log中创建并写入日志信息是由syslog协议处理的,是由守护进程sylogd负责执行。每个标准的进程都可以用syslog记录日志。可以使用logger命令通过syslogd记录日志。
要向syslog文件/var/log/messages中记录日志信息:

logger this is a test log line 

输出: 
tail -n 1 messages 
Jan 5 10:07:03 localhost root: this is a test log line

如果要记录特定的标记(tag)可以使用:

logger -t TAG this is a test log line 
输出: 
tail -n 1 messages 
Jan 5 10:37:14 localhost TAG: this is a test log line

 

Device:发送syslog的设备

Relay:转发syslog的设备(Relay可能只是转发部分接收到的syslog消息,它同时表现为Relay和Collector)

Collector:接收syslog的设备

syslog消息的udp报文不能超过1024字节。

完整的syslog日志中包含日记的程序模块(Facility)、严重性(Severity |
Level)、时间、主机名或ip、进程名、进程id和正文

大奖888网页版登陆,完整的syslog消息由3部分组成,分别是PRI、HEADER和MSG(<30>Oct 9
22:33:20 hlfedora auditd[1787]: The audit daemon is
exiting.),PRI:<30>。HEADER:Oct9…hlfedora。

PRI部分是由程序模块(Facility)<<3 | 严重性(Severity)组成:换句话说
Facility可以有32种,Severity可以有8种。

 Numerical        Facility
         Code
          0             kernel messages
          1             user-level messages
          2             mail system
          3             system daemons
          4             security/authorization messages (note 1)
          5             messages generated internally by syslogd
          6             line printer subsystem
          7             network news subsystem
          8             UUCP subsystem
          9             clock daemon (note 2)
         10             security/authorization messages (note 1)
         11             FTP daemon
         12             NTP subsystem
         13             log audit (note 1)
         14             log alert (note 1)
         15             clock daemon (note 2)
         16             local use 0  (local0)
         17             local use 1  (local1)
         18             local use 2  (local2)
         19             local use 3  (local3)
         20             local use 4  (local4)
         21             local use 5  (local5)
         22             local use 6  (local6)
         23             local use 7  (local7)

Numerical         Severity
        Code
         0         Emergency: system is unusable
         1         Alert: action must be taken immediately
         2         Critical: critical conditions
         3         Error: error conditions
         4         Warning: warning conditions
         5         Notice: normal but significant condition
         6         Informational: informational messages
         7         Debug: debug-level messages

HEADER部分包括两个字段:时间和主机名

MSG部分分为两个部分:TAG和Content;TAG包含程序名称和进程PID,TAG后面用一个冒号隔开Content部分

RFC3195:用tcp代替udp,进行可靠的syslog消息

Facility(类型)在配置文件中的名字如下:

 

facility参数

syslog.conf中对应的facility取值

LOG_KERN

kern

LOG_USER

user

LOG_MAIL

mail

LOG_DAEMON

daemon

LOG_AUTH

auth

LOG_SYSLOG

syslog

LOG_LPR

lpr

LOG_NEWS

news

LOG_UUCP

uucp

LOG_CRON

cron

LOG_AUTHPRIV

authpriv

LOG_FTP

ftp

LOG_LOCAL0~LOG_LOCAL7

local0~local7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Severity(级别)在配置文件中的名字如下:

 

priority参数

syslog.conf中对应的level取值

LOG_EMERG

emerg

LOG_ALERT

alert

LOG_CRIT

crit

LOG_ERR

err

LOG_WARNING

warning

LOG_NOTICE

notice

LOG_INFO

info

LOG_DEBUG

debug

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

基本语法格式

类型.级别[;类型.级别]  动作

news.=crit  /var/log/news.crit

‘=’特殊符号,如果存在说明只有本Severity的消息才进行处理,如果不存在则处理本Severity及其以下级别的消息

‘;’表示&&、’!’表示取反、’*’表示所有

动作:表示信息发送的目的地

  可以是日记文件(绝对路径),如果文件名前面加上减号表示不将日志信息同步刷新到磁盘上(使用写入缓存),这样可以提高日志写入性能,但是增加了系统崩溃后丢失日志的风险

  可以是远程主机(@host,host可以是ip或域名,默认在/etc/hosts文件下loghost这个别名已经指定给本机)

  可以是指定用户(user1,user2),如果指定用户已登入,那么他们将收到消息

客户端有两种方式开发:

   完全基于协议从底层开发,也就是直接写unix域套接字或者向UDP514发送定制消息

   基于库函数供上层应用使用

logrotate:日志文件会随着日志的增加而不断增大,从而带来效率的问题和空间使用问题,在常年运行的服务器上面,通常会有logrotate程序定期进行日志文件的轮替和删除工作。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 大奖888网页版登陆 版权所有