监控系统–zabbix
为了保证集群的健康,我们需要检测服务器的状态,就有了监控系统,专门来监控服务器的状态,
当服务器状态出现问题,可以用告警的形式来提示运维人员
服务器上部署的关键的业务组件:nginx,mysql等等,如果出现故障,他也可以提示给用户,可以让用户尽快的处理问题,监控系统只能发现,不能处理
zabbix是什么;
zabbix是基于web页面的(可视化系统),分布式的系统监控和网络监控的企业级的开源监控方案
zabbix功能:
1、可以监控服务器关键硬件的状态
2、可以监控服务器的关键指标
3、可以监控服务器上的关键应用的状态
4、可以监控网络设备(路由器,交换机等等)
5、关于监控容器(zabbix5开始可以兼容容器的监控,但是效果不是很好,目前监控容器的主流还是普罗米修斯)
zabbix的组件
C/S模式:client server服务端和客户端,zabbix sever 和zabbix-agent
c/s模式是一个数据采集的模式,客户端把数据发送给服务端
B/S:browser/server 浏览器和服务端,浏览器访问服务端的内容
b/s提供的是数据的展示和相关的监控项的配置
zabbix server 服务端
zabbix-agent 客户端
zabbix proxy 服务端的代理服务器,可以代替服务端收集客户端的数据,然后转发给服务端,降低服务端直接收集客户端数据带来的系统压力
zabbix get:zabbix的命令行工具
配置
test1 192.168.42.23 zabbix-server
test2 192.168.42.21 zabbix-agent2 zabbix-proxy
test3 192.168.42.22 zabbix-agent2
qq邮箱的smtp不支持zabbix6
126网易 做smtp服务器
test1 192.168.42.23
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 install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent -y
apt install mariadb-server -y
mysql_secure_installation
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;
exit
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -u root -p123456 zabbix
vim /etc/zabbix/zabbix_server.conf
第129行去掉注释
systemctl restart zabbix-server zabbix-agent apache2
cd /usr/share/zabbix/assets/fonts
把simkai.ttf拖进来
cp /usr/share/zabbix/include/defines.inc.php
vim /usr/share/zabbix/include/defines.inc.php
第89行
simkai
第147行
simkai
vim /etc/zabbix/zabbix_agentd.conf
117行
Server=192,168.42.20
171行
ServerActive=192,168.42.20
181行注释掉的Hostname删掉
Hostname=test1
vim /etc/hosts
systemctl restart zabbix-agent.service
apt -y install zabbix-get
zabbix_get -s '192.168.42.20' -p 10050 -k 'agent.ping'
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
systemctl status zabbix-agent
vim /etc/zabbix/zabbix_agent2.conf
80行
Server=192,168.42.20
133行
ServerActive=192,168.42.20
144行注释掉的Hostname删掉
Hostname=test2
vim /etc/hosts
systemctl restart zabbix-agent2.service
netstat -antp | grep 10050
zabbix可用性:
zbx:监控服务器设备的网络,以及服务器监控状态,以及告警
jmx:开发人员监控java应用程序使用的组件
snmp:监控网络设备
ipmi:通过网络管理服务器的电源,温度,风扇速度等等,
zabbix监控原理
zabbix的监控的原理:
模板------监控项------触发器------实现监控(脚本的实现)。
Zabbix的监控原理:
模板:定义监控的框架和配置。
监控项:具体的监控对象或指标。
触发器:定义何时触发报警或动作的条件。
实现监控(脚本的实现):通过脚本来实现具体的监控功能和响应
监控模式
zabbix的主动模式和被动模式,主动模式和被动模式都是对于客户端而言
主动模式:客户端主动将数据发送给server或者代理服务器
被动模式:服务端或者代理主动去找客户端索要数据,被动模式是默认的,被动模式在成规模的集群,都是由服务端主动去找的,那么服务端的压力会很大
自动发现
自动发现:服务端可以自动发现客户端,并且把客户端添加到监控组当中去
服务端
curl -s -X POST -H 'Content-Type:application/json' -d '
#post:服务器的后台发送数据
#Content-Type:application/json:发送的应用数据格式是json
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"username": "Admin",
"password": "zabbix"
},
"id": 1
}' http://192.168.42.10/zabbix/api_jsonrpc.php
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create",#定义请求的方法,方法很多,创建主机
"params": {
"host": "test3",#定义客户端的主机名
"interfaces": [#定义监控的类型和客户端的信息
{
"type": 1,#类型为1 agent 2 snmp 3 umpi 4
"main": 1,#调用主接口
"useip": 1,#0使用dns解析主机名1,表示使用ip地址
"ip": "192.168.42.12",#客户端的ip地址
"dns": "",
"port": "10050"#客户端的端口
}
],
"groups": [
{
"groupid": "2"#所属的主机组id
}
],
"templates": [
{
"templateid": "10001"#所属的模版id
}
]
},
"auth": "41cac7c950bcbe28183ad3b33b7b500f",
"id": 1
}' http://192.168.42.10/zabbix/api_jsonrpc.php | python3 -m json.tool
代理
代理服务器
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb
apt-get update
dpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb
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-porxy.conf
第32行
Server=192.168.42.10
42行
Hostname=test4
194行
DBPassword=zabbix
systemctl restart zabbix-porxy
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "test3",
"proxy_hostid": "10635",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.42.12",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"auth": "41cac7c950bcbe28183ad3b33b7b500f",
"id": 1
}' http://192.168.42.10/zabbix/api_jsonrpc.php | python3 -m json.tool
批量添加主机
批量添加主机依靠shell脚本实现
主服务器
cd /opt
vim zd.sh
#!/bin/bash
ip="
192.168.42.11
192.168.42.12"
for i in $ {ip}
do
#获取主机名
hostname=$(nslookup ${i} | awk '{print $4}' | sed 's/\.//')
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "'${hostname}'",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "'${i}'",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"auth": "41cac7c950bcbe28183ad3b33b7b500f",
"id": 1
}' http://192.168.42.10/zabbix/api_jsonrpc.php | python3 -m json.tool
done
保存退出
批量代理添加主机
#!/bin/bash
ip="
192.168.42.11
192.168.42.12"
for i in ${ip}
do
hostname=$(nslookup ${i} | 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": "10635",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "'${i}'",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"auth": "41cac7c950bcbe28183ad3b33b7b500f",
"id": 1
}' http://192.168.42.10/zabbix/api_jsonrpc.php | python3 -m json.tool
done
zabbix-snmp监控:
snmp:简单网络管理协议
服务端
apt -y install snmp snmpd
vim /etc/snmp/snmp.conf
62行
view systemonly included .1
systemctl restart snmpd.service
snmpwalk -c public -v 2c 192.168.42.100
ensp
utm
sys
int g0/0/0
ip address 192.168.42.100 24
q
snmp-agent
snmp-agent sys-info version all
snmp-agent community write public
snmp-agent target-host trap-hostname zabbix address 192.168.42.10 udp-port 161 trap-paramsname zabbix
anmp-agent trap enable
simple network management protocol:用来监控和管理网络设备的标准协议,路由器,交换机等等
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的监听端口
view systemonly included .1
设备的oid信息,一般都是从设备厂商直接获取
1:表示设备名,查询设备的信息
数字越少,能看到的信息越多