zabbix日志监控:操作系统、业务系统、文件大小、多行日志
监控Linux操作系统日志:以采集服务器的/var/VRTSvcs/log/engine_A.log举例:前提:采集服务器已部署agent,并且被监控的操作系统日志文件要赋予o+r权限
(1)确认采集服务器的监控状态
(2)为采集服务器制作自定义监控日志文件的模板
(3)在配置->主机位置填写宏,然后选择更新
(4)在监测中->最新数据查看结果
(5)可以在被监控的日志文件添加一个带有“error”的内容,测试监控日志是否成功。
利用zabbix agent监控windows系统下的应用自增日志且按需配置关键字告警
场景概览:公司运维部门使用自建zabbix平台对公司某业务系统进行了监控。近段时间,该业务系统同事反映某应用平台提供服务时,经常发生应用页面404的情况,需要对该情况及时发现,并且能保留历史发生记录,希望运维人员协助他们进行此类日志监控。
(1) 日志文件以自增的方式产生,具有固定格式如ITSM-2022-09-26.log
(2) 需要对新增日志监控频率达到每分钟一次
(3)平台产生日志内容为 windows简体中文编码
(1)日志文件名每日更新,无法使用常用监控项log[*]
(2)日志文件产生的路径固定,且该路径下只有日志文件,文件名格式固定为ITSM-XXXX-XX-XX.log
(3)日志文件编码为windows简体中文,可预设为GB2312编码格式
(1) 新建模板
(2)创建监控项
(3) 主机关联此模板,然后填写宏,填入路径参数及关键字参数
(4) 等待监控数据
(5)如有需要,可对监控项配置触发器进行关键字告警
下面将为大家讲解如何使用Zabbix创建自定义键值监控项,以监控系统日志文件大小。
① 解压agent包
[root@localhost sbin]# tar xvf zabbix_agent-6.2.2-linux-3.0-amd64-static.tar.gz
② 编写配置文件,修改参数
[root@localhost sbin]# vim /root/conf/zabbix_agentd.conf
其中参数含义:
Server=192.168.109.181 \#zabbix server ip
ServerActive=192.168.109.181 \# zabbix server ip
Hostname=192.168.109.149 \#本主机名
HostMetadataItem=system.uname \#获取自身操作系统参数信息
AllowRoot=1 \#运行以root用户运行agent
③ 运行启动命令
[root@localhost sbin]\# /root/sbin/zabbix_agentd -c /root/conf/zabbix_agentd.conf
④ 使用ss -tnl检测10050端口是否存在,若存在即安装成功
① 在agent配置文件添加自定义键值
`[root@localhost sbin]\# vim /root/conf/zabbix_agentd.conf`
其中参数含义:
test #自定义键值的名称
du -sh /var/log/messages|awk ‘{print $1}’ #获取数据所运行的命令或者是脚本,这里是命令
② 重启agent
[root@localhost sbin]\# ps -ef\|grep zabbix
[root@localhost sbin]\# kill 11881
[root@localhost sbin]\# /root/sbin/zabbix_agentd -c /root/conf/zabbix_agentd.conf
注:其他部署方式:如何快速部署zabbix-agent客户端
① 点击“配置”—> “主机” ,查询刚刚上线的被管节点的IP,最后点击监控项
② 点击“创建监控项”
“名称” 可以自定义
“类型” 选择zabbix客户端或者zabbix客户端(主动式)
“键值” 填写上面我们在agent配置文件填写的自定义键值的名称
最后点击“添加”
① 点击 “检测”à “最新数据” à 筛选刚刚添加的被管节点以及监控项
② 如图,Zabbix监控系统文件日志大小已成功实现
通过Python对Zabbix进行日志监控,要求记录脚本日志位置避免出现重复告警,关键字的正则匹配和支持多关键字查询。
通过Python脚本实现日志监控,要求
(1)记录脚本检查日志位置,避免下次触发脚本的时候出现重复告警
(2)关键字匹配支持正则
(3)支持多个关键字查询,例如第一个关键字匹配到当之后在这个关键字的下N行再去匹配第二个关键字
具体传参格式:
python3 npar.py /u03/z.txt '(ORA-\|REEOR),(04030\|02011)' 2
第一个参数是日志路径,第二个参数是关键字,第三个参数为匹配到第一个表达式这种的关键字后再去地 N(2)行去匹配第二个关键词(04030|02011),具体脚本实现如下:
import os
import sys
logtxt="logtxt.txt"
def read_txt(files,start_line):
data =[]
data.append("")
with open(str(files)+"", "r", encoding='UTF-8') as f:
for line in f.readlines():
line = line.strip('\n') #去掉列表中每一个元素的换行符
data.append(line)
#记录本次的行数
wirte_log(len(data)-1)
if len(data)>start_line:
return data[start_line-1:]
else:
print("开始行数大于文本文件总行数!")
def wirte_log(lines):
global logtxt
with open(logtxt,"w") as file: #”w"代表着每次运行都覆盖内容
file.write(str(lines))
def read_log():
global logtxt
if not os.path.exists(logtxt):
with open(logtxt,"w") as file: #”w"代表着每次运行都覆盖内容
file.write(str(1))
with open(logtxt+"", "r", encoding='UTF-8') as f:
s_lines = f.readlines()
print("从第"+str(s_lines[0])+"行开始")
return s_lines[0]
def deal_read_log(files, keyword, interval_line):
keywords = keyword.replace("(","").replace(")","").replace("'","").replace('"','"').split(',')
start_keywords=keywords[0].split("|")
end_keywords = keywords[1].split("|")
start_line=read_log()
lines_data = read_txt(files,int(start_line))
for_line=1
while(for_line
接下来就是添加监控了。
在agent的conf 文件里面添加UserParameter。
以上就是这一期zabbix日志监控的全部内容,谢谢观看。
排版: 玩具熊
初审: 王乐平
复审: 二月二
本文内容来源乐维社区文章,本工作室二次编辑,如有侵权,请联系我们。
参考来源:
zabbix监控操作系统日志
zabbix6.0监控业务日志
Zabbix技术分享——使用Zabbix监控系统日志文件大小
Python脚本优化-Zabbix多行日志监控