使用zabbix 监控linux系统性能
zabbix官方文档地址:https://www.zabbix.com/documentation/current/
一 、zabbix server安装
准备工作: 关闭selinux 和 iptables
systemctl stop firewalld.service
setenforce 0
1.使用源 rpm -vhi http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
2.安装zabbix-server-mysql和zabbix-web-mysql,命令 yum install -y zabbix-server-mysql zabbix-web-mysql
3.安装并启动mysql及初始化数据库信息
注:若已安装则不必重新安装mysql
使用源: rpm -ivh http://repo.mysql.com/yum/mysql-5.6-community/el/6/x86_64/mysql-community-release-el6-5.noarch.rpm
安装命令: yum install -y mysql-community-server
启动mysql: systemctl start mysqld
设置开机启动: /sbin/chkconfig mysqld on
初始化数据库信息: mysql_secure_installation
4.创建zabbix数据库,同时再创建zabbix账号
进入mysql: mysql -uroot -p
注:创建数据库记得设置编码格式为utf-8否则可能在web端出现乱码,图形无法正确展示
mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
5.导入初始数据
在 /usr/share/doc/zabbix-server-mysql-3.0.23/ 目录下有个 create.sql.gz 文件
注: 可能版本不同导致目录不相同,可以通过搜索文件的方式获取具体的目录 find / -name create.sql.gz
导入默认配置: zcat /usr/share/doc/zabbix-server-mysql-3.0.23/create.sql.gz | mysql zabbix -uzabbix -pzabbix
6.修改zabbix_server.conf配置
DBHost=localhost #指明server数据库的地址
DBName=zabbix #数据库名
DBUser=zabbix #数据库用户名
DBPassword=zabbix #数据库密码
7.修改时区 vi /etc/httpd/conf.d/zabbix.conf
8.启动zabbix-server服务
启动服务: systemctl start zabbix-server
设置开机启动: systemctl enable zabbix-server
注:若启动失败可以用 journalctl -ex 或 journalctl -xn 查看,或者查看 zabbix-server的log路径(zabbix_server.conf中),如下图
二、安装zabbix-agent
zabbix-agent可以和zabbix-server分开部署,本案例是分开部署,即在被监控的机器上安装zabbix-agent
1.获取yum源 rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/6/x86_64/zabbix-agent-3.0.23-1.el6.x86_64.rpm
注:可以将源的地址改为自己想要安装的实际版本的地址 版本源可参考:https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/6/x86_64/
源设置如图:
2.安装
安装命令: yum install zabbix-agent
添加开机启动:chkconfig zabbix-agent on
此时可以看到已经在 /etc/zabbix/ 文件夹下生成了 zabbix_agentd.conf和zabbix_agentd.d
3.配置 zabbix_agentd.conf文件
3.1 配置内容
Server=安装zabbix-server的主机ip
ListenPort=10050 #agent使用10050端口与server建立连接
Hostname=agent_test #主机名
BufferSize=100 #缓存大小
Timeout=30 #超时时间
UnsafeUserParameters=1 #允许所有字符的参数传递给用户定义的参数
3.2 配置agent用户和组
$groupadd zabbix
$useradd -g zabbix
之后启动agent
命令: systemctl start zabbix-agent.service
使用 netstat -an | grep 10050 查看10050端口是否成功启动
如上显示表明 agent 启动成功
注:记得被监控主机开放 10050 端口
三、配置IO监测
1.在 /etc/zabbix/zabbix_agentd.d 下添加 userparameter_io.conf 文件
UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$4}'
UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$7}' #//磁盘读的毫秒数
UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$8}' #//磁盘写的次数
UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$11}' #//磁盘写的毫秒数
UserParameter=custom.vfs.dev.io.active[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$12}'
UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$13}' #//花费在IO操作上的毫秒数
UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$6}' #//读扇区的次数(一个扇区的等于512B)
UserParameter=custom.vfs.dev.write.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$10}' #//写扇区的次数(一个扇区的等于512B)
2.重启 zabbix-agent 服务: systemctl restart zabbix-agent.service
3.在 zabbix-server 端获取数据测试
zabbix_get -s 被监控主机IP -p 10050 -k custom.vfs.dev.write.ops[vda1],能获取到数据说明配置成功
注:vda1是目标盘号
四、web端创建主机,添加IO监控
1. 创建被监控主机
添加后点击主机可以看到新添加的主机
2.添加应用集:点击主机所在行的应用集,进入后右上角点击创建应用集,名称自己定义
3.在所在主机菜单点击模板选项,选择连接指示器,在相应的群组中选择相应的模板
注:点击更新前需要点击添加按钮,否则添加不生效
4.在模板中点击监控项,创建相应的监控项(按钮同样在右上角)
4.1 配置第一个监控项
Name: Disk:$1:Read:Bytes/sec
Key: custom.vfs.dev.read.sectors[vda1]
Units: B/sec
Store value: speed per second //会进行差值计算
Use custom multiplier 512 //会对值乘以512,因为这里是一个扇区,转换为字节为512B
4.2 配置第二个监控项
Name:Disk:$1:Write:Bytes/sec
Key: custom.vfs.dev.write.sectors[vda1]
Units: B/sec
Store value: speed per second
Use custom multiplier 512
4.3 配置第三个监控项
Name:Disk:$1:Read:ops per second
Key: custom.vfs.dev.read.ops[vda1]
Units: ops/second
Store value: speed per second
4.4 配置第四个监控项 Name: Disk:$1:Write:ops per second
Key: custom.vfs.dev.write.ops[vda1]
Units: ops/second
Store value: speed per second
4.5 配置第五个监控项
Name: Disk:$1:Read:ms
Key: custom.vfs.dev.read.ms[vda1]
Units: ms
Store value: speed per second
4.6 配置第六个监控项
Name:Disk:$1:Write:ms
Key: custom.vfs.dev.write.ms[vda1]
Units: ms
Store value: speed per second
注:参数 vda1 为监控的盘符,可在agent服务器上通过 df 命令进行查询,一般监控使用多的盘
5. 创建监控图形,在模板中点击图形,再点击右上角的创建图形按钮
至此图形创建成功,如图
点击预览可看到图形
样式如图,可能不会实时显示数据,如想看数据,可在菜单栏点击 监控中》》图形》》群组》》主机》》图形》》
五、自建模板监控某进程的状态
(一).场景:如监控 b2b-discovery-0.1.0-SNAPSHOT.jar 这个jar包在被监控主机中是否运行中、所占cpu资源、cpu使用时间等信息
一般监控项的结果是数值或文本,如 检测以上jar包有几个进程在运行
最终通过agent将数据插入数据库保存,在web页面展示或设置报警等操作,如图
(二)在agent端配置监控文件
1. 编辑的文件目录 vi etc/zabbix/zabbix_agentd.conf
在 UserParameter 下添加配置
UserParameter=discovery_proc_num,ps -ef|grep b2b-discovery-0.1.0-SNAPSHOT.jar |grep -v grep|wc -l
成功后重启agent 命令: systemctl restart zabbix-agent.service
(三)web端创建监控项
其监控命令:
UserParameter=discovery_proc_num,ps -ef|grep b2b-discovery-0.1.0-SNAPSHOT.jar |grep -v grep|wc -l #进程数数
UserParameter=discovery_cpu_resourse_use_rate,ps -ef|grep b2b-discovery-0.1.0-SNAPSHOT.jar |grep -v grep|awk '{print $4}' # 应用占用cpu资源百分比
UserParameter=discovery_cpu_use_time,ps -ef|grep b2b-discovery-0.1.0-SNAPSHOT.jar |grep -v grep|awk '{print $7}' #cpu占用时间
UserParameter=discovery_cpu_use_rate,ps -aux|grep b2b-discovery-0.1.0-SNAPSHOT.jar |grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$3}; END{print sum}' #cpu使用率
UserParameter=discovery_mem_use_rate,ps -aux|grep b2b-discovery-0.1.0-SNAPSHOT.jar |grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$4}; END{print sum}' #内存使用率
结尾:
以下贴出一下自己查过的资料
zabbix各项监控方式综述(很全): http://blog.51cto.com/ustogether/1922361
agent 端配置文件说明: http://blog.chinaunix.net/uid-29155617-id-4668602.html
server端安装部署: https://www.cnblogs.com/xiewenming/p/7732144.html
创建模板、监控项: http://blog.51cto.com/183530300/2087741
自定义IO监控: https://blog.csdn.net/hao134838/article/details/57406028
添加IO监控: https://blog.csdn.net/mtj66/article/details/78591663
监控进程的cpu的内存占用量: https://blog.csdn.net/dc666/article/details/78120828
agent类型key:http://www.ttlsa.com/zabbix/zabbix-agent-types-and-all-keys/
安装agent并添加到zabbix web中监控: http://blog.51cto.com/dyc2005/1971212
阿里云zabbix教程(也很全,有不懂的也可参考): https://www.aliyun.com/jiaocheng/135759.html
zabbix常用监控项: https://blog.csdn.net/u011731378/article/details/80154393