- 资料
- 术语
- 检测分类
- 触发器表达式
- 优化建议
资料
术语
-
item: 监控项 , 如
cpu1分钟的负载
-
application: 应用集,item的集合,如
所有cpu相关指标
-
trigger: 触发器,创建item的触发条件,如
{10.10.10.1:agent.ping.nodata(1m)}=0 主机1分钟内ping响应结果
-
action: 动作,trigger后操作,可以进行条件筛选发送告警
-
event: 事件,分四类
(触发器事件、发现事件、内部事件、自动注册事件)
-
macros:自定义宏,等价于全局变量
Administration → General → Macros
如{HOST:HOST}
-
trapper:监控类型
(item type)
,支持agent发送数据到server -
aggregate checks: 聚合查询监控项
-
Queue: 队列,查看zabbix堆积情况
Administration → Queue
-
value mappings:值映射,item项返回数字结果人性化展示 (数据库保存还是数字)
流程
host —— item(application)—— trigger ——action —— user(group) —— media
检测分类
-
external checks 外部命令检测
-
simple checks 基本检测
# 无需客户端,比如探测远程服务器的某些端口是否在监听 icmpping[<target>,<packets>,<interval>,<size>,<timeout>] net.tcp.service[service,<ip>,<port>]
-
agent 检测
# 用户可自定义 key与UserParameters # agent配置UserParameter,由agent执行,最大返回512KB UserParameter=key[*],command # *为参数$0-$9 UserParameter=ping[*],echo $1 ping[0] – 将一直返回 0
触发器表达式
-
格式
{<server>:<key>.<function>(<parameter>)}<operator><constant>
⇒ avg(#5) → 五个最新值的平均值 ⇒ avg(1h) → 一个小时的平均值 ⇒ avg(1h,1d) → 一天前一个小时的平均值 # 主机最近一分钟平均负载 last(0)当前值 {192.168.1.11:system.cpu.load[all,avg1].last(0)} > 5 # 同比趋势 {server:system.cpu.load.avg(1h)}/{server:system.cpu.load.avg(1h,1d)}>2 # Problem: 最近 5 分钟剩余磁盘空间小于 10GB。(异常) # Recovery: 最近 10 分钟磁盘空间大于 40GB。(恢复) ({TRIGGER.VALUE}=0&{server:vfs.fs.size[/,free].max(5m)}<10G) | ({TRIGGER.VALUE}=1&{server:vfs.fs.size[/,free].min(10m)}<40G) # 主机最近30分钟超过5次不可到达 {192.168.1.11:icmpping.count(30m,0)}>5 # 主机1分钟内ping没响应 {192.168.1.11:agent.ping.nodata(1m)}=0
-
宏
配置:
Administration → General → Macros
使用: 主机CPU负载触发器
{192.168.1.11:system.cpu.load[,avg1].last(0)}>{$MAX_CPULOAD}
-
trapper
配置:
Configuration(配置) → Hosts(主机)–> 选择需要配置的 Host—> 点击右上角的”create item(创建监控项)–> 类型选择zabbix trapper
# 服务端模拟发送 ./bin/zabbix_sender -z 10.9.4.20 -p 10051 -s "test_01" -k trap -o 'test-trapper hello' info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000038"
优化建议
-
硬件层
- 操作系统
- 数据库优化、数据库分离、数据库引擎innodb
-
维护层:
- 减少 history 保存时间
- 减少 item 获取间隔时间
- 减少不必要的监控项
-
定时清理
-
zabbix数据库根据时间清理
# 根据时间戳 date +%s -d "2019-01-01 00:00:01" date -d@1546272001 # 统计某类库表的大小 SELECT table_name AS "Tables",round(((data_length + index_length)/1024/1024), 2) as "Size in MB" FROM information_schema.TABLES WHERE table_schema = 'zabbix' ORDER BY (data_length + index_length) DESC; # 时间戳以日期显示 select *,FROM_UNIXTIME(clock,'%Y-%m-%d %T') as clock from history limit 1\G; select *,FROM_UNIXTIME(clock,'%Y-%m-%d %T') as clock from history_uint limit 1\G; select *,FROM_UNIXTIME(clock,'%Y-%m-%d %T') as clock from trends limit 1\G; select *,FROM_UNIXTIME(clock,'%Y-%m-%d %T') as clock from trends_uint limit 1\G; select *,FROM_UNIXTIME(clock,'%Y-%m-%d %T') as clock from history_str limit 1\G; # 删除优化 DELETE FROM `history_uint` WHERE `clock` < 1546272001; optimize table history_uint; delete from history where clock < 1546272001; optimize table history; DELETE FROM `trends_uint` WHERE `clock` < 1546272001; optimize table trends_uint; delete from trends where clock < 1546272001; optimize table trends; # 查看进程 show processlist;
-
网友评论