zabbix监控端口和日志

引言

zabbix作为强大的监控平台,除了普通的服务器的性能监控外,生产中还会涉及到对服务健康状况的实时监控,zabbix自身已封装了许多接口供运维人员使用,本文将重点介绍如何对端口及日志进行监控。以下的监控项都是针对zabbix agent(active)模式

监控端口

服务对外通信用到的端口是服务是否运行的一个重要标志,如果服务端口已固定,比如5017端口,则可以通过zabbix server端来对该端口进行实时检测,下面来看看具体操作:
1.创建一个全新的模板
在这里插入图片描述

名字可任取,Group一栏代表该模板所在的组,也可以不添加,如果你针对的是已知的一个主机群,可把该模板加入该主机群。
2.在模板中添加监控项(item)
在这里插入图片描述

重点关注下面几个参数:

  • Type: 这里要设置为zabbix agent(active)
  • Key: net.tcp.listen[6668],6668是所要监听的端口,tcp为端口所用协议,也可以是udp,具体看自己服务对外使用的协议,更多请参看zabbix item keys官方文档,除了官方封装的key,用户也可以自定义一个key上报到server,监控自定义的key。
  • application:可以添加一个名称,方便管理item
  1. 将创建好的模板添加到需要监控的主机中

选择主机
在这里插入图片描述
选择刚添加的模板
在这里插入图片描述
4. 为主机添加好监控模板后,到最新数据处观察agent上报的最新数据
在这里插入图片描述

从数据中可以看到,当所要监控的端口在正常监听时,上报到服务器的数据为1,如果端口关闭则为0
5. 获取特定数据后,需要对该数据进行实时判断是否符合预期,这时需要添加个触发器,当上报数据为异常情况时,将告警信息及时显示到仪表盘上。
在这里插入图片描述

在这里插入图片描述

  • name: 自定义显示在仪表盘的告警信息
  • severity:定义严重情况,以颜色作为区分
  • expression:设置告警条件,比如最新值为0时告警,expression更多信息请参看官方文档–expression介绍
  • description:描述告警信息,也可以在此告知如何处理该告警信息
    至此端口监控部署完成,尝试关闭所监控的端口时,便可在仪表板上看到告警信息

日志监控

端口处于监听状态只是服务在运行的标识,服务是否正常实现其功能还需要进一步的监测。一般日志文件里会打印出服务运行时的信息,如果zabbix捕捉到了错误信息并将其反馈给运维人员,运维人员便能及时的恢复,这里需要运维人员对于每个服务的具体报错信息有着清晰的了解才能捕获特定的字符和定制告警信息。这里分两种方法对日志的监控,

  1. 一种是zabbix封装好的key,
  2. 另外一种是用户自定义的key。

zabbix封装的日志监控key

在这里插入图片描述

上图已经给出了几个示例:

log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>]
log[/var/log/syslog] #捕获syslog所有日志
log[/var/log/syslog,error] #捕获syslog里出现error的字段。
log[/home/zabbix/logs/logfile,,,100] #等会细讲参数100也就是output的作用

这里值得注意的是,server会捕获含关键词的整个字段而不是单单那一个,比如这里捕获的关键词是error,The error is not good,从最新数据看到的是整句。关于几个关键词,我将直接引用官方文档:log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>]

file - full path and name of log file
regexp - regular expression describing the required pattern
encoding - code page identifier
maxlines - maximum number of new lines per second the agent will send to Zabbix server or proxy. This parameter overrides the value of ‘MaxLinesPerSecond’ in zabbix_agentd.conf
mode - possible values:
all (default), skip - skip processing of older data (affects only newly created items).
output - an optional output formatting template. The \0 escape sequence is replaced with the matched part of text (from the first character where match begins until the character where match ends) while an \N (where N=1…9) escape sequence is replaced with Nth matched group (or an empty string if the N exceeds the number of captured groups).
If output is left empty - the whole line containing the matched text is returned. Note that all global regular expression types except ‘Result is TRUE’ always return the whole matched line and the output parameter is ignored.
Content extraction using the output parameter takes place on the agent.
Examples:
⇒ log[/var/log/syslog]
⇒ log[/var/log/syslog,error]
⇒ log[/home/zabbix/logs/logfile,100]
Example of using output parameter for extracting a number from log record:
log[/app1/app.log,“task run [0-9.]+ sec, processed ([0-9]+) records, [0-9]+ errors”,\1]→ will match a log record “2015-11-13 10:08:26 task run 6.08 sec, processed 6080 records, 0 errors” and send only number 6080 to server. Because a number is being sent, the “Type of information” for this log item can be changed from “Log” to “Numeric (unsigned)” and the value can be used in graphs, triggers etc.
Example of using output parameter for rewriting log record before sending to server:
log[/app1/app.log,"([0-9 :-]+) task run ([0-9.]+) sec, processed ([0-9]+) records, ([0-9]+) errors","\1 RECORDS: \3, ERRORS: \4, DURATION: \2"]→ will match a log record "2015-11-13 10:08:26 task run 6.08 sec, processed 6080 records, 0 errors " and send a modified record “2015-11-13 10:08:26 RECORDS: 6080, ERRORS: 0, DURATION: 6.08” to server.
The output parameter is supported since Zabbix 2.2.
The mode parameter is supported since Zabbix 2.0.

在这里插入图片描述
这里信息类型要填日志,服务端配置的接收类型需要跟agent上报的数据类型一致,不然server端会无法识别
官方log_items详解
官方item_type大全
设置完毕监控项(item)后,下面开始写触发器,触发器的核心便是触发条件,触发条件设置为最后一次的值为关键词时告警,此处缺陷在于,只有当所监控的文件在变化的时候并且出现了关键词时,server才会收集上报的数据。虽然服务恢复后,但服务端的触发条件是最新一次的上报数据,导致告警不会自动消失需要人工关闭。

自定义key值

zabbix key的可扩展性和灵活性是zabbix的一大特性,运维人员可根据自己需求DIY上报的key,甚至可以通过调用程序文件,将代码的输出结果作为key上报。在编写DIY key之前,有两处地方需要在zabbix_agentd.conf里配置,一处是Include,将自定义的key文件包含进来,另外一处是涉及到自定义key中存在特殊字符时,需要开启UnsafeUserParameters=1

 Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf

####### USER-DEFINED MONITORED PARAMETERS #######

### Option: UnsafeUserParameters
#       Allow all characters to be passed in arguments to user-defined parameters.
#       The following characters are not allowed:
#       \ ' " ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @
#       Additionally, newline characters are not allowed.
#       0 - do not allow
#       1 - allow
#
# Mandatory: no
# Range: 0-1
# Default:
# UnsafeUserParameters=0
 UnsafeUserParameters=1

在zabbix_agentd.conf.d目录下创建一个file.conf的文件,文件内容为:

UserParameter=file.regmatch[*], grep "$3" "$1" | grep -q -i "$2" && echo 1 || echo 0

乍一看这个语句会有点懵,结合一下实际调用就清楚了,

file.regmatch["/service/tomcat-merchant-base-provider-7608/logs/catalina.out","数据中心方法调用结束","^`date +'%F %H:%M'`"]

$3,$2这些就是对应的参数位置,以上例子$3就是带date的一长串字符,这串字符输出的当前的年月日小时分钟,整个功能就是根据当前时间和关键词数据中心调用结束去Catalina.out里搜,如果搜到了返回1,如果没有则为0,也就是后面echo 1||echo 0的作用,拿到数据后同样需要写触发器,
在这里插入图片描述
点击add,添加刚完成的监控项,这里设置的是最新数据匹配到为1时告警。同样的,这种方法也存在一个漏洞,当服务只报错一次后,就不再刷新日志时,服务器拿到的都将是会0,虽然服务器处于问题状态,但告警信息消失了,运维人员也无法及时知道,这个问题就交给爱动脑筋的你,将以上的key或者触发条件进行完善。最后记得重启一次zabbix agent端。
自定义key的简单使用

监控文件大小变化

针对一些特殊的日志文件,比如接收心跳的日志,其大小一定是时刻变化的,监控其大小变化将是较好的健康指标,这一个key官方一样帮我们封装好了,只需要添加item后,在key处选用即可。
在这里插入图片描述

配置中问题排除和解决

每接触到一个新事物,难免会磕磕碰碰,请不要灰心,世界总是可知的。这里我将给出一些常见的错误解决方案和问题排查思路。最常见的现象便是. 在最新数据处一直看不到数据,这个问题有几大原因

  1. 设定item中的key值不支持,如下图
    在这里插入图片描述
    遇见这种问题,一般是key的编写出了问题,可能是你要监控的文件路径不对,服务器无法找到,也可能是key本身不支持,具体可以到zabbix_agentd.log去查看
 15192:20200122:152103.246 active check "vfs.file.md5sum[/service/tomcat-merchant-base-provider-7608/logs/catalina.out]" is not supported: Cannot open file: [2] No such file or directory
 15192:20200122:152303.378 active check "file.regmatch["/service/tomcat-merchant-base-provider-7608/logs/catalina.out","数据中心方法调用结束","^`date +'%F %H:%M'`"]" is not supported: Special characters "\, ', ", `, *, ?, [, ], {, }, ~, $, !, &, ;, (, ), <, >, |, #, @, 0x0a" are not allowed in the parameters.
 15192:20200122:152303.379 active check "vfs.file.md5sum[/service/tomcat-merchant-base-provider-7608/logs/catalina.out]" is not supported: Cannot open file: [2] No such file or directory

以上日志就清晰的告诉了问题的关键,特殊字符的问题只需要在zabbix配置文件里将unsafe设置为1,文件找不到的自己再核对一下路径。
2. 还有一种情况就是zabbix没有权限去读取所要监控的文件,用chown zabbix.zabbix /tmp/tcp_conn.txt将文件所有者改成zabbix用户即可。

排查思路

看是否上报最新数据:
在这里插入图片描述
在主机处查看当前key是否可用
在这里插入图片描述
如若不可用则去zabbix_agentd.log查看日志,接下来看到的问题你若不会就只能靠上亿网友了。

监控jstat的参数

当非root用户时,需要注意修改脚本和sudo权限:
一处是在/etc/sudoers里添加:zabbix ALL=(ALL) NOPASSWD:/usr/java/jdk1.8.0_112/bin/jstat
一处是修改脚本:

ec=`/usr/bin/sudo /usr/java/jdk1.8.0_112/bin/jstat -gcutil $ID|awk '{print $5}'|awk 'NR==2{print}'`

在zabbix_agentd.conf里添加几个配置参数:

#允许正则匹配
UnsafeUserParameters=1
Include=/etc/zabbix/zabbix_agentd.d/*.conf

jstat可以对java 虚拟机查看一般的性能指标,zabbix未自带这块的监控key,则需要自己写个脚本来获取

#! /bin/bash
source /etc/profile
ID=`ps -ef | grep sip | grep -v "grep" | awk '{print $2}'`
soc=`jstat -gc $ID|awk '{print $1}'|awk 'NR==2{print}'`
echo $soc

这里之所以需要source /etc/profile因为zabbix 服务端在调用该脚本的时候会报jstat command not found,
在zabbix_agentd.d目录下添加get_soc.conf

UserParameter=jvm_soc,/etc/zabbix/zabbix_script/jvm_soc.sh

服务端来请求jvm_soc时,客户端会执行后面的脚本获取
zabbix服务端侧的配置,在该主机上添加监控项
在这里插入图片描述
注意键值跟客户端配置文件里的UserParameter保持一致
在zabbix服务端可以执行./zabbix_get -s 192.168.212.158 -k jvm_soc做测试是否取到了值

获取值报permission deny

这里一般原因在于开启了SELINUX,用setenforce 0,去关闭,再去修改脚本的执行权限为755,再次获取key值得时候,报了could not attach 4667(PID),出现这种情况是因为你要jstat的进程是用其他用户打开的,而zabbix服务端去获取时是以zabbix的身份去获取的,这时就需要改变zabbix的身份,用zabbix去启动你所要监控的服务,zabbix默认是nologin的属性,导致都无法su切换到zabbix

#使zabbix可以登录
usermod -s /bin/bash zabbix
#更改你所要监控服务的所属用户
chown zabbix -R video-access-provider/
#最后切换到zabbix用户,以zabbix的用户去执行该服务即可

监控CPU load总核平均负载

zabbix在OS linux Template里默认是对每个核做每分钟的负载监控,可以修改原来的值或者新建一个对总核平均负载做监控
键值:system.cpu.load[all,avg1]
在这里插入图片描述
zabbix 修改LINUX的CPU负载监控问题

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值