监控方式
zabbix获取数据的方式是多种多样的,总体来说,zabbix收集数据的方式分为两种,一种是需要客户端的,一种是不需要客户端的
需要客户端的
主动式的agent
被动式的agent
日志文件监控
- 被动式
查看客户端的配置文件,排除# $ 开头的
在页面配置
- 主动式 也是trap
在页面配置
配置active监控项,查看zabbix_agent的进程数量
主动式监控依赖的是agent端从server获取任务的信息,key,更新周期这些的,在zabbix_server.conf配置文件中可以设置刷新值,范围是60-3600s,意味着以60-3600s为周期agent端向server端推送数据,
配置文件说明:
主动式与被动式的区别
server端定义主动式的监控项,在agent端。有 active check进程,用来检查server端定义的监控项,然后agent端主动执行推送数据,
被动格式数据收集用的是poller进程,主动式收集数据使用的是trap进程
server端配zabbix-server.conf修改
修改traper pooler数量
可以修改服务端开启的trap数量,pool数量,默认是3个
修改超时时间
配置文件中可以设置超时值
默认3秒,当命令收集数据耗时太长可以修改该值
zabbix_agent.conf
zabbix-agent.conf 可以修改agent进程数量 ,默认3
监控项key的语法格式
无需客户端的
- 简单检查 simple check 不需要安装agent客户端
zabbix server或者proxy通过tcp udp协议发起监控请求,用来检查网络是否通畅,延迟,端口是否正常响应等。执行命令,获取返回的信息达到监控目的
依赖于fping
没有的话需安装
yum install fping
分配组跟权限
chown root:zabbix /sbin/fping
chmod 4710 /sbin/fping
配置zabbix_server.conf, 设置fping可执行脚本的位置。默认的是/usr/sbin/fping
页面配置
显示延迟的监控项
参数说明:
target 监控主机的ip,可置空,默认使用的是就是受控主机的ip
packets 包的数量
interval 发送包的间隔, 单位毫秒 mm
size 每个包的大小 timeout 超时,
mode 返回最小值 最大值或者平均值
返回值为当前受控主机的网络延迟值
返回的值为0.003
可以添加预处理进行倍数转化和单位添加
可以添加监控项预处理
添加乘以1000,将值扩大1000倍
查看fping进程, 可以看到fping执行了这条监控
- telnet check
通过telnet登录到受控主机执行命令获取数据
需要配置要监控设备的账号信息
参数说明
1 一个简短的说明
2 需要登录的主机ip
3 端口 一般是23
4 编码格式,默认是utf-8
需要安装telnet,需要开放23端口,或者关闭防火墙,selinux
安装 yum install telnet
启动 systemctl start telnet.socket
查看telnet服务状态
设置开机启动
为telnet创建用户
在server端尝试用telnet登录受控主机
登录成功
页面配置
telnet agent相当于在server端用telnet服务登录了受控主机,然后就像在受控主机上输入命令一样进行相应值的获取。
- zabbix 内部检查
zabbix为我们添加的zabbix模板已经足够了
示例:
当历史数据的缓存使用量大于75%,则报警,此时可以通过修改server端的配置项来扩充
默认是16M
- log monitor 日志监控
仅能使用主动式监控
zabbix agent 主动到server拉取最新的主动模式的监控项,有日志监控的,agent就会根据监控项的配置找到对应的日志进行监控,当有满足条件的,如匹配到关键字的,就将信息返回给zabbix server,找不到返回的就是空的
不同的一点就是 logrt支持日志的迭代,当一个日志文件存满进行轮转的时候,会跟随这个轮转的日志进行监控
rt就是ratation 轮转的意思
参数file 日志文件的路径
参数regexp 正则匹配的语法
encoding 编码格式maxlines zabbix agent 每秒最大处理的行数,向server发送的最大行数
mode 默认的是all 新的旧的都进行正则匹配,一般我们使用的是skip 跳过那些旧的数据,只监控新写入的
output可以定义日志的输出格式
maxdelay也是为了忽略旧的数据,要小心使用,可能造成丢掉新的错误日志,一般保持默认即可
rt中的options 只有logrt中有只要针对日志格式的类型 一般也是默认
页面中配置
只要日志信息中有能被正则所匹配到的任意信息,这段日志就可以被提取出来
日志信息中有ERROR 正则语法是(ERRORALERT),这条日志就能被提取到
- 外部检查
external check 外部检查
就是server端或者proxy端直接执行脚本来获取监控数据
由于脚本的执行就是在server端或者proxy端,被控主机就不用安装agent了
配置zabbix server.conf 指定脚本的路径
实例:
使用dig来查看域名解析的时间
自定义脚本
给权限
chmod a+x dns_resolve.sh
在完成这些之后,还需要对用户及dig命令的执行范围确认一下,看是否zabbix用户能否调用,确保脚本能被执行
添加外部检查的监控项
不用加双引号, 空格隔开
- http agent
不需要安装zabbix agent 用来监控http的业务或者接口,服务器的响应性能情况,响应码,响应内容,
依赖curl
查看zabbix server的日志信息
页面配置
实例 访问zabbix
结果
- web场景
web 场景 web步骤 web 请求
zabbix按照顺序执行场景中定义的请求,如果其中一个出现异常,zabbix 将不会访问底下的请求,就中断了
以用户购买商品为例
登陆页面 》 登陆 》进入商品搜索 》进入选中商品的详情页 》 购买选中商品 》支付 》退出
可以看出 web场景是模仿一整套的流程,他跟http agent还有有区别的, http agent是针对于一个,key是自定义的 web场景是一组,他的key是zabbix根据名称生成的
也依赖curl
监控项分为 场景监控项和步骤监控项。创建出场景之后,zabbix会自动生成3个场景监控项 :该场景的下载速度 场景中失败的步骤 场景监控最后的错误信息
对于每个步骤,他也可以生成2个监控项,步骤的下载速度,步骤的响应码
创建场景
步骤1
打开首页
登陆
登出
使用到上次定义的{sid}
- ssh
前提
数据收集方式
语法
跟telnet是很类似的
查看zabbix_server的日志信息
可以看到现在server端是支持了ssh的
查看/etc/passwd文件
可以看到默认的zabbix用户是不允许shell登录的
需要做修改
修改家目录,修改默认的bash
手动构建家目录
给予家目录属主和属组
授予权限
更改zabbix用户的默认把式
再次查看/etc/passwd
在server端尝试ssh登录到受控客户端
页面配置
最新数据中显示
通过秘钥来ssh登录受控主机
在server端先关闭zabbix_server和agent服务,不然再修改zabbix用户的时候容易出现一些问题
查看server端的/etc/passwd 发现默认的zabbix用户也是nologin的
需要重新指定下shell
重启server跟agent服务
修改 zabbix_server.conf
修改ssh key的位置
重启server服务
生成秘钥
查看ssh路径下的文件
给agent端传输生成的秘钥
受控主机端的zabbix家目录下就多了一个.ssh目录
当agent端有了server端给的秘钥之后,再次ssh登录就不再需要密码,直接登录
页面配置
- JMX Agent
java 管理扩展 java manager extention
前提条件
数据收集流程
语法
在server端安装 zabbix_jave_gateway
更改配置文件
打开这栏
启动服务,查看运行状态
监听在10052端口
更改zabbix_server的配置
重启zabbixserver
查看启动日志
页面配置
由于java_gateway是在server端启动的,所以需要在zabbix_server服务器上进行
主机接口的更新
监控项的创建
可以使用zabbix自带的java监控模板来查看效果
通过jconsole 来查看jmx
实例:
监控tomcat
在一台受控主机上
安装java
配置java的环境变量
修改/etc/profile文件来配置java环境变量
source /etc/profile
查看java的环境变量
准备tomcat
下载tomcat的gz包并解压
在解压包的bin目录下可以使用脚本来启动关闭tomcat进程
修改tomcat/bin/catalina.sh ,加上jmx的启动参数
查看进程信息
在页面配置
受控主添加 jmx接口,
创建监控项
在jconsole中复制mbean名称
选择属性
查看最新值
配置自动发现
查看mbean
配置自定发现规则
使用自动发现的宏来创建监控项
- IPMI Agent
Intelligent Platform Management Interface
智能平台管理接口
可以用来监控硬件的健康信息,物理状态(风扇,电压,电源等),
优势:独立于操作系统的,只要接入电源的,无论操作是否启动,都可以实现监控
前提条件
数据收集流程
验证server端是否支持IPMI检查,通过查看启动日志来看
配置 zabbix_server.conf
重启zabbix_server服务,查看ipmi_poller进程
安装ipmitool依赖包
验证ipmitool,显示所有的硬件信息
实例:
获取风扇转速
创建主机
配置IPMI
配置监控项
- Datastore Monitor
通过执行sql语句来获取数据库相关的信息,可以是数据库本身的性能数据,也可以是业务数据
前提条件
数据收集流程
语法
准备:
zabbix_server在安装的时候获取odbc的支持,安装unix odbc,配置数据库的连接驱动
查看zabbix_server的启动日志,验证是否支持ODBC
安装依赖
安装unix数据库的驱动
yum search odbc 查看支持哪些数据库驱动
查看odbc的配置
修改/etc/odbcinst.ini
配置/etc/odbc.ini
通过isql来测试配置是否生效
直接就可以进入数据库了
页面配置
-
calculate items
会对多个监控项进行取值运算,是由server端直接操作数据库进行运算的
单个监控项的
-
Aggregate checks
聚合计算
以主机组为维度,来计算一类型的监控项
-
Dependent items
依赖监控项
监控项的取值依赖其他监控项。 相互依赖的监控项最多999个
而且以来层级最多是3层 a依赖b ,b依赖c
用户自定义监控项
在zabbix_agent中的/etc/zabbix/zabbix_agentd.d目录下添加自定义监控项的配置文件xxx.conf
内容添加用户自定易得key和相应的执行命令
注意
定义的key在同一台主机中,必须是唯一的,不然重启agent启动不了
在server端进行 zabbix_get测试自定义的监控项。
内置执行逻辑:
首先,zabbix 创建一个管道通信,并将该管道作为生成的子进程的一个输出,然后子进程执行该监控项对应的脚本或者命令,并将结果通过这个管道返回给zabbix。zabbix在超时时间内从管道中获取数据,当超过时间仍没有数据,那么就返回空
监控项预处理中的正则