参考 http://qicheng0211.blog.51cto.com/3958621/1624155


这里我们使用zabbix提供的'log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>]'来监控Linux的/var/log/secure文件。先介绍下这个log监控项:

    1)监控项类型是Zabbix agent (active),返回数据类型是Log。

    2)Zabbix agent要对监控的日志文件有可读权限,否则会返回unsupported。

    3)参数介绍:

    file - 日志文件的全路径。
    regexp - 过滤日志的正则表达式。
    encoding - 字符编码,默认为英文单字节SBCS(Single-Byte Character Set)。

    maxlines - agent每秒发送给server(或proxy)的数据的最大行数,这个参数会覆盖掉zabbix_agentd.conf配置文件里的'MaxLinesPerSecond'参数。

    mode - 可填参数:all(默认),skip(跳过旧数据)。
    output - 自定义格式化输出,默认输出regexp匹配的整行数据。转义字符'\0'表示regexp

匹配的数据,转义字符'\N'(N=1..9)表示regexp里第N个分组匹配到的数据。如果填其他字符串就会覆盖掉regexp匹配的数据。

一、创建日志监控item

选择“Template OS Linux”模板,创建监控项item,配置如下:

wKiom1gRlFzBbJRQAAB2qpxcdcY944.png-wh_50

 Name - 填"Login attempt"

    Type - 选择Zabbix agent (active)

    Type of information - 数据类型选择Log

    Update interval (in sec) - 监控间隔60秒


    Key - 填写如下:


log[/var/log/secure,"(Failed) password",,,skip,]     ##  过滤/var/log/secure中的失败的用户登录请求(这里只过滤密码验证方式的登录)。

二、创建触发器trigger

    我们继续选择“Template OS Linux”模板,为上面的监控项创建触发器。

    1、用户登录失败的触发器配置

wKioL1gRlKPwkG97AABf_o6DXkk244.png-wh_50

Name - 填"Login attempt has failed"

    Expression - 填写如下:

{Template OS Linux:log[/var/log/secure,"(Failed) password",,,skip,].str(Failed)}=1

表达式的含义为:如果用户登录失败了,item返回数据中会包含"Failed",则触发器被触发,

wKioL1gRlQDCt_2cAABPOR20UEs174.png-wh_50

{Template OS Linux:log[/var/log/secure,"(Failed) password",,,skip,].nodata(60)}=0  代表意思是:

60秒内没有新数据的话,触发器恢复。这样就保证了触发器不会一直在触发状态。


注意这两个写在一起会报错,所以分开写了!

2  设置告警 详情见 http://825536458.blog.51cto.com/4417836/1775379

三、Linux客户端配置

1、保证两个Hostname一致

    第一个Hostname是指zabbix_agentd.conf配置文件中的"Hostname"参数;第二个Hostname是指主机配置里的"Host name"。


2 设置日志文件的权限

    /var/log/secure的权限一般是600,zabbix agent对此文件没有权限。zabbix用户是agent的启动用户,所以我们要设置zabbix用户对/var/log/secure有可读权限,这样agent才能监控。

    执行下面的命令,追加zabbix的可读权限:

chmod 755 /var/log/secure



最后可以在lastedata 里面查看产生的日志数据

wKioL1gRllSjZubzAAAq4JcA8EE108.png

注意: 如果发现/var/log/secure 不记录日志了,则重启 service rsyslog restart这个服务