365体育官网贴吧

Zabbix 7.0 LTS 教程

Zabbix 7.0 LTS 教程

Zabbix 7.0LTS教程

一、环境介绍

操作系统:Rocky Linux 9.5

软件版本:7.0LTS

二、系统搭建

2.1 yum安装方式

官网:Zabbix:企业级开源监控解决方案

点击右上角的下载ZABBIX

选择对应的环境:

选择之后往下拉会看到相应的部署步骤:

2.1.1 软件源配置

按照文档提示:

如果有epel.repo源码,需要先注释里面的zabbix源,默认是没有的:

[epel]

...

excludepkgs=zabbix*

[root@localhost ~]# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpm

[root@localhost ~]# dnf clean all

0 files removed

[root@localhost ~]# dnf makecache

安装Zabbix server,Web前端,agent:

[root@localhost ~]# dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent

安装过程看网速,一般是有点慢,因为是美国的网站。

2.1.2 初始化数据库

这里由于文档中未介绍,需要自己安装MySQL或者PostgreSQL,安装方法见我写的其它文章,这里我们直接使用dnf安装MySQL8.0:

参考MySQL Linux通用版安装方法:MySQL管理篇 - 国杰响当当 - 博客园

参考PostgreSQL源码编译安装方法:PostgreSQL - 随笔分类 - 国杰响当当 - 博客园

查看可安装的mysql版本:

[root@localhost ~]# dnf --showduplicates list mysql-server

Last metadata expiration check: 0:17:50 ago on Mon 10 Mar 2025 02:19:07 AM EDT.

Available Packages appstream

mysql-server.x86_64 8.0.41-2.el9_5

只有一个MySQL 8.0.41,直接安装它:

[root@localhost ~]# dnf -y install mysql-server.x86_64

创建相关的数据库:

[root@localhost ~]# systemctl start mysqld

[root@localhost ~]# mysql -uroot -p

Enter password:

# 创建数据库zabbix

mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;

# 创建用户zabbix并设置密码为password,只允许从localhost登录。

mysql> create user zabbix@localhost identified by 'password';

# 将数据库zabbix授权给zabbix用户

mysql> grant all privileges on zabbix.* to zabbix@localhost;

mysql> set global log_bin_trust_function_creators = 1;

mysql> quit;

默认root的密码是空的。

导入初始架构和数据,系统将提示您输入新创建的密码,密码上面设置的password:

[root@localhost ~]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

Enter password:

导入数之后重新禁用log_bin_trust_function_creators:

[root@localhost ~]# mysql

mysql> set global log_bin_trust_function_creators = 0;

mysql> quit;

2.1.3 配置zabbix

为Zabbix server配置数据库

编辑配置文件 /etc/zabbix/zabbix_server.conf

DBPassword=password

取消注释并添加密码

为Zabbix前端配置PHP

编辑配置文件 /etc/nginx/conf.d/zabbix.conf

listen 8080;

设置监听端口,取消注释

2.1.4 启动zabbix

启动Zabbix server和agent进程

启动Zabbix server和agent进程,并为它们设置开机自启:

[root@localhost ~]# systemctl restart zabbix-server zabbix-agent nginx php-fpm

[root@localhost ~]# systemctl enable zabbix-server zabbix-agent nginx php-fpm

2.2 docker安装

2.2.1 安装MySQL

# 数据卷

[root@zabbix ~]# mkdir -p /data/mysql/{conf,data,logs}

# 配置文件

[root@zabbix ~]# cat < /data/mysql/conf/my.cnf

[mysql]

default-character-set=utf8mb4

[mysqld]

user=mysql

port=3306

collation_server=utf8mb4_general_ci

character-set-server=utf8mb4

default-authentication-plugin=caching_sha2_password

EOF

# 拉镜像

[root@zabbix ~]# docker pull registry.cn-hangzhou.aliyuncs.com/guojie-ns/mysql:8.0.37 #这里有可能拉不下来,我是从自己的仓库拉取的。

# 运行容器

[root@zabbix ~]# cd /data/mysql/

[root@zabbix mysql]# docker run --name zabbix-mysql -itd \

-p 3306:3306 \

-v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \

-v $PWD/conf:/etc/mysql/conf.d \

-v $PWD/logs:/logs \

-v $PWD/data:/var/lib/mysql \

-e MYSQL_DATABASE="zabbix" \

-e MYSQL_USER="zabbix" \

-e MYSQL_PASSWORD="password" \

-e MYSQL_ROOT_PASSWORD="password" \

--network host \

registry.cn-hangzhou.aliyuncs.com/guojie-ns/mysql:8.0.37

2.2.2 安装 Zabbix Java 网关

# 获取镜像,这里是我的私人仓库,需要登录

[root@zabbix mysql]# docker pull registry.cn-hangzhou.aliyuncs.com/guojie-ns/zabbix-java-gateway:alpine-7.0-latest

[root@zabbix mysql]# docker run --name zabbix-java-gateway -itd \

--network host \

registry.cn-hangzhou.aliyuncs.com/guojie-ns/zabbix-java-gateway:alpine-7.0-latest

2.2.3 安装 zabbix server

# 拉取镜像,这里是我的私人仓库,需要登录

[root@zabbix ~]# docker pull registry.cn-hangzhou.aliyuncs.com/guojie-ns/zabbix-server-mysql:alpine-7.0-latest

# 运行容器

[root@zabbix ~]# docker run --name zabbix-server-mysql -itd \

-v zabbix_server:/etc/zabbix \

-e DB_SERVER_HOST="127.0.0.1" \

-e MYSQL_DATABASE="zabbix" \

-e MYSQL_USER="zabbix" \

-e MYSQL_PASSWORD="password" \

-e MYSQL_ROOT_PASSWORD="password" \

-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \

--network host \

registry.cn-hangzhou.aliyuncs.com/guojie-ns/zabbix-server-mysql:alpine-7.0-latest

2.2.4 启动 zabbix web 容器

# 拉取镜像

[root@zabbix ~]# docker pull registry.cn-hangzhou.aliyuncs.com/guojie-ns/zabbix-web-nginx-mysql:alpine-7.0-latest

# 启动容器

[root@zabbix ~]# docker run --name zabbix-web-nginx-mysql -itd \

-e PHP_TZ="Asia/Shanghai" \

--privileged=true \

-e ZBX_SERVER_HOST="127.0.0.1" \

-e DB_SERVER_HOST="127.0.0.1" \

-e MYSQL_DATABASE="zabbix" \

-e MYSQL_USER="zabbix" \

-e MYSQL_PASSWORD="password" \

-e MYSQL_ROOT_PASSWORD="password" \

--network host \

--restart=unless-stopped \

registry.cn-hangzhou.aliyuncs.com/guojie-ns/zabbix-web-nginx-mysql:alpine-7.0-latest

三、软件配置

3.1 开放防火墙端口

[root@localhost ~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent

success

[root@localhost ~]# firewall-cmd --reload

success

嫌麻烦也可以直接关闭防火墙。

浏览器访问:

3.2 无法选择中文的问题

但是默认系统最小化安装它不带中文包,还需要手动安装一下,我们可以使用dnf search 查看中文包:

安装它:

[root@localhost ~]# dnf install -y langpacks-zh_CN.noarch

[root@localhost ~]# locale -a

如果这里还是无法显示zh_CN.utf8,可能还需要其它的依赖包:

[root@localhost ~]# dnf install -y glibc-locale-source glibc-langpack-zh

设置成中文:

[root@localhost ~]# localectl set-locale LANG=zh_CN.utf8

刷新页面就有了

3.3 完成相关配置并登录

设置成中文之后下一步到检查必要条件,必要条件都是正常的:

下一步到设置数据库,按照环境填写相关参数:

下一步填写主机名:

检查配置:

完成:

登录:

默认用户名/密码是:Admin/zabbix

四、配置ssl证书加密

4.1 生成自签证书

# 创建证书存放路径

[root@localhost ~]# mkdir /etc/nginx/ssl

[root@localhost ~]# cd /etc/nginx/ssl

# 生成rsa私钥,过程会要求输入加密语

[root@localhost ssl]# openssl genrsa -des3 -out server.key 2048

# 查看生成的私钥

[root@localhost ssl]# openssl rsa -text -in server.key

# 查看生成密钥

[root@localhost ssl]# cat server.key

# 创建证书签名请求CSR文件,过程会要求输入刚刚的加密语,国家、省份、组织、邮箱等等,最后两部要求证书密码,可以不输回车

[root@localhost ssl]# openssl req -new -key server.key -out server.csr

# 如上步骤之后会生成以下两个文件

[root@localhost ssl]# ll

total 24

-rw-r--r--. 1 root root 1045 Apr 24 10:38 server.csr

-rw-------. 1 root root 1862 Apr 24 10:36 server.key

# 生成CA证书

[root@localhost ssl]# openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

# 剥离PEM pass phrase,不然每次重启nginx要输入密码

[root@localhost ssl]# openssl rsa -in server.key -out server.key.unsecure

# 如果需要生成客户端证书,与生成ca证书相似

[root@localhost ssl]# openssl genrsa -out client.key 2048

[root@localhost ssl]# openssl req -new -key client.key -out client.csr

[root@localhost ssl]# openssl x509 -req -days 3650 -in client.csr -signkey client.key -out client.crt

4.2 nginx配置ssl

[root@localhost ssl]# cd /etc/nginx/conf.d/

[root@localhost conf.d]# cp zabbix.conf zabbix.bak

[root@localhost conf.d]# vi zabbix.conf

修改原来的server,并添加443端口的server:

配置如下:

server {

listen 80;

server_name localhost;

return 301 https://localhost$request_uri;

}

server {

listen 443 ssl;

ssl_certificate ssl/server.crt; #证书文件

#ssl_certificate_key ssl/server.key; #密钥文件

ssl_certificate_key ssl/server.key.unsecure; #剥离密码的密钥文件,如果没有对密钥加密,直接使用server.key

ssl_session_timeout 5m; #缓存有效期

ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用加密算法

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全连接的可选加密协议

ssl_prefer_server_ciphers on; #使用服务器的首选算法

root /usr/share/zabbix;

index index.php;

location = /favicon.ico {

log_not_found off;

}

location / {

try_files $uri $uri/ =404;

}

location /assets {

access_log off;

expires 10d;

}

location ~ /\.ht {

deny all;

}

location ~ /(api\/|conf[^\.]|include|locale) {

deny all;

return 404;

}

location /vendor {

deny all;

return 404;

}

location ~ [^/]\.php(/|$) {

fastcgi_pass unix:/run/php-fpm/zabbix.sock;

fastcgi_split_path_info ^(.+\.php)(/.+)$;

fastcgi_index index.php;

fastcgi_param DOCUMENT_ROOT /usr/share/zabbix;

fastcgi_param SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;

fastcgi_param PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;

include fastcgi_params;

fastcgi_param QUERY_STRING $query_string;

fastcgi_param REQUEST_METHOD $request_method;

fastcgi_param CONTENT_TYPE $content_type;

fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_intercept_errors on;

fastcgi_ignore_client_abort off;

fastcgi_connect_timeout 60;

fastcgi_send_timeout 180;

fastcgi_read_timeout 180;

fastcgi_buffer_size 128k;

fastcgi_buffers 4 256k;

fastcgi_busy_buffers_size 256k;

fastcgi_temp_file_write_size 256k;

}

}

检查配置是否有问题:

[root@localhost conf.d]# nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

# 重启nginx

[root@localhost conf.d]# nginx -s reload

[root@localhost conf.d]# systemctl restart nginx

防火墙开启443端口之后访问即可转为https:

[root@localhost conf.d]# firewall-cmd --zone=public --add-port=80/tcp --permanent

[root@localhost conf.d]# firewall-cmd --zone=public --add-port=443/tcp --permanent

[root@localhost conf.d]# firewall-cmd --zone=public --remove-port=8080/tcp --permanent

[root@localhost conf.d]# firewall-cmd --reload

五、仪表显示乱码修复

安装完成之后由于字体问题会显示乱码,需要拷贝电脑上的字体到服务器上设置。

打开本地的文件资源管理器,在地址栏输入C:\Windows\Fonts复制楷体到桌面:

注意:把它的名字改成小写,我试了大写的不行.

把它上传到服务器上的/usr/share/zabbix/assets/fontsl路径:

然后修改配置文件/usr/share/zabbix/include/defines.inc.php

[root@localhost ~]# vi /usr/share/zabbix/include/defines.inc.php

# 搜索ZBX_GRAPH_FONT_NAME,把原来的graphfont改成字体文件名称stkaiti

define('ZBX_GRAPH_FONT_NAME', 'stkaiti'); // font file name

保存退出之后刷新页面乱码即可恢复正常:

六、agent安装

10050:用于被动模式下服务端主动获取数据。

10051:接受来自agent的监控数据。

6.1 软件下载

这里方便通用使用二进制方式安装,选择到Zabbix Agent,选择对应的版本。

复制下载链接:

到监控主机上下载它,这里以CentOS7为例

[root@localhost ~]# wget https://cdn.zabbix.com/zabbix/binaries/stable/7.0/7.0.10/zabbix_agent-7.0.10-linux-3.0-amd64-static.tar.gz

6.2 环境配置

创建管理用户:

[root@localhost ~]# groupadd zabbix

[root@localhost ~]# useradd -g zabbix zabbix -s /sbin/nologin

解压软件:

[root@localhost ~]# mkdir /opt/zabbix_agent

[root@localhost ~]# tar -zxvf zabbix_agent-7.0.10-linux-3.0-amd64-static.tar.gz -C /opt/zabbix_agent/

日志存放路径:

[root@localhost ~]# mkdir /var/log/zabbix_agentd

[root@localhost ~]# touch /var/log/zabbix_agentd/zabbix_agentd.log

[root@localhost ~]# chown -R zabbix.zabbix /var/log/zabbix_agentd

添加执行脚本:

[root@localhost ~]# cat >/opt/zabbix_agent/sbin/agent_start.sh<<'EOF'

#/bin/bash

usage() {

echo "Usage: sh 脚本名.sh [start|stop|restart|status]"

exit 1

}

#检查程序是否在运行

is_exist(){

pid=`ps -ef |grep zabbix_agent|grep -v "grep" |awk '{print $2}'`

#如果不存在返回1,存在返回0

if [ -z "${pid}" ]; then

return 1

else

return 0

fi

}

#启动方法

start(){

is_exist

if [ $? -eq "0" ]; then

echo "agent2 is already running. pid=${pid} ."

else

/opt/zabbix_agent/sbin/zabbix_agentd -c /opt/zabbix_agent/conf/zabbix_agentd.conf >/dev/null 2>&1 &

echo "agent2 start success"

fi

}

#停止方法

stop(){

is_exist

if [ $? -eq "0" ]; then

kill -9 $pid

else

echo "agent2 is not running"

fi

}

#重启

restart(){

stop

start

}

#根据输入参数,选择执行对应方法,不输入则执行使用说明

case "$1" in

"start")

start

;;

"stop")

stop

;;

"restart")

restart

;;

*)

usage

;;

esac

EOF

[root@localhost ~]# chmod +x /opt/zabbix_agent/sbin/agent_start.sh

准备置文件:

[root@localhost ~]# cp /opt/zabbix_agent/conf/zabbix_agentd.conf /opt/zabbix_agent/conf/zabbix_agentd.bak

[root@localhost ~]# egrep -v '^$|^#' /opt/zabbix_agent/conf/zabbix_agentd.bak > /opt/zabbix_agent/conf/zabbix_agentd.conf

[root@localhost ~]# vi /opt/zabbix_agent/conf/zabbix_agentd.conf

LogFile=/var/log/zabbix_agentd/zabbix_agentd.log #日志路径

Server=10.1.1.5 #服务端地址

ServerActive=10.1.1.5 #服务端地址

Hostname=Zabbix server #主机名

启动:

[root@localhost ~]# /opt/zabbix_agent/sbin/agent_start.sh start

agent2 start success

查看日志提示连接到服务端的10051端口失败,原因是我们防火墙没开放该端口:

服务端上开放端口:

[root@localhost ~]# firewall-cmd --zone=public --add-port=10051/tcp --permanent

success

[root@localhost ~]# firewall-cmd --reload

success

客户端重启agent:

[root@localhost ~]# /opt/zabbix_agent/sbin/agent_start.sh restart

之后登录Web上添加资产,这里我们看到服务端还需要连接到客户端的10050端口,需要确保客户端要开放10050端口:

[root@localhost ~]# firewall-cmd --zone=public --add-port=10050/tcp --permanent

success

[root@localhost ~]# firewall-cmd --reload

success

稍等一会儿主机就会显示被监控主机:

七、snmp监控网络设备

7.1 设备上配置snmp对接zabbix

华为CE6800为例:

[huawei]snmp-agent

[huawei]snmp-agent sys-info version v3

[huawei]snmp-agent group v3 group-admin privacy

[huawei]snmp-agent usm-user v3 user-admin

[huawei]snmp-agent usm-user v3 user-admin group group-admin

[huawei]snmp-agent usm-user v3 user-admin authentication-mode sha \\输入密码,两次

[huawei]snmp-agent usm-user v3 user-admin privacy-mode aes128 \\输入密码,两次

[huawei]snmp-agent protocol source-interface <管理口/管理vlanif>

[huawei]snmp-agent trap enable

[huawei]snmp-agent trap source <管理口/管理vlanif>

其中user-admin和group-admin是我这里的用户名和组名,用户可以自行修改。

zabbix上添加主机:

宏(可以理解为就是变量):

等待一会之可用性变绿之后点击自动发现:

点击主机之后立即执行,它会马上去采集数据:

这里有个问题就是交换机上温度数据采集到的一直是0℃,然后会一直报警说温度太低,低于5摄氏度,应该是数据采集不到的bug,我们可以先调节阈值让它不告警。首先找到模板,找到华为vrp的监控模板。

把宏里面的低温值从5改成0。

你可能要把主机删了重新加,不然这个告警一直在。

7.2 绘制top图

7.2.1 调整尺寸

找到监测→top图,默认自带一个Local Network,点击属性,修改它的宽和高,根据自身电脑分辨率做调整。我这里是1650x860。

7.2.2 绘制top

点击名称进入top图。

点击左上角的编辑top图。

添加地图元素,点击之后会出来一个设备。

点击新添加的地图元素,做如下配置之。

依次添加两个设备之后可以给它连上线,选中两个设备图标之后在上边链接出点击添加按钮,之后会生成链接。

如上点击链接里的动作的编辑,在标签栏加入表达式,就可以显示指标。

表达式为:

标签:{?last(/主机名称/监控项)}

speed:{?last(/S7706/net.if.speed[ifHighSpeed.180])}

↑{?last(/S7706/net.if.in[ifHCInOctets.180])}

↓{?last(/S7706/net.if.out[ifHCOutOctets.180])}

监控项查询:如图,找到数据采集中对应主机的监控项并点击它。

复制对应的键只替换表达式。

八、配置简单ping检查

8.1 监控模板

​ 有些设备自己写snmp监控模板比较困难,而且我们也不需要做太复杂的监控,只需要知道设备是否在线,可以配置zabbix定时适用ICMP协议定期去检查设备是否在线。

模板下载(默认它是自带的):

点击zabbix上的集成按钮:

搜索Ping

8.2 添加主机

九、报警

9.1 企业微信群集群人报警

9.1.1 企业账号申请

需要注册一个企业微信:企业微信

9.1.2 创建部门并添加成员

9.1.3 创建一个自建应用

在群里创建一个报警机器人,得到webhook地址

![image-20250522153329589](Zabbi

9.2报警脚本编写

找到脚本存放路径:

[root@network ~]# cd /usr/lib/zabbix/alertscripts

# 安装python模块

[root@network ~]# pip3 install --trusted-host mirrors.huaweicloud.com -i https://mirrors.huaweicloud.com/repository/pypi/simple requests

[root@network alertscripts]# cat >wechat.py<<'EOF'

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import requests

import json

import sys

# Webhook URL

api_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxxxxx" #替换为自己企业微信群机器人的webhook地址

# HTTP headers

headers = {'Content-Type': 'application/json;charset=utf-8'}

# 定义发送消息的函数

def send_message(text):

# 构建消息体

json_text = {

"msgtype": "text",

"text": {

"content": text

}

}

# 发送 POST 请求

response = requests.post(api_url, json=json_text, headers=headers)

# 检查响应状态码

if response.status_code == 200:

print("Message sent successfully.")

else:

print(f"Failed to send message. Status code: {response.status_code}")

# 主函数

if __name__ == '__main__':

# 检查命令行参数是否正确

if len(sys.argv) < 2:

print("Usage: python3 wechat.py ")

sys.exit(1)

# 获取命令行参数中的消息内容

text = sys.argv[1]

# 调用发送消息函数

send_message(text)

EOF

# 给执行权限

[root@network alertscripts]# chmod +x wechat.py

# 我这里测试脚本发送的时候是正常的,但是zabbix调用脚本的时候是错误的,大概是将 Windows 格式的文本文件转换为 Unix/Linux 格式的工具。我是windows传上去的脚本,如果遇到这种情况可能要尝试和我如下一样的解决方法

[root@network alertscripts]# dnf provides dos2unix

[root@network alertscripts]# dnf -y install dos2unix

[root@network alertscripts]# dos2unix wechat.py

脚本测试:

9.3 zabbix上配置告警

9.3.1 创建告警媒介

9.3.2 告警动作

告警-动作-触发器动作-创建动作

告警操作:

消息模板:

【告警】

告警设备:{HOST.NAME}

告警内容:{EVENT.NAME}

监控项目:{ITEM.NAME}

监控取值:{ITEM.LASTVALUE}

告警严重性:{EVENT.SEVERITY}

当前状态:{EVENT.STATUS}

告警时间:{EVENT.DATE} {EVENT.TIME}

事件ID:{EVENT.ID}

再添加一个告警恢复操作:

消息模板:

【告警解除】

告警设备:{HOST.NAME}

告警内容:{EVENT.NAME}

监控项目:{ITEM.NAME}

监控取值:{ITEM.LASTVALUE}

告警严重性:{EVENT.SEVERITY}

当前状态:{EVENT.RECOVERY.STATUS}

告警时间:{EVENT.DATE} {EVENT.TIME}

恢复时间:{EVENT.RECOVERY.TIME}

持续时间:{EVENT.AGE}

事件ID:{EVENT.RECOVERY.ID}

9.4 告警用户配置

可以把监控改到信息,然后修设备名称之类的出发告警测试。

十、监控模板下载

https://www.alipan.com/s/H5eL49JoWZi

相关推荐

如何用Windows自带画图工具将图片设置成透明背景
365彩票官方正版下载

如何用Windows自带画图工具将图片设置成透明背景

📅 2025-07-11 👁️ 3032
鉴定系统
365彩票官方正版下载

鉴定系统

📅 2025-07-02 👁️ 8578
凋零的春天——黄桷树春天落叶的科学问题
365bet手机版

凋零的春天——黄桷树春天落叶的科学问题

📅 2025-08-09 👁️ 4831
末日之戒
365bet手机版

末日之戒

📅 2025-08-05 👁️ 5509