Unix/Linux系统中的大部分日志都是经过一种叫作syslog的机制产生和维护的。Syslog是一种标准协议,分为客户端和服务端,客户端是产生日志消息的一方,而服务器端负责接收客户端发送来的日志消息。数据库
几乎全部的网络设备均可以经过syslog协议,将日志信息经过UDP方式传送到远端服务器,远端接收日志服务器必须经过syslogd监听UDP端口514。服务器
Linux系统根据 syslog.conf配置文件中的配置处理本机接收访问系统的日志信息,把指定的事件写入特定文件中,供后台数据库管理和响应之用。网络
Linux系统syslog配置文件:/etc/syslog.conf架构
配置格式:facility.level action函数
facility指syslog功能,及收集那些日志主要有工具
kern:内核信息,首先经过klogd传递;测试
user:用户进程;spa
mail:邮件;debug
daemon:后台进程;调试
authpriv:受权信息;
syslog:系统日志;
lpr:打印信息;
news:新闻组信息;
uucp:由uucp生成的信息;
cron:计划和任务信息;
mark:syslog内部功能用于生成时间戳;
local0---local7:自定义程序使用;
*: 通配符表明除了mark之外的全部功能。
level指定syslog优先级
emerg/panic:“该系统不可用”(最紧急消息)
alert:须要当即被修改的条件(紧急消息)
crit:阻止工具或子系统功能实现的错误条件(重要消息)
err: 阻止工具或子系统部分功能实现的错误条件(出错消息)
warning: 预警信息(警告消息)
notice: 具备重要性的普通条件(普通但重要的消息)
info: 提供信息的消息(通知性消息)
debug: 不包含函数条件或问题的其余信息(调试级-信息量最多)
none: 没有重要级,一般用于排错(不记录任何日志消息)
*: 全部级别,除了none
action指定记录日志活动
1. /var/log/lastlog:记录每一个使用者最近签入系统的时间,能够经过lastlog命令读取。(root用户最近登录信息:lastlog -u root)
2. /var/run/utmp:记录每一个用户签入系统的时间, who, users, finger 等指令会查这个档案。
3. /var/log/wtmp:记录每一个使用者签入及签出的时间, last 这个指令会查这个档案. 这个档案也记录 shutdown 及 reboot 的动做。
4. /var/log/secure:登录系统的信息。
5. /var/log/maillog:记录sendmail和pop等相关讯息。
6. /var/log/cron : 记录 crontab 的相关讯息 ,定时器的信息。
7. /var/log/dmesg : /bin/dmesg 会将这个档案显示出来, 它是开机时的画面讯息。
8. /var/log/xferlog : 记录那些位址来 ftp 拿取那些档案。
9. /var/log/messages : 系统大部份的讯息皆记录在此, 包括 login, check password , failed login, ftp, su 等。
10. @192.168.0.1:UDP发送到指定syslog服务端的514端口上。
配置实例
syslogd守护进程
syslogd –r:执行该命令后syslogd 将会监遵从 514 端口上进来的 UDP 包。
syslogd –h:执行该命令后syslogd日志服务器能传送日志信息。
klogd守护进程
klogd 守护进程得到并记录 Linux 内核信息。
1. 编辑服务器syslog配置文件
编辑/etc/sysconfig/syslog文件,配置“SYSLOGD_OPTIONS”如:SYSLOGD_OPTIONS="-r-x-m240",-r表示容许接受外来日志,-x表示不起解析其余机器的FQDN,-m240表示每一个240分钟在日志文件中出现一次时间戳标志信息。
2. 重启syslogd守护进程
/etc/rc.d/init.d/syslog stop; /etc/rc.d/init.d/syslog start
或者
/etc/rc.d/init.d/syslog restart
3. 运行514端口经过防火墙
4. 为中央日志服务器配置客户机
1)编辑客户机上的/etc/syslog.conf文件,在有关配置行的操做动做部分用一个“@”字符指向中央日志服务器,例如:
2)另外一种办法是在DNS里定义一个名为“loghost”的机器,而后对客户机的syslog配置文件作以下修改(这个办法的好处是:当你把中央日志服务器换成另外一台机器时,不用再修改每个客户机上的syslog配置文件)
接下来,从新启动客户机上的syslog守护进程让修改生效。
测试日志收集
在客户机上面配置好:
/etc/syslog.conf
重启守护进程
/etc/rc.d/init.d/syslog restart
而后咱们再编写一个c程序用来产生日志消息
先对程序进行编译gcc -o syslog syslog.c
而后运行程序./syslog
而后咱们进入服务器端查看配置,除了mail/authpriv等信息都会被记录到/var/log/messages日志中。
查看/var/log/messages日志。
到这里咱们配置以及完成了测试成功。
下面看一下c程序中用到的方法和参数。
方法:openlog()3个参数
第一个参数:日志记录标志字符串。
第二个参数:下面标志位组合
LOG_CONS:日志信息在写给日志服务器的同时打印到终端
LOG_NDELAY:当即记录日志
LOG_PERROR:把日志信息也输出到标准错误流
LOG_PID:在标志字段中记录进程的PID值
第三个参数:说明日志类型(跟咱们配置的news类型消息发送到服务器端对应)
方法syslog()
第一个参数:日志级别
第二个之后的参数:相似于pringf方法相似,输出日志内容。
方法closelog() 关闭日志记录。