Zabbix
zabbix的基本信息
监控系统zabbix
版本6.4.20
-
为了保证集群的健康,我们需要检测服务器的状态,就有了监控系统,专门来监控服务器的状态,当服务器状态出现问题,可以用告警的形式来提示。
-
服务器上部署的关键的业务组件:nginx,mysql等等,如果出现故障,他也可以提示给用户,可以让尽快的处理问题。
(监控系统只能发现,不能解决问题。) -
zabbix是一个基于web页面的(可视化系统),分布式的系统监控和网络监控的企业级的开源监控方案。
zabbix的功能
- 监控服务器关键硬件的状态
- 可以服务器的关键指标
- 可以监控服务器上关键应用的状态。
- 可以监控网络设备(路由器,交换机等等)
- 关于监控容器(zabbix5开始兼容容器的监控,但是效果不是很好,目前监控容器的主流还是普罗米修斯)
zabbix的组件
- C/S模式:client server,服务端和客户端,zabbix server和zabbix-agent,c/s模式是一个数据采集的模式,客户端把数据发送给服务端
- B/S模式:browser/server浏览器和服务端,浏览器访问服务端的内容。b/s提供的是数据的展示和相关的监控项的配置。
zabbix-server:服务端
zabbix-agent:客户端
zabbix-proxy:服务端的代理服务器,可以代替服务端收集客户端的数据,然后转发给服务端。降低服务端直接收集客户端数据带来的系统压力。
zabbix_get:zabbix的命令行工具。
Zabbix的使用与安装
test1:192.168.233.10 zabbix-server
test2:192.168.233.20 zabbix-agent2,zabbix-proxy
test3:192.168.233.20 zabbix-agent2
qq邮箱的smtp不支持zabbix6
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb
apt-get update
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent -y
#安装数据库
apt install mariadb-server -y
mysql_secure_installation
Enter current password for root(enter for none):回车
Switch to unix socket authentication [Y/n]y
Change the root password? [Y/n] y
123456
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n]y
Reload privilege tables now? [Y/n] y
#创建zabbix的库和用户
mysql -u root -p123456
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'zabbix';
grant all privileges on zabbix.* to zabbix@localhost;
flush privileges;
#导入
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -u root -p123456 zabbix
vim /etc/zabbix/zabbix_server.conf
129 DBPassword=zabbix
#取消注释
systemctl restart zabbix-server zabbix-agent apache2
#服务器
192.168.233.10/zabbix/setup.php
#解决乱码
cd /usr/share/zabbix/assets/fonts
#拖入
simkai.ttf
cp /usr/share/zabbix/include/defines.inc.php /usr/share/zabbix/include/defines.inc.php.bak
vim /usr/share/zabbix/include/defines.inc.php
89 define('ZBX_GRAPH_FONT_NAME', 'simkai'); // font file name
147 define('ZBX_FONT_NAME', 'simkai');
#graphfont改为simkai
test1主机
vim /etc/zabbix/zabbix_agentd.conf
117 Server=192.168.246.6
171 ServerActive=192.168.246.6
180
#被注释的
181 Hostname=test1
vim /etc/hosts
192.168.246.6 test1
192.168.246.11 test2
192.168.246.12 test3
systemctl restart zabbix-agent.service
test2主机
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb
apt-get update
apt -y install zabbix-agent2
rootatest2:/opt# systemctl status zabbix-agentd.service
Unit zabbix-agentd.service could not be found.
vim /etc/zabbix/zabbix_agent2.conf
#指向服务端
80 Server=192.168.246.6
133 ServerActive=192.168.246.6
143 删除注释的Hostname
144 Hostname=test2
vim /etc/hosts
192.168.246.6 test1
192.168.246.11 test2
192.168.246.12 test3
systemctl restart zabbix-agent2.service
netstat -antp | grep 10050
test1
apt -y install zabbix-get
#命令行工具
root@test1:/opt# zabbix_get -s '192.168.246.11' -p 10050 -k 'agent.ping'
1
#返回1,通信正常
Zabbix的监控的原理
模板-----监控项-----触发器-----实现监控(脚本的实现)
配置自定义监控项
#test2命令行
cd /etc/zabbix/zabbix agent2.d
vim user.conf
#添加
UserParameter=login.user,who | wc-l
systemctl restart zabbix-agent2.service
zabbix_get -s '192.168.246.11' -p 10050 -k 'login.user'
页面
测试完成后添加
监控的模式
zabbix的主动模式和被动模式
主动和被动模式都是对于客户端而言的。
主动模式:客户端主动将数据发送给server或者是代理
被动模式:服务端或者porxy(代理)主动去找客户端索要数据。----被动模式(默认)
被动模式在成规模的集群(成百上千台的)都是由服务端主动去找,那么服务端的压力会很大。
自动发现
服务端可以自动发现客户端,并且把客户端添加到监控组当中去。
zabbix官网提供的API内部的接口。api和端口之间的区别
端口: 应用和应用之间的通信
api:应用内部的组件进行通信用
内部的token秘钥,首先要获取内部的通信秘钥。
#服务端命令行使用
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"username": "Admin",
"password": "zabbix"
},
"id": 1
}' http://192.168.246.6/zabbix/api_jsonrpc.php
#秘钥
aea5d00bc484587e22c587a0c7a923c5
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "test2",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.246.11",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10632"
}
]
},
"auth": "aea5d00bc484587e22c587a0c7a923c5",
"id": 1
}' http://192.168.246.6/zabbix/api_jsonrpc.php | python3 -m json.tool
代理设置
#test2
#安装代理
apt install -y zabbix-proxy-mysql zabbix-get zabbix-sql-scripts
apt install -y mariadb-server
mysql_secure_installation
mysql -u root -p123456
CREATE DATABASE zabbix_proxy character set utf8 collate utf8_bin;
GRANT all ON zabbix_proxy.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
flush privileges;
exit
cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql -u root -p123456 zabbix_proxy
vim /etc/zabbix/zabbix_proxy.conf
32与42左右,ip改为主机的ip
194 DBPassword=zabbix
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "test2",
"proxy_hostid": "10636",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.246.7",
"dns": "",
"port": "10001"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"auth": "aea5d00bc484587e22c587a0c7a923c5",
"id": 1
}' http://192.168.246.6/zabbix/api_jsonrpc.php | python3 -m json.tool
vim /etc/zabbix/zabbix agent2.conf
指向代理
systemctl restart zabbix-agent2.service
批量添加主机
shell脚本:
#!/bin/bash
IP="
192.168.246.11
192.168.246.7
"
for i in ${IP}
do
#获取主机名
hostname=$(nslookup ${i} | grep 'name =' | awk '{print $4}'| sed 's/\.//')
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "'${hostname}'",
"proxy_hostid": "10636",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "'${i}'",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"auth": "aea5d00bc484587e22c587a0c7a923c5",
"id": 1
}' http://192.168.246.6/zabbix/api_jsonrpc.php | python3 -m json.tool
done
zabbix-snmp监控
snmp: 简单网络管理协议
simple network management protocol
用来监控和管理网络设备的标准协议
apt -y install snmp snmpd
snmp-agent sys-info version all
#snmp1 snmp2 snmp3 all 开启snmp协议之后,支持以上的所有版本。
snmp-agent community write public
#路由器设备可以被哪些团体进行读写,public:公共组,所有设备都可以读写路由器的配置信息
snmp-agent target-host trap-hostname zabbix address 192.168.233.10 udp-p ort 161 trap-paramsname zabbix
#声明监控的zabbix的server端的ip地址,和snmp的监听端口
路由器配置
ping 192.168.246.6
#test1
vim /etc/snmp/snmpd.conf
设备的oid信息,一般都是从设备厂商直接获取
1:表示设备名,查询设备的所有信息
数字越短,能看到的信息就越多
systemctl restart snmpd.service
snmpwalk -c public -v2c 192.168.246.100