zabbix简介
一个基于C/S架构的企业级分布式开源监控解决方案:
- 支持主动轮询(polling)和被动捕获(trapping);
- Server端基于C,前端基于php;
- 支持多种监控方式,如SMTP、HTTP、Simple Check,所以不是必须安装Client端Zabbix Agent;
- 支持自定义监控脚本
- 支持自定义trigger报警规则;
- 支持短信、邮件、微信报警;
- 要求php>=7.2
监控内容
- 硬件:温度…
- 系统:
- cpu(lscpu, uptime, top, htop, glances),
- 磁盘(df, fdisk, iotop)
- 内存(free)
- 服务:apache, nginx, mysql, memcache, php-fpm, python, tcp连接数
- 性能:服务器、数据库、io…
- 日志:err_log…可以用elk
- 安全:可以用kibana栈是waf信息
- 网络:iftop工具,包括网络使用率、pop3、smtp、网络速率…
-
zabbix专有词汇
- Host:服务器
- Hosts:主机组
- Media:发送通知的通道
- Item:某个监控指标
- Trigger:触发器,有正常、异常、位置3个状态
- Action:触发后的动作
Zabbix术语
- 监控项(item)-------------------监控的基本元素,每个监控项对应一个被监控端的采集值
- 应用集(application)------------监控项的逻辑组
- 触发器(trigger)----------------通过计算item数据值来判断主机状态(OK/Problem)
- 图形(graph)--------------------为item数据提供可视化的展示
- 主机(host)---------------------一个你想监控的网络设备(需要知道IP/DNS)
- 主机群组(host group)------------主机的逻辑组
- 模板(Template) -----------------可以被主机套用的item,trigger,graph等的集合
- 媒介(media)---------------------发送告警的渠道(sms/email等)
- 告警(notification) -------------通过媒介(media)渠道发送事件的消息
- 告警动作(action)----------------当触发器条件被满足时,执行指定的告警动作
zabbix组件:
1、Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;
2、Database Storage:专用于存储所有配置信息,以及由zabbix收集的数据;
3、Web interface:zabbix的GUI接口,通常与Server运行在同一台主机上;
4、Proxy:可选组件,常用于分布监控环境中,代理Server收集部分被监控端的监控数据并统一发往Server端;
5、Agent:部署在被监控主机上,负责收集本地数据并发往Server端或Proxy端;
注:zabbix node也是 zabbix server的一种
zabbix命令
zabbix_get命令:是在server端用来检查agent端的一个命令,在添加完主机或者触发器后,不能正常获得数据,可以用zabbix_get来检查能否采集到数据,以便判断问题症结所在。
zabbix触发器方法
监控实战中,对触发器告警条件要求各不相同,Zabbix 提供了几十个方法提供使用
- abschange() 取前后差值(绝对值)===它支持类型包括:float, int, str, text, log,它不仅仅支持数值,还支持字符串。如果取值为字符串,那么字符串相同值为0,不同则为1
- avg() 与abschange()多了一个时间概念,也可以加上时间偏移参数===它支持类型包括:float, int
- prev() 用于获取item前一个返回值,与方法last(#2)是同样的意思===它支持类型包括:float, int, str, text, log
- max()
- min()
- diff() :返回值是否有变化(1表示发生变化,0表示无变化)===它支持类型包括:float,int,str, text, log
- strlen() 用于获取item返回值长度===它支持类型包括:str, text, log
- str用于获取item值是否包含你需要匹配的字符串===它支持类型包括:str, text, log
- last() 用于获取item最新值或者第几个值以及某个时间的哪一个值===它支持类型包括:float, int, str, text, log
- change(无参数) 用于获取item返回值与上一次值的差值,值可能为正数,负数,也会为浮点数,如果item类型为字符串,如果与上一值相同那么change值为0,否则为1
- cout() 返回指定时间间隔内数值的统计
- date() 返回当前的时间
- dayofmonth() 返回当前是本周的第几天
- delta () 返回时间间隔内的最大值与最小值的差值
- fuzzytime()返回值为1表示监控项值的时间戳与ZabbixServer的时间多N秒,0为其他.常使用system.localtime来检查本地时间是否与Zabbixserver时间相同.
- sum() 返回当前的时间 格式为YYYYMMDD
- time() 返回当前时间,格式为HHMMSS
- nodata() 当返回值为1表示指定的间隔(间隔不应小于30秒)没有接受到数据,0表示其他
- now() 返回距离Epoch(1970年1月1日00:00:00UTC)时间的秒数
- regexp() 检查最近的值是否匹配正则表达式
- logeventid() 检查最近的日志条目的EventID是否匹配正则表达式.参数为正则表达式,POSIX扩展样式.当返回值为0时表示不匹配,1表示匹配。该函数从Zabbix1.8.5起开始支持.===支持值类型log
- logseverity() 返回最近日志条目的日志等级(logseverity).当返回值为0时表示默认等级,N为具体对应等级(整数,常用于Windowseventlogs).Zabbix日志等级来源于Windowseventlog的Information列.===支持参数类型log
- logsource() 检查最近的日志条目是否匹配参数的日志来源. 当返回值为0时表示不匹配,1表示匹配。通常用于Windows event logs监控. 例如logsource[“VMWare Server”]===支持参数类型log