Zabbix监控平台:从部署到告警的指南
一、zabbix部署
浏览器访问Download and install Zabbix
1.1部署配置
配置仓库
[root@server1 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-latest-6.0.el9.noarch.rpm
安装zabbix server、web前端、agent
[root@server1 ~]# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
安装mysql数据库
[root@server1 ~]# dnf install -y mysql-server
[root@server1 ~]# systemctl enable --now mysqld.service
[root@server1 ~]# mysql
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
导入zabbix初始架构和数据
[root@server1 ~]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix 等待命令行出现
[root@server1 ~]# mysql -uroot -p 注意密码为空
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;
修改zabbix server 连接数据库的密码
[root@server1 ~]# vim /etc/zabbix/zabbix_server.con
[root@server1 ~]# systemctl enable --now zabbix-server zabbix-agent httpd php-fpm
1.2zabbix前端初始化
使用浏览器访问前端:http://192.168.164.160/zabbix
检查环境
填写前端连接数据库使用的用户和密码
填写zabbix server的信息
初始化完成,进入zabbix
前端界面汉化
安装中文locale支持
[root@server1 ~]# dnf install glibc-langpack-zh -y
生成/刷新locale
[root@server1 ~]# localectl list-locales | grep zh_CN
[root@server1 ~]# cp simkai.ttf /usr/share/zabbix/assets/fonts
[root@server1 ~]# cd /usr/share/zabbix/assets/fonts
重做软连接
[root@server1 fonts]# rm -f graphfont.ttf
[root@server1 fonts]# ln -s simkai.ttf graphfont.ttf
二、添加zabbix-agent
2.1server2配置
设置yum源
[root@server2 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-latest-6.0.el9.noarch.rpm
[root@server2 ~]# dnf install -y zabbix-agent
[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf
[root@server2 ~]# systemctl enable --now zabbix-agent
查看监听端口
[root@server2 ~]# netstat -antlp|grep :10050
2.2server3配置
[root@server3 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-latest-6.0.el7.noarch.rpm
[root@server3 ~]# yum install -y zabbix-agent
[root@server3 ~]# vim /etc/zabbix/zabbix_agentd.conf
[root@server3 ~]# systemctl enable --now zabbix-agent
前端zabbix需要手动添加
[root@server3 ~]# cat /var/log/zabbix/zabbix_agentd.log
手动测试连通性,key值也可以先手动测试是否有返回值
server1上
[root@server1 ~]# yum install -y zabbix-get
[root@server1 ~]#zabbix_get -s 192.168.36.162-p 10050 -k 'agent.ping'
[root@server1 ~]# zabbix_get -s 192.168.164.161 -p 10050 -k 'system.hostname'
三、zabbix前端服务
3.1创建监控项
(1)监控CPU负载
检测
server2上
[root@server2 ~]# md5sum /dev/zero &
[root@server2 ~]# fg 记住退出,否则一直消耗内存
(2)监控根分区使用量
(3)监控根分区空闲百分比
测试消耗磁盘空间
[root@server2 ~]# dd if=/dev/zero of=/bigfile bs=1G count=30
[root@server2 ~]# df -h /
3.2创建触发器
(1)检测cpu负载情况
[root@server2 ~]# md5sum /dev/zero &
[root@server2 ~]# fg
(2)检测根分区空闲空间
[root@server2 ~]# df -h /
告警及处理、确认
3.3创建图形
主机创建图形
以图表的形式展现
3.4媒介
邮件Email
使用网易邮箱测试
发送邮件
接收邮件
报警媒介
禁用email以外所有媒介
用户添加报警媒介
启用触发器动作
server2上进行测试
[root@server2 ~]# md5sum /dev/zero &
收到问题邮件
[root@server2 ~]# fg
收到解决问题邮件
3.5用户群组
添加用户群组
添加权限
创建用户
添加报警媒介
添加权限
添加触发器动作
3.6模板,自动注册动作,自动发现
创建模板
复制server2的配置给创建的模板
删除server2
启用发现动作
先发现动作,在自动发现,发现server2
关闭发现动作、自动发现
创建自动注册动作
设置发现后的操作
启用自动注册动作
修改server2配置文件
[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf
[root@server2 ~]# systemctl restart zabbix-agent.service
查看主机,发现server2,server2自动配置
四、服务监控
4.1nginx
agent安装软件,server2上
[root@server2 ~]# yum install -y nginx
修改配置文件
[root@server2 ~]# vim /etc/nginx/nginx.conf
[root@server2 ~]# systemctl enable --now nginx
测试
[root@server2 ~]# curl localhost/basic_status
主机关联服务监控模板
4.2mysql
安装mysql服务
[root@server2 ~]# yum install -y mysql-server
[root@server2 ~]# systemctl enable --now mysqld
[root@server2 ~]# cp /usr/share/doc/zabbix-agent/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.d/
[root@server2 ~]# systemctl restart zabbix-agent
配置数据库监控用户
[root@server2 ~]# mysql
mysql> CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY 'westos';
mysql> GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
mysql> quit
创建mysql客户端配置
[root@server2 ~]# mkdir /var/lib/zabbix
[root@server2 ~]# vim /var/lib/zabbix/.my.cnf
主机关联服务监控模板
percona数据库监控模板
serfer3上
[root@server3 ~]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm
[root@server3 ~]# cd /var/lib/zabbix/percona/templates
拷贝模板
[root@server3 templates]# cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
[root@server3 templates]# systemctl restart zabbix-agent
[root@server3 templates]# yum search mysql
[root@server3 templates]# yum install -y mariadb-server.x86_64
[root@server3 templates]# yum install -y php php-mysql
[root@server3 templates]# systemctl enable --now mariadb.service
[root@server3 templates]# mysql
MariaDB [(none)]> grant all on *.* to root@'localhost' identified by 'westos';
[root@server3 templates]# mysql -pwestos
[root@server3 templates]# cd /var/lib/zabbix/percona/scripts
[root@server3 scripts]# vim ss_get_mysql_stats.php
测试
[root@server3 scripts]# su -s /bin/sh -c "/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg" zabbix 不能使用超户
4.3tomcat
安装jmx
[root@server1 ~]# yum install zabbix-java-gateway.x86_64
[root@server1 ~]# systemctl enable --now zabbix-java-gateway
查看端口
[root@server1 ~]# netstat -antlp|grep :10052
配置zabbix server,server1上
[root@server1 ~]# vim /etc/zabbix/zabbix_server.conf
[root@server1 ~]# systemctl restart zabbix-server
agent上部署tomcat服务,server3上
[root@server3 ~]# yum install java-1.8.0-openjdk.x86_64
[root@server3 ~]# tar zxf apache-tomcat-9.0.120.tar.gz -C /usr/local/
[root@server3 ~]# cd /usr/local/
[root@server3 local]# ln -s apache-tomcat-9.0.120/ tomcat
[root@server3 local]# cd tomcat/
修改配置
[root@server3 tomcat]# vim bin/catalina.sh
tomcat9
启动服务
[root@server3 tomcat]# /usr/local/tomcat/bin/shutdown.sh
[root@server3 tomcat]# /usr/local/tomcat/bin/startup.sh
[root@server3 tomcat]# netstat -antlp|grep :8888
五、集成外部告警
使用睿象云智能告警平台,绑定微信、邮箱等可以通知告警
通知策略
分派策略
六、zabbix api
使用api可以进行大量机器的配置操作
登录获取认证token
[root@server1 ~]# curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}' http://192.168.164.160/zabbix/api_jsonrpc.php | python -m json.tool
返回
{
"jsonrpc": "2.0",
"result": "8b989509fa36d7fd7d3ade7ce6a3cf3c",
"id": 1
}
result内字符串就是auth token ,复制保存用于后续接口
查询主机列表
[root@server1 ~]# vim zabbix-api.sh
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": "8b989509fa36d7fd7d3ade7ce6a3cf3c"
}' http://192.168.164.160/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# chmod +x zabbix-api.sh
[root@server1 ~]# ./zabbix-api.sh
得到hostid
删除主机
[root@server1 ~]# vim zabbix-api.sh
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10444"
],
"auth": "8b989509fa36d7fd7d3ade7ce6a3cf3c",
"id": 1
}' http://192.168.164.160/zabbix/api_jsonrpc.php | python -m json.tool
添加主机
[root@server1 ~]# vim zabbix-api.sh
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "server2", agent名称
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.164.161",agent主机IP
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"主机组ID
}
],
"tags": [
{
"tag": "Host name",
"value": "Linux server"
}
],
"templates": [
{
"templateid": "10001"模板ID
}
]
},
"id": 1,
"auth": "8b989509fa36d7fd7d3ade7ce6a3cf3c"
}' http://192.168.164.160/zabbix/api_jsonrpc.php | python -m json.tool