概述
- Zabbix 是一個企業級分佈式開源監控解決方案。
- Zabbix 軟件能夠監控衆多網絡參數和服務器的健康度、完整性。Zabbix
使用靈活的告警機制,允許用戶爲幾乎任何事件配置基於郵件的告警。這樣用戶可以快速響應服務器問題。Zabbix
基於存儲的數據提供出色的報表和數據可視化功能。這些功能使得 Zabbix 成爲容量規劃的理想選擇。 - Zabbix 支持主動輪詢(polling)和被動捕獲(trapping)。Zabbix所有的報表、統計數據和配置參數都可以通過基於
Web 的前端頁面進行訪問。基於 Web 的前端頁面確保您可以在任何地方訪問您監控的網絡狀態和服務器健康狀況。適當的配置後,Zabbix
可以在監控 IT 基礎設施方面發揮重要作用。無論是對於有少量服務器的小型組織,還是擁有大量服務器的大企業而言,同樣適用。
我們這裏選擇4.4版本的進行實驗
yum install mariadb-server -y 安裝zabbix所需要的初始化的數據庫
安裝下面這些rpm包,比較全面。
啓動
安全初始化mariadb:
mysql_secure_installation
登陸:
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; 創建zabbix的庫
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'caoaoyuan';
#導入初始化的一些表和數據。
zcat /usr/share/doc/zabbix-server-mysql-4.4.1/create.sql.gz | mysql -uzabbix -p zabbix
zabbix 庫的數據就導入進去了。
配置zabbix
vim /etc/zabbix/zabbix_server.conf
啓動zabbix:
[root@server1 4.4]# systemctl start zabbix-server.service
[root@server1 4.4]# systemctl start zabbix-agent.service 客戶端
修改php配置:
vim /etc/httpd/conf.d/zabbix.conf
systemctl start httpd 啓動apache
訪問:
進入到了開始界面,
登陸名稱Admin ,密碼zabbix。
用戶中心可以更改語言:
這裏我們可以看到本機是因爲我們安裝了zabbix-agent,所以如果想加入進來,就安裝agent服務。
我們現在加入server2 作爲客戶端。
scp zabbix-agent-4.4.1-1.el7.x86_64.rpm server2:
yum install zabbix-agent-4.4.1-1.el7.x86_64.rpm -y
server1中點擊創建主機:
點擊添加。
添加一個模板。
在server2中配置一下agent:
[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=172.25.254.1
ServerActive=172.25.254.1 active時主動模式
Hostname=server2
systemctl start zabbix-agent.service 開啓服務
就可用了,上面的可用性是空的,開啓agent服務後,就可用了。
這樣就把server2加入到集羣中去了。
向監控中添加主機
在zabbix中添加主機有幾種方法,一種就是上面介紹的,點擊添加新主機,這樣是比較慢的,所以我們可以:
自動發現
我們先刪除上面的server2主機。
設置動作爲自動發現,並確認已經激活,右下角本來是停用,點一下舊成以啓用了,
然後點擊做端的 Auto discovery,Linux servers 進行條件設置:
啓用自動發現規則:
點擊local network配置自動發現規則:
保證我們的server2山的agent服務是開啓的,然後我們等待30s:
就自動把server2添加進去了。
而且是可用的,
自動註冊
自動發現,是server主動把一個網段ip的主機加入進來,自動註冊不同於自動發現的是server被動接收gent客戶機的加入請求,agent是主動的。使用自動發現,必須先禁用自動發現
我們開啓server3主機,
server3上安裝agent
yum install zabbix-agent-4.4.1-1.el7.x86_64.rpm -y
配置文件:
Server=172.25.254.1
ServerActive=172.25.254.1
Hostname=server3
啓動客戶端。
檢查確認這時server3沒有被自動發現加進去。
禁用當前動作,創建自動註冊新動作。
添加動作,添加操作:
點擊添加。
就啓用了,重啓服務端和客戶端。
就添加進來了。
並且可用。
使用API接口
你就可以使用遠程HTTP請求來調用API.
編寫腳本,執行api請求:
vim zabbix-api
chmod +x zabbixapi
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://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool #以json格式輸出
-H 頭 -s忽略詳細信息 -d 具體內通
執行:API返回的響應將包含用戶身份驗證令牌:
檢索主機
我們現在有一個有效的用戶身份驗證令牌,可以用來訪問Zabbix中的數據。 例如,讓我們使用 host.get 方法檢索所有已配置主機的ID,主機名和接口 :
vim 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": "deeda641a01c0e21dc7f67b107927aba" #這裏爲上面生成的令牌
}' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool
就檢索到了我們當前zabbix裏面的主機信息。
刪除一個主機
vim zabbix-api
rl -s XPOST -H "Content-Type: application/json-rpc" -d'
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10309" #這裏是主機的id號
],
"id": 2,
"auth": "deeda641a01c0e21dc7f67b107927aba"
}' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool
##主機id號
執行:
server3 就被刪除了,即刻生效。
創建主機
vim zabbix-api
curl -s XPOST -H "Content-Type: application/json-rpc" -d'
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "server3", 主機名
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "172.25.254.3", 地址
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2" 組id
}
],
"templates": [
{
"templateid": "10001" 模板id
}
]
},
"id": 2,
"auth": "deeda641a01c0e21dc7f67b107927aba"
}' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool
執行:
server3就又加進來了。
配置監控
在server2上添加模板:
它都可以監控那些內容。
在server3上配置nginx,來測試監控nginx.
編譯安裝nginx,更改配置文件:
設置關於查看狀態的配置。
可以獲得到狀態信息了。
那末現在比如我們要獲取Active connections 的信息,那我們該如何配置:
我們進入用戶自定義配置的目錄:
[root@server3 nginx]# cd /etc/zabbix/zabbix_agentd.d/
[root@server3 zabbix_agentd.d]# ls
userparameter_mysql.conf
[root@server3 zabbix_agentd.d]# cp userparameter_mysql.conf userparameter_nginx.conf
[root@server3 zabbix_agentd.d]# ls
userparameter_mysql.conf userparameter_nginx.conf
vim userparameter_nginx.conf
nginx.active 是key 逗號後面是值。重啓server3的 agent 端
然後在server1上安裝:
yum install -y zabbix-get-4.4.1-1.el7.x86_64.rpm -y
就可以通過zabbix-get 這個命令可以獲取到了。
然後我們在server1的圖形界面去進行配置server3的監控項:
主機上點擊server3,再點擊監控項,,點擊右邊的創建監控項:
在添加圖形,選擇nginx-active監控項:
預覽:
有1這個數值。有亂碼問題,系統自帶的無法識別中文。
我們可以去/usr/share/zabbix/assets/fonts 替換字體:
然後再字體配置文件中更改即可。
vim defines.inc.php
:%s/graphfont/字體/g
這樣就可以自己配置想要的監控了。
用模板監控數據庫
我們server1上安裝了數據庫,所以在server1的agent進行配置
沒有創建數據庫模板是一共有112個監控項,添加一個數據庫模板之後:
就變成151個了。
但是對於企業來說這增加的39個是遠遠不夠的,所以我們用percona這個解決方案,它可以自定義模板,且能使用的第三方插件比較多,可以和很多軟件進行搭配。
在server1上:
建立zabbix監控mysql的配置目錄,用來放配置文件。也是zabbix默認的zabbix-agent 家目錄
mkdir /var/lib/zabbix
vim /var/lib/zabbix/.my.cnf
[mysql]
host=localhost
user=root
password=redhat
socket=/var/lib/mysql.sock
[mysqladmin]
host=localhost
user=root
password=redhat
socket=/var/lib/mysql.sock
systemctl restart zabbix-agent.service
這時我們只需要把oercona的模板寫進目錄中去就可以了。裏面大約有150多個監控項。
我們先安裝zabbix對precona的一個支持: 可以在pkgs上下載。
它的模板放在 /var/lib/zabbix/percona/templates
.xml文件是模板。
裏面有190個鍵值。比較全面。
複製這個模板文件到 agent 的自定義目錄:
cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
在scripts目錄創建配置文件:
重啓agent。
然後我們在圖形界面去配置.
導入模板,這個模板在/var/lib/zabbix/percona/templates下。導入後給server1添加這個模板,就成300多個了。
然後我們的監控項裏面會多出很多內容,豐富了我們的監控。