zabbix是一個基於WEB介面的提供分散式系統監視以及網路監視功能的企業級的開源解決方案,在企業中有非常全面的應用,本文是Linux運維老司機撰寫,一站式幫你解決zabbix的難題。
第1章 zabbix監控
1.1 為什麼要監控
在需要的時刻,提前提醒我們伺服器出問題了
當出問題之後,可以找到問題的根源
網站/伺服器 的可用性
1.1.1 網站可用性
在軟體系統的高可靠性(也稱為可用性,英文描述為HA,High Available)裡有個衡量其可靠性的標準——X個9,這個X是代表數字3~5。X個9表示在軟體系統1年時間的使用過程中,系統可以正常使用時間與總時間(1年)之比,我們透過下麵的計算來感受下X個9在不同級別的可靠性差異。
1個9:(1-90%)*365=36.5天,表示該軟體系統在連續執行1年時間裡最多可能的業務中斷時間是36.5天
2個9:(1-99%)*365=3.65天 , 表示該軟體系統在連續執行1年時間裡最多可能的業務中斷時間是3.65天
3個9:(1-99.9%)*365*24=8.76小時,表示該軟體系統在連續執行1年時間裡最多可能的業務中斷時間是8.76小時。
4個9:(1-99.99%)*365*24=0.876小時=52.6分鐘,表示該軟體系統在連續執行1年時間裡最多可能的業務中斷時間是52.6分鐘。
5個9:(1-99.999%)*365*24*60=5.26分鐘,表示該軟體系統在連續執行1年時間裡最多可能的業務中斷時間是5.26分鐘。
6個9:(1-99.9999%)*365*24*60*60=31秒, 示該軟體系統在連續執行1年時間裡最多可能的業務中斷時間是31秒
1.2 監控什麼東西
監控一切需要監控的東西,只要能夠想到,能夠用命令實現的都能用來監控
1.2.1 監控範疇
1.3 怎麼來監控
1.3.1 遠端管理伺服器
如果想遠端管理伺服器就有遠端管理卡,比如Dell idRAC,HP ILO,IBM IMM
1.3.2 監控硬體
檢視硬體的溫度/風扇轉速,電腦有魯大師,伺服器就有ipmitool。
使用ipmitool實現對伺服器的命令列遠端管理
1.3.3 檢視cpu相關
lscpu、uptime、top、htop vmstat mpstat
其中htop需要安裝,安裝依賴與epel源。
1.3.4 記憶體夠不夠可以用
free
1.3.5 磁碟剩多少寫的快不快可以用
df、dd、iotop
1.3.6 監控網路
iftop nethogs
1.4 監控工具總覽
mrtg 流量監控出圖
nagios 監控
cacti 流量監控出圖
zabbix 監控+出圖
1.5 zabbix介紹
Zabbix 是由 Alexei Vladishev 開發的一種網路監視、管理系統,基於 Server-Client 架構。可用於監視各種網路服務、伺服器和網路機器等狀態。
使用各種 Database-end 如 MySQL, PostgreSQL, SQLite, Oracle 或 IBM DB2 儲存資料。Server 端基於 C語言、Web 管理端 frontend 則是基於 PHP 所製作的。Zabbix 可以使用多種方式監視。可以只使用 Simple Check 不需要安裝 Client 端,亦可基於 SMTP 或 HTTP … 各種協定做死活監視。
在客戶端如 UNIX, Windows 中安裝 Zabbix Agent 之後,可監視 CPU Load、網路使用狀況、硬碟容量等各種狀態。而就算沒有安裝 Agent 在監視物件中,Zabbix 也可以經由 SNMP、TCP、ICMP、利用 IPMI、SSH、telnet 對標的進行監視。
另外,Zabbix 包含 XMPP 等各種 Item 警示功能。
1.5.1 zabbix的組成
zabbix官網: https://www.zabbix.com
zabbix 主要由2部分構成 zabbix server和 zabbix agent
zabbix proxy是用來管理其他的agent,作為代理
1.5.2 zabbix監控範疇
² 硬體監控 :Zabbix IPMI Interface
² 系統監控 :Zabbix Agent Interface
² Java 監控:ZabbixJMX Interface
² 網路裝置監摶:Zabbix SNMP Interface
² 應用服務監控:Zabbix Agent UserParameter
² MySQL 資料庫監控:percona-monitoring-pldlgins
² URL監控:Zabbix Web監控
第2章 安裝zabbix
2.1 環境檢查
2.2 安裝zabbix過程
2.2.1 安裝方式選擇
編譯安裝 (服務較多,環境複雜)
yum安裝(乾凈環境)
使用yum 需要映象yum源 http://www.cnblogs.com/clsn/p/7866643.html
2.2.2 服務端快速安裝指令碼
2.2.3 客戶端快速部署指令碼
2.3 檢測連通性
2.3.1 服務端安裝zabbix-get檢測工具
yum install zabbix-get
2.3.2 在服務端進行測試
第3章 web介面操作
3.1 zabbix的web安裝
3.1.1 使用瀏覽器訪問
http://10.0.0.61/zabbix/setup.php
在檢測資訊時,可檢視具體的報錯資訊進行不同的解決
選擇mysql資料庫,輸入密碼即可
host與port不需要修改,name自定義
確認資訊,正確點選下一步
安裝完成、點選finsh
進入登陸介面 賬號Admin密碼zabbix 註意A大寫
3.2 新增監控資訊
3.2.1 修改監控管理機zabbix server
配置 >> 主機
主機名稱: 要與主機名相同,這是zabbix server程式用的
可見名稱: 顯示在zabbix網頁上的,給我們看的
修改後,要將下麵的已啟用要勾上
新增完成就有了管理機的監控主機
3.2.2 新增新的主機
配置 >> 主機 >> 建立主機
註意勾選以啟用
然後新增模板,選擇linux OS ,先點小新增,再點大新增。
新增完成,將會又兩條監控主機資訊
3.2.3 檢視監控內容
檢測中 >> 最新資料
在最新資料中需要篩選,
輸入ip或者名字都能夠搜尋出來
在下麵就會列出所有的監控項
3.2.4 檢視影象
檢測中 >> 圖形
選擇正確的主機。選擇要檢視的圖形即可出圖
第4章 自定義監控與監控報警
4.1 自定義監控
4.1.1 說明
zabbix自帶模板Template OS Linux (Template App Zabbix Agent)提供CPU、記憶體、磁碟、網絡卡等常規監控,只要新加主機關聯此模板,就可自動新增這些監控項。
需求:伺服器登陸人數不能超過三人,超過三人報警
4.1.2 預備知識
4.2 實現自定義監控
4.2.1 自定義語法
4.2.2 agent註冊
4.2.3 在server端註冊(web操作)
① 建立模板
配置 >> 模板 >> 建立模板
點選新增,即可創建出來模板
檢視創建出來的模板。↑
② 建立應用集
應用集類似(目錄/檔案夾),其作用是給監控項分類。
點選 應用集 >> 建立應用集
自定義應用集的名稱,然後點選新增
③ 建立監控項
監控項 >> 建立監控項
鍵值 — key,即前面出建立的login-user。
註意:建立監控項的時候,註意選擇上應用集,即之前建立的安全。
④ 建立觸發器
觸發器的作用:當監控項獲取到的值達到一定條件時就觸發報警
(根據需求建立)
觸發器 >> 建立觸發器
建立觸發器,自定義名稱,該名稱是報警時顯示的名稱。
運算式,點選右邊的新增,選擇運算式。
嚴重性自定義。
運算式的定義 ↓ ,選擇之前建立的監控項,
最新的T值為當前獲取到的值。
新增完成,能夠在觸發器中看到新增的情況
⑤ 建立圖形
以圖形的方式展示出來監控資訊
圖形 >> 建立圖形
名稱自定義,關聯上監控項。
⑥ 主機關聯模板
配置 >> 主機
一個主機可以關聯多個模板
4.2.4 檢視監控的圖形
4.3 監控報警
4.3.1 第三方報警平臺
http://www.onealert.com
透過 OneAlert 提供的通知分派與排班策略,以及全方位的簡訊、微信、QQ、電話提醒服務,您可以在最合適的時間,將最重要的資訊推送給最合適的人員。
4.3.2 onealert配置
新增應用,註意新增的是zabbix
實現微信報警需要關註微信公眾號即可。
4.3.3 安裝 onealert Agent
4.3.1 如何刪除onealert Agent
① 刪除報警媒介型別中的指令碼
② 刪除建立的使用者
③ 刪除使用者群組
④ 刪除建立的動作
4.3.2 觸發器響應,傳送報警資訊
在微信和郵件中,均能收到報警資訊。
註意:當狀態改變的時候才會發郵件
好–>壞
壞–>好
4.4 監控視覺化
4.4.1 聚合圖形
最新資料 >> 圖形
自定義名稱
點選聚合圖形的名稱,進行更改,新增要顯示的圖形即可。
4.4.2 幻燈片
新增幻燈片
監測中 >> 複合圖形 >> 幻燈片演示
建立幻燈片,名稱自定,選擇要顯示的
幻燈片根據設定的時間自動播放
4.5 模板的共享
4.5.1 主機共享
在主機頁開啟,全選後點選匯出
匯入
4.5.2 模板共享
https://github.com/zhangyao8/zabbix-community-repos
第5章 監控全網伺服器
5.1 需求說明
實際需求:
公司已經有了100臺伺服器,現在需要使用zabbix全部監控起來。
5.2 規劃方案
常規監控:cpu,記憶體,磁碟,網絡卡 問題:怎樣快速新增100臺機器
方法1:使用克隆的方式
方法2:自動註冊和自動發現
方法3:呼叫zabbix api介面 curl 、python
開發自己的運維平臺相容zabbix的通道
服務監控,url監控等特殊監控:自定義監控
5.2.1 api介面使用(curl)
5.3 具體實施規劃
5.3.1 硬體、系統、網路監控
所有叢集節點(所有虛擬機器)都監控上
交換機,路由器監控(簡單方法:換成埠對應伺服器網絡卡流量監控;標準方法:監控交換機的網絡卡)
snmp監控
5.3.2 應用服務監控
1. 監控備份伺服器,簡單方法是監控rsync埠,如果有其他更佳方案可以說明;
方法1:監控873埠net.tcp.port[,873] 方法2:模擬推送拉取檔案
2. 監控NFS伺服器,使用監控NFS行程來判斷NFS伺服器正常,如果有其他更佳方案可以說明;
方法1:埠(透過111的rpc埠獲取nfs埠) net.tcp.port[,111] 方法2:showmount -e ip|wc -l
3. 監控MySQL伺服器,簡單方法監控mysql的3306埠,或者使用zabbix提供的Mysql模板,如果有其他更佳方案可以說明;
方法1:埠(透過3306的mysql埠) net.tcp.port[,3306] 方法2:mysql遠端登入 方法3:使用zabbix agent自帶的模板及key
4. 監控2臺web伺服器,簡單方法監控80埠,如果有其他更佳方案可以說明;
方法1:埠(透過80的web埠) net.tcp.port[,80] 方法2:看網頁狀態碼、傳回內容==zabbix 自帶WEB檢測
5. 監控URL地址來更精確的監控我們的網站執行正常;
使用zabbix自帶的監控Web監測 進行監控
6. 監控反向代理伺服器,PPTP伺服器等你在期中架構部署的服務。
nginx,pptp ntp 埠udp 123
7. 監控Nginx的7種連線狀態。
自定義監控
5.3.3 監控服務通用方法
1. 監控埠 netstat ss lsof ==》 wc -l
2. 監控行程 ps -ef|grep 行程|wc -l 試執行一下
3. 模擬客戶端的使用方式監控服務端
web ==》 curl
mysql ==》 select insert
memcache ==》 set再get
5.4 實施全網監控
安裝客戶端指令碼,for centos6
5.4.1 使用自動發現規則
新增自動發現規則
建立發現動作
檢視自動發現的機器。
5.4.2 監控備份伺服器
利用系統自帶鍵值進行監控net.tcp.listen[port] 建立新的模板
在服務端進行測試
將模板新增到主機
5.4.3 監控NFS伺服器
建立nfs監控模板
使用 proc.num[
在服務端進行測試
將模板系結到主機
5.4.4 監控MySQL伺服器
將自帶的mysqlkey值加上mysql的賬戶密碼,否則不能獲取到資料。
使用系統自帶模板 net.tcp.port[
新增新的mysql監控項埠
[root@m01 ~]# zabbix_get -s 172.16.1.51 -p 10050
-k "net.tcp.port[,3306]"1
#檢查是否能建立 TCP 連線到指定埠。傳回 0 - 不能連線;1 - 可以連線
將模板關聯到主機
5.4.5 監控web伺服器
建立監控模板 監控 nginx服務與 80 埠
proc.num[ , , , ]行程數。傳回整數
net.tcp.port[ ,port]
檢查是否能建立 TCP 連線到指定埠。傳回 0 - 不能連線;1 - 可以連線
[root@m01 ~]# zabbix_get -s 172.16.1.8 -p 10050 -k
"proc.num[,,,nginx]"2[root@m01 ~]
# zabbix_get -s 172.16.1.8 -p 10050 -k "net.tcp.port[,80]"1
將模板關聯到主機
5.4.6 監控URL地址
建立監測頁面
echo ok >> /application/nginx/html/www/check.html
測試監控面頁
[root@web03 ~]# for ip in 7 8 9 ;do curl 10.0.0.$ip/check.html ;doneok
ok
ok
建立web監測模板
建立應用集
建立Web場景
建立圖形
將模板關聯到主機
監測結果
5.4.7 監控反向代理伺服器
建立自定義key
[root@lb01 ~]
# cat /etc/zabbix/zabbix_agentd.d/userparameter_nk.confUserParameter=keep-ip,ip a |grep 10.0.0.3|wc -l
在服務端測試
[root@m01 ~]# zabbix_get -s 172.16.1.5 -p 10050 -k "keep-ip"1[root@m01 ~]# zabbix_get -s 172.16.1.6 -p 10050 -k "keep-ip"0
在web介面新增模板
將模板關聯到主機
5.4.8 監控Nginx的7種連線狀態
nginx伺服器顯示status
……
location /status {
stub_status on;
access_log off;
}
……
[root@web01 ~]# for ip in 7 8 9 ;do curl 172.16.1.$ip/status ;doneActive connections: 1server accepts handled requests 73 73 69Reading: 0 Writing: 1 Waiting: 0
Active connections: 1server accepts handled requests 134 134 127Reading: 0 Writing: 1 Waiting: 0
Active connections: 1server accepts handled requests 7 7 7Reading: 0 Writing: 1 Waiting: 0
在nginx伺服器上新增key
cat >/etc/zabbix/zabbix_agentd.d/userparameter_nginx_status.conf <<'EOF'UserParameter=nginx_active,curl -s 127.0.0.1/status|awk
'/Active/ {print $NF}'UserParameter=nginx_accepts,curl -s 127.0.0.1/status|awk
'NR==3 {print $1}'UserParameter=nginx_handled,curl -s 127.0.0.1/status|awk
'NR==3 {print $2}'UserParameter=nginx_requests,curl -s 127.0.0.1/status|awk
'NR==3 {print $3}'UserParameter=nginx_reading,curl -s 127.0.0.1/status|awk
'NR==4 {print $2}'UserParameter=nginx_writing,curl -s 127.0.0.1/status|awk
'NR==4 {print $4}'UserParameter=nginx_waiting,curl -s 127.0.0.1/status|awk
'NR==4 {print $6}'EOF
服務端測試
[root@m01 ~]# zabbix_get -s 172.16.1.7 -p 10050 -k "nginx_waiting"0
[root@m01 ~]# zabbix_get -s 172.16.1.8 -p 10050 -k "nginx_waiting"0
[root@m01 ~]# zabbix_get -s 172.16.1.9 -p 10050 -k "nginx_waiting"0
在zabbix-web上新增
監控項
新增圖形
將模板關聯到主機
檢視新增的圖形
第6章 自動發現與自動註冊
6.1 自動註冊與自動註冊
6.1.1 簡介
自動發現:
zabbix Server主動發現所有客戶端,然後將客戶端登記自己的小本本上,缺點zabbix server壓力山大(網段大,客戶端多),時間消耗多。
自動註冊:
zabbix agent主動到zabbix Server上報到,登記;缺點agent有可能找不到Server(配置出錯)
6.1.2 兩種樣式
被動樣式:預設 agent被server抓取資料 (都是在agent的立場上說)
主動樣式:agent主動將資料發到server端 (都是在agent的立場上說)
註意: 兩種樣式都是在agent上進行配置
zabbix 的使用要在hosts檔案中預先做好主機名的解析
6.2 自動發現–被動樣式
第一個裡程碑:完成之前的安裝
zabbix Server安裝完畢
第二個裡程碑:配置agent客戶端
zabbix agent安裝完畢,註意配置Server=172.16.1.61
第三個裡程碑:在web介面上進行配置
web介面:配置 >> 自動發現 >> Local network
使用自帶的自動發現規則(進行修改)即可
在ip範圍內輸入ip,註意格式;
延遲在實際的生產環境中要大一些,實驗環境可以小一些
建立發現動作
配置 >> 動作 >> Auto discovery. Linux servers.
① 配置動作
② 在條件中新增條件,讓新增更準確
③ 在操作中新增
a) 新增主機與啟用主機
然後等待者客戶端自動上門就好?
6.3 自動註冊–主動樣式
第一個裡程碑:zabbix Server安裝完畢 (完成)
zabbix Server安裝完畢
第二個裡程碑:zabbix agent安裝完畢,需要額外增加的配置
vim /etc/zabbix/zabbix_agentd.conf
ServerActive=172.16.1.61# Hostname=Zabbix serverHostnameItem=system.hostname
systemctl restart zabbix-agent.service
netstat -tunlp|grep zabbix
源檔案與修改後對比
第三個裡程碑:在web見面上進行配置
1 配置 >> 動作 >> 事件源(自動註冊) >> 建立動作
建立動作,新增名稱即可
條件中也無需修改
在動作中新增動作
(新增主機、新增到主機群組、連結到模板)
新增完動作後,等待就行了
註意:重啟客戶端可以加速發現。但是在生產環境中勿用。
第7章 分散式監控與SNMP監控
7.1 分散式監控
7.1.1 作用
分擔壓力,減輕負載
多機房監控
zabbix Server ===》 zabbix agent (只能同一個區域網監控)
分擔壓力,降低負載
zabbix Server ===》 zabbix proxy
===》zabbix agent1 agent2 agent3 。。。 172.16.1.61 172.16.1.21 172.16.1.0/24
===》 zabbix proxy
===》zabbix agent4 agent5 agent6 。。。
多機房監控
zabbix Server(北京)
==》 zabbix proxy(每個機房搭建)
==》 zabbix agent 122.71.240.233/172.16.1.61
122.71.241.11/172.16.2.21 172.16.2.0/24
7.1.2 環境說明
zabbix server m01
zabbix proxy cache01
zabbix agent cache01
7.1.3 配置zabbix proxy
第一個裡程碑:配置zabbix yum源,並安裝proxy
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
yum install zabbix-proxy-mysql -y
第二個裡程碑:安裝資料庫
zabbix proxy也需要資料庫,這個資料庫不是用於儲存監控資料的 只是用於儲存配置資訊
#安裝資料庫
yum -y install mariadb-server
systemctl start mariadb.service
#建立資料庫
mysql
create database zabbix_proxy character set utf8 collate utf8_bin;
grant all privileges on zabbix_proxy.* to zabbix@'localhost' identified by
'zabbix';
exit
#匯入資料檔案
zcat /usr/share/doc/zabbix-proxy-mysql-3.0.13/schema.sql.gz |mysql -uzabbix -pzabbix zabbix_proxy
#配置zabbix proxy 連線資料庫
sed -i.ori
'162a DBPassword=zabbix' /etc/zabbix/zabbix_proxy.conf
sed -i
's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_proxy.conf
sed -i
's#Hostname=Zabbix proxy#Hostname=cache01#' /etc/zabbix/zabbix_proxy.conf# Hostname 作為後面新增的代理程式名稱,要保持一致
#啟動
systemctl restart zabbix-proxy.service
#檢查埠
[root@cache01 ~]# netstat -lntup |grep zabbixtcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 105762/zabbix_agent
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 85273/zabbix_proxy
tcp6 0 0 :::10050 :::* LISTEN 105762/zabbix_agent
tcp6 0 0 :::10051 :::* LISTEN 85273/zabbix_proxy
第三個裡程碑:修改agent配置指向 proxy
[root@cache01 ~]
# grep ^Server /etc/zabbix/zabbix_agentd.confServer=172.16.1.61ServerActive=172.16.1.61[root@cache01 ~]
# sed -i 's#172.16.1.61#172.16.1.21#g' /etc/zabbix/zabbix_agentd.conf[root@cache01 ~]
# grep ^Server /etc/zabbix/zabbix_agentd.confServer=172.16.1.21ServerActive=172.16.1.21[root@cache01 ~]
# systemctl restart zabbix-agent.service
第四個裡程碑:web介面新增代理
管理 >> agent代理程式 >> 建立代理
代理程式名稱要填寫主機名
稍等片刻就能在程式中出現代理
在主機中能發現主機代理
7.2 SNMP監控
7.2.1 使用範圍
無法安裝agent 很多前輩的監控軟體都可以監控各種裝置 都是透過snmp監控
snmp simple network manager protocol 簡單網路管理協議
簡單網路管理協議(SNMP),由一組網路管理的標準組成,包含一個應用層協議(application layer protocol)、資料庫模型(database schema)和一組資源物件。該協議能夠支援網路管理系統,用以監測連線到網路上的裝置是否有任何引起管理上關註的情況。
7.2.2 安裝snmp程式
yum -y install net-snmp net-snmp-utils
7.2.3 配置snmp程式
sed -i.ori
'57a view systemview included .1' /etc/snmp/snmpd.conf
systemctl start snmpd.service
7.2.4 測試snmp
[root@m01 ~]# snmpwalk -v 2c -c public 127.0.0.1 sysnameSNMPv2-MIB::sysName.0 = STRING: m01
說明:
# snmpwalk 類似 zabbix_get
# -v 2c 指定使用snmp協議的版本 snmp分為v1 v2 v3
# -c public 指定暗號
# sysname 類似zabbix的key
7.2.5 在web介面進行配置
新增新的主機,註意使用snmp介面
選擇模板,註意使用SNMP的模板
新增完成就能夠在主機中看到snmp監控對的主機
7.2.6 附錄
##SNMP OID串列 監控需要用到的OID
http://www.ttlsa.com/monitor/snmp-oid/
cmdb 資源管理系統
作者:慘綠少年
文章連結:https://www.cnblogs.com/clsn/p/7885990.html
《Linux雲端計算及運維架構師高薪實戰班》2018年08月27日即將開課中,120天衝擊Linux運維年薪30萬,改變速約~~~~
*宣告:推送內容及圖片來源於網路,部分內容會有所改動,版權歸原作者所有,如來源資訊有誤或侵犯權益,請聯絡我們刪除或授權事宜。
– END –
更多Linux好文請點選【閱讀原文】哦
↓↓↓