syslog
syslog服务
syslog是linux上的日志服务,目前很多 linux 发行版本已经使用 rsyslog 服务替换了 syslog 服务。系统各种日志通过syslog写入到指定的日志文件中。
syslog协议
syslog是syslog服务通过TCP或者UDP传送日志的协议,通常通过514端口通信。
最常见的是BSD格式的日志,还有IETF等协议
BSD格式的日期缺少时区与年份,虽然接收方通常可以根据其他信息完善。
IETF格式的结束标志不明确,在群晖日志中心处理时,如果使用TCP传送,需要以ASCII数字开头(代表长度)以空格结尾,后面再接标准IETF格式文本传输,以规避TCP粘包的问题。
以下是BSD协议的示例
<30>Oct 10 20:30:10 fedora auditd [1780]: The audit daemon is exiting<30>是PRI部分,代表Priority(优先级),取值范围0~191
Oct 10 20:30:10 fedora 是HEADER(报头部分),代表时间与主机名
PRI部分是由Facility与Level组成的,六位二进制,上三位表示Facility,下三位表示Level。
Priority=(Facility <<3) | Level
<< 左移
| 或
Facility主要用于表示日志的来源
LOG_AUTHPRIV security/authorization messages (private)
LOG_CRON clock daemon (cron and at)
LOG_DAEMON system daemons without separate facility value
LOG_FTP ftp daemon
LOG_KERN kernel messages (these can’t be generated from user processes)
LOG_LOCAL0 through LOG_LOCAL7 reserved for local use
LOG_LPR line printer subsystem
LOG_MAIL mail subsystem
LOG_NEWS USENET news subsystem
LOG_SYSLOG messages generated internally by syslogd(8)
LOG_USER (default) generic user-level messages
LOG_UUCP UUCP subsystemLevel通常表达日志的紧急程度
LOG_EMERG system is unusable
LOG_ALERT action must be taken immediately
LOG_CRIT critical conditions
LOG_ERR error conditions
LOG_WARNING warning conditions
LOG_NOTICE normal, but significant, condition
LOG_INFO informational message
LOG_DEBUG debug-level message群晖保存数据格式
群晖支持三种模式接收日志
BSD格式
这个格式的日期缺少时区与年份,虽然接收方通常可以根据其他信息完善。
IETF格式
似乎因为结束标志不明确,在群晖日志中心处理时,如果使用TCP传送,需要以ASCII数字开头(代表长度)以空格结尾,后面再接标准IETF格式文本传输,以规避TCP粘包的问题。
自定义格式,在下面的规则参数填写@可以接收到收到的全部字符串,具体@匹配规则文档里面说需要根据syslog-ng的网页填写。可惜我没能读懂4
配置正确输入格式
template(name="ForwardFormat" type="list") {
constant(value="<")
property(name="pri")
constant(value=">")
property(name="timestamp" dateFormat="rfc3339")
constant(value=" ")
# property(name="hostname")
constant(value="101.33.239.181")
constant(value=" ")
property(name="syslogtag" position.from="1" position.to="32")
property(name="msg" spifno1stsp="on" )
property(name="msg")
}配置加密(避免监听泄密)
# certificate files - just CA for a client
$DefaultNetstreamDriverCAFile /etc/rsyslog.d/ca.crt
# set up the action
$DefaultNetstreamDriver gtls
# use gtls netstream driver
$ActionSendStreamDriverMode 1
# require TLS for the connection
$ActionSendStreamDriverAuthMode anon