rsyslogd系统日志服务总结

简单介绍

  • syslog系统日志服务协议,标准出来的比较晚
  • 用于记录系统日志或者用户程序产生的日志
  • 采用C/S架构,本地可以通过socket和syslogd守护进程通讯,远程通过TCP/UDP协议通信,支持加密,默认端口是514
  • 除了可以记录本地日志之外,还可以作为中继器(relay转发)或者接收器(collector)接收来自支持syslog协议客户端的日志
  • CentOS6.0后,使用rsyslogd代替syslogd,rsyslogd是对syslogd的增强和扩展
  • rsyslogd支持文件写入本地文件,也支持写入关系型数据库,或者写入Kafka以及hdfs
  • 注意
    • 如果日志信息包含多行,每一行是syslog的一个msg,对于整体分析会有问题
  • syslog整体架构

  • rsyslogd内部实现


(图片来源rsyslog官方文档)

syslog格式

  • HEADER MSG
  • <>包含的是Facility+Severity
  • HEADER部分包含 时间 + host/ip
  • MSG是具体的消息内容

syslog配置文件

  • 每一行表示一个项目,格式为:facility.level action
  • 常见的facility有:
    • kern: 内核信息
    • user: 用户进程相关信息
    • mail: 电子邮件相关信息
    • daemon: 后台进程相关信息
    • authpriv: 包括特权信息如用户名在内的认证活动等
    • cron: 计划任务信息
    • syslog: 系统日志信息
  • 重要级(按严重程度由低到高排序):
    • debug: 调试信息
    • info: 打印的信息
    • none: 没有重要级,通常用于排错
    • notice: 具有重要信息的普通条件
    • warning: 警告信息
    • err: 错误信息
    • crit: 阻止某些工具或子系统功能实现的错误条件
    • alert: 需要立即被修改的条件
    • emerg: 该系统不可用
  • 操作动作
    • 文件
    • 远程日志服务
    • 其他存储
# /etc/rsyslog.conf

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# php-fpm daemon messages
if $syslogfacility-text == "daemon" and $programname == "php-fpm"  then /var/log/php-fpm-error.log

# php error messages
if $syslogfacility-text == "user" and $programname == "php" then /var/log/php-error.log

  • 重启rsyslogd服务(CentOS7)
[root@wadeyu ~]# systemctl restart rsyslog

参考资料

原文地址:https://www.cnblogs.com/wadeyu/p/10726421.html