
Zabbix 利用 Grafana 進行圖形展示
Grafana 是一款采用 go 語言編寫的開源應用,主要用于大規模指標數據的可視化展現,是網絡架構和應用分析中最流行的時序數據展示工具,目前已經支持絕大部分常用的時序數據庫
(資料圖片僅供參考)
使用 Grafana 顯示Zabbix的監控數據過程
安裝 grafana安裝 zabbix 插件創建 zabbix 數據源導入 dashboard 模板安裝 Grafana 包
包下載鏈接:https://grafana.com/grafana/downloadhttps://mirrors.tuna.tsinghua.edu.cn/grafana/
#Ubuntu安裝[root@ubuntu2204 ~]#sudo apt-get install -y adduser libfontconfig1正在讀取軟件包列表... 完成正在分析軟件包的依賴關系樹... 完成正在讀取狀態信息... 完成 adduser 已經是最新版 (3.118ubuntu5)。adduser 已設置為手動安裝。libfontconfig1 已經是最新版 (2.13.1-4.2ubuntu5)。libfontconfig1 已設置為手動安裝。升級了 0 個軟件包,新安裝了 0 個軟件包, 要卸載 0 個軟件包,有 46 個軟件包未被升級。[root@ubuntu2204 ~]#wget https://mirrors.tuna.tsinghua.edu.cn/grafana/apt/pool/main/g/grafana/grafana_9.3.2_amd64.deb--2022-12-28 21:19:15-- https://mirrors.tuna.tsinghua.edu.cn/grafana/apt/pool/main/g/grafana/grafana_9.3.2_amd64.deb正在解析主機 mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.15.130, 2402:f000:1:400::2正在連接 mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.15.130|:443... 已連接。已發出 HTTP 請求,正在等待回應... 200 OK長度: 89172340 (85M) [application/octet-stream]正在保存至: ‘grafana_9.3.2_amd64.deb’grafana_9.3.2_amd64.deb 100%[===================================================================================================================================>] 85.04M 5.38MB/s 用時 20s 2022-12-28 21:19:36 (4.30 MB/s) - 已保存 ‘grafana_9.3.2_amd64.deb’ [89172340/89172340])[root@ubuntu2204 ~]#sudo dpkg -i grafana_9.3.2_amd64.deb 正在選中未選擇的軟件包 grafana。(正在讀取數據庫 ... 系統當前共安裝有 106640 個文件和目錄。)準備解壓 grafana_9.3.2_amd64.deb ...正在解壓 grafana (9.3.2) ...正在設置 grafana (9.3.2) ...正在添加系統用戶"grafana" (UID 112)...正在將新用戶"grafana" (UID 112)添加到組"grafana"......
開啟 Grafana 服務
[root@ubuntu2204 ~]#systemctl enable --now grafana-server.serviceSynchronizing state of grafana-server.service with SysV service script with /lib/systemd/systemd-sysv-install.Executing: /lib/systemd/systemd-sysv-install enable grafana-serverCreated symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /lib/systemd/system/grafana-server.service.[root@ubuntu2204 ~]#ss -ntlp|grep 3000LISTEN 0 4096 *:3000 *:* users:(("grafana-server",pid=2127,fd=12))
首次登錄 Grafana 的 Web 界面
http://grafana-server:3000/*使用默認用戶名和密碼都是admin登錄
登錄用戶等信息保存在下面數據文件中
[root@ubuntu2204 ~]#file /var/lib/grafana/grafana.db/var/lib/grafana/grafana.db: SQLite 3.x database, last written using SQLite version 3039004, file counter 478, database pages 222, 1st free page 221, free pages 1, cookie 0x17f, schema 4, UTF-8, version-valid-for 478
在 Grafana 安裝 Zabbix 插件
關于zabbix的插件官網地址https://grafana.com/grafana/plugins#zabbix插件官方安裝說明https://alexanderzobnin.github.io/grafana-zabbix/installation/
案例: 使用 grafana-cli 命令管理工具安裝插件#列出遠程的可用插件[root@ubuntu2204 ~]#grafana-cli plugins list-remote | grep zabbixid: alexanderzobnin-zabbix-app version: 4.2.10#列出插件的版本[root@ubuntu2204 ~]#grafana-cli plugins list-versions alexanderzobnin-zabbix-app4.2.104.2.94.2.84.2.7...#安裝zabbix插件,可指定版本,下載安裝插件至/var/lib/grafana/plugins/目錄[root@ubuntu2204 ~]#grafana-cli plugins install alexanderzobnin-zabbix-app 4.2.10? Downloaded and extracted alexanderzobnin-zabbix-app v4.2.10 zip successfully to /var/lib/grafana/plugins/alexanderzobnin-zabbix-appPlease restart Grafana after installing plugins. Refer to Grafana documentation for instructions if necessary.[root@ubuntu2204 ~]#ll /var/lib/grafana/plugins總用量 12drwxr-xr-x 3 root root 4096 12月 28 21:39 ./drwxr-xr-x 7 grafana grafana 4096 12月 28 21:39 ../drwxr-xr-x 7 root root 4096 12月 28 21:39 alexanderzobnin-zabbix-app/[root@ubuntu2204 ~]#ll /var/lib/grafana/plugins/alexanderzobnin-zabbix-app/總用量 89032drwxr-xr-x 7 root root 4096 12月 28 21:39 ./drwxr-xr-x 3 root root 4096 12月 28 21:39 ../drwxr-xr-x 2 root root 4096 12月 28 21:39 app_config_ctrl/-rw-r--r-- 1 root root 34206 12月 28 21:39 CHANGELOG.mddrwxr-xr-x 2 root root 4096 12月 28 21:39 css/drwxr-xr-x 5 root root 4096 12月 28 21:39 datasource-zabbix/drwxr-xr-x 2 root root 4096 12月 28 21:39 img/-rw-r--r-- 1 root root 5022 12月 28 21:39 MANIFEST.txt-rw-r--r-- 1 root root 1640 12月 28 21:39 module.js-rw-r--r-- 1 root root 5588 12月 28 21:39 module.js.mapdrwxr-xr-x 4 root root 4096 12月 28 21:39 panel-triggers/-rw-r--r-- 1 root root 1721 12月 28 21:39 plugin.json-rw-r--r-- 1 root root 3783 12月 28 21:39 README.md-rwxr-xr-x 1 root root 16303504 12月 28 21:39 zabbix-plugin_darwin_amd64*-rwxr-xr-x 1 root root 16941250 12月 28 21:39 zabbix-plugin_darwin_arm64*-rwxr-xr-x 1 root root 14856192 12月 28 21:39 zabbix-plugin_linux_amd64*-rwxr-xr-x 1 root root 13107200 12月 28 21:39 zabbix-plugin_linux_arm*-rwxr-xr-x 1 root root 14614528 12月 28 21:39 zabbix-plugin_linux_arm64*-rwxr-xr-x 1 root root 15242240 12月 28 21:39 zabbix-plugin_windows_amd64.exe*#重新啟動服務生效[root@ubuntu2204 ~]#systemctl status grafana-server● grafana-server.service - Grafana instance Loaded: loaded (/lib/systemd/system/grafana-server.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2022-12-28 21:41:46 CST; 27s ago Docs: http://docs.grafana.org Main PID: 2494 (grafana-server) Tasks: 14 (limit: 2196) Memory: 53.3M CPU: 1.294s CGroup: /system.slice/grafana-server.service ├─2494 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/run/grafana/grafana-server.pid --packaging=deb cfg:default.paths.logs=/var/log/grafana cfg:default.paths.data=/var/lib/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins cfg:default.paths.provisioning=/etc/grafana/provisioning └─2501 /var/lib/grafana/plugins/alexanderzobnin-zabbix-app/zabbix-plugin_linux_amd6412月 28 21:41:47 ubuntu2204.wang.org grafana-server[2494]: logger=server t=2022-12-28T21:41:47.634270043+08:00 level=info msg="Writing PID file" path=/run/grafana/grafana-server.pid pid=249412月 28 21:41:47 ubuntu2204.wang.org grafana-server[2494]: logger=provisioning.alerting t=2022-12-28T21:41:47.635070822+08:00 level=info msg="starting to provision alerting"12月 28 21:41:47 ubuntu2204.wang.org grafana-server[2494]: logger=provisioning.alerting t=2022-12-28T21:41:47.635185521+08:00 level=info msg="finished to provision alerting"12月 28 21:41:47 ubuntu2204.wang.org grafana-server[2494]: logger=http.server t=2022-12-28T21:41:47.6526367+08:00 level=info msg="HTTP Server Listen" address=[::]:3000 protocol=http subUrl= socket=12月 28 21:41:47 ubuntu2204.wang.org grafana-server[2494]: logger=ngalert.state.manager t=2022-12-28T21:41:47.650403635+08:00 level=info msg="Warming state cache for startup"12月 28 21:41:47 ubuntu2204.wang.org grafana-server[2494]: logger=ngalert.state.manager t=2022-12-28T21:41:47.652953238+08:00 level=info msg="State cache has been initialized" states=0 duration=2.548215ms12月 28 21:41:47 ubuntu2204.wang.org grafana-server[2494]: logger=ticker t=2022-12-28T21:41:47.653078859+08:00 level=info msg=starting first_tick=2022-12-28T21:41:50+08:0012月 28 21:41:47 ubuntu2204.wang.org grafana-server[2494]: logger=ngalert.multiorg.alertmanager t=2022-12-28T21:41:47.653245054+08:00 level=info msg="starting MultiOrg Alertmanager"12月 28 21:41:47 ubuntu2204.wang.org grafana-server[2494]: logger=grafanaStorageLogger t=2022-12-28T21:41:47.657592453+08:00 level=info msg="storage starting"12月 28 21:41:47 ubuntu2204.wang.org grafana-server[2494]: logger=context userId=1 orgId=1 uname=admin t=2022-12-28T21:41:47.842196795+08:00 level=info msg="Request Completed" method=GET path=/api/live/ws status=-1 remote_addr=10.0.0.1 time_ms=8 duration=8.760949ms size=0 referer= handler=/api/live/ws
在 Grafana 中啟用 Zabbix 插件
添加 Zabbix 數據源
在URL填寫以下信息
根據Zabbix安裝的服務器版本#基于nginxhttp://zabbix-server/api_jsonrpc.php#基于apachehttp://zabbix-server/zabbix/api_jsonrpc.php案例:[root@ubuntu2204 ~]#cat /etc/hosts127.0.0.1 localhost127.0.1.1 ubuntu2204# The following lines are desirable for IPv6 capable hosts::1 ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allrouters10.0.0.200 zabbix.mooreyxia.org
填寫的用戶名和密碼是zabbix服務上設置好的 這里默認Admin zabbix
測試連接
導入自帶的 Grafana 模板
啟用插件后點擊查看數據
默認的監控項有問題,修改對應的監控項的名稱(注意:不是監控項的key)
也可以根據需要自定義添加模板
Zabbix 優化
如果主機和監控項眾多, Zabbix Server 有可能會出現的性能問題,主要表現如下:
Web操作很卡,容易出現502錯誤監控圖形中圖層斷裂監控告警不及時可以查看隊列了解 Zabbix 性能狀態
優化方法
數據庫: 寫多讀少,數據采集比較頻繁,可以考慮 PostgreSQLPostgreSQL 性能要優于Mysql 可以考慮安裝zabbix服務初期選擇PostgreSQL使用主動模式,減輕Zabbix Server壓力
通過對Zabbix-Agent設置主動模式,減輕Zabbix-Server壓力如果需要監控遠程主機,使用 Zabbix Proxy
通過使用Zabbix Proxy收集Agent數據給到Server,減輕Zabbix-Server壓力刪除無用監控項,建議使用自定義的模板和監控項
只關注需要關注的監控項,減少不必要的監控壓力適當增加監控項的取值間隔,減少歷史數據保存周期,此工作由housekeeper進程定時清理
直白點就是減少數據的讀寫操作針對 Zabbix歷史數據和趨勢圖的數據表,進行周期性分表保存
對歷史數據進行轉存,或分庫分表優化等等,涉及數據庫性能調優對 Zabbix Server 進程調優,發現性能瓶頸的進程,加大它的進程數量
根據主機選擇盡可能多的進程數處理監控任務*將特定監控項的進程數量調高對 Zabbix Server 緩存調優,發現哪種緩存的剩余內存少,就加大它的緩存值
緩存默認只有8M,需要加大*緩存不夠連接數量過大會造成服務宕機
針對 Zabbix歷史數據和趨勢圖的數據表,進行周期性分表保存
占用的數據庫磁盤空間可能會很大,如何估算空間占用?官方給出相關的公式
官方公式:https://www.zabbix.com/documentation/6.0/zh/manual/installation/requirementshttps://www.zabbix.com/documentation/5.0/zh/manual/installation/requirements根據使用 MySQL 后端數據庫的實際統計數據中收集到的平均值,例如監控項為數值類型的值約 90 個字節,事件約 170 個字節。因此,所需要的磁盤總空間按下列方法計算: 配置文件數據+ 歷史數據+ 趨勢數據+ 事件數據 案例:假設 100臺主機,每個主機約有100個監控項,每個監控項每間隔60s獲取一次數值#歷史數據:days*(items/refresh rate)*24*3600*bytes90*(10000/60)*24*3600*90=116173440000 字節 約共116GB#趨勢:days*(items/3600)*24*3600*bytes365*(10000/3600)*24*3600*90=5676480000 字節 約共5G#事件:days*events*24*3600*bytes365*1*24*3600*170=5361120000 約5G#合計:126GB*根據占用磁盤空間大小選擇合適的策略進行數據庫性能調優
Zabbix Server 配置文件解析
AlertScriptsPath默認值:/usr/local/share/zabbix/alertscripts說明:告警腳本目錄AllowRoot默認值:0 說明:是否允許使用root啟動,0:不允許,1:允許,默認情況下她會使用zabbix用戶來啟動zabbix進程,不推薦使用rootCacheSize取值范圍: 128K-8G默認值:8M說明:配置緩存,用于存儲host,item,trigger數據,2.2.3版本之前最大支持2G,目前最大支持8G,zabbix5.0最大支持64GCacheUpdateFrequency取值范圍:1-3600默認值:60說明:多少秒更新一次配置緩存DBHost默認值:localhost說明:數據庫主機地址DBName默認值:無必填:是DBPassword:默認值:無說明:數據庫密碼DBPort取值范圍:1024-65535默認值:3306說明:SQLite作為DB,這個選項請忽略,如果使用socket鏈接,也請忽略。DBSchema說明:Schema名稱. 用于 IBM DB2 、 PostgreSQL.DBSocket默認值:/tmp/mysql.sock說明:mysql sock文件路徑DebugLevel取值范圍:0-5默認值:3說明: 指定debug級別0 - 基本信息1 - critical信息2 - error信息3 - warnings信息4 - 調試日志,日志內容很多,慎重使用5 - 用于調試web和vmware監控ExternalScripts默認值: /usr/local/share/zabbix/externalscripts說明: 外部腳本目錄Fping6Location默認值:/usr/sbin/fping6說明:fping6路徑,如果zabbix非root啟動,請給fping6 SUIDFpingLocation默認值:/usr/sbin/fping說明:和上面的一樣HistoryCacheSize取值范圍:128K-2G默認值:8M說明:歷史記錄緩存大小,用于存儲歷史記錄HistoryTextCacheSize取值范圍:128K-2G默認值:16M說明:文本類型歷史記錄的緩存大小,存儲character, text 、log歷史記錄.HousekeepingFrequency取值范圍:0-24默認值:1說明:housekeep執行頻率,默認每小時回去刪除一些過期數據。如果server重啟,那么30分鐘之后才執行一次,接下來,每隔一小時在執行一次。Include說明:include配置文件,可以使用正則表達式,例如:/usr/local/zabbix-2.4.4/conf/ttlsa.com/*.confJavaGateway說明:Zabbix Java gateway的主機名,需要啟動Java pollersJavaGatewayPort取值范圍:1024-32767默認值:10052Zabbix Java gateway監聽端口ListenIP默認值:0.0.0.0說明:監聽地址,留空則會在所有的地址上監聽,可以監聽多個IP地址,ip之間使用逗號分隔,例如:127.0.0.1,10.10.0.2ListenPort取值范圍:1024-32767默認值:10051說明:監聽端口LoadModule說明:加載模塊,格式: LoadModule=,文件必須在指定的LoadModulePath目錄下,如果需要加載多個模塊,那么寫多個即可。LoadModulePath模塊目錄,參考上面LogFile日志文件,例如:/data/logs/zabbix/zabbix-server.logLogFileSize取值范圍:0-1024默認值:10表示禁用日志自動rotation,如果日志達到了限制,并且rotation失敗,老日志文件將會被清空掉,重新生成一個新日志。LogSlowQueries取值范圍:0-3600000默認值:0多慢的數據庫查詢將會被記錄,單位:毫秒,0表示不記錄慢查詢。只有在DebugLevel=3時,這個配置才有效。MaxHousekeeperDelete取值范圍: 0-1000000默認值:5000housekeeping一次刪除的數據不能大于MaxHousekeeperDeletePidFile默認值:/tmp/zabbix_server.pidPID文件ProxyConfigFrequency取值范圍:1-604800默認值:3600proxy被動模式下,server多少秒同步配置文件至proxy。ProxyDataFrequency取值范圍:1-3600默認值:1被動模式下,zabbix server間隔多少秒向proxy請求歷史數據SenderFrequency取值范圍:5-3600默認值:30間隔多少秒,再嘗試發送為發送的報警SNMPTrapperFile默認值:/tmp/zabbix_traps.tmpSNMP trap發送到server的數據臨時存放文件。SourceIP出口IP地址SSHKeyLocationSSH公鑰私鑰路徑SSLCertLocationSSL證書目錄,用于web監控SSLKeyLocationSSL認證私鑰路徑、用于web監控SSLCALocationSSL認證,CA路徑,如果為空,將會使用系統默認的CAStartDBSyncers取值范圍:1-100默認值:4預先foke DB Syncers的數量,1.8.5以前最大值為64StartDiscoverers取值范圍:0-250默認值:1pre-forked discoverers的數量,1.8.5版本以前最大可為255StartPollers# Mandatory: no取值范圍:0-1000默認值:5Number of pre-forked instances of pollers.StartHTTPPollers取值范圍:0-1000默認值:1pre-forked HTTP pollers的數量,1.8.5以前最大255StartIPMIPollers取值范圍:0-1000默認值:0pre-forked IPMI pollers的數量,1.8.5之前,最大為255StartPollersUnreachable取值范圍:0-1000默認值:1pre-forked instances of pollers for unreachable hosts (including IPMI and Java)Timeout取值范圍:1-30默認值:3agent,snmp,external check的超時時間,單位為秒TmpDir默認值:/tmpTrapperTimeout取值范圍:1-300默認值:300處理trapper數據的超時時間TrendCacheSize取值范圍:128K-2G默認值:4M歷史數據緩存大小UnavailableDelay取值范圍:1-3600默認值:60間隔多少秒再次檢測主機是否可用UnreachableDelay取值范圍:1-3600默認值:15間隔多少秒再次檢測主機是否可達。UnreachablePeriod取值范圍:1-3600默認值:45檢測到主機不可用,多久將它置為不可達User默認值:zabbix啟動zabbix server的用戶,在配置禁止root啟動,并且當前shell用戶是root得情況下有效。如果當前用戶是ttlsa,那么zabbix server的運行用戶是ttlsaValueCacheSize取值范圍:0,128K-64G默認值:8M0表示禁用,history value緩存大小,當緩存超標了,將會每隔5分鐘往server日志里面記錄。養成看日志的好習慣。案例:利用API添加幾百臺監控的主機,因為默認值8M太小 ,會造成Zabbix Server 不斷的重啟,可以看到如下日志信息root@zabbix-server ~]#tail -f /var/log/zabbix/zabbix_server.log......8588:20220617:213218.764 syncing trend data done8588:20220617:213218.764 Zabbix Server stopped. Zabbix 5.0.24 (revision313ff6504e3).8611:20220617:213228.800 Starting Zabbix Server. Zabbix 5.0.24 (revision313ff6504e3).8611:20220617:213228.800 ****** Enabled features ******8611:20220617:213228.800 SNMP monitoring: YES8611:20220617:213228.800 IPMI monitoring: YES8611:20220617:213228.800 Web monitoring: YES8611:20220617:213228.800 VMware monitoring: YES8611:20220617:213228.800 SMTP authentication: YES8611:20220617:213228.800 ODBC: YES8611:20220617:213228.800 SSH support: YES8611:20220617:213228.800 IPv6 support: YES8611:20220617:213228.800 TLS support: YES8636:20220617:213239.302 ******************************8636:20220617:213239.302 using configuration file:/etc/zabbix/zabbix_server.conf8636:20220617:213239.306 current database version (mandatory/optional):05000000/050000058636:20220617:213239.306 required mandatory version: 050000008636:20220617:213239.315 server #0 started [main process]8637:20220617:213239.316 server #1 started [configuration syncer #1]8637:20220617:213239.535 __mem_malloc: skipped 0 asked 72 skip_min18446744073709551615 skip_max 08637:20220617:213239.535 [file:dbconfig.c,line:96] __zbx_mem_malloc(): out ofmemory (requested 72 bytes)8637:20220617:213239.535 [file:dbconfig.c,line:96] __zbx_mem_malloc(): pleaseincrease CacheSize configuration parameter8637:20220617:213239.535 === memory statistics for configuration cache ===8637:20220617:213239.535 free chunks of size 24 bytes: 558637:20220617:213239.535 free chunks of size 32 bytes: 118637:20220617:213239.535 free chunks of size 40 bytes: 68637:20220617:213239.535 free chunks of size 48 bytes: 58637:20220617:213239.535 free chunks of size 56 bytes: 38637:20220617:213239.535 min chunk size: 24 bytes8637:20220617:213239.535 max chunk size: 56 bytes8637:20220617:213239.535 memory of total size 7264040 bytes fragmented into70263 chunks8637:20220617:213239.535 of those, 2320 bytes are in 80 freechunks8637:20220617:213239.535 of those, 7261720 bytes are in 70183 usedchunks8637:20220617:213239.535 of those, 1124192 bytes are used by allocationoverhead8637:20220617:213239.535 ================================[root@zabbix-server ~]#cat /var/log/syslogJun 17 21:37:18 zabbix-server systemd[1]: zabbix-server.service: Scheduledrestart job, restart counter is at 31.Jun 17 21:37:18 zabbix-server systemd[1]: Stopped Zabbix Server.Jun 17 21:37:18 zabbix-server systemd[1]: Starting Zabbix Server...Jun 17 21:37:18 zabbix-server systemd[1]: Started Zabbix Server.Jun 17 21:37:18 zabbix-server kill[9306]: 用法:Jun 17 21:37:18 zabbix-server kill[9306]: kill [options][...]Jun 17 21:37:18 zabbix-server kill[9306]: 選項:Jun 17 21:37:18 zabbix-server kill[9306]: [...] send signal toevery listedJun 17 21:37:18 zabbix-server kill[9306]: - , -s, --signal Jun 17 21:37:18 zabbix-server kill[9306]: specify the to be sentJun 17 21:37:18 zabbix-server kill[9306]: -l, --list=[ ] list allsignal names, or convert one to a nameJun 17 21:37:18 zabbix-server kill[9306]: -L, --table list allsignal names in a nice tableJun 17 21:37:18 zabbix-server kill[9306]: -h, --help 顯示此幫助然后離開Jun 17 21:37:18 zabbix-server kill[9306]: -V, --version 顯示程序版本然后離開Jun 17 21:37:18 zabbix-server kill[9306]: 欲了解更多詳細信息,請參見 kill(1)。Jun 17 21:37:18 zabbix-server systemd[1]: zabbix-server.service: Control processexited, code=exited, status=1/FAILUREJun 17 21:37:18 zabbix-server systemd[1]: zabbix-server.service: Failed withresult "exit-code".[root@zabbix-server ~]#systemctl status zabbix-server.service● zabbix-server.service - Zabbix ServerLoaded: loaded (/lib/systemd/system/zabbix-server.service; enabled; vendorpreset: enabled)Active: activating (auto-restart) (Result: exit-code) since Fri 2021-06-1721:38:51 CST; 8s agoProcess: 9509 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited,status=0/SUCCESS)Process: 9528 ExecStop=/bin/kill -SIGTERM $MAINPID (code=exited,status=1/FAILURE)Main PID: 9526 (code=exited, status=0/SUCCESS)6月 17 21:38:51 zabbix-server.wang.org systemd[1]: zabbix-server.service: Controlprocess exited, code=exited, status=1/FAILURE6月 17 21:38:51 zabbix-server.wang.org systemd[1]: zabbix-server.service: Failedwith result "exit-code".#加大緩存[root@zabbix-server ~]#vim /etc/zabbix/zabbix_server.conf# CacheSize=8MCacheSize=256M#觀察結果,發現Zabbix Server 服務啟動成功[root@zabbix-server ~]#systemctl is-active zabbix-server.serviceactive
Zabbix高可用集群
在前面的部署架構中,Zabbix Server 和MySQL都有只有一臺主機,存在單點問題可以使用Keepalived 實現 Zabbix Server的高可用基礎架構為LAMP或LNMP環境,采用keepalived實現zabbix服務器高可用,保證主服務器或者Httpd宕掉后能切換到從服務器MySQL數據庫做主主同步,保證兩邊服務器數據的一致性,實現數據庫的高可用。*注意: 從 Zabbix 6.0 官方提供了高可用解決方案官方鏈接https://www.zabbix.com/documentation/6.0/zh/manual/concepts/server/ha#implementation-details
啟用官方版高可用集群【摘抄官網原文】
在server配置中需要兩個參數來啟動Zabbix server作為集群節點:
HANodeName 集群中每個zabbix server節點名稱必須要有且唯一這是將在agent和proxy配置中引用server的名稱 (例如: zabbix-node-01 )。如果您沒有指定HANodeName,那么服務器將以standalone模式啟動。
NodeAddress 參數必須為每個節點指定。NodeAddress參數(address:port)將被Zabbix前端用來連接到主server節點。NodeAddress必須匹配相應Zabbix server的IP或FQDN名稱。Zabbix HA解決方案由多個zabbix_server實例或節點組成。每個節點獨立配置,但數據庫是使用同一個實例。
Zabbix HA節點包括以下幾種狀態:
active(活動)standby(備用)unavailable(不可用)stopped(停止)在同一個Zabbix HA集群中,只有一個實例或節點處于active(活動)狀態,standby(備用)節點不進行數據收集、處理或其他任務,并且不監聽端口,并保持一個最少的數據庫連接
案例:實現 Zabbix Server 6.0 的高可用
在MySQL創建用戶并授權
#如果原有的數據庫用戶無遠程連接權限,需要進行授權[root@zabbix-server ~]#vi /etc/mysql/mysql.conf.d/mysqld.cnf#注釋下面兩行#bind-address = 127.0.0.1#mysqlx-bind-address = 127.0.0.1[root@zabbix-server ~]#systemctl restart mysql[root@zabbix-server ~]#mysqlmysql> create user zabbix@"10.0.0.%" identified by "123456";mysql> grant all on zabbix.* to zabbix@"10.0.0.%";
兩個Zabbix Server 節點都修改配置文件
*注意:在沒有配置集群時,不要同時啟動多個Zabbix Server#主節點配置vim /etc/zabbix/zabbix_server.confDBHost=10.0.0.200DBName=zabbixDBUser=zabbixDBPassword=123456## 以下兩個參數是HA配置的參數# HANodeName設置為當前節點主機名或者IP地址,需保證同一集群中唯一HANodeName=zabbix-master# NodeAddress設置為節點IP:10051NodeAddress=10.0.0.200:10051systemctl restart zabbix-server.service#備用節點安裝Zabbix server,并修改配置,指向同一個數據庫vim /etc/zabbix/zabbix_server.confDBHost=10.0.0.200DBName=zabbixDBUser=zabbixDBPassword=123456## 以下兩個參數是HA配置的參數# HANodeName設置為當前節點主機名或者IP地址,需保證同一集群中唯一HANodeName=zabbix-slave# NodeAddress設置為節點IP:10051NodeAddress=10.0.0.210:10051#備用節點初始化配置,修改php配置指向原數據庫#初始化的的配置需要在所有Zabbix Server節點上完成,或者將已完成節點的配置文件/etc/zabbix/web/zabbix.conf.php拷貝至其他節點[root@ubuntu2204 ~]#vim /etc/zabbix/web/zabbix.conf.php$DB["TYPE"] = "MYSQL";$DB["SERVER"] = "10.0.0.200";$DB["PORT"] = "0";$DB["DATABASE"] = "zabbix";$DB["USER"] = "zabbix";$DB["PASSWORD"] = "123456";
修改所有Agent的配置指向主和備用Zabbix Server
#配置Agent,Zabbix HA的方案需要在agent配置文件中將所有的Server節點地址配置到Server和ServerActive中[root@ubuntu2204 ~]#vim /etc/zabbix/zabbix_agent2.confServer=10.0.0.200,10.0.0.210ServerActive=10.0.0.200,10.0.0.210[root@ubuntu2204 ~]#systemctl restart zabbix-agent2.service
查看狀態
*查看HA狀態有兩種方式,一種是通過Web頁面查看,另外一種是通過Runtime運行時的命令行查看
#通過Runtime運行時的命令行查看在Zabbix Server節點上執行命令zabbix_server -R ha_status,并在日志文件/var/log/zabbix/zabbix_server.log中查看HA狀態[root@zabbix-server ~]#zabbix_server -R ha_statusFailover delay: 60 secondsCluster status:# ID Name AddressStatus Last Access1. clc3bjuvi000145qn9dw080tx zabbix-master 10.0.0.200:10051active 5s2. clc3bk2xf0001hedflh3t72rh zabbix-slave 10.0.0.210:10051standby 2s#備用節節點執行如下提示[root@ubuntu2204 ~]#zabbix_server -R ha_statusRuntime commands can be executed only in active mode[root@ubuntu2204 ~]#systemctl is-active zabbix-server.serviceactive#備用節點不監聽端口[root@ubuntu2204 ~]#ss -nlt |grep 10051
在Reports -> System infomation頁面可以查看HA狀態
我是moore,大家一起加油!明天開始更新云原生系列文章。