文章目录

  • 1. 监控项
  • 1.1 什么是监控项
  • 1.2 创建一个监控项
  • 1.3 监控项的值映射
  • 1.3.1 什么是值映射
  • 1.3.2 值映射配置实践
  • 1.4 自定义监控项(入门)
  • 1.4.1 第一步:获取项目指标数据
  • 1.4.2 第二步: 自定义一个监控项
  • 1.4.3 第三步:使用Zabbix-get取值
  • 1.4.4 第四步:为主机添加监控项
  • 1.5 自定义监控项(单位)
  • 1.5.1 第一步: 获取项目数据
  • 1.5.2 第二步:创建监控项
  • 1.5.3 第三步: 检查监控项
  • 1.5.4 第四步:添加监控项
  • 1.6 自定义监控项(传参)
  • 1.6.1 什么是传参
  • 1.6.2 简单传参示例
  • 1.6.3 复杂传参示例
  • 1.6.4 监控TCP状态实践
  • 1.7 磁盘占用计算公式


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 值映射配置实践

定义值映射:

  • 管理 -> 一般
  • 从下拉列表中选择值映射
  • 点击创建值映射
  1. 创建一个值映射
  2. 监控项调用其值映射

    3.配置以后,在监控中 -> 最新数据会以映射的值“UP”显示(括号中显示是原始值)

1.4 自定义监控项(入门)

监控主机当前登录主机的“总用户数”,如何实现:

  1. 本机执行shell命令提取需要监控对象的值;
  2. 通过zabbix-agent2 将其定义为一个监控项;
  3. 使用zabbix-get 测试能否获取对应的值;
  4. 登录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 自定义监控项(单位)

监控当前主机的“内存使用百分比”,“剩余百分比”

  1. 本机执行shell命令提取需要监控对象的值;
  • 内存使用百分比:free -m | awk ‘/^Mem/ {print $3/$2*100}’
  • 内存剩余百分比: free -m | awk ‘/^Mem/ {print 100-($3/$2*100)}’
  1. 通过zabbix-agent2 将其定义为一个监控项;
  2. 使用zabbix-get 测试能否获取对应的值;
  3. 登录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. 创建已用内存百分比监控项
  2. 创建剩余百分比监控项
  3. 查看最新数据,获取后面的值带有%单位, 便于我们区分值的意义

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为主机添加监控项, 我这里先做成模版,然后在被控主机链接该模版

zabbix监控项主动式 zabbix 监控项_zabbix


zabbix监控项主动式 zabbix 监控项_服务器_02


zabbix监控项主动式 zabbix 监控项_zabbix监控项主动式_03

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