-
简介
-
Zabbix 是一款可监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康状况和完整性。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的警报。这允许对服务器问题做出快速反应。Zabbix 基于存储的数据提供报告和数据可视化功能。这使得 Zabbix 成为容量规划的理想选择。
zabbix server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行
zabbix database:用户存储所有配置信息,以及存储由zabbix server收集到的数据
zabbix web:zabbix的interface接口,通常与Server运行在同一台主机上
zabbix agent:部署在被监控主机上,负责收集本地数据发往server端或proxy端
zabbix proxy:常用于分布监控环境中,代理Server收集部分被监控的监控数据并统一发往Server端(通常大于500台主机才需要使用)
-
Zabbix 监控系统监控对象
数据库: MySQL,MariaDB,Oracle,SQL Server agent
应用软件:Nginx,Apache,PHP,Tomcat agent
集群: LVS,Keepalived,HAproxy,RHCS,F5 agent
虚拟化: VMware,KVM,XEN ,docker,k8s agent
操作系统:Linux,Unix,Windows性能参数 agent
硬件: 服务器,存储,网络设备 IPMI
网络: 网络环境(内网环境,外网环境) SNMP
-
Zabbix监控方式
(1)主动模式
主动检测:相对于server而言;server向agent请求获取监控项相关的数据,agent接收请求、获取数据并响应给server;
(2)被动模式
被动检测:相对于server而言;、agent向server请求与自己相关监控项配置,主动地将server配置的监控项相关的数据发送给server;
被动监控能极大节约监控server 的资源。
-
部署
-
安装zabbix仓库
wget https://repo.zabbix.com/zabbix/6.4/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb
dpkg -i zabbix-release_latest+debian12_all.deb
apt update
-
安装Zabbix server Web前端 agent
apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
-
数据库
-
安装数据库
apt -y isntall mysql ###ubuntu
apt -y isntall mariadb-server ##debian12
-
初始化启动数据库
use mysql
alter user root@localhost identified by '1';
create user root@% identified by '1';
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'password';
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;
-
导入初始架构和数据
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
-
导入数据库架构后禁用 log_bin_trust_function_creators 选项
mysql> set global log_bin_trust_function_creators = 0;
-
修改配置文件
-
为 Zabbix server配置数据库
编辑配置文件 /etc/zabbix/zabbix_server.conf 中
DBPassword=数据库密码 ##取消注释-
-
为Zabbix前端配置PHP
编辑配置文件 /etc/zabbix/nginx.conf 中 uncomment 并设置 'listen' 和 'server_name' 指令。
-
listen 8080; server_name example.com ##取消注释
启动Zabbix server和agent进程
启动Zabbix server和agent进程,并为它们设置开机自启:
systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm
systemctl enable zabbix-server zabbix-agent nginx php7.4-fpm
-
浏览器进入
ip:端口
填写数据库信息
填写完要监控的主机后 下一步登陆进入
客户端配置zabbix
-
安装zabbix仓库
# wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest+ubuntu24.04_all.deb
# dpkg -i zabbix-release_latest+ubuntu24.04_all.deb
# apt update
-
安装zabbix agent2
# apt install zabbix-agent2 zabbix-agent2-plugin-*
-
启动
# systemctl restart zabbix-agent2
# systemctl enable zabbix-agent2
-
修改配置文件
路徑: /etc/zabbix/zabbix_agent2.conf
Server=服务端ip
个人邮箱报警设置
-
点击email
-
创建媒介
=
-
添加主机
-
添加监控项
需要修改配置文件
/etc/zabbix/zabbix_agent2.conf
Server=地址为要监控的地址
ServerActive=地址为要监控的地址
添加完成后测试
-
创建触发器
-
创建键值
名字为自己创建的名字
[root@mysql-62 ~]# cd /etc/zabbix/zabbix_agent2.d/
[root@mysql-62 zabbix_agent2.d]# vim User_MySQL.conf
UserParameter=User.MySQL,who |wc -l
[root@mysql-62 zabbix_agent2.d]# systemctl restart zabbix-agent2.service
-
下载中文包
apt -y install language-pack-zh-hans
飞书zabbix
-
创建群机器人
-
服务端编写脚本
在/usr/lib/zabbix/alertscripts/下编写脚本
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
import datetime
# 你复制的webhook地址粘贴进url内
url = "https://open.feishu.cn/open-apis/bot/v2/hook/d61e7b5b-2c40-4de9-a263-10x1a0f6e037"
def send_message(message):
payload_message = {
"msg_type": "text",
"content": {
"text": message
}
}
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=json.dumps(payload_message))
return response
if __name__ == '__main__':
text = sys.argv[1]
send_message(text)
增加执行权限
增加执行权限
chmod +x feishu.py
root@Ubuntu-zabbix:/usr/lib/zabbix/alertscripts# ./feishu.py 测试
企业微信脚本
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import requests
import sys
headers = {'Content-Type': 'application/json'}
api_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=9ad8dc8c-732f-48f5-a5b6-4e7910d837c4"
def msg(text):
json_text = {
"msgtype": "markdown",
"markdown": {
"content": text
}
}
response = requests.post(api_url, json=json_text, headers=headers)
print(response.content.decode('utf-8')) # 解码响应内容以便打印
if __name__ == '__main__':
if len(sys.argv) < 2:
print("Usage: python3 script.py 'Your message here'")
sys.exit(1)
text = sys.argv[1]
msg(text)
结果
-
zabbix的web设置
-
创建媒介
{ALERT.MESSAGE} ## 在脚本参数里写下
-
用户设置
-
创建动作
添加自定义信息
告警通知!!!
告警人:尼成龙
告警主机:{HOST_NAME}
主机地址:{HOST_IP}
告警等级:{TRIGGER_SEVERITY}
告警信息:{TRIGGER_NAME}
告警状态:{
{TRIGGER_STATUS}:{TIME_VALUE}