1. 程式人生 > >Zabbix簡談及部署

Zabbix簡談及部署

zabbix架構

Zabbix由幾個主要的軟體元件構成,這些元件的功能如下。

Server
Zabbix server 是agent程式報告系統可用性、系統完整性和統計資料的核心元件,是所有配置資訊、統計資訊和操作資料的核心儲存器。

資料庫儲存
所有配置資訊和Zabbix收集到的資料都被儲存在資料庫中。

Web介面
為了從任何地方和任何平臺都可以輕鬆的訪問Zabbix, 我們提供基於Web的Zabbix介面。該介面是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內部的資料流同樣很重要。監控方面,為了建立一個監控項(item)用於採集資料,必須先建立一個主機(host)。告警方面,在監控項裡建立觸發器(trigger),通過觸發器(trigger)來觸發告警動作(action)。 因此,如果你想收到Server XCPU負載過高的告警,你必須: 1. 為Server X建立一個host並關聯一個用於對CPU進行監控的監控項(Item)。 2. 建立一個Trigger,設定成當CPU負載過高時會觸發 3. Trigger被觸發,傳送告警郵件 雖然看起來有很多步驟,但是使用模板的話操作起來其實很簡單,Zabbix這樣的設計使得配置機制非常靈活易用。

Zabbix常用術語的含義

主機 (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 agent部署在監控的目標上,主動監測本地的資源和應用(硬體驅動,記憶體,處理器統計等)。
Zabbix agent收集本地的操作資訊並將資料報告給Zabbix server用於進一步處理。一旦出現異常 (比如硬碟空間已滿或者有崩潰的服務程序), Zabbix server會主動警告管理員指定機器上的異常。. Zabbix agents 的極端高效緣於它可以利用本地系統呼叫來完成統計資料的收集。

被動(passive)和主動(active)檢查
Zabbix agents可以執行被動和主動兩種檢查方式。
在passive check 模式中agent應答資料請求,Zabbix server(或者proxy)詢問agent資料,如CPU 的負載情況,然後Zabbix agent回送結果。
Active checks 處理過程將相對複雜。 Agent必須首先從Zabbix sever索取監控項列表以進行獨立處理,然後週期性地傳送新的值給server。
執行被動或主動檢查是通過選擇相應的監測專案型別來配置的。item type. Zabbix agent處理監控項型別有’Zabbix agent’和’Zabbix agent (active)’。

Zabbix proxy
- 一個幫助Zabbix Server收集資料,分擔Zabbix Server的負載的程式
Zabbix Proxy是一個可以從一個或多個受監控裝置收集監控資料,並將資訊傳送到Zabbix sever的程序,基本上是代表sever工作的。 所有收集的資料都在本地進行快取,然後傳送到proxy所屬的Zabbix sever。
部署Proxy是可選的,,但是可能非常有益於分散單個Zabbix sever的負載。 如果只有proxy收集資料,sever上的程序就會減少CPU消耗和磁碟I / O負載。
Zabbix proxy是完成遠端區域、分支機構、沒有本地管理員的網路的集中監控的理想解決方案。
Zabbix proxy需要使用獨立的資料庫。

zabbix安裝

server端安裝配置
# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent -y

# yum install mariadb mariadb-server -y
# systemctl start mariadb

# mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to [email protected] identified by 'password';
mysql> flush privileges;
mysql> quit;
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p -D zabbix

# vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password

# cd /usr/share/zabbix/conf
# ls
zabbix.conf.php
# cp zabbix.conf.php.example zabbix.conf.php
# vim zabbix.conf.php //修改資料庫密碼
$DB['PASSWORD'] = 'password';
# systemctl start zabbix-server zabbix-agent httpd
# systemctl enable zabbix-server zabbix-agent httpd

# vim /etc/httpd/conf.d/zabbix.conf
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
# php_value date.timezone Europe/Riga
php_value date.timezone Asia/Shanghai

# systemctl restart httpd
http://192.168.124.150/zabbix

agent端安裝配置
[[email protected] ~]# yum -y install zabbix-agent -y
[[email protected] ~]# vim /etc/zabbix/zabbix_agentd.conf

Server=192.168.122.206,192.168.122.207 被動模式 zabbix-server-ip
ServerActive=192.168.122.206,192.168.122.207 主動模式 zabbix-server-ip
Hostname=web1 客戶端主機名稱
UnsafeUserParameters=1 是否限制使用者自定義 keys 使用特殊字元

啟動服務:
[[email protected] ~]# systemctl start zabbix-agent
[[email protected] ~]# systemctl enable zabbix-agent

[[email protected] ~]# ss -anlp |grep :10050

配置流程

新增新的主機組:
點選配置->主機群組->建立主機群組->在組名稱中填入新的主機組名稱,點選存檔即可。
file://C:\Users\16682\AppData\Local\Temp\ct_tmp/1.png
file://C:\Users\16682\AppData\Local\Temp\ct_tmp/2.png
file://C:\Users\16682\AppData\Local\Temp\ct_tmp/3.png
新增被監控主機:
點選配置->主機->建立主機,建立一臺新的監控主機。
file://C:\Users\16682\AppData\Local\Temp\ct_tmp/4.png
file://C:\Users\16682\AppData\Local\Temp\ct_tmp/5.png
設定監控項:
通過上圖介面的模版標籤,設定監控項(這裡的監控項都是zabbix自帶的)
新增新的監控專案:
點選配置------>主機---------->監控項------>建立監控項
file://C:\Users\16682\AppData\Local\Temp\ct_tmp/6.png
點選配置------>主機---------->觸發器------>建立觸發器
file://C:\Users\16682\AppData\Local\Temp\ct_tmp/7.png


自定義KEY

服務端
自定義key測試工具:
# yum install zabbix-get -y
客戶端
1.建立指令碼
2. 配置檔案/etc/zabbix/zabbix_agentd.conf定義key和監控指令碼的位置名稱
# mkdir /etc/zabbix/scripts
# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=testkey,echo "hello"
UserParameter=free_mem,/etc/zabbix/scripts/free_mem.sh
UserParameter=mem[*],/etc/zabbix/scripts/mem.sh $1




測試帶引數的key:
[[email protected] ~]# zabbix_get -s 10.0.0.21 -p 10050 -k mem[total]
2014
[[email protected] ~]# zabbix_get -s 10.0.0.21 -p 10050 -k mem[free]
1048
[[email protected] ~]# zabbix_get -s 10.0.0.21 -p 10050 -k mem[used]
308

點選配置------>主機---------->監控項------>建立監控項
file://C:\Users\16682\AppData\Local\Temp\ct_tmp/1.png
點選配置------>主機---------->圖形------>建立圖形
file://C:\Users\16682\AppData\Local\Temp\ct_tmp/2.png