zabbix log(logrt) key的使用
今天看了篇帖子是关于如何利用zabbix 自带的key去读log,监控linux异常登陆,一直以来都是自己写脚本去读log的.就想看看这个zabbix log 这个key怎么样..
好吧开始:
首先: log(logrt) key 只支持 active 模式....
那么
1.启动active 模式的agent
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 端口不要改
其他的随意,根据个人需求
过了20分钟Availability图标都没亮,做了个zabbix Agent 的active 模式的template 加了进去还是不亮,
最后搞了个Template OS Linux Active ..Availability图标亮了, 把link Template 取消了还亮着..
(应该是有数据获取到了才会亮.亮了不出问题是不会暗....)
好吧我们继续..
我们来显示登陆异常的提醒:
3. Linux 登陆异常的log文件在: /var/log/secure
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的一段,登陆成功和失败的.
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 一个原理...对于不会写脚本去分析日志来说这个已经很简单了...