Zabbix監控詳解,zabbix詳解
Zabbix是什麼
Zabbix 是由Alexei Vladishev建立,目前由Zabbix SIA在持續開發和支援。
Zabbix 是一個企業級的分布式開源監控方案。
Zabbix是一款能夠監控各種網路參數以及伺服器健康性和完整性的軟體。Zabbix使用靈活的通知機制,允許使用者為幾乎任何事件配置基於郵件的警示。這樣可以快速反饋伺服器的問題。基於已儲存的資料,Zabbix提供了出色的報告和資料視覺效果功能。這些功能使得Zabbix成為容量規劃的理想方案。
Zabbix支援主動輪詢和被動捕獲。Zabbix所有的報告、統計資訊和配置參數都可以通過基於Web的前端頁面進行訪問。基於Web的前端頁面可以確保您從任何方面評估您的網路狀態和伺服器的健康性。適當的配置後,Zabbix可以在IT基礎架構監控方面扮演重要的角色。對於只有少量伺服器的小型組織和擁有大量伺服器的大型公司也同樣如此。
Zabbix是免費的。Zabbix是根據GPL通用公用許可證第2版編寫和發行的。這意味著它的原始碼都是免費發行的,可供公眾任意使用。
Zabbix的特點
Zabbix是一個高度整合的網路監控解決方案,一個簡單的安裝包中提供多樣性的功能。
資料收集
- 可用性和效能檢查
- 支援SNMP(包括捕獲和主動輪訓),IPMI,JMX,VMware監控
- 自訂檢查
- 按照自訂的間隔收集需要的資料
- 由Server/Proxy和agents執行
靈活的閥值定義
- 您可以非常靈活的定義問題閾值,稱之為觸發器,觸發器從後端資料庫擷取參考值
高度可配置化的警示
- 可以根據升級計劃,接收方和媒體類型來定製發送警示通知
- 使用宏變數可以使警示通知更有意義更高效
- 自動化動作包含執行遠程命令
即時圖表繪製
- 使用內建圖表製作功能可以將監控項的內容立即繪製成圖表
Web監控功能
- Zabbix可以類比滑鼠在Web網站上的操作來檢查Web的功能和回應時間
豐富的可視化選項
- 能夠建立自訂的圖形,圖形中可將多個監控項組合在一個視圖展示
- 網路拓撲圖
- 以儀錶盤的樣式展現自訂的展現和投影片
- 報告
- 監控資源的進階(業務)視圖
曆史資料存放區
- 資料存放區在資料庫中
- 可配置曆史資料
- 內建資料管理機制
配置簡單
- 將被監控對象添加為主機
- 主機被建立用於監控,在資料庫中是唯一存在的
- 應用模板來監控裝置
使用模板
網路發現
- 自動探索網路裝置
- 監控代理自動註冊
- 發現檔案系統,網路介面和SNMP OID值
簡潔的Web介面
- Web前端基於PHP
- 可從任何地方訪問
- 你可以定製自己的操作方式
- 稽核線索
Zabbix API
- Zabbix API為Zabbix 提供了對外的可程式化介面,用於大量操作,第三方軟體整合和其他目的
許可權管理系統
功能強大並易於擴充的監控代理
- 部署在被監控對象上
- 可以部署在Linux和Windows上
二進位代碼
- 為了效能和更少記憶體的佔用,用C語言編寫
- 便於移植
為複雜環境準備
- 使用Zabbix proxyProxy 伺服器,使得遠程監控更簡單
Zabbix概述結構
Zabbix由幾個主要的軟體組件構成,這些組件的功能如下。
Server
Zabbix server 是監控代理程式報告系統可用性、系統完成整性和統計資訊的核心組件。Zabbix Server是所有配置資訊、統計資訊和操作資料的核心儲存空間。
資料庫儲存
所有配置資訊和Zabbix收集到的資料都被儲存在資料庫中。
Web介面
為了從任何地方和任何平台都輕鬆的訪問Zabbix,Zabbix提供了基於Web的介面。該介面是Zabbix Server的一部分,通常(但不一定)跟Zabbix Server運行在同一台物理機器上。
如果使用SQLite,Zabbix Web介面必須要跟Zabbix Server運行在同一台物理機器上。
ProxyProxy 伺服器
Zabbix proxy 可以替Zabbix Server收集效能和可用性資料。ProxyProxy 伺服器是Zabbix軟體可選擇部署的一部分;當然,ProxyProxy 伺服器可以協助單台Zabbix Server分擔負載壓力。
Agent監控代理
Zabbix agents監控代理 部署在監控目標上,能夠主動式監控本地資源和應用程式,並將收集到的資料報告給Zabbix Server。
資料流
此外,瞭解Zabbix內部的資料流同樣很重要。為了建立一個監控項用於採集資料,必須先建立一個主機。轉換到Zabbix功能的其他部分,你必須先有一個監控項來建立觸發器,你必須有一個觸發器來建立動作。 因此,如果你想收到X伺服器CPU負載過高的警示,你必須先為X伺服器建立一個主機實體並關聯一個用於對CPU進行監控的監控項,然後如果CPU負載太高便會啟用觸發器,接著會執行一個動作,給你發送警示郵件。雖然看起來有很多步驟,但是使用模板的話可以會很簡單。同時,這個設計可以建立一個非常靈活的配置。
定義
主機 (host)
- 一台你想監控的網路裝置,用IP或網域名稱表示
主機群組 (host group)
- 主機的邏輯組;它包含主機和模板。一個主機群組裡的主機和模板之間並沒有任何直接的關聯。通常在給不同使用者組的主機分配許可權時候使用主機群組。
監控項 (item)
- 你想要接收的主機的特定資料,一個度量資料。
觸發器 (trigger)
- 一個被用於定義問題閾值和“評估”監控項接收到的資料的邏輯運算式
當接收到的資料高於閾值時,觸發器從“OK”變成“Problem”狀態。當接收到的資料低於閾值時,觸發器保留/返回一個“OK”的狀態。
事件 (event)
- 單次發生的需要注意的事情,例如觸發器狀態改變或發現有監控代理自動註冊
異常 (problem)
- 一個處在“異常”狀態的觸發器
動作 (action)
- 一個對事件做出反應的預定義的操作。
一個動作由操作(例如發出通知)和條件(當時操作正在發生)組成
升級 (escalation)
- 一個在動作內執行操作的自訂情境; 發送通知/執行遠程命令的序列
媒介 (media)
- 發送警示通知的手段;警示通知的途徑
通知 (notification)
- 利用已選擇的媒體途徑把跟事件相關的資訊發送給使用者
遠程命令 (remote command)
- 一個預定義好的,滿足一些條件的情況下,可以在被監控主機上自動執行的命令
模版 (template)
- 一組可以被應用到一個或多個主機上的實體(監控項,觸發器,圖形,彙總圖形,應用,LLD,Web情境)的集合
模版的任務就是加快對主機監控任務的實施;也可以使監控任務的批量修改更簡單。模版是直接關聯到每台單獨的主機上。
應用 (application)
- 一組監控項組成的邏輯分組
Web 伺服陣列景 (web scenario)
- 利用一個或多個HTTP請求來檢查網站的可用性
前端 (frontend)
- Zabbix提供的web介面
Zabbix API
- Zabbix API允許你使用JSON RPC協議來建立、更新和擷取Zabbix對象(如主機、監控項、圖形和其他)資訊或者執行任何其他的自訂的任務
Zabbix server
- Zabbix軟體實現監控的核心程式,主要功能是與Zabbix proxies和Agents進行互動、觸發器計算、發送警示通知;並將資料集中儲存等
Zabbix agent
- 一個部署在監控對象上的,能夠主動式監控本地資源和應用的程式
Zabbix proxy
- 一個協助Zabbix Server收集資料,分擔Zabbix Server的負載的程式
Zabbix架構
監控範疇
Zabbix監控Java應用
安裝、配置Zabbix
| 機器名稱 |
IP配置 |
服務角色 |
備忘 |
| cairui |
120.25.255.87 |
zabbix-server |
開啟監控功能 |
| VM_0_7_centos |
118.25.47.241 |
zabbix-agent |
開啟 |
環境查看:
[root@VM_0_7_centos zabbix-3.4.7]# cat /etc/redhat-release CentOS release 6.8 (Final)[root@VM_0_7_centos zabbix-3.4.7]# uname -aLinux VM_0_7_centos 2.6.32-642.6.2.el6.x86_64 #1 SMP Wed Oct 26 06:52:09 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux[root@cairui ~]# cat /etc/redhat-release CentOS release 6.8 (Final)[root@cairui ~]# uname -aLinux cairui 2.6.32-696.6.3.el6.x86_64 #1 SMP Wed Jul 12 14:17:22 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@VM_0_7_centos zabbix-3.4.7]# /etc/init.d/iptables statusiptables: Firewall is not running.[root@VM_0_7_centos zabbix-3.4.7]# /usr/sbin/sestatus SELinux status: disabled[root@cairui ~]# /etc/init.d/iptables statusiptables: Firewall is not running.[root@cairui ~]# /usr/sbin/sestatus SELinux status: disabled
服務端安裝配置:
[root@cairui software]# rpm -i http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm[root@cairui software]# yum install -y zabbix-server-mysql zabbix-web-mysql
建立資料庫:
mysql> create database zabbix character set gbk collate gbk_chinese_ci;mysql> show grants for zabbix@localhost;+------------------------------------------------------------+| Grants for zabbix@localhost |+------------------------------------------------------------+| GRANT USAGE ON *.* TO 'zabbix'@'localhost' || GRANT ALL PRIVILEGES ON `zabbix`.* TO 'zabbix'@'localhost' |+------------------------------------------------------------+
匯入資料:
[root@cairui software]# zcat /usr/share/doc/zabbix-server-mysql-3.0.15/create.sql.gz |mysql -uzabbix -p zabbixEnter password:
配置zabbix-server串連mysql:
[root@cairui software]# vim /etc/zabbix/zabbix_server.conf[root@cairui software]# grep "DB" /etc/zabbix/zabbix_server.conf | grep -v "#"DBHost=127.0.0.1DBName=zabbixDBUser=zabbixDBPassword=zabbix
修改php.ini:
vim /application/php/lib/php.ini 主要為下面幾個參數
post_max_size 16M
max_execution_time 300
max_input_time 300
timezone Asia/Shanghai
重啟php-fpm
[root@cairui html]# /etc/init.d/zabbix-server start[root@cairui html]# cp -rf /usr/share/zabbix/* /opt/nginx/html/[root@cairui html]# cd /opt/nginx/html/conf/[root@cairui conf]# cp zabbix.conf.php.example zabbix.conf.php[root@cairui conf]# vim zabbix.conf.php[root@cairui conf]# cat zabbix.conf.php<?php// Zabbix GUI configuration file.global $DB;$DB['TYPE']= 'MYSQL';$DB['SERVER']= '127.0.0.1';$DB['PORT']= '3306';$DB['DATABASE']= 'zabbix';$DB['USER']= 'zabbix';$DB['PASSWORD']= 'zabbix';// Schema name. Used for IBM DB2 and PostgreSQL.$DB['SCHEMA']= '';$ZBX_SERVER= 'localhost';$ZBX_SERVER_PORT= '10051';$ZBX_SERVER_NAME= '';$IMAGE_FORMAT_DEFAULT= IMAGE_FORMAT_PNG;出錯:FastCGI sent in stderr: "PHP message: PHP Warning: require_once(/etc/zabbix/web/maintenance.inc.php): failed to open stream: Permission denied in /app/nginx/html/zabbix/include/classes/core/ZBase.php on line 292PHP message: PHP Fatal error: require_once(): Failed opening required '/etc/zabbix/web/mainte”解決辦法:chmod -R 755 /etc/zabbix/web
出錯解決辦法:
[root@cairui bcmath]# yum install *bcmath* --skip-broken[root@cairui bin]# find / -name bcmath/home/cairui/software/php-7.1.15/ext/bcmath[root@cairui bin]# cd /home/cairui/software/php-7.1.15/ext/bcmath[root@cairui bcmath]# /opt/php/bin/phpize Configuring for:PHP Api Version: 20160303Zend Module Api No: 20160303Zend Extension Api No: 320160303[root@cairui bcmath]# ./configure --with-php-config=/opt/php/bin/php-config make && make install[root@cairui bcmath]# vim /opt/php/lib/php.ini 加入下面一句:[root@cairui bcmath]# tail -1 /opt/php/lib/php.ini extension=bcmath.so 成功!
不支援切換語言解決辦法:
[root@cairui web]# yum install *gettext* --skip-broken[root@cairui web]# find / -name gettext/usr/lib64/perl5/vendor_perl/auto/Locale/gettext/usr/lib64/ocaml/gettext/usr/lib64/gettext/usr/bin/gettext/usr/share/doc/gettext-devel-0.17/javadoc2/gnu/gettext/usr/share/glib-2.0/gettext/usr/share/gettext/usr/share/php/gettext/bin/gettext/home/cairui/software/php-7.1.15/ext/gettext/opt/boost/boost_1_59_0/tools/build/example/gettext[root@cairui web]# cd /home/cairui/software/php-7.1.15/ext/gettext[root@cairui gettext]# /opt/php/bin/phpizeConfiguring for:PHP Api Version: 20160303Zend Module Api No: 20160303Zend Extension Api No: 320160303[root@cairui gettext]# ./configure --with-php-config=/opt/php/bin/php-configmake && make install[root@cairui gettext]# vim /opt/php/lib/php.ini [root@cairui gettext]# tail -2 /opt/php/lib/php.ini extension=bcmath.soextension=gettext.so
用戶端配置
[root@VM_0_7_centos ~]# rpm -i http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpmwarning: /var/tmp/rpm-tmp.iT0tW6: Header V4 DSA/SHA1 Signature, key ID 79ea5ed4: NOKEY[root@VM_0_7_centos ~]# yum install zabbix-agent -y[root@VM_0_7_centos ~]# cat /etc/zabbix/zabbix_agentd.conf | grep 'Server'|grep -v "#"Server=120.25.255.87ServerActive=127.0.0.1[root@VM_0_7_centos ~]# /etc/init.d/zabbix-agent startStarting Zabbix agent: [ OK ]
檢測連通性
服務端安裝zabbix-get偵查工具
[root@cairui gettext]# yum install zabbix-get
[root@cairui gettext]# zabbix_get -s 118.25.47.241 -p 10050 -k "system.cpu.load[all,avg1]"0.000000
配置新主機
自訂監控與監控警示
說明:zabbix內建的模板Template OS Linux (Template App Zabbix Agent)提供CPU、記憶體、磁碟、網卡等常規監控,只要新加主機關聯此模板,就可自動添加這些監控項。
自訂的key能被server和agent認可
#正確的key[root@cairui ~]# zabbix_get -s 118.25.47.241 -p 10050 -k 'system.uname'Linux VM_0_7_centos 2.6.32-642.6.2.el6.x86_64 #1 SMP Wed Oct 26 06:52:09 UTC 2016 x86_64#沒有登記的,自訂的key[root@cairui ~]# zabbix_get -s 118.25.47.241 -p 10050 -k 'login-user'ZBX_NOTSUPPORTED: Unsupported item key.#寫錯的key[root@cairui ~]# zabbix_get -s 118.25.47.241 -p 10050 -k 'system.unama'ZBX_NOTSUPPORTED: Unsupported item key.
自訂文法:
UserParameter=<key>,<shell command>UserParameter=login-user,who|wc -lUserParameter=login-user,/bin/sh /server/scripts/login.sh
agent註冊:
[root@VM_0_7_centos zabbix_agentd.d]# vim userparameter_login.conf[root@VM_0_7_centos zabbix_agentd.d]# cat userparameter_login.conf UserParameter=login-user,who|wc -lUserParameter=login-user2,who|wc -l注意:key要唯一,多個key要以行分[root@VM_0_7_centos zabbix_agentd.d]# /etc/init.d/zabbix-agent restartShutting down Zabbix agent: [ OK ]Starting Zabbix agent: [ OK ][root@cairui ~]# zabbix_get -s 118.25.47.241 -p 10050 -k 'login-user'1[root@cairui ~]# zabbix_get -s 118.25.47.241 -p 10050 -k 'login-user2'1[root@cairui ~]# zabbix_get -s 118.25.47.241 -p 10050 -k 'login-user3'ZBX_NOTSUPPORTED: Unsupported item key.
在server端操作(web網頁):
建立應用集
建立監控項
建立觸發器
觸發器的作用:當監控項擷取到的值達到一定數量時就觸發警示(根據需求建立)
建立圖形
關聯主機模板
配置》主機
一個主機可以關聯多個模板
查看監控圖形