本文作者是霍格沃茲測試學院優秀學員 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
點擊獲取更多信息