zabbix介紹:
- zabbix([`z?biks])是一個基于WEB界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。
- zabbix能監視各種網絡參數,保證服務器系統的安全運營;并提供靈活的通知機制以讓系統管理員快速定位/解決存在的各種問題。
- zabbix由2部分構成,zabbix server與可選組件zabbix agent。
- zabbix server可以通過SNMP,zabbix agent,ping,端口監視等方法提供對遠程服務器/網絡狀態的監視,數據收集等功能,它可以運行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平臺上。
- zabbix agent需要安裝在被監視的目標服務器上,它主要完成對硬件信息或與操作系統有關的內存,CPU等信息的收集。
- zabbix server可以單獨監視遠程服務器的服務狀態;同時也可以與zabbix agent配合,可以輪詢zabbix agent主動接收監視數據(agent方式),同時還可被動接收zabbix agent發送的數據(trapping方式)。
- 要想搭建一個Zabbix的工作環境,需要從服務器入手。與服務器通信,管理員需要使用一個Zabbix前端界面,與Zabbix服務器和數據庫進行通信。三個關鍵(界面、服務器和數據庫)可以安裝在同一臺服務器上,但是如果你擁有一個更大更復雜的環境,將它們安裝在不同的主機上也是一個選項。Zabbix服務器能夠直接監控到同一網絡中的設備,如果其他網絡的設備也需要被監控,那還需要一臺Zabbix代理服務器。
主要功能:CPU負荷,內存使用,磁盤使用,網絡狀況,端口監視,日志監視。
官網:https://www.zabbix.com 下載安裝包以及查看官方文檔。
服務搭建:
安裝 Zabbix server 并使用 MySQL 數據庫
yum install zabbix-server-mysql.x86_64 -y
安裝 Zabbix 前端
yum install zabbix-web-mysql -y
安裝數據庫mariadb并進行安全初始化:
yum install mariadb-server.x86_64 -y
systemctl enable mariadb.service
systemctl start mariadb.service
mysql_secure_installation
登陸數據庫并在數據庫中創建庫以及用戶并進行授權:
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'westos';
導入數據,使用 MySQL 來導入 Zabbix server 的初始數據庫 schema 和數據
由于該數據較多,導入的過程較長,不能中途打斷。
成功后可進入數據庫查看
mysql -p
use zabbix;
show tables;
配置zabbix server 配置文件
/etc/zabbix/zabbix_server.conf116 DBUser=zabbix
#這里的密碼是zabbix用戶的密碼,不是數據庫的登錄密碼
124 DBPassword=westos
啟動 Zabbix server 進程
查看端口開啟沒:
httpd服務配置
需要在前端web頁面展示監控結果。需要httpd服務開啟并設置開機自動啟動
/etc/httpd/conf.d/zabbix.confphp_value date.timezone Asia/Shanghai
測試zabbix server 是否設置好,在物理機瀏覽器進行測試 http://192.168.13.111/zabbix/setup.php
點擊Next step,之后會看到一個頁面,顯示檢查php的結果
繼續往下,輸入密碼,密碼是mysql中的密碼
名字隨便來一個把
顯示成功安裝的頁面
登陸zabbix(默認用戶是Admin,密碼是zabbix)
登陸成功后,顯示了以下的界面,點擊右上角的"小人"頭像
點擊后選擇language為Chinese(以便我們之后更好的操作),注意這里也可以更改密碼。
監控的四種添加主機方式:
首先我們要做的是:
配置zabbix agent IP為192.168.13.112
yum install zabbix-agent.x86_64 -y
裝好之后修改配置文件
vim /etc/zabbix/zabbix_agentd.conf98 Server=192.168.13.111 指定server主機,agent主機主動上報數據給server主機
139 ServerActive=192.168.13.111 server主機主動前來agent主機提取數據
150 Hostname=server2 指定本機的主機名稱
啟動服務,并設置服務開機自動啟動
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
開啟之后查看10050端口開啟情況:已經正常開啟
netstat -antlp
1 . 手動添加:
配置–>主機–>右上角創建主機
選好后在填下模板
添加完畢后的界面應該是這樣的
手動的弊端就在于需要一個一個的去進行添加。當需要進行添加的服務器數量加大的時候,實現存在困難。
2 . 自動發現:
將之前創建的主機刪除,避免其影響之后的結果
創建自動發現規則,填寫名稱;ip范圍;更新間隔;檢查等:(Zabbix 客戶端 “system.uname”)選中已啟用
然后查看新的主機是否被發現上線。
該過程是已經配置的好的agent主機,需要等待著被server主機按照一定的頻率以及一定的條件(都在規則中進行規定)發現之后才能添加進監控。
3 . 自動注冊:
- agent可以實現自動注冊,進而服務器對其進行監控。通過這種方式,無需在服務器上進行手動配置便可直接啟動對新host的監控。
- 當以前未知的active agent要求檢查時,會發生自動注冊。
- 這樣功能可以非常方便的自動監控新的Cloud節點。一旦在Cloud中有一個新節點,Zabbix將自動啟動host的性能和可用性數據的收集。
在瀏覽器中點擊配置->自動發現,點擊“已啟用”將自動發現禁用(也可以將其打上對勾,選擇底下的禁用)
在配置—>動作—>選擇右上角為自動注冊—>點擊創建動作
操作 新的,添加主機;添加到主機群組 linux server;鏈接到模板 template os linux;添加;
重新啟動server2主機上的zabbix-agent服務。然后等待server2 主機被自動添加
4 . Api
Zabbix API允許你以編程方式檢索和修改Zabbix的配置,并提供對歷史數據的訪問。
(1)它廣泛用于:
- 創建新的應用程序以使用Zabbix;
- 將Zabbix與第三方軟件集成;
- 自動執行常規任務。
主機和主機組
什么是“主機”?
- 一般來講,Zabbix主機是指你希望監控的那些設備,例如服務器、工作站、交換機等等。
- 創建主機是使用Zabbix過程中的一個首要任務。例如,如果你想在一臺服務器“X”上監控一些參數,你必須首先創建一個主機稱之為“服務器X”,然后就可以查看添加監控項到這臺“服務器X”上。
- 主機組是由主機組成的。
大多數API至少包含四種方法: get, create, update 和 delete ,分別是檢索,創建,更新和刪除數據,但是某些API提供一套完全不同的一組方法。
示例:
1 . 驗證:在訪問Zabbix中的任何數據之前,你需要登錄并獲取身份驗證令牌。這可以使用該 user.login 方法完成。
vim zabbix-api.sh
chmod +x zabbix-api
./zabbix-api
腳本內容如下圖:
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{"jsonrpc": "2.0","method": "user.login","params": {"user": "Admin","password": "zabbix"},"id": 1,"auth": null
}' http://192.168.13.111/zabbix/api_jsonrpc.php | python -m json.tool
運行腳本獲得身份驗證令牌:
值得注意的是:
-
請求的 Content-Type 頭部必須設置為以下值之一: application/json-rpc, application/json 或 application/jsonrequest。
-
示例請求對象具有以下屬性:
jsonrpc - API使用的JSON-RPC協議的版本; Zabbix API實現的JSON-RPC版本是2.0;
method - 被調用的API方法名;
params - 將被傳遞給API方法的參數;
id - 請求的任意標識符;
auth -用戶認證令牌; 因為我們還沒有一個,它的設置null。 -
如果你正確提供了憑據,API返回的響應將包含用戶身份驗證令牌:
響應對象又包含以下屬性:
jsonrpc - JSON-RPC協議的版本;
result - 方法返回的數據;
id - 相應請求的標識符。
2 . 檢索主機:
現在有一個有效的用戶身份驗證令牌,可以用來訪問Zabbix中的數據。例如,讓我們使用 host.get 方法檢索所有已配置主機的ID,主機名和接口 :
vim zabbix-api # 修改腳本內容
./zabbix-api
修改內容如下圖所示:
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{"jsonrpc": "2.0","method": "host.get","params": {"output": ["hostid","host"],"selectInterfaces": ["interfaceid","ip"]},"id": 2,"auth": "c565ff432984698f987811831128ceca"
}' http://192.168.13.111/zabbix/api_jsonrpc.php | python -m json.tool
執行腳本成功
3 . 刪除主機:
使用 host.delete 方法刪除指定的主機。
vim zabbix-api
./zabbix-api
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{"jsonrpc": "2.0","method": "host.delete","params": ["10266"],"id": 2,"auth": "c565ff432984698f987811831128ceca"
}' http://192.168.13.111/zabbix/api_jsonrpc.php | python -m json.tool
執行腳本刪除
4 . 創建主機:
創建一個具有IP接口的“Linux Server”主機,將其添加到主機組中,鏈接一個模板并且把MAC地址設置到主機資產清單里(注意:在實驗開始之前需要將之前做的自動發現和自動注冊取消,否則會報錯,而且在實驗開始之前需要將添加的主機進行刪除,否則無法成功添加):
vim zabbix-api
./zabbix-api
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{"jsonrpc": "2.0","method": "host.create","params": {"host": "server2","interfaces": [{"type": 1,"main": 1,"useip": 1,"ip": "192.168.13.112","dns": "","port": "10050"}],"groups": [{"groupid": "2"}],"templates": [{"templateid": "10001"}]},"id": 2,"auth": "c565ff432984698f987811831128ceca"
}' http://192.168.13.111/zabbix/api_jsonrpc.php | python -m json.tool
運行腳本:
在網頁上查看發現server2存在