跳到主要内容Ubuntu 系统 Zabbix 安装部署与基础使用 | 极客日志Shell / Bash
Ubuntu 系统 Zabbix 安装部署与基础使用
在 Ubuntu 系统上部署 Zabbix 监控系统的完整流程。内容包括 Zabbix Server 的安装与数据库配置(MySQL)、Web 环境搭建(Nginx/PHP)、中文语言包支持及字体修复。接着讲解了 Zabbix Agent 的部署与主机绑定,以及自定义监控项(如 CPU 负载)和图表创建。此外,还涵盖了触发器设置、钉钉告警集成(含脚本编写与媒介类型配置)以及基于 Grafana 的数据可视化改造实践。
moshang2 浏览 一、Zabbix Server 安装部署
Zabbix Server 是核心控制组件,是整个监控系统的'大脑'。主要作用有以下几点:
- 调度监控任务,接收 Agent/Proxy 上报的监控数据。
- 存储监控规则、分析数据阈值、触发告警(如邮件、短信)。
- 管理所有子组件的通信与协同。
1、定制软件源
获取最新版本的 zabbix 软件源
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
2、安装服务端
安装 zabbix server 和前端工具以及代理 agent
apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
3、MySQL 数据库环境定制
apt install mysql-server -y
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'zabbix';
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;
使用默认的 sql 文件,创建 zabbix 的数据库环境
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p'zabbix' zabbix
4、Zabbix 数据源配置
5、Nginx 环境定制
定制 zabbix 的配置文件,开启 80 端口监听
6、PHP 环境定制
php_value[date.timezone] = Asia/Shanghai
7、重启相关服务
systemctl restart zabbix-server zabbix-agent nginx php8.3-fpm
systemctl enable zabbix-server zabbix-agent nginx php8.3-fpm
8、web 配置
主机安装中文语言包,重启 zabbix 相关服务后重新打开 web 页面,才能修改语言为中文,否则无法选择
apt -y install language-pack-zh-hans
配置数据库信息,点击下一步。(因为 MySQL 和 Zabbix Server 在同一台主机上,所以此部的 host 也可以设置为 127.0.0.1。)
输入默认的用户名"Admin"及默认密码"zabbix",点击登录
9、中文显示异常解决
grep -ni ZBX_FONT_NAME /usr/share/zabbix/include/defines.inc.php
将中文字体文件上传到 zabbix 字体目录下,改名为 graphfont.ttf
10、地图显示异常解决
https://webrd04.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}
修改初始化地点,点击地理地图右上角的齿轮,按照'维度,经度,缩放比例'的格式输入并保存。(本次采用天安门坐标:39.908692,116.397477,缩放级别为 6)
点击 资产记录→主机,点击主机名 zabbix server,点击 配置 主机,点击资产记录,修改位置经纬度,点击更新
二、Zabbix Agent 安装部署
Zabbix 常用且实用的两种监控方式是 Agent 监控和 SNMP 监控,分别适配'可安装客户端的主机'和'无客户端的网络/嵌入式设备'场景。
- 原理:在被监控主机上部署 Zabbix Agent 程序,通过主动拉取或被动接收指令,采集主机本地的系统资源、应用进程等数据,再上报给 Zabbix Server/Proxy。
- 作用:
- 主动/被动采集本地资源数据(CPU、内存、磁盘、进程等)。
- 将采集到的原始数据上报给 Server 或 Proxy。
- 支持执行 Server 下发的远程命令(如重启服务)。
- 适用场景:
- 需深度监控的 Linux、Windows、macOS 服务器(如采集 CPU 负载、内存使用、磁盘 IO、本地进程状态等)。
- 可自主安装软件的业务主机(如 Web 服务器、数据库服务器、应用服务器)。
- 对监控数据精度要求高、采集频率需灵活调整的场景。
- 原理:基于 SNMP(简单网络管理协议),无需在被监控设备上安装 Agent,通过设备内置的 SNMP 服务读取 MIB(管理信息库)中的标准化数据。
- 适用场景:
- 网络设备(路由器、交换机、防火墙、负载均衡器等),核心监控端口流量、接口状态、设备负载。
- 嵌入式设备(打印机、摄像头、物联网终端等),这类设备通常无法安装 Agent 软件。
- 无需深度监控,仅需获取设备基础运行状态的场景。
1、定制软件源
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
2、安装 Agent
apt install -y zabbix-agent
grep -Env '#|^$' /etc/zabbix/zabbix_agentd.conf
3、定制 Agent 配置
指定 zabbix 服务端(Server)的 ip,注释 ServerActive(该配置是 zabbix 服务端的配置),修改客户端主机名称(Hostname)
4、重启服务
systemctl restart zabbix-agent.service
systemctl enable zabbix-agent.service
netstat -tnulp | grep zabbix
5、web 配置
创建主机组资源:点击左侧菜单,点击数据采集,点击主机群组
创建主机资源:点击左侧菜单,点击数据采集,点击主机,点击右上角创建主机
为了能正常监控,点击模版选择,输入 Templates,选择 Templates/Operating systems,选择 Linux by Zabbix agent
三、基础监控实践
zabbix 的监控告警工作流程为:数据采集→条件判断→通知响应。其中,监控项提供原始数据,触发器定义'异常规则',告警是规则触发后的最终通知。
- 监控项:负责采集目标数据(如 CPU 使用率、内存占用),是整个流程的'数据源头'。
- 触发器:绑定监控项,设置阈值和判断逻辑(如'CPU 使用率连续 5 分钟≥80%'),是'判断开关'。
- 告警:触发器触发后,系统生成的通知(如邮件、短信),是'响应结果'。
例如,当需要监控 CPU 使用率过高并触发告警,具体工作流程如下:
- 配置监控项:在 Zabbix 中给被监控主机添加'CPU 使用率'监控项,设置采集频率为 1 分钟 1 次。作用:每 1 分钟自动采集该主机的 CPU 使用率数据(如 70%、85%、90% 等),并上报给 Zabbix Server。
- 配置触发器:给这个 CPU 监控项绑定触发器,设置规则:'CPU 使用率连续 5 分钟≥80%'。作用:Zabbix Server 实时比对监控项上报的数据,一旦满足'连续 5 分钟超 80%'的条件,触发器立刻'触发'。
- 触发告警:触发器触发后,按照预设的告警媒介(如邮件、钉钉等),向指定负责人发送通知。
1、自定义监控项
套用模版后会自动生成相关监控项,除了这些内置监控项,还可以自定义监控项,格式如下:
UserParameter=<key>,<shell command>
主机查看 cpu 的 1 分钟、5 分钟、15 分钟的平均负载
uptime | awk -F ": " '{print $2}'| awk -F ", " '{print $1}' uptime | awk -F ": " '{print $2}'| awk -F ", " '{print $2}' uptime | awk -F ": " '{print $2}'| awk -F ", " '{print $3}'
主机 /etc/zabbix/zabbix_agentd.d 目录下创建配置文件
UserParameter=cpu.1min,uptime | awk -F ": " '{print $2}'| awk -F ", " '{print $1}'
UserParameter=cpu.5mins,uptime | awk -F ": " '{print $2}'| awk -F ", " '{print $2}'
UserParameter=cpu.15mins,uptime | awk -F ": " '{print $2}'| awk -F ", " '{print $3}'
重启 zabbix agent 服务,让配置文件生效
zabbix_get -s 10.0.0.113 -p 10050 -k "cpu.1min"
zabbix_get -s 10.0.0.113 -p 10050 -k "cpu.5mins"
zabbix_get -s 10.0.0.113 -p 10050 -k "cpu.15mins"
点击左侧菜单,点击数据采集,点击主机右侧的监控项,点击右上角创建监控项
点击左侧菜单的监控,点击最新数据,筛选刚才添加的监控项,查看检查记录
2、cpu 平均负载监控
点击左侧菜单,点击数据采集,点击主机右侧的图形,点击右上角创建图表
3、内存使用率监控
点击左侧菜单,点击数据采集,点击主机右侧的图形,点击右上角创建图表
四、基础告警实践
1、创建触发器
点击数据采集,点击主机,点击触发器,点击右上角创建触发器
2、触发器测试
检测中选择主机对应的图形,可以看到有一条告警,表示触发器已经被触发
3、钉钉告警配置
选择'自定义 (通过 webhook 接入自定义服务)"
#!/bin/bash
ACC_TOKEN='<YOUR_ACCESS_TOKEN>'
WEBHOOK_URL="https://oapi.dingtalk.com/robot/send?access_token=${ACC_TOKEN}"
check_arguments() {
if [ "$#" -ne 3 ]; then
echo "使用方法:$0 <收信人手机号> <主题> <消息内容>"
exit 1
fi
}
build_json_data() {
local receiver_phone="$1"
local subject="$2"
local message="$3"
cat << EOF
{
"msgtype": "text",
"text": {
"content": "$subject\n$message"
},
"at": {
"atMobiles": ["$receiver_phone"]
}
}
EOF
}
send_dingtalk_message() {
local post_url=${WEBHOOK_URL}
local json_data=$(build_json_data "$1" "$2" "$3")
local response=$(curl -s -X POST -H "Content-Type: application/json" -d "$json_data" "${post_url}")
if [ $? -eq 0 ]; then
echo "通知发送成功!"
else
echo "通知发送失败!"
fi
}
main() {
check_arguments "$@"
local receiver_phone="$1"
local subject="$2"
local message="$3"
send_dingtalk_message "$receiver_phone" "$subject" "$message"
}
main "$@"
4、zabbix 集成钉钉告警
点击左侧菜单,点击告警,点击媒介,点击右上角创建媒介类型
5、告警用户配置
点击左侧菜单,点击用户,点击用户群组,点击右上角创建用户组
选择报警媒介,类型选择之前创建的钉钉告警,填写收件人信息
点击权限,设置为 Super admin role
6、触发器动作配置
点击右上角创建动作,设置动作名称,选择之前创建的触发器
点击操作,点击添加操作添加告警人、发送至媒体类型及自定义消息内容
7、告警模拟测试
后台执行 yes > /dev/null & 模拟 cpu 占用
清理后台 yes 进程,使 CPU 平均负载下降,观察故障恢复
五、可视化改造实践
1、grafana 软件安装
apt-get install -y adduser libfontconfig1 musl
wget https://dl.grafana.com/enterprise/release/grafana-enterprise_11.5.2_amd64.deb
dpkg -i grafana-enterprise_11.5.2_amd64.deb
systemctl enable --now grafana-server.service
netstat -tnulp | grep gra
浏览器登录 web 页面 10.0.0.112:3000,默认用户密码都是 admin
2、安装 zabbix 插件
grafana-cli plugins list-remote
grafana-cli plugins list-remote|grep zabbix
grafana-cli plugins install alexanderzobnin-zabbix-app
systemctl restart grafana-server
3、启用插件
进入 grafana,点击左侧菜单 administration,点击 plugins and data,点击 Plugins,搜索 zabbix 插件
4、添加数据源
点击左侧菜单 Connections,点击 Data sources,点击 Add data source
点击三个 dashboard 右侧的 import
点击第二个 Zabbix Template Linux Server,即可看到监控图形
部分监控项没有数据,我们点击编辑,修改对应的监控项的名称
点击右侧 Save dashboard,添加信息后保存,查看效果
微信扫一扫,关注极客日志
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown转HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
- HTML转Markdown
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
- JSON 压缩
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
- JSON美化和格式化
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online