Zabbix監控詳解

来源:https://www.cnblogs.com/caicairui/archive/2018/03/10/8530215.html
-Advertisement-
Play Games

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執行

靈活的閥值定義

  • 您可以非常靈活的定義問題閾值,稱之為觸發器,觸發器從後端資料庫獲取參考值

高度可配置化的告警

  • 可以根據升級計劃,接收方和媒體類型來定製發送告警通知
  • 使用巨集變數可以使告警通知更有意義更高效
  • 自動化動作包含執行遠程命令

實時圖表繪製

  • 使用內置圖表繪製功能可以將監控項的內容立即繪製成圖表

Web監控功能

  • Zabbix可以模擬滑鼠在Web網站上的操作來檢查Web的功能和響應時間

豐富的可視化選項

  • 能夠創建自定義的圖形,圖形中可將多個監控項組合在一個視圖展示
  • 網路拓撲圖
  • 以儀錶盤的樣式展現自定義的展現和幻燈片
  • 報告
  • 監控資源的高級(業務)視圖

歷史數據存儲

  • 數據存儲在資料庫中
  • 可配置歷史數據
  • 內置數據管理機制

配置簡單

  • 將被監控對象添加為主機
  • 主機被創建用於監控,在資料庫中是唯一存在的
  • 應用模板來監控設備

使用模板

  • 在模板中分組檢查
  • 模板可以關聯其他模板

網路發現

  • 自動發現網路設備
  • 監控代理自動註冊
  • 發現文件系統,網路介面和SNMP OID值

簡潔的Web界面

  • Web前端基於PHP
  • 可從任何地方訪問
  • 你可以定製自己的操作方式
  • 審核日誌

Zabbix API

  • 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負載太高便會激活觸發器,接著會執行一個動作,給你發送告警郵件。雖然看起來有很多步驟,但是使用模板的話可以會很簡單。同時,這個設計可以創建一個非常靈活的配置。

定義

主機 (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 -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網頁):

創建應用集

創建監控項

創建觸發器

觸發器的作用:當監控項獲取到的值達到一定數量時就觸發報警(根據需求創建)

 

 

創建圖形

關聯主機模板

配置》主機

一個主機可以關聯多個模板

查看監控圖形

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 當公司的業務擴大, 伴隨著大量的請求,應用伺服器的承受能力已經不能滿足不斷增長的業務需求,使用IIS Server Farms搭建應負載均衡的方式,把請求分發給不同的應用伺服器進行處理,這個時候就降低了應用伺服器的壓力 ...
  • 什麼是AppDomain?AppDomain是一組程式集的邏輯容器,AppDomain是為了提供隔離而設計的。它提供了保護、配置和終止其中每一個應用程式的隔離 AppDomain的功能: 1.一個AppDomain中的對象不能直接訪問另一個Appdomain中的對象 一個AppDomain中的代碼創 ...
  • VB.Net: My.Resources.ResourceManager.GetObject("data") C# Properties.Resources.文件名 ...
  • 新開了一個多線程編程系列,該系列主要講解C#中的多線程編程。 利用多線程的目的有2個: 一是防止UI線程被耗時的程式占用,導致界面卡頓;二是能夠利用多核CPU的資源,提高運行效率。 我沒有進行很深入的講解,是以實際使用為主。我的這個系列主要是《CLR via C#》的總結,該書的作者Jeffrey ...
  • 實例產品基於asp.net mvc 5.0框架,源碼下載地址:http://www.jinhusns.com/Products/Download 在.net框架中,事件是將事件發送者(觸發事件的對象)與事件接受者(處理事件的方法)相關聯的一種代理類,即事件機制是通過代理類來實現的。當一個事件被觸發時 ...
  • 在Word文檔中,我們可以通過添加頁眉、頁腳的方式來豐富文檔內容。添加頁眉、頁腳時,可以添加時間、日期、文檔標題,文檔引用信息、頁碼、內容解釋、圖片/LOGO等多種圖文信息。同時也可根據需要調整文字或圖片在頁眉頁腳的位置。因此,本文將介紹如何在C#中使用免費組件Free Spire. Doc for ...
  • 我寫了一個Asp.net core mvc項目,但是部署在iis發生了502.5的問題一直解決不了。 環境 系統:最強Win10; 工具:輕巧VS Code; 各種百度bing都沒有我要的解決方案,說的都是 1. 保證電腦上有.net core sdk或者.net core runtime; 2. ...
  • 本示例描述瞭如何創建一個WCF服務,並宿主在命令行應用程式中,客戶端可以訪問服務元數據,並以非同步的方式消費它。 首先,我們創建了一個WCF服務。關於如何創建WCF服務,可以參考我之前的文章(WCF學習之旅—第三個示例之一(二十七)至WCF學習之旅—第三個示例之五(三十一)) ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...