Zabbix
zabbix 可以用来监测服务器状态
比如做压力测试时,可以用 zabbix 来采集测试数据
- zabbix 内置数据
- 自定义数据
Zabbix 工作原理
Zabbix 分为 4 部分:
- zabbix frontend
- zabbix_agentd
- zabbix_server
- database
+-----------------+
| zabbix_agentd +------+
+-----------------+ |
|
+-----------------+ | +---------------+ +----------------+
| zabbix_agentd +--------------+ zabbix_server +-------+ database |
+-----------------+ | +-------+-------+ +----------------+
| |
+-----------------+ | |
| zabbix_agentd +------+ |
+-----------------+ |
+--------+--------+
| zabbix frontend |
+-----------------+
如上图, 1 台 zabbix_server , 要监视的主机上装 zabbix_agentd 。
- zabbix_agentd 定期上报监测数据
- zabbix_server 把监测数据存入数据库
- 通过 zabbix frontend ,网页访问 zabbix 界面
安装 Zabbix
参考官方文档: https://www.zabbix.com/download?zabbix=4.0&os_distribution=centos&os_version=7&db=mysql
本例子 zabbix_agentd 也安装在 Zibbix server 机器上(实际需要安装到待监测的主机上)
概括下大致如下步骤:
- 安装 zabbix
rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
- 创建数据库
# mysql -uroot -p password mysql> CREATE USER 'zabbix'@'%' IDENTIFIED BY 'password'; mysql> create database zabbix character set utf8 collate utf8_bin; mysql> grant all privileges on zabbix.* to 'zabbix'@'%'identified by 'password'; mysql> quit; zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix -h 127.0.0.1
- Zabbix server 设置数据库信息
- 主要设置 mysql 密码
- Zabbix 前端设置时区
- 时区改为: Asia/Shanghai
- 开启服务
- 安装 Zabbix frontend
添加监测主机
参考官方文档: https://www.zabbix.com/documentation/4.0/manual/quickstart/host
待监测的主机需要安装 zabbix agentd 。安装方法上面已介绍,大致如下:
rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
yum -y install zabbix-agent
systemctl restart zabbix-agent
systemctl enable zabbix-agent
添加监测数据
两个步骤:
- 创建监测项
- 创建图形
添加自定义监测数据
参考官方文档: https://www.zabbix.com/documentation/4.0/manual/config/items/userparameters
文档中介绍了主要事项,这里举例说明:
-
编写采样脚本,比如 /opt/kgetactive.sh:
#! /bin/bash logdate=$(date +%Y-%m-%d) logfile_tmp='/path/log/xxxserver_' logfile="${logfile_tmp}${logdate}.log" f_grepKeyword () { tail -100 ${logfile} | egrep -E " ${1}:[0-9]+" | tail -1 | awk -F':' '{print $NF}' } if [[ -f ${logfile} ]] then getactive=$(f_grepKeyword $1) if [[ -n ${getactive} ]] then echo ${getactive} else echo "0" fi else echo "0" fi
该脚本意思为通过日志文件获取带某些前缀(${1}:)后面的数字,比如 online:100 ,则执行命令:
./kgetactive.sh online
-
给 zabbix agentd 配置设置自定义监测项
echo 'UserParameter=myGraph.online,sudo /opt/kgetactive.sh online' > /etc/zabbix/zabbix_agentd.d/userparameter_mygraph.conf
-
确保 zabbix 有可执行权限,并把
Defaults requiretty
注释掉echo 'zabbix ALL=NOPASSWD: ALL' >> /etc/sudoers
-
修改 zabbix agentd 配置, vi /etc/zabbix/zabbix_agentd.conf , 设置 UnsafeUserParameters = 1
-
可能需要重启 zabbix_agentd
-
在 zabbix frontend 中, 按
添加监测数据
步骤添加监测项。唯一的区别是,Key 填写 myGraph.online -
关闭 selinux , 如临时关闭: setenforce 0
以上