一、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及所需依賴包
[root@rhel7 ~]# 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
- 安裝並打開數據庫
[root@rhel7 ~]# yum install -y mariadb-server
[root@rhel7 ~]# systemctl start mariadb
- 創建utf8編碼並對用戶授權
[root@rhel7 ~]# 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 zabbix@localhost identified by 'westos';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> Bye
2、導入zabbix數據庫
[root@rhel7 ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.6/
[root@rhel7 zabbix-server-mysql-3.4.6]# ls
AUTHORS ChangeLog COPYING create.sql.gz NEWS README
[root@rhel7 zabbix-server-mysql-3.4.6]# zcat create.sql.gz | mysql zabbix #這裏不要ctrl+c,以防數據不完整
登錄數據庫,查看導入的數據庫
show databases; #可以看到有5個數據庫
show tables; #可以看到有140個表
3、編輯zabbix的配置文件
[root@rhel7 zabbix-server-mysql-3.4.6]# cd /etc/zabbix/
[root@rhel7 zabbix]# ls
web zabbix_agentd.conf zabbix_agentd.d zabbix_server.conf
[root@rhel7 zabbix]# vim zabbix_server.conf
117 DBUser=zabbix
125 DBPassword=westos
132 DBSocket=/var/lib/mysql/mysql.sock
[root@rhel7 zabbix]# systemctl start zabbix-server
[root@rhel7 zabbix]# cd /etc/httpd/conf.d/
[root@rhel7 conf.d]# vim zabbix.conf
19 php_value date.timezone Asia/Shanghai
[root@rhel7 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
[root@server3 ~]# 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%]
[root@server3 ~]# vim /etc/zabbix/zabbix_agentd.conf
97 Server=172.25.66.11
138 ServerActive=172.25.66.11
149 Hostname=server3
[root@server3 ~]# /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接口
[root@rhel7 ~]# 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前端地址。
[root@rhel7 ~]# chmod +x zabbix-api.sh #給腳本加執行權限
[root@rhel7 ~]# ./zabbix-api.sh #運行腳本
(3)查看zabbix主機和被監控主機信息
[root@rhel7 ~]# 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監控中的主機
[root@rhel7 ~]# 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主機已經出現