统计消息

没有什么比一些详细的统计消息更让我高兴的了。只要运行任何服务器或服务,无论在家里还是在办公室,我都想看看服务器一段时间内在处理什么。从版本3.1开始,下一代系统日志工具现在有了一个syslog-ng-ctl统计实用程序,它大大简化了获取日志文件的任务。版本3.1之前,想获取统计文件,你就得运行echo STATS | nc -U /var/run/syslog-ng.ctl。

由于我喜欢用正则表达式,对于syslog-ng-ctl统计消息的输出结果中的分号习以为常,因而我运行syslog-ng-ctl stats | sed 's|;|\t|g',以清理输出。

你输入上述命令行后有6列:SourceName、SourceID、SourceInstance、State、Type和 Number。

SourceName——来源的名称,比如:目的地、来源、全局或中央。
SourceID——你为来源赋予的识别号之前的例子是firewall_ddos_filter,其他例子会是d_mail和d_net_user等)
SourceInstance——来源实例的目的地,如文件名;或者程序来源sql)或目的地的应用程序名称。
State——对象的状态:a活动—目前处于活动状态,接收数据),d动态—目前没有持续可用),或o曾经活动,但停止接收孤立对象等消息)。
Type——统计消息的类型,比如:Processed,表示到达目的地的消息数量;Dropped,指丢失消息的数量;Stored,指存储在等待发送到目的地的消息列队中的消息数量;Suppressednot sent),指被抑制消息的数量;Stamp,指上一个发送消息的时间戳。下一代系统日志工具服务重置后,这些统计类型也被重置。
Number——消息数量。

日志轮询,日志轮询,日志轮询

该日志消息对你来说是不是够清楚?从长远来看,轮询消息日志可以让你避免麻烦。如果你不对日志轮询,日志磁盘空间只会越来越挤,最后把整个硬盘都塞满。日志轮询不但可以节省空间,还会使得搜索特定日期的日志文件更容易;如果你把没有设成日志轮询的50MB日志文件调出来,搜索特定日期的内容,就会很麻烦。logrotate位于/etc/logrotate.conf,具体要看使用的Linux发行版。因为本文不是介绍logrotate,最终配置是啥样因人而宜,下面给出的例子表明我怎样轮询日志文件:

/var/log/remote/*/ { rotate 5 weekly missingok create }

这会每个星期检查/var/log/remote/*/,轮询日志。日志轮询1个月;1个月后,我会使用cronjob实用工具,对旧日志进行TAR压缩,把它们转移到备份位置;旧日志会在那里再保存一个月,之后轮换掉。当然在公司环境下,按照管理或法规要求,日志会保存相应的很长时间;但是对于家庭环境而言,我觉得日志保存2个月够长了,足以为在此期间可能出现的任何问题排错。


相关内容