我们这里不解释如何配置你的syslogconf,rsyslogconf或者syslog-ngconf来发送数据,而只讲如何把 logstash 配置成一个 syslog 服务器来接收数据。
配置示例
运行结果
作为最简单的测试,我们先暂停一下本机的syslogd(或rsyslogd)进程,然后启动 logstash 进程(这样就不会有端口冲突问题)。现在,本机的 syslog 就会默认发送到 logstash 里了。我们可以用自带的logger命令行工具发送一条 "Hello World"信息到 syslog 里(即 logstash 里)。看到的 logstash 输出像下面这样:需要在/etc下增加一个syslogconf配置文件,具体方式如下:
etc/syslogconf
/etc/syslogconf 文件使用下面的格式:
facilitylevel action
facilitylevel为选择条件本身分为两个字段,之间用一个小数点()分隔。前一字段是一项服务,后一字段是一个优先级。选择条件其实是对消息类型的一种分类,这种分类便于人们把不同类型的消息发送到不同的地方。在同一个syslog配置行上允许出现一个以上的选择条件,但必须用分号(;)把它们分隔开。action字段所表示的活动具有许多灵活性,特别是,可以使用名称管道的作用是可以使 syslogd 生成后处理信息。
要素分析:
facility 指定 syslog 功能,主要包括以下这些:
kern 内核信息,首先通过 klogd 传递;
user 用户进程;
mail 邮件;
daemon 后台进程;
authpriv 授权信息;
syslog 系统日志;
lpr 打印信息;
news 新闻组信息;
uucp 由uucp生成的信息
cron 计划和任务信息。
mark syslog 内部功能用于生成时间戳
local0----local7 与自定义程序使用,例如使用 local5 做为 ssh 功能
通配符代表除了 mark 以外的所有功能
level 指定syslog优先级:
syslog 级别如下:(按严重程度由高到低的顺序列出了所有可能的优先级。)
emerg 或 panic 该系统不可用(最紧急消息)
alert 需要立即被修改的条件(紧急消息)
crit 阻止某些工具或子系统功能实现的错误条件(重要消息)
err 阻止工具或某些子系统部分功能实现的错误条件(出错消息)
warning 预警信息(警告消息)
notice 具有重要性的普通条件(普通但重要的消息)
info 提供信息的消息(通知性消息)
debug 不包含函数条件或问题的其他信息(调试级-信息量最多)
none 没有重要级,通常用于排错(不记录任何日志消息)
所有级别,除了none
Application 中定义level:
0: LOG_EMERG
1: LOG_ALERT
2: LOG_CRIT
3: LOG_ERR
4: LOG_WARNING
5: LOG_NOTICE
6: LOG_INFO
7: LOG_DEBUG
kernel中定义level(使用printk函数设定level):
0: KERN_EMERG, 系统无法使用
1: KERN_ALERT, 必须立即执行
2: KERN_CRIT, 紧急状态
3: KERN_ERR, 错误状态
4: KERN_WARNING, 警告状态
5: KERN_NOTICE, 正常状态且十分重要
6: KERN_INFO, 报告
7: KERN_DEBUG, debug-level讯息
例子:
“mail”将发送所有的消息,“mail!info”把info优先级的消息排除在外。
mail;mail!info /var/log/mail
下面的规则指定Facility为mail,Severity为err以上级别的日志写入/var/log/mailerr文件,而err以下级别的日志则被忽略:
mailerr /var/log/mailerr
facility和level可以使用通配符,也可以指定多个,用逗号隔开:
auth,authpriv /var/log/authlog
Facility和level的组合可以有多个,用分号隔开,文件前面加一个减号表示日志不立即写入文件,而是在缓冲中积攒到一定的条件再写,这样 可以提高性能,但是当机可能会丢失数据:
;auth,authprivnone -/var/log/syslog
可以把syslog消息通过UDP发送到syslog服务器的514端口:
err @19216801
发生错误时,在控制台打屏:
err /dev/console
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)