文章目录
1. 监控项
1.1 什么是监控项
监控项主要用于采集主机指标数据,一个监控项是一个独立的指标。
比如,当前主机的CPU1分钟的平均负载,可以使用system.cpu.load[avg1]来获取主机指标数据;
如果要监控CPU1分钟、5分钟、15分钟这三个指标,则需要定义三个监控项;
1.2 创建一个监控项
- 登录web管理页面 --> 配置 --> 主机
- 在主机所在的行单击监控项
- 点击右上角的创建监控项
- 输入表单中的监控项的参数
1.3 监控项的值映射
1.3.1 什么是值映射
为了接受到的值更加“人性化”显示,可以通过值映射方式,将数值与字符串之间进行关系绑定;
举个例子,一个监控项有值‘0’ 和‘1’能通过值映射,以认可读的形式表示值:
- ‘0’ => ‘不可用’
- ‘1’ => ‘可用’
或者,一组备份关系的值映射 - ‘F’ -> ‘全量备份’
- ‘D’ -> ‘差异备份’
- ‘I’ -> ‘增量备份’
1.3.2 值映射配置实践
定义值映射:
- 管理 -> 一般
- 从下拉列表中选择值映射
- 点击创建值映射
- 创建一个值映射
- 监控项调用其值映射
3.配置以后,在监控中 -> 最新数据会以映射的值“UP”显示(括号中显示是原始值)
1.4 自定义监控项(入门)
监控主机当前登录主机的“总用户数”,如何实现:
-
- 本机执行shell命令提取需要监控对象的值;
-
- 通过zabbix-agent2 将其定义为一个监控项;
-
- 使用zabbix-get 测试能否获取对应的值;
-
- 登录zabbix-web,为对应主机添加对应的监控项;
1.4.1 第一步:获取项目指标数据
执行命令获取当前登录系统的会话数量:
[root@web01 ~]# who | wc -l
1
1.4.2 第二步: 自定义一个监控项
修改配置文件,增加自定义key,格式:
UserParameter=<key名称>,
#login.user作为key,key在一台主机上必须是唯一的
root@web01 ~]# vim /etc/zabbix/zabbix_agent2.d/default.conf
UserParameter=login.user,who | wc -l
使用zabbix_agent2 -t 命令测试该自定义的参数执行
[root@web01 ~]# zabbix_agent2 -t login.user
login.user [s|1]
# 重启zabbix-agent, Agent会重载配置文件
[root@web01 ~]# /etc/init.d/zabbix-agent2 restart
Shutting down Zabbix agent 2: [确定]
Starting Zabbix agent 2:
[root@web01 ~]#
1.4.3 第三步:使用Zabbix-get取值
服务器端安装zabbi-get 工具
[root@zabbix-server ~]# yum install zabbix-get -y
获取Agent端的自定义的key,能否获取到值,命令:
zabbix_get -s IP -p port -k KeyName
[root@zabbix-server ~]# zabbix_get -s 192.168.20.47 -k login.user
1
1.4.4 第四步:为主机添加监控项
在被监控主机中添加key值为login.user的新监控项,监控项类型必须为zabbix-agent或者zabbix-agent(active)
- 第一步:配置-> 主机 -> 监控项 -> 创建监控项;
- 第二步:监测 -> 最新数据
1.5 自定义监控项(单位)
监控当前主机的“内存使用百分比”,“剩余百分比”
-
- 本机执行shell命令提取需要监控对象的值;
- 内存使用百分比:free -m | awk ‘/^Mem/ {print $3/$2*100}’
- 内存剩余百分比: free -m | awk ‘/^Mem/ {print 100-($3/$2*100)}’
-
- 通过zabbix-agent2 将其定义为一个监控项;
-
- 使用zabbix-get 测试能否获取对应的值;
-
- 登录zabbix-web,为对应的主机添加对应的监控项;
1.5.1 第一步: 获取项目数据
获取内存 “已用百分百”(取出内存的已用空间/总内存空间=已用空间百分比)
[root@web01 ~]# free -m | awk '/^Mem/ {print $3/$2*100}'
19.2881
获取内存“剩余百分比”(取出内存可用空间/总内存大小=实际可用百分比)
[root@web01 ~]# free |awk '/^Mem/ { print $4/$2*100 }'
80.6801
1.5.2 第二步:创建监控项
[root@web01 ~]# cat /etc/zabbix/zabbix_agent2.d/meminfo.conf
UserParameter=Mem.Used,free |awk '/^Mem/ { print $3/$2*100 }'
UserParameter=Mem.Ava,free |awk '/^Mem/ { print $4/$2*100 }'
[root@web01 ~]# /etc/init.d/zabbix-agent2 restart
1.5.3 第三步: 检查监控项
[root@zabbix-server ~]# zabbix_get -s 192.168.20.47 -p 10050 -k Mem.Used
19.2088
[root@zabbix-server ~]# zabbix_get -s 192.168.20.47 -p 10050 -k Mem.Ava
80.7851
1.5.4 第四步:添加监控项
-
创建已用内存百分比监控项
-
创建剩余百分比监控项
-
查看最新数据,获取后面的值带有%单位, 便于我们区分值的意义
1.6 自定义监控项(传参)
1.6.1 什么是传参
传参是为了让key接受对应的参数,从而完成多个监控项创建的一种方式,传参的语法格式:
UserParameter=key[*],command
1.6.2 简单传参示例
UserParameter=ping[*],echo $1
[root@zabbix-server ~]# zabbix_get -s 192.168.20.47 -k ping[aaa]
aaa
1.6.3 复杂传参示例
UserParameter=mysql.ping[*],mysqladmin -u$1 -p$2 ping | grep -c alive
这个用户自定义参数可以用来监控Mysql数据库的状态。可以像下面的样式传入用户名和密码:
mysql.ping[username,password]
1.6.4 监控TCP状态实践
通过传参方式,创建监控项“获取TCP状态”指标数据
[root@web01 ~]# vim /etc/zabbix/zabbix_agent2.d/tcp_status.conf
UserParameter=tcp.status[*],netstat -ant | grep -c $1
重启zabbix-agent2,加载配置文件
[root@web01 ~]# /etc/init.d/zabbix-agent2 restart
服务器端使用zabbix-get 测试
[root@zabbix-server ~]# zabbix_get -s 192.168.20.47 -k tcp.status[LISTEN]
6
登录zabbix-web为主机添加监控项, 我这里先做成模版,然后在被控主机链接该模版
1.7 磁盘占用计算公式
100台主机 每个主机约等于100个监控项,每个监控项
每间隔60s获取一次数值
历史数据:
days*(items/refresh rate)*24*3600*bytes
90*(10000/60)*24*3600*90=116173440000 字节
116GB
趋势:
days*(items/3600)*24*3600*bytes
365*(10000/3600)*24*3600*90=5676480000 字节
5G
事件:
days*events*24*3600*bytes
365*1*24*3600*170=5361120000 5G
合计:130GB