当前位置: 首页 > article >正文

监控系统-zabbix

监控系统–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=192168.42.20
171行
ServerActive=192168.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=192168.42.20
133行
ServerActive=192168.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:表示设备名,查询设备的信息

数字越少,能看到的信息越多

http://www.kler.cn/a/517001.html

相关文章:

  • Java如何实现反转义
  • 激光线扫相机无2D图像的标定方案
  • 小游戏源码开发搭建技术栈和服务器配置流程
  • c#的tabControl控件实现自定义标签颜色
  • Java 基于 SpringBoot 的校园外卖点餐平台微信小程序(附源码,部署,文档)
  • 方便快捷的软件展示平台查找和下载所需的软件
  • JAVA与数据结构-线性表
  • Git处理冲突详解
  • 如何把jupyter的一个.ipynb文件的多个单元格cell合并为1个cell
  • 深度学习之使用yolo网络训练kitti数据集:kitti数据集转换为VOC格式
  • RabbitMQ 仲裁队列 -- 解决 RabbitMQ 集群数据不同步的问题
  • 从Python的GIL谈谈Python多线程和多进程
  • 基于 WEB 开发的手机销售管理系统设计与实现内容
  • vue2的$el.querySelector在vue3中怎么写
  • Addressable学习
  • 【Postgres_Python】使用python脚本将多个PG数据库合并为一个PG数据库
  • Amazon Redshift实用命令语句
  • docker启动服务占用172.18网段怎么改成其他网段?和网桥有关吗?或者怎么改docker-compose启动用的yml文件
  • 理解深度学习pytorch框架中的线性层
  • AWS 签名算法SigV4 的python实现
  • Oracle Agile PLM Web Service Java示例测试开发(一)环境环境、准备说明
  • easyexcel读取写入excel easyexceldemo
  • 梯度下降法 (Gradient Descent) 算法详解及案例分析
  • 3、C#基于.net framework的应用开发实战编程 - 实现(三、二) - 编程手把手系列文章...
  • 如何高效、优雅地利用正则表达式
  • EtherCAT介绍和总线结构