Bootstrap

zabbix学习

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
;