使用 Zabbix + Grafana 搭建服务器监控系统
本文作者是霍格沃兹测试学院优秀学员 xinxi ,某知名互联网公司测试开发工程师。本文是其在实际工作项目中的服务器监控从 0 到 1 实战总结。
霍格沃兹测试学院会定期组织业界高手进行技术交流分享,关注学院公众号,添加小助手微信「 iHogwarts001」, 回复 「公开课」
入群。
前言
搭建 Linux 服务器监控的目的是自己有一台阿里云服务器内存是 2g 的 , 多开一些软件就会把内存和 CPU 使用率弄的很高,最终导致服务器卡死。
所以基于这个痛点,想知道当前的 CPU 和内存是多少。阿里云 ECS 控制台中也提供对服务器的监控 , 但是为了学习 Linux 服务器监控系统 ,
还是打算自己搭建一套 。
当然 Linux 服务器监控也有很多,Zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案 .
所以基于 Zabbix+Grafana 打造服务器监控系统。
Zabbix
模块介绍
-
Zabbix Server: 负责接收 agent 发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行 .
-
Zabbix Agent: 部署在被监控主机上,负责收集本地数据发往 Server 端或 Proxy 端 .
-
Database Storage : 用户存储所有配置信息,以及存储由 Zabbix Server 收集到的数据 .
-
Web Interface :Zabbix 的 GUI 接口,通常与 Server 运行在同一台主机上
-
Zabbix Proxy : 常用于分布监控环境中,代理 Server 收集部分被监控的监控数据并统一发往 Server 端 .
原理介绍
Agentd 安装在被监控的主机上,Agent 负责定期收集客户端本地各项数据,并发送至 Zabbix Server 端,Zabbix Server
收到数据,将数据存储到数据库中,用户基于 Zabbix WEB 可以看到数据在前端展现图像 .
当 Zabbix
监控某个具体的项目,改项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(SHELL
命令、Reboot、Restart、Install 等).
环境安装
Zabbix 需要 zabbix-server、zabbix-agent、mysql. 其中 mysql 已经在本机安装了 , 在
dockercompose 文件中 写上对应的 host、user、pwd 即可 .
在 MySQL 中创建 Zabbix 数据库 , 为了后期储存数据使用 .
使用 Docker 安装 zabbix ,dockercompose 文件如下:
1. version: '2'
2. services:
3. zabbix-server-service:
4. image: monitoringartist/zabbix-xxl:3.2.6
5. container_name: zabbix-server-service
6. restart: always
7. ports:
8. - "8081:80"
9. environment:
10. - ZS_DBHost=192.168.1.103
11. - ZS_DBUser=root
12. - ZS_DBPassword=123321
13. zabbix-agent-a:
14. image: zabbix/zabbix-agent:ubuntu-3.2.6
15. links:
16. - zabbix-server-service:zabbixserverhost
17. container_name: zabbix-agent-a
18. restart: always
19. depends_on:
20. - zabbix-server-service
21. environment:
22. - ZBX_HOSTNAME=zabbix-agent-service-a
23. - ZBX_SERVER_HOST=zabbixserverhost
24. zabbix-agent-b:
25. image: zabbix/zabbix-agent:ubuntu-3.2.6
26. links:
27. - zabbix-server-service:zabbixserverhost
28. container_name: zabbix-agent-b
29. restart: always
30. depends_on:
31. - zabbix-server-service
32. environment:
33. - ZBX_HOSTNAME=zabbix-agent-service-b
34. - ZBX_SERVER_HOST=zabbixserverhost
启动命令:
1. docker-compose up -d
查看日志命令:
1. docker logs -f zabbix-server-service
大概启动后 1 到 2 分钟登录 zabbix web 地址 ,http://127.0.0.1:80801, 出现如下页面说明安装成功 .
默认账号:Admin, 密码:zabbix, 登录后出现如下页面 .
配置
修改语言
默认的语言是英文的 , 点击头像后展示修改语言选项 , 选择中文并且更新即可 .
zabbix-agent 配置
之前配置两个 zabbix-agent-a 和 zabbix-agent-b, 所以要添加两个 zabbix-agent 来采集数据并发送给 zabbix-
server.
在配置 , 选择主机 , 创建主机 .
配置 zabbix-agent 需要其容器内的 ip 地址 , 可以通过 docker exec -it zabbix-agent-b ip addr
命令查看 .
在创建页面填写其 ip 和选择群组 , 点击保存即可 .
此时添加了两台 zabbix-agent.
另外还需要给 zabbix-agent 配置监控模版 , 在模版中选择 Template OS Linux 并且添加即可 .
配置模版完成后 , 在主机列表中 ZBX 显示绿色说明添加完成 .
添加监控数据
在首页仪表盘上 , 选择常用的图形 .
在创建页面选择 zabbix-agent-server-b 主机和 cpu jumps 监控项 .
监控数据可以控制缩放比例和时间段 .
Grafana
简介
grafana 是一个跨平台的开源的度量分析和可视化工具 , 可以通过将采集的数据查询然后可视化的展示 .
配置
安装 grafana
可以使用 grafana 展示 zabbix 的数据 , 制作图表展示 .
使用 docker 启动 grafana.
1. docker run -d --name=grafana2 -p 7777:3000 -v /var/lib/grafana:/var/lib/grafana grafana/grafana:3.0.4
启动镜像完成后 , 等大概 1 到 2 分钟 , 在浏览器访问:http://127.0.0.1:7777. 默认账号和密码都是 admin.
安装 zabbix 插件
安装 zabbix 插件 , 进入 grafana 容器执行如下命令
1. docker exec -it grafana /bin/bash 进入容器
2.
3. grafana-cli plugins install alexanderzobnin-zabbix-app
4.
5. docker restart grafana 重启容器
在插件中的 app 中 , 出现 zabbix 说明 zabbix 插件安装成功 .
zabbix 数据源
在 Data Sources 中新增一个数据源 .
数据源配置:type=Zabbix、url、Zabbix 的账号、Zabbix 的密码 .
url 格式为:http://ip:8081/api_jsonrpc.php
grafana 面板
在 Dashboards 中新建一个面板 .
把 Panel data source 数据源改成 zabbix 数据源 .
可用内存设置面板中参数如下:
Group=Linux servers (这个参数在 zabbix 设置过)
Host=zabbix-agent-service-a
Application=Memory
Item=Available memory
grafana 使用模版
在 https://grafana.com/dashboards 中提供很多第三方模版 , 使用 Dashboard Servers Linux 这个模版
复制模版的 id.
配置模版信息 .
最终在一个面板中展示了当前 CPU、内存等 , 相对原始的数据展示更加直观 .
结语
Linux 服务器监控在实际工作中大部分是运维的工作 , 随着测试工程师的职责越来越广了 , 测试运维这个岗位也会在以后的工作中慢慢展开 .
另外像测试组自己的服务器和在压测中使用的压测机器 , 也可以搭建监控系统来监控数据 .
参考文章:
-
Zabbix 官方文档
https://www.zabbix.com/documentation/3.4/zh/manual/quickstart/login -
Docker 实战之二:zabbix 监控其他机器
https://blog.csdn.net/bbwangj/article/details/80786623 -
Docker 部署 ELK、grafana、zabbix
https://blog.51cto.com/zhanghy/2300633 -
Grafana + Zabbix --- 部署分布式监控系统
https://www.cnblogs.com/yyhh/p/4792830.html#l02 -
Docker 运行 grafana 与 zabbix 结合
https://cloud.tencent.com/info/6969106dee9ecb7eaca02744c94a0614.html -
Zabbix server+agent+proxy 搭建性能监控平台
https://blog.csdn.net/zha6476003/article/details/80562860 -
Grafana 插件
https://grafana.com/plugins/alexanderzobnin-zabbix-app/installation
(end)
-
来霍格沃兹测试开发学社,学习更多软件测试与测试开发的进阶技术,知识点涵盖web自动化测试 app自动化测试、接口自动化测试、测试框架、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,课程技术涵盖bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相关技术,全面提升测试开发工程师的技术实力
QQ交流群:484590337
公众号 TestingStudio
点击获取更多信息
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)