Zabbix是什麼 Zabbix 是由Alexei Vladishev創建,目前由Zabbix SIA在持續開發和支持。 Zabbix 是一個企業級的分散式開源監控方案。 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執行
- 您可以非常靈活的定義問題閾值,稱之為觸發器,觸發器從後端資料庫獲取參考值
- 可以根據升級計劃,接收方和媒體類型來定製發送告警通知
- 使用巨集變數可以使告警通知更有意義更高效
- 自動化動作包含執行遠程命令
- 使用內置圖表繪製功能可以將監控項的內容立即繪製成圖表
- Zabbix可以模擬滑鼠在Web網站上的操作來檢查Web的功能和響應時間
- 能夠創建自定義的圖形,圖形中可將多個監控項組合在一個視圖展示
- 網路拓撲圖
- 以儀錶盤的樣式展現自定義的展現和幻燈片
- 報告
- 監控資源的高級(業務)視圖
- 數據存儲在資料庫中
- 可配置歷史數據
- 內置數據管理機制
- 將被監控對象添加為主機
- 主機被創建用於監控,在資料庫中是唯一存在的
- 應用模板來監控設備
- 在模板中分組檢查
- 模板可以關聯其他模板
- 自動發現網路設備
- 監控代理自動註冊
- 發現文件系統,網路介面和SNMP OID值
- Web前端基於PHP
- 可從任何地方訪問
- 你可以定製自己的操作方式
- 審核日誌
- Zabbix API為Zabbix 提供了對外的可編程介面,用於批量操作,第三方軟體集成和其他目的
- 安全用戶認證
- 特定用戶可以限制訪問特定的視圖
- 部署在被監控對象上
- 可以部署在Linux和Windows上
- 為了性能和更少記憶體的占用,用C語言編寫
- 便於移植
- 使用Zabbix proxy代理伺服器,使得遠程監控更簡單
Zabbix概述
結構
Zabbix由幾個主要的軟體組件構成,這些組件的功能如下。
Server
Zabbix server 是監控代理程式報告系統可用性、系統完成整性和統計信息的核心組件。Zabbix Server是所有配置信息、統計信息和操作數據的核心存儲器。
資料庫存儲
所有配置信息和Zabbix收集到的數據都被存儲在資料庫中。
Web界面
為了從任何地方和任何平臺都輕鬆的訪問Zabbix,Zabbix提供了基於Web的界面。該界面是Zabbix Server的一部分,通常(但不一定)跟Zabbix Server運行在同一臺物理機器上。
如果使用SQLite,Zabbix Web界面必須要跟Zabbix Server運行在同一臺物理機器上。
Proxy代理伺服器
Zabbix proxy 可以替Zabbix Server收集性能和可用性數據。Proxy代理伺服器是Zabbix軟體可選擇部署的一部分;當然,Proxy代理伺服器可以幫助單台Zabbix Server分擔負載壓力。
Agent監控代理
Zabbix agents監控代理 部署在監控目標上,能夠主動監控本地資源和應用程式,並將收集到的數據報告給Zabbix Server。
數據流
此外,瞭解Zabbix內部的數據流同樣很重要。為了創建一個監控項用於採集數據,必須先創建一個主機。轉換到Zabbix功能的其他部分,你必須先有一個監控項來創建觸發器,你必須有一個觸發器來創建動作。 因此,如果你想收到X伺服器CPU負載過高的告警,你必須先為X伺服器創建一個主機實體並關聯一個用於對CPU進行監控的監控項,然後如果CPU負載太高便會激活觸發器,接著會執行一個動作,給你發送告警郵件。雖然看起來有很多步驟,但是使用模板的話可以會很簡單。同時,這個設計可以創建一個非常靈活的配置。
定義
- 一臺你想監控的網路設備,用IP或功能變數名稱表示
- 主機的邏輯組;它包含主機和模板。一個主機組裡的主機和模板之間並沒有任何直接的關聯。通常在給不同用戶組的主機分配許可權時候使用主機組。
- 你想要接收的主機的特定數據,一個度量數據。
- 一個被用於定義問題閾值和“評估”監控項接收到的數據的邏輯表達式
當接收到的數據高於閾值時,觸發器從“OK”變成“Problem”狀態。當接收到的數據低於閾值時,觸發器保留/返回一個“OK”的狀態。
- 單次發生的需要註意的事情,例如觸發器狀態改變或發現有監控代理自動註冊
- 一個處在“異常”狀態的觸發器
- 一個對事件做出反應的預定義的操作。
一個動作由操作(例如發出通知)和條件(當時操作正在發生)組成
- 一個在動作內執行操作的自定義場景; 發送通知/執行遠程命令的序列
- 發送告警通知的手段;告警通知的途徑
- 利用已選擇的媒體途徑把跟事件相關的信息發送給用戶
- 一個預定義好的,滿足一些條件的情況下,可以在被監控主機上自動執行的命令
- 一組可以被應用到一個或多個主機上的實體(監控項,觸發器,圖形,聚合圖形,應用,LLD,Web場景)的集合
模版的任務就是加快對主機監控任務的實施;也可以使監控任務的批量修改更簡單。模版是直接關聯到每台單獨的主機上。
- 一組監控項組成的邏輯分組
- 利用一個或多個HTTP請求來檢查網站的可用性
- Zabbix提供的web界面
- Zabbix API允許你使用JSON RPC協議來創建、更新和獲取Zabbix對象(如主機、監控項、圖形和其他)信息或者執行任何其他的自定義的任務
- Zabbix軟體實現監控的核心程式,主要功能是與Zabbix proxies和Agents進行交互、觸發器計算、發送告警通知;並將數據集中保存等
- 一個部署在監控對象上的,能夠主動監控本地資源和應用的程式
- 一個幫助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 -a 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 x86_64 x86_64 GNU/Linux [root@cairui ~]# cat /etc/redhat-release CentOS release 6.8 (Final) [root@cairui ~]# uname -a Linux 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 status iptables: 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 status iptables: 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 zabbix Enter 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.1 DBName=zabbix DBUser=zabbix DBPassword=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 292 PHP 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: 20160303 Zend Module Api No: 20160303 Zend 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/phpize Configuring for: PHP Api Version: 20160303 Zend Module Api No: 20160303 Zend Extension Api No: 320160303 [root@cairui gettext]# ./configure --with-php-config=/opt/php/bin/php-config make && make install [root@cairui gettext]# vim /opt/php/lib/php.ini [root@cairui gettext]# tail -2 /opt/php/lib/php.ini extension=bcmath.so extension=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.rpm warning: /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.87 ServerActive=127.0.0.1 [root@VM_0_7_centos ~]# /etc/init.d/zabbix-agent start Starting 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 -l UserParameter=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 -l UserParameter=login-user2,who|wc -l 註意:key要唯一,多個key要以行分 [root@VM_0_7_centos zabbix_agentd.d]# /etc/init.d/zabbix-agent restart Shutting 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網頁):
創建應用集
創建監控項
創建觸發器
觸發器的作用:當監控項獲取到的值達到一定數量時就觸發報警(根據需求創建)
創建圖形
關聯主機模板
配置》主機
一個主機可以關聯多個模板
查看監控圖形