1.监控一台服务器主机
在安装完zabbix进入页面后发现存在一个报警,是因为我没有安装zabbix-agent
- 先安装zabbix-agent完成自己对自己的监控
yum install -y zabbix-agent
systemctl start zabbix-agent 并启动 - 创建一台zabbix-web服务器做被监控对象,ip为10.0.0.7,简单优化后
安装zabbix-agent
在这里不配置zabbix依赖直接在清华源下在rpm包然后安装
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.1-1.el7.x86_64.rpm
- 修改配置
vim /etc/zabbix/zabbix_agentd.conf
在这里只修改server地址,server=10.0.0.62(我的zabbix-server地址)
systemctl start zabbix-agent 修改后启动agent
systemctl enable zabbix-agent 设置为开机自启动
- 在zabbix的web界面上进行配置
在创建主机后主要填写带*号区域
然后再指定一个模板
在这里我使用linux模板
等待被监控,也可以直接重启systemctl restart zabbix-server.service 服务加快监控
此处已显示被监控
2.自定义监控项
2.1监控硬盘的tps值
在监测前先进行取值,在服务器上发现没有iostat命令,先安装sysstat
yum install sysstat -y
- 先测试使用命令可以取出tps值
[root@zabbix-server ~]# iostat |awk '/^sda/{print $2}'
2.12
- 修改一下配置文件
[root@zabbix-web ~]# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=tps,iostat|awk '/^sda/{print $2}' #UserParameter用户自定义的监控参数
systemctl restart zabbix-agent 再重启一下服务
在命令行内使用zabbix_agentd -p可以打印所有监控项,在末尾可以看到我们新添加的监控项内容
mysql.size [t|bash: mysql: command not found]
mysql.ping [t|sh: mysqladmin: command not found
0]
mysql.version [t|sh: mysql: command not found]
tps [t|2.52]
在监测的最新数据下可以查看我们监控的主机的各项数据
- 在web界面配置监控项
点击监控项进入配置界面再点击创建监控项,这里以创建每秒进程io次数为例
最后点击“添加”便完成了一个自定义监控项的创建
2.2监控tcp的11种状态的数量
- 先考虑如何取出tcp11种状态值
[root@zabbix-server ~]# netstat -antup|grep -c ESTABLISHED #因为要取11种状态,所以这里可以设置为变量
2
- 修改配置文件
修改配置文件/etc/zabbix/zabbix_agentd.d,在文件内存在Include=/etc/zabbix/zabbix_agentd.d/*.conf,所以不必把所有监测文件都写在/etc/zabbix/zabbix_agentd.conf内。
[root@zabbix-web ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@zabbix-web zabbix_agentd.d]# vim tcp.conf
UserParameter=tcp_state[*],netstat -antup|grep -c $1 #写入传参监控命令
systemctl restart zabbix-agent 再重启一下服务
在这里我们需要使用zabbix_get测试zabbix是否能获取到数据,但发现没有安装,所以先安装一下,还是去清华源直接安装
[root@zabbix-server ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-get-4.0.4-1.el7.x86_64.rpm
Retrieving https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-get-4.0.4-1.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:zabbix-get-4.0.4-1.el7 ################################# [100%]
先传入一个状态参数测试一下
[root@zabbix-server ~]# zabbix_get -s 10.0.0.7 -k tcp_state[ESTABLISHED]
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
2 #这里出现一堆提示(说什么不是所有进程都能被识别,你只有是root用户才能看到所有。大概是这个意思)
注意:因为在监控端是zabbix普通用户去执行netstat -antup这个命令,普通用户存在权限不足的情况,无法取到全部信息,甚至会报错出现如下情况:
[root@zabbix-web zabbix_agentd.d]# useradd gcy
[root@zabbix-web zabbix_agentd.d]# su - gcy
[gcy@zabbix-web ~]$ netstat -antup
(No info could be read for "-p": geteuid()=1000 but you should be root.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN -
tcp 0 0 10.0.0.7:10050 10.0.0.62:36544 TIME_WAIT -
这里我们为netstat修改一下权限
[root@zabbix-web zabbix_agentd.d]# which netstat
/bin/netstat
[root@zabbix-web zabbix_agentd.d]# chmod u+s /bin/netstat
然后再使用zabbix_get检验,发现可以正常取值了
[root@zabbix-server ~]# zabbix_get -s 10.0.0.7 -k tcp_state[ESTABLISHED]
2
[root@zabbix-server ~]# zabbix_get -s 10.0.0.7 -k tcp_state[SYN_SENT]
0
[root@zabbix-server ~]# zabbix_get -s 10.0.0.7 -k tcp_state[SYN_RECV]
0
[root@zabbix-server ~]# zabbix_get -s 10.0.0.7 -k tcp_state[CLOSE]
0
[root@zabbix-server ~]# zabbix_get -s 10.0.0.7 -k tcp_state[LISTEN]
6
- 在web界面配置监控项
选择所要监控的主机,点击监控项进入并创建监控项
完成添加一个监控项
其他10种状态监控可以使用克隆监控项修改,这里不再演示
小提示:在出现不支持的项目并找到原因修改后,需要刷新不支持的项目,默认是十分钟,可以在下面的界面中修改时间,加速刷新
总结:自定义监控项,主要分三步:
1.编写监控项的key的表达式,并测试
2.写入配置文件UserParameter=
3.在web页面上进行添加监控项