zabbix log(logrt) key的使用

今天看了篇帖子是关于如何利用zabbix 自带的key去读log,监控linux异常登录,一直以来都是本身写脚本去读log的.就想看看这个zabbix log 这个key怎么样..
好吧开始:linux

官方文档: 英语好的去看吧  web

首先: log(logrt) key 只支持 active 模式....ssh

那么编码

1.启动active 模式的agentspa

sed -i s/^ServerActive=.*/ServerActive=192.168.1.17/ /etc/zabbix/zabbix_agentd.conf
sed -i s/^Hostname=.*/Hostname=log_test/  /etc/zabbix/zabbix_agentd.conf
sed -i /StartAgents=3/aStartAgents=0  /etc/zabbix/zabbix_agentd.conf

  修改 配置中的IP为本身的IP
  修改 Hostname为本身的name日志

2.添加host
  Hostname 是上边的hostname
  IP是0.0.0.0 端口不要改
  其余的随意,根据我的需求code

过了20分钟Availability图标都没亮,作了个zabbix Agent 的active 模式的template 加了进去仍是不亮, 
最后搞了个Template OS Linux Active ..Availability图标亮了, 把link Template 取消了还亮着..
(应该是有数据获取到了才会亮.亮了不出问题是不会暗....) 好吧咱们继续..

咱们来显示登录异常的提醒:regexp

3. Linux 登录异常的log文件在: /var/log/secureorm

Sep 22 03:38:57 web2 sshd[1587]: Accepted publickey for root from 192.168.1.156 port 52626 ssh2
Sep 22 05:15:55 web2 sshd[1878]: Failed password for root from 192.168.1.17 port 49665 ssh2

  #这是secure的一段,登录成功和失败的.server

4. log key的格式

log[/path/to/file/file_name,<regexp>,<encoding>,<maxlines>,<mode>,<output>]
or
logrt[/path/to/file/regexp_describing_filename_pattern,<regexp>,<encoding>,<maxlines>,<mode>,<output>]

上边是官方文档的解释:很详细...也有样例...

第一部分:/path/to/file/file_name log文件的路径
第二部分: <regexp> 正则匹配
第三部分: <encoding> 文件的编码格式
第四部分: <maxlines> agent每秒发送给server的最大行数
第五部分: <mode> 模式
第六部分: <output> 可选的输出格式

Zabbix agent will filter entries of the log file by the content regexp, if present.
Make sure that the file has read permissions for the 'zabbix' user otherwise the item status will be set to 'unsupported'.
For more details see log and logrt entries in the supported Zabbix agent item keys section.
再看看官档的解释: 若是 regexp 部分存在的话,zabbix agent会去使用regexp去过滤日志文件的内容
确保zabbix对日志有可读权限

5. 建立item
  name 随便起个
  type  要选择 zabbix agent(active)
  key 咱们点击 select选择log[......] file 改为咱们的日志文件/var/log/secure
  Type of Information 选择log
  其余的随意了
  如图:

    
看看item 没报错就正常了,这里应该会报错,缺乏对log文件的读权限
实验我只是作了简单的赋权:

chown zabbix.zabbix /var/log/secure

好了没什么问题了!

6. 建立个trigger  

  name 随便写个
  Expression:

{log_test:log[/var/log/secure,"Failed password"].str(Failed)}=1 and  {log_test:log[/var/log/secure,"Failed password"].nodata(60)}=0

  # item 获取的值中出现Failed 就报警, 若是60s 无数据就恢复.

  Severitey 选择 Warning

好了一切都完成了....
模拟个失败登录试试.....

这是获取的数据...

邮件也收到了报警..(前提是你要配置了邮件..)

完成了...

好了这个只是简单的模拟了log的用法..咱们匹配了Failed 咱们也能够配置 key( log[/var/log/secure,"(Accepted|Failed) password"])  trigger相应改下.根据不一样的需求能够作响应的改变.output能够改变输出的结果 像第六步那张表, 输出的都是截取到的内容,你能够让输出0,1 任何这样就能够作一些其余的用途了.有人问这个东西读日志的效率,没找到读日志具体的描述,我以为效率不会过低,应该和tail -f 一个原理...对于不会写脚本去分析日志来讲这个已经很简单了...

相关文章
相关标签/搜索