一、部署zabbix环境

准备两台机器分别部署zabbix-server和zabbix-agent,其中机器和版本信息:Zabbix 6.0、Rocky9、数据库使用MariaDB、Web环境使用PHP+Apache

1、准备工作(两台都执行)

关闭Selinux

setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

关闭Firewalld

systemctl disable --now firewalld

2、安装zabbix官方仓库(两台都执行)

rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-5.el9.noarch.rpm
dnf clean all

3、安装Zabbix server、Web、Agent

Server端执行:

dnf install -y \
zabbix-server-mysql \
zabbix-web-mysql \
zabbix-apache-conf \
zabbix-agent \
mariadb-server \
zabbix-sql-scripts

Agent端执行:

dnf install -y zabbix-agent

4、配置MariaDB(Server端执行)

启动数据库

systemctl enable --now mariadb

初始化数据库

mysql_secure_installation

创建zabbix数据库和用户

先登录到mysql终端里

mysql -uroot -p  ##输入在上面步骤里设置的密码

创建库和用户

CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'Zabbix@123';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
EXIT;

说明:数据库名:zabbix, 用户名zabbix,密码: Zabbix@123

5、导入初始数据(server端执行)

image/png

6、配置zabbix server(Server端执行)

vi /etc/zabbix/zabbix_server.conf

修改或确认以下内容:

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix@123

7、配置php.ini(Server端执行)

vi php.ini

调整以下参数

max_execution_time = 300
memory_limit = 256M
post_max_size = 32M
upload_max_filesize = 16M
date.timezone = Asia/Shanghai

重启Apache服务

systemctl restart httpd

8、启动并设置自启(server端)

systemctl enable --now \
zabbix-server \
zabbix-agent \
httpd

检查服务状态

systemctl status zabbix-server
systemctl status zabbix-agent

9、Web页面初始化

浏览器访问

http://ip/zabbix

默认用户名和密码:Admin zabbix

10、配置Zabbix agent (两台机器都做)

vi /etc/zabbix/zabbix_agentd.conf

关键参数

Server=<your-managed-server-ip>
ServerActive=<your-managed-server-ip>
Hostname=Zabbix-Server  # server端
Hostname=aming01  # Agent端

重启服务

systemctl restart zabbix-agent

11、创建API key

左下方,点击User settings,再点击API tokens

右上角点击Create API Token

设置Name和过期时间

9.2 部署zabbix mcp server

可以部署到zabbix server那台机器上

项目地址:https://github.com/mpeirone/zabbix-mcp-server

1、安装docker环境

如果系统里没有docker环境,还需要安装一下docker,系统版本Rocky9

安装dnf插件工具

dnf install -y dnf-plugins-core

配置阿里云的docker源

dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装docker-ce

dnf install -y docker-ce

配置docker镜像加速

mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://dockerhub.timeweb.cloud"
    ]
}
EOF

启动docker服务

systemctl start docker
systemctl enable docker

2、克隆源码

git clone https://github.com/aminglinux/zabbix-mcp-server.git

3、更改配置

cd zabbix-mcp-server
cp config/.env.example .env 
vi .env ##内容如下ZABBIX_URL=http://<your-managed-server-ip>/zabbix
ZABBIX_TOKEN=68316fb2352a37225b01ff6cc0cf0b698b08be238bbd1e08ae6202314f14a428
READ_ONLY=no
ZABBIX_MCP_TRANSPORT=streamable-http
ZABBIX_MCP_HOST=<your-managed-server-ip>
ZABBIX_MCP_PORT=8000
ZABBIX_MCP_STATELESS_HTTP=false 
VERIFY_SSL=true

4、启动容器

docker compose up -d

9.3 Dify里配置MCP

菜单栏点击“工具”,再点击“MCP”,然后添加MCP服务

image/png

1、服务端点: http://你部署mcp的机器ip:8000/sse

2、名称、服务器标识:zabbix-mcp

3、认证:无认证

image/png

image/png

9.4 在Dify中创建Agent应用

image/png

image/png

提示词:

你是一个专业的 Zabbix 智能运维助手。你可以通过 MCP 工具访问 Zabbix 监控系统的数据。

## 你的能力
1. 查询主机状态、列表和配置 (host_get)。2. 查询当前的告警和问题 (problem_get)。
3. 获取监控项的历史数据和趋势 (history_get, trend_get)。

## 回答规范
- 当用户询问“某台服务器”的情况时,先尝试模糊搜索主机名获取 hostid。
- 如果查询到告警信息,请按严重程度排序,并给出具体的告警时间、名称和主机。
- 在展示数据时,尽量使用清晰的列表或 Markdown 表格。
- 如果未查到数据,请提示用户检查主机名是否正确。

## 限制规则
- 每个session中,第一次使用host_get查询主机id后,应该记住这些主机id,留给后续的任务重复使用
- 分析任务需求,并找到最适合的工具
- 每次任务最多只能调用5次工具
- 如果调用5次工具依然没有获得结果,直接返回错误信息并给出优化建议

## 示例场景
用户: "帮我看看 server-01 有没有报警"
思考: 先调用 host_get 找到 server-01 的 hostid,然后用 hostid 调用 problem_get。

添加工具

image/png

示例1:

查看当前所有主机列表

示例2:

增加主机:Agent 192.168.186.152:10050, 主机名aming01, 主机组Linux server, 模板:Linux by Zabbix agent

示例3:

增加告警规则:当内存使用率高于90%告警

示例4:

给aming01增加一个30分钟的维护期,维护期间不需要告警

示例5:

分析aming01过去1小时的内存使用趋势

示例6:

列出 Linux Servers 主机组里所有机器的 IP 地址,并告诉我哪些机器目前的 Zabbix Agent 连接不可用?