Zabbix

Zabbix概述

Zabbix 由 Alexei Vladishev 创建,目前由 Zabbix SIA 积极开发和维护。 Zabbix

是一款企业级开源分布式监控解决方案

Zabbix 是一款用于监控网络众多参数、服务器/虚拟机/应用程序/服务/数据库/网站/云平台等健康状态和完整性的软件。 Zabbix 提供灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警,从而实现对服务器问题的快速响应。基于存储数据, Zabbix 提供出色的报表和数据可视化功能,使其成为容量规划的理想选择。

Zabbix 同时支持轮询和捕获两种方式。所有 Zabbix 报表、统计信息及配置参数均可通过基于 Web 的前端界面访问。该 Web 前端确保您可以从任何位置评估网络状态和服务器健康状况。经过适当配置,Zabbix 可在 IT 基础设施监控中发挥重要作用,无论是对拥有少量服务器的小型组织,还是对拥有众多服务器的大型企业都同样适用。

Zabbix 完全免费。 Zabbix 基于 GNU 通用公共许可证 version 第 2 版编写和分发,这意味着其源代码可自由分发并面向公众开放。

zabbix核心组件

  1. Zabbix Server(核心)
  • 整个系统的大脑,负责数据接收、处理、存储、告警判断、任务调度。
  • 功能:接收 Agent/Proxy/SNMP 数据、触发告警、管理配置、提供 Web 后端。
  • 部署:生产环境建议独立服务器,支持 HA 高可用。
  1. Zabbix Agent/Agent 2(被监控端)
  • 部署在被监控主机,采集本地数据(系统、应用)并上报。
  • Agent: C 语言开发,轻量、单线程,适合基础监控。
  • Agent 2(6.x + 推荐): Go 语言,多线程、插件化(MySQL/Redis/K8s),性能更强。
  • 模式:主动(Agent→Server)、被动(Server→Agent)。
  1. Zabbix Proxy(可选,分布式)
  • 代理 Server 采集数据, 减轻 Server 负载、跨地域 / 跨网络监控、网络隔离
  • 不存储数据,仅转发,适合大规模、多机房场景。
  1. 数据库(Database)
  • 存储配置(主机、模板、触发器)、历史数据、趋势数据。

  • 支持: MySQL/MariaDB(最常用)、 PostgreSQL、 Oracle。

  1. Web 界面(Web Interface)
  • 基于 PHP 的可视化控制台,用于配置、查看监控、告警管理、报表。
  • 路径: http:///zabbix 。
  1. 其他工具
  • Zabbix Sender:手动 / 脚本向 Server 推送自定义数据。
  • Zabbix Get: Server 端手动测试获取 Agent 数据(调试用)。
    在这里插入图片描述

Zabbix核心定义

监控项(Item) :采集的具体指标(如 CPU 使用率、内存占用、网卡流量),是数据采集的最小单元。

触发器(Trigger) :基于监控项设置的阈值规则(如 CPU使用率>90%持续5分钟 ),触发异常状态。

动作(Action) :触发器异常后执行的操作(发邮件、短信、执行脚本、告警升级)。

模板(Template) :预定义的监控项、触发器、图形集合,可批量应用到主机,简化配置。

主机(Host) :被监控的设备(服务器、交换机、虚拟机),需关联模板才能监控。

主动模式: Agent 主动向 Server 推送数据(适合跨网络、降低 Server 负载)。

被动模式: Server 主动向 Agent 拉取数据(默认模式,配置简单)。

使用场景

  1. 服务器监控

Linux/Windows 服务器: CPU、内存、磁盘、网络、进程、负载、日志。

  1. 网络设备监控

交换机、路由器、防火墙:端口流量、状态、 CPU、内存(SNMP)。

  1. 应用服务监控

Web(Nginx/Apache)、数据库(MySQL/PostgreSQL/Oracle)、中间件(Redis、 Kafka、Tomcat)、容器(Docker/K8s)。

  1. 云平台监控

阿里云、 AWS、 VMware、 OpenStack 虚拟机与资源状态。

  1. 业务指标监控

接口响应时间、订单量、用户在线数、 API 成功率(自定义脚本 / Zabbix Sender)。

  1. 分布式 / 跨机房监控

多地域机房、网络隔离环境(用 Zabbix Proxy 代理采集)。

  1. 告警与自愈

异常自动通知、执行恢复脚本、服务重启、故障升级通知。

搭建LNMP架构

Zabbix基于LNMP架构部署

zabbix-server通过Centos-7-template模板克隆产生在这里插入图片描述

mysql001通过mysql01克隆产生在这里插入图片描述

安装 nginx

#创建nginx的yum源
[root@zabbix-server ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
enabled=1
gpgcheck=0
#安装nginx
[root@zabbix-server ~]# yum install nginx -y
#开启服务
[root@zabbix-server ~]# systemctl start nginx
[root@zabbix-server ~]# systemctl enable nginx
#防火墙添加通过http
[root@zabbix-server ~]# firewall-cmd --add-service=http --zone=public
success
[root@zabbix-server ~]# firewall-cmd --add-service=http --zone=public --permanent
success
[root@zabbix-server ~]# firewall-cmd --reload
success
[root@zabbix-server ~]#

测试nginx环境

在这里插入图片描述

安装mariadb

配置yum源

#配置Mariadb10.x yum源(zabbix6.0必须使用该版本,低版本不支持)
[root@zabbix-server ~]# vim /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = https://mirrors.aliyun.com/mariadb/yum/10.6/centos7-amd64/
enabled = 1
gpgcheck = 0

下载mariadb

[root@zabbix-server ~]# yum -y install mariadb-server mariadb
#开启服务
[root@zabbix-server ~]# systemctl enable mariadb --now
#设置root密码
[root@zabbix-server ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.6.19-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> DELETE FROM mysql.user WHERE User='';
Query OK, 2 rows affected (0.010 sec)
MariaDB [(none)]> ALTER USER root@localhost IDENTIFIED BY 'root123';
Query OK, 0 rows affected (0.005 sec)
MariaDB [(none)]>

连接数据库测试

[root@zabbix-server ~]# mysql -uroot -proot123
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.6.19-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>

安装php

[root@zabbix-server ~]# yum -y install epel-release
[root@zabbix-server ~]# sed -i "s/#baseurl/baseurl/g" /etc/yum.repos.d/epel.repo
[root@zabbix-server ~]# sed -i "s/metalink/#metalink/g"
/etc/yum.repos.d/epel.repo
[root@zabbix-server ~]# sed -i "s@https\?://download.[a-z]*\.\?[az]*/pub@https://repo.huaweicloud.com@g" /etc/yum.repos.d/epel.repo
[root@zabbix-server ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtaticrelease.rpm
[root@zabbix-server ~]# yum -y install php72w php72w-cli php72w-common php72wdevel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm
php72w-mysqlnd php72w-opcache php72w-ldap php72w-bcmath

配置nginx支持php

#修改php-fpm配置文件,把apache改为nginx
[root@zabbix-server ~]# vim /etc/php-fpm.d/www.conf
8 user = nginx
10 group = nginx
#配置location,在index中添加index.php。以支持index.php的首页
[root@zabbix-server ~]# vim /etc/nginx/conf.d/default.conf
9 index index.php index.html index.htm;
#配置php请求被传送到后端的php-fpm模块,默认情况下php配置块是被注释的,此时去掉注释并修改
#把fastcgi_param中的/scripts改为$document_root。root是配置php程序放置的根目录。
29 location ~ \.php$ {
30 root /usr/share/nginx/html; #改
成/usr/share/nginx/html
31 fastcgi_pass 127.0.0.1:9000;
32 fastcgi_index index.php;
33 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#修改这
34 include fastcgi_params;
35 }

配置php

#修改PHP配置文件
[root@zabbix-server ~]# vim /etc/php.ini
202 short_open_tag = On #支持php短标签
359 expose_php = Off #隐藏php版本
#以下为zabbix优化配置要求
368 max_execution_time = 300 #执行时间
378 max_input_time = 300 #接收数据等待时间
389 memory_limit = 128M #每个脚本占用内存
656 post_max_size = 16M #POST数据大小
799 upload_max_filesize = 2M #上传文件大小
800 always_populate_raw_post_data = -1 #原来空的,需要添加
877 date.timezone = Asia/Shanghai #时区
#启动php-fpm服务
[root@zabbix-server ~]# systemctl enable php-fpm --now
#重启nginx
[root@zabbix-server ~]# systemctl restart nginx

测试

测试php首页

[root@zabbix-server ~]# vim /usr/share/nginx/html/info.php
<?php
phpinfo();
?>

在这里插入图片描述

测试连接数据库

[root@zabbix-server ~]# vim /usr/share/nginx/html/info.php
<?php
$link=mysqli_connect('127.0.0.1','root','root123');
if ($link) echo "success";
else echo "fail";
?>
# $link=mysqli_connect('127.0.0.1','root','root123'); 设置变量$link,连接数据库
# if ($link) echo "success"; 如果连接上输出success
# else echo "fail"; 连接不上输出fail
# 创建zabbix用的数据库及账号
[root@zabbix-server ~]# mysql -uroot -proot123
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 19
Server version: 10.5.10-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> GRANT all privileges ON *.* TO 'zabbix'@'%' IDENTIFIED BY
'zabbix123';
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> GRANT all privileges ON *.* TO 'zabbix'@'localhost' IDENTIFIED
BY 'zabbix123';
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> quit
Bye
[root@zabbix-server ~]#

测试连接zaabix数据库

[root@zabbix-server ~]# vim /usr/share/nginx/html/info.php
<?php
$link=mysqli_connect('127.0.0.1','zabbix','zabbix123');
if ($link) echo "Zabbix数据库连接成功";
else echo "Zabbix数据库连接失败";
?>

测试

在这里插入图片描述

zabbix-server

导入数据库

#解压
[root@zabbix-server ~]# tar zxvf zabbix-6.0.6.tar.gz
#导入数据库
[root@zabbix-server ~]# cd /root/zabbix-6.0.6/database/mysql/ #将该目
录的数据库导入zabbix数据库
[root@zabbix-server mysql]# ls
data.sql double.sql history_pk_prepare.sql images.sql Makefile.am
Makefile.in schema.sql
[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix < schema.sql
[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix < images.sql
[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix < data.sql
[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix < double.sql
[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix <
history_pk_prepare.sql
#进入zabbix数据库查看
[root@zabbix-server mysql]# mysql -uroot -proot123
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 32
Server version: 10.5.10-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> use zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [zabbix]> show tables;
+----------------------------+
| Tables_in_zabbix |
+----------------------------+
| acknowledges |
......
| widget_field |
+----------------------------+
178 rows in set (0.002 sec) #是178条
MariaDB [zabbix]>

安装软件包

#安装zabbix环境包
[root@zabbix-server ~]# yum install -y mysql-devel pcre-devel openssl-devel zlibdevel libxml2-devel net-snmp-devel net-snmp libssh2-devel OpenIPMI-devel
libevent-devel openldap-devel libcurl-devel fping gcc gcc-c++ make
# 创建zabbix用户
[root@zabbix-server ~]# useradd -s /sbin/nologin -M zabbix
#使得编译器在编译 C 代码时使用 GNU C99 标准
[root@zabbix-server ~]# export CFLAGS="-std=gnu99"
#执行configure脚本
[root@zabbix-server ~]# cd zabbix-6.0.6/
[root@zabbix-server zabbix-6.0.6]# ./configure --sysconfdir=/etc/zabbix/ --
enable-server --with-mysql --with-net-snmp --with-libxml2 --with-ssh2 --withopenipmi --with-zlib --with-libpthread --with-libevent --with-openssl --with-ldap
--with-libcurl --with-libpcre
#安装
[root@zabbix-server zabbix-6.0.6]# make install
#检查版本
[root@zabbix-server ~]# zabbix_server --version

修改zabbix-server配置文件

[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
38 LogFile=/var/log/zabbix_server.log
123 DBPassword=zabbix123
#创建日志文件并修改属组和属主
[root@zabbix-server ~]# touch /var/log/zabbix_server.log
[root@zabbix-server ~]# chown zabbix.zabbix /var/log/zabbix_server.log
#创建并添加systemctl服务管理zabbix-server
[root@zabbix-server ~]# vim /usr/lib/systemd/system/zabbix-server.service
#添加下面这段话,直接复制
[Unit]
Description=Zabbix Server with MySQL DB
After=syslog.target network.target mysqld.service
[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_server -f
User=zabbix
[Install]
WantedBy=multi-user.target
#启动zabbix
[root@zabbix-server ~]# systemctl start zabbix-server
[root@zabbix-server ~]# netstat -ntap | grep 10051
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN
2610/zabbix_server

前端页面复制到站点

[root@zabbix-server ~]# cp -r /root/zabbix-6.0.6/ui/* /usr/share/nginx/html/
#提供网站前端
[root@zabbix-server ~]# chown -R nginx:nginx /usr/share/nginx/html/

http://192.168.108.50在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

被监控端

安装agent

通过前面mysql章节的mysql01克隆mysql001

[root@mysql001 ~]# systemctl stop firewalld.service
[root@mysql001 ~]# setenforce 0
[root@mysql001 ~]# hostnamectl set-hostname mysql001
#更新CA
[root@mysql001 ~]# yum update ca-certificates -y
#安装软件包
[root@mysql001 ~]# rpm -ivh
https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-
4.el7.noarch.rpm
[root@mysql001 ~]# yum install zabbix-agent2 -y
#启动服务
[root@mysql001 ~]# systemctl enable zabbix-agent2.service --now
#修改配置文件
[root@mysql001 ~]# vim /etc/zabbix/zabbix_agent2.conf
13 PidFile=/var/run/zabbix/zabbix_agent2.pid
32 LogFile=/var/log/zabbix/zabbix_agent2.log
43 LogFileSize=0
82 Server=192.168.108.50 #指向监控服务器
135 ServerActive=192.168.108.50 #指向监控服务器
146 Hostname=mysql001 #名称
283 Include=/etc/zabbix/zabbix_agent2.d/plugins.d/*.conf
#重启服务(先不重启看看配置生效不)
[root@mysql001 ~]# systemctl restart zabbix-agent2

zabbix管理

http://192.168.108.50

zabbix首页登录后

监控主机

配置->模板

在这里插入图片描述

定义模板新名称

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

添加数据库信息

$MYSQL.DSN 写被监控端数据库IP

在这里插入图片描述

配置->主机->创建主机

在这里插入图片描述

群组>选择

在这里插入图片描述

在这里插入图片描述

模板>选择

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

被监控主机配置

Inteerfaces: 添加>客户端

端口是10050,是zabbix客户端插件监听端口

在这里插入图片描述

在这里插入图片描述

添加后直接生成

可用性:绿色正常,一开始灰色等一会

在这里插入图片描述

告警服务

管理->报警媒介类型>创建媒体类型

在这里插入图片描述

创建媒体类型
脚本参数
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

在这里插入图片描述
管理->用户
点击Admin进入

在这里插入图片描述点击Admin进入

在这里插入图片描述
选择报警媒介
添加

在这里插入图片描述

类型选择刚刚创建的mail-test

设置完成后点击添加
收件人:填写自己邮箱地址
在这里插入图片描述
一定要进行更新
在这里插入图片描述
配置->动作->Trigger actions在这里插入图片描述
先删除默认动作,然后创建动作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
定义操作
在这里插入图片描述

主题 : {TRIGGER.STATUS}:{TRIGGER.NAME}
消息:
告警主机: {HOST.NAME}
告警 IP: {HOST.IP}
告警时间: {EVENT.DATE}-{EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}:{ITEM.VALUE}
事件 ID: {EVENT.ID}

在这里插入图片描述

主题 : {TRIGGER.STATUS}:{TRIGGER.NAME}
消息:
恢复主机: {HOST.NAME}
恢复 IP: {HOST.IP}
恢复时间: {EVENT.DATE}-{EVENT.TIME}
恢复等级: {TRIGGER.SEVERITY}
恢复信息: {TRIGGER.NAME}:{ITEM.VALUE}
恢复 ID: {EVENT.ID}

恢复操作
在这里插入图片描述
最后点击添加
在这里插入图片描述

动作添加成功
在这里插入图片描述
监视主页面仪表盘
在这里插入图片描述
在被监控端关闭数据库服务

[root@mysql001 ~]# systemctl stop mysqld

等待一段时间后
在这里插入图片描述

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐