syslog协议

简介

  • syslog协议属于一种主从式协议,通常被用于信息系统管理及信息安全审核。虽然它有不少缺陷,但仍获得相当多的设备及各种平台的接收端支持。因此syslog能被用来将来自许多不同类型系统的日志记录集成到集中的存储库中。

协议内容

  • syslog格式为一个长字符串,整个数据报分为三个部分:PRIHEADERMSG
    • PRI: 只能为3、4、5个字符,并且以小于符号开始,以大于符号结束,中间为一个1到3位的数字
    • HEADER: 由TimeStampHostName组成。HEADER部分紧跟PRI,中间没有空格。TimeStampHostName之间间隔一个空格。HostName后面紧跟一个空格。
      • TimeStamp: 字段使用local time,格式为:Mmm dd hh:mm:ss
      • Mmm: 是英语月份的单词缩写,例如:Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
      • dd: 某个月的多少号,固定宽度2个字符,不足两个字符在数字前面用空格填充。
      • hh:mm:ss: 本地时间
        • hh: 24时制的小时,在00-23之间
        • mmss: 分和秒,在00-59之间
      • HostName: 该字段为主机的hostname。该字段后面紧跟一个空格
    • MSG: 该字段又两部分组成: TAGCONTENT
      • TAG: 该字段的值为产生日志的程序名,即推送日志到外部系统的程序名(不超过32个字符)。TAG后面紧跟一个用中括号包含着的pid,即[pid],并且再追加一个:,pid为该推送程序的进程号
      • CONTENT: 该字段为具体的日志内容
  • 综上,整个数据报为:
    1
    <xxx>Mmm dd hh:mm:ss hostname tag[pid]: xxxxxxxxx

rsyslog服务器配置

安装syslog服务

1
sudo yum install rsyslog -y

修改配置文件

1
2
3
4
5
6
7
8
9
$ModLoad imudp
$UDPServerRun 514

$ModLoad imtcp
$InputTCPServerRun 514

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *
*.* ?RemoteLogs
& ~

启动rsyslog服务生效

1
systemctl restart rsyslog

参考文献