網路監視系統zabbix3.4的配置及利用API介面在監控系統中的應用
一、zabbix的基礎知識
1、什麼是zabbix
zabbix是一個基於WEB介面的提供分散式系統監視以及網路監視功能的企業級的開源解決方案,zabbix能監視各種網路引數,保證伺服器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各種問題。
zabbix是由兩部分構成,zabbix server與可選元件zabbix agent;zabbix server可以通過SNMP,zabbix agent,ping,埠監視等方法提供對遠端伺服器/網路狀態的監視,資料收集的功能
2、zabbix的主要特點
- 安裝與配置簡單,學習成本低
- 支援多語言,免費開源
- 自動發現伺服器與網路裝置
- 分散式監視以及WEB集中管理功能,可以無agent監視
- 使用者安全認證和柔軟的授權方式
- 通過WEB介面設定或檢視監視結果
- E-mail等通知功能
3、zabbix的主要功能
- 資料收集
- 可用性和效能檢查
- 支援SNMP(包括主動輪詢和被動獲取),IPMI,JMX,VMware
- 通過server/proxy+agents來執行
- 高度可配置化的警告
- 可根據遞增機制,接收方和媒介型別自定義傳送告警通知
- 使用巨集變數可以使告警通知更加高效有用
- 自動相應動作可包含遠端命令
- WEB監控功能
- Zabbix可以追蹤模擬滑鼠在Web網站上的點選操作,來檢查Web的功能和響應時間
- 豐富的視覺化選項
- 支援建立自定義的圖表,一個試圖集中展現多個監控項
- 網路拓撲圖
- 以儀表盤的樣式自定義大屏展現和幻燈片輪詢播放
- 監控內容的高階(業務)檢視
- 記憶體使用、磁碟使用、網路狀況、埠監視、日誌監視
二、zabbix安裝配置
實驗環境: redhat7.3 172.25.66.11 zabbix-server
redhat6.5 172.25.66.3 zabbix-agent
firewalld和selinux需關閉
1、安裝zabbix監控所需軟體
- 安裝zabbix及所需依賴包
[[email protected] ~]# yum install -y fping-3.10-1.el7.x86_64.rpm iksemel-1.4-2.el7.centos.x86_64.rpm php-bcmath-5.4.16-42.el7.x86_64.rpm php-mbstring-5.4.16-42.el7.x86_64.rpm zabbix-agent-3.4.6-1.el7.x86_64.rpm zabbix-server-mysql-3.4.6-1.el7.x86_64.rpm zabbix-web-3.4.6-1.el7.noarch.rpm zabbix-web-mysql-3.4.6-1.el7.noarch.rpm
- 安裝並開啟資料庫
[[email protected] ~]# yum install -y mariadb-server
[[email protected] ~]# systemctl start mariadb
- 建立utf8編碼並對使用者授權
[[email protected] ~]# mysql
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to [email protected] identified by 'westos';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> Bye
2、匯入zabbix資料庫
[[email protected] ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.6/
[[email protected] zabbix-server-mysql-3.4.6]# ls
AUTHORS ChangeLog COPYING create.sql.gz NEWS README
[[email protected] zabbix-server-mysql-3.4.6]# zcat create.sql.gz | mysql zabbix #這裡不要ctrl+c,以防資料不完整
登入資料庫,檢視匯入的資料庫
show databases; #可以看到有5個數據庫
show tables; #可以看到有140個表
3、編輯zabbix的配置檔案
[[email protected] zabbix-server-mysql-3.4.6]# cd /etc/zabbix/
[[email protected] zabbix]# ls
web zabbix_agentd.conf zabbix_agentd.d zabbix_server.conf
[[email protected] zabbix]# vim zabbix_server.conf
117 DBUser=zabbix
125 DBPassword=westos
132 DBSocket=/var/lib/mysql/mysql.sock
[[email protected] zabbix]# systemctl start zabbix-server
[[email protected] zabbix]# cd /etc/httpd/conf.d/
[[email protected] conf.d]# vim zabbix.conf
19 php_value date.timezone Asia/Shanghai
[[email protected] conf.d]# systemctl start httpd
4、在瀏覽器中輸入172.25.66.11/zabbix進行web介面的配置
(1)進入zabbix介面
(2)將zabbix與資料庫連線,密碼是設定的mariadb資料庫密碼
(3)登入zabbix監控平臺,密碼是匯入zabbix資料庫時匯入的密碼
(4)成功登入zabbix監控平臺
(5)登入zabbix(使用者名稱 Admin;密碼:zabbix。這個是zabbix配置檔案中寫的)
(6)進入zabbix平臺後,可以修改監控語言(右上角的人頭標誌就可以修改)
(7)開啟zabbix-server服務,在瀏覽器中測試
三、利用zabbix監控平臺監控server3(rhel6.5)主機
1、在server3上安裝zabbix-agent
[[email protected] ~]# rpm -ivh zabbix-agent-3.4.6-1.el6.x86_64.rpm
warning: zabbix-agent-3.4.6-1.el6.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing... ########################################### [100%]
1:zabbix-agent ########################################### [100%]
[[email protected] ~]# vim /etc/zabbix/zabbix_agentd.conf
97 Server=172.25.66.11
138 ServerActive=172.25.66.11
149 Hostname=server3
[[email protected] ~]# /etc/init.d/zabbix-agent start
Starting Zabbix agent: [ OK ]
2、手動新增被監控的主機server3
新增主機
新增模版
新增成功後的結果
3、自動發現
刪除之前手動新增的server3,啟用自動發現規則
設定自動發現的動作和規則開啟,然後重新開啟agent和server,就會自動發現主機
4、自動註冊
先刪除自動發現的server3,然後關閉自動發現的規則和動作。
選自動註冊,建立一個動作
新增一個操作
設定自動註冊開啟 ,在server3上重新開啟zabbix-agent
設定成功,結果如下
5、利用API介面在zabbix監控系統中檢視,建立以及刪除監控主機
(1)API的基礎知識
- API的概念
API(Application Programming Interface,應用程式程式設計介面)是一些預先定義的函式,目的是提供應用程式與與開發人員基於某軟體或硬體得以訪問一組例程的能力,而又無需訪問原始碼 ,或理解內部工作機制的細節。簡單的說,API就是對外的介面,利用API可以直接到達軟體硬體內部來進行操作 - zabbix中API的作用
zabbix API為批量操作、第三方軟體整合以及其他作用提供可程式設計介面
(2)檢視zabbix監控系統的api介面
[[email protected] ~]# vim zabbix-api.sh
curl -s -X POST -H 'Content-Type: application/json' -d ' #利用curl命令模擬json格式的post請求
{
"jsonrpc": "2.0", # 這是標準的JSON RPC引數以標示協議版本。所有的請求都會保持不變
"method": "user.login", # 利用使用者登陸的方式獲取API
"params": {
"user": "Admin",
"password": "zabbix" # zabbix監控系統的使用者名稱和密碼
},
"id": 1, # 這個欄位用於繫結JSON請求和響應。響應會跟請求有相同的"id"。在一次性發送多個請求時很有用,這些也不需要唯一或者連續
"auth": null
}
' http://172.25.66.11/zabbix/api_jsonrpc.php | python -m json.tool # 採用POST方法向http://example.com/zabbix/api_jsonrpc.php傳送此JSON物件. http://example.com/zabbix/是Zabbix前端地址。
[[email protected] ~]# chmod +x zabbix-api.sh #給指令碼加執行許可權
[[email protected] ~]# ./zabbix-api.sh #執行指令碼
(3)檢視zabbix主機和被監控主機資訊
[[email protected] ~]# vim zabbix-api.sh
curl -s -X POST -H 'Content-Type: application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["host"]
},
"id": 1,
"auth": "9b1d3c281f1272d122fb84b871428b0a"
}
' http://172.25.66.11/zabbix/api_jsonrpc.php | python -m json.tool
(4)刪除zabbix監控中的主機
[[email protected] ~]# vim zabbix-api.sh
curl -s -X POST -H 'Content-Type: application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.delete", #呼叫host.delete方法
"params": [
"10258" #輸入被監控主機的host號
],
"id": 1,
"auth": "9b1d3c281f1272d122fb84b871428b0a"
}
' http://172.25.66.11/zabbix/api_jsonrpc.php | python -m json.tool
(5)在zabbix監控中建立被監控主機
curl -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create", #呼叫host.create方法
"params": {
"host": "server3", #要被監控的主機名,用vim /etc/sysconfig/network可以檢視到
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "172.25.66.3", #要新增監控主機的ip
"dns": "",
"port": "10050" #zabbix-agent的埠號
}
],
"groups": [
{
"groupid": "0" #建立主機加入的群組。可以在zabbix的web介面中開啟一個主機的模版, 可以在上面的位址列中得到
}
],
"templates": [
{
"templateid": "10001"
}
],
},
"auth": "9b1d3c281f1272d122fb84b871428b0a",
"id": 1
}' http://172.25.66.11/zabbix/api_jsonrpc.php | python -m json.tool
這時在zabbix的web介面也可以檢視到,server3主機已經出現