系统管理 - 日志分析
当一个进程出现错误的时候,进程可以会有三种方式去发送日志:
- stderr (标准错误输出)
- a file (一个文件中)
- syslog (系统日志)
一、标准错误输出设备(stderr)
标准输出(设备)文件,对应终端的屏幕。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。在C中,程序执行时,一直处于开启状态。
fprint(stderr, "an error message!!!");
二、日志文件(log file)
许多进程会将日志文件传递给一个日志文件,如apache中log目录, tomcat中的log目录catlin.out,具体软件可以通过相应文档获得。你可以使用
tail -f xxx.log
命令获得实时的文件输出信息。
三、syslog
向编程人员、系统管理人员提供了一个函数接口
#include <syslog.h>
每一个syslog由三部分组成: 设备(facility),优先级(priority) 和 消息(message)。 /var/log
$ tail /var/log/mail.log Aug 17 10:25:42 front01 postfix/smtpd[25791]: connect from unknown[115.77.XXX.XXX] Aug 17 10:25:43 front01 postfix/smtpd[25791]: NOQUEUE: reject: RCPT from unknown[115.77.XXX.XXX]: 554 5.7.1 Service unavailable; Client host [115.77.XXX.XXX] blocked using truncate.gbudb.net; http://www.gbudb.com/truncate/ [115.77.XXX.XXX]; from=<supsi@yahoo.com> to=<synack@XXX.XXX> proto=ESMTP helo=<XXX.viettel.vn> Aug 17 10:25:43 front01 postfix/smtpd[25791]: lost connection after RCPT from unknown[115.77.XXX.XXX] Aug 17 10:25:43 front01 postfix/smtpd[25791]: disconnect from unknown[115.77.XXX.XXX]
每一个消息都从一个时间磋开始,后跟从哪个设备来服务器名,哪个进程的名字,PID,以及消息
syslog 的进程端口是UDP 514
四、日志滚动(log rotation)
为了保证日志总是最近的,使用了日志滚动技术,将过期的日志压缩保存起来。主要的配置文件/etc/logrotate.conf
# sample logrotate configuration file compress /var/log/messages { rotate 5 weekly postrotate /sbin/killall -HUP syslogd endscript } "/var/log/httpd/access.log" /var/log/httpd/error.log { rotate 5 mail foo@bar.org size=100k sharedscripts postrotate /sbin/killall -HUP httpd endscript }
五、主流的日志分析工具与平台
Splunk, Logstash, Loggly
日志管理工具:收集,解析,可视化
- Elasticsearch:一个基于Lucene的文档存储,主要用于日志索引、存储和分析。
- Fluentd:日志收集和发出。
- Flume:分布式日志收集和聚合系统。
- Graylog2:具有报警选项的可插入日志和事件分析服务器。
- Heka:流处理系统,可用于日志聚合。
- Kibana:可视化日志和时间戳数据。
- Logstash:管理事件和日志的工具。
- Octopussy:日志管理解决方案(可视化/报警/报告)。

浙公网安备 33010602011771号