一、監控系統基礎概念
1、監控系統的工作內容
數據採集(傳感器) --> 數據存儲(時間序列數據) --> 數據展示(趨勢圖) --> 報警(採集到的數據超出閾(yu)值)
2、網絡監控系統
NMS:Network Monitor System 網絡監控系統
3、可監控對象
1)設備
服務器,路由器,交換機,IO系統
2)軟件|應用
OS,網絡,應用程序
二、snmp (Simple Network Management Protocol) 簡單網絡管理協議
1、snmp的工作模式
NMS向agent採集數據
agent主動向NMS報告數據
NMS請求agent修改配置
2、SNMP
1)SNMP分為NMS和Agent兩部分:
NMS(Network Management Station,網絡管理站)是運行SNMP客戶端程序的工作站
Agent是運行在網絡設備上的SNMP服務器端
NMS可以向Agent發出GetRequest、GetNextRequest和SetRequest報文,Agent接收到NMS的這些請求報文後,根據報文類型進行Read或Write操作,生成Response報文,並將報文返回給NMS。
Agent在設備發生異常情況或狀態改變時(如設備重新啟動),也會主動向NMS發送Trap報文,向NMS彙報所發生的事件。
2)SNMP工作方式很獨特:
只在需要監控時才會發起監控請求,將數據收集至本地。SNMP本身沒有數據存儲的功能,僅能完成數據採集後,人工判斷數據是否有問題
3)SNMP的組件:
MIB:management information base 管理信息庫
是NMS和agent的接口,實現定義監控端和被監控端雙方可接受的監控組件,以及監控組件中的數據存取規範
視圖:MIB的樹狀結構圖,定義agent時可以設定社區名對應的權限
OID:MIB樹狀結構圖中的節點對象,用數字表示也可以有名稱
SMI:MIB的表示符號
SNMP協議:協議本身
在SNMP報文中用管理變量來描述設備中的管理對象。為了唯一標識設備中的管理對象,SNMP用層次結構命名方案來識別管理對象。整個層次結構就像一棵樹,樹的節點表示管理對象,如下圖1-1所示。每一個節點,都可以用從根開始的一條路徑唯一地標識。
MIB的作用就是用來描述樹的層次結構,它是所監控網絡設備的標準變量定義的集合。在圖1-1中,管理對象B可以用一串數字{1.2.1.1}唯一確定,這串數字是管理對象的對象標識符(Object Identifier)。
3、NMS可發起的操作
Get(獲取數據),GetNext(獲取一個或多個數據),Set(設定),Trap(捕獲被監控端報告的數據)
4、agent可發起的操作
Response(報告)
5、基於UDP協議
NMS:162 (trap)
agent:161
SNMP採用UDP協議在管理端和agent之間傳輸信息。 SNMP採用UDP 161端口接收和發送請求,162端口接收trap,執行SNMP的設備缺省都必須採用這些端口。SNMP消息全部通過UDP端口161接收,只有Trap信息採用UDP端口162。
6、SNMP協議的版本
v1:沒有認證功能
v2c:基於社區(密鑰)認證 # 認證過程是明文的
v3:認證,加密,解密 # 使用的還很少
7、linux中安裝snmp包名:net-snmp
三、開源監控工具
1、監控功能的實現
Agent:各專用的agent
SSH:
SNMP:
IPMI:(Intelligent Platform Management Interface) 智慧平臺管理接口
原本是一種intel架構的企業系統的周邊設備所採用的一種工業標準。IPMI亦是一個開放的免費標準,使用者無需支付額外的費用即可使用此標準
2、自動化監控系統的組件
3、著名的開源監控工具
Cacti:php語言開發
數據收集和展示,
對狀態轉換不敏感
報警功能弱,報警不及時,
存儲數據:rrd(round robin database)環狀數據庫
不能持久保存所有數據,初始化後容量不會再增大
Nagios:(Opsview,Icinga)
報警功能強大:報警升級機制,
定義維護窗口,組件依賴,
不適用於大規模(100臺主機以內),不能分佈式部署
僅關注狀態轉換,不收集和展示數據
生產環境中常用:Cacti + Nagios
Zabbix:
實現 Cacti + Nagios 的功能
監控到故障時能調用遠程腳本來自動解決問題,故障不能解決再報警
2.2 JSON
2.4 通信機制優化,節約帶寬1/3
數據存儲:mysql,pgsql
有專用agent
監控主機:
Linux、Windows、FreeBSD
監控網絡設備:
SNMP, SSH(並非所有)
四、Zabbix簡介
1、Zabbix概述
企業級監控解決方案
分佈式部署,可以部署在不同地域
報警(通知)
集中控制
狀態檢測配置
可以監控多達10W個設備
完全開源
What can be monitored on the Web?
Response time # 響應時間
Download speed # 下載速度
Response code # 響應碼
Availability of certain content # 某些內容可用性
Complex web scenarios with login and logout capability # 複雜場景下web登錄和註銷能力,
Support for HTTP and HTTPs
Notification method: 通知方法
Command Execution
SMS
Jabber
Chat message
2、zabbix發展歷史
最新是版本:3.4
官網:www.zabbix.com
3、zabbix的組織結構
JMX:java擴展管理接口,能直接對JAVA程序進行監控,
zabbix的組織結構細分:
Zabbix組件概述:
Zabbix Server:
C語言研發,負責接收agent發送的報告信息的核心組件,所有配置、統計數據及操作數據均由其組織進行;
Database Storage:
專用於存儲所有配置信息,以及由zabbix收集數據
Mysql,PGSQL(postgreSQL),Oracle,DB2,SQLite
Web interface:
zabbix的Web GUI接口,通常與Server運行在同一臺主機上,用於實現zabbix設定和展示,php研發
Proxy:
可選組件,常用於分佈監控環境中,代理Server收集部分被監控端的監控數據並統一發往Server端;
Agent:
部署在被監控主機上,負責收集本地數據併發往Server端或Porxy端;c語言研發
4、zabbix中常用的術語
主機(host):
要監控的網絡設備,可由IP或DNS名稱指定;
主機組(host group):
主機的邏輯容器,可以包含主機和模板,但同一個組內的主機和模板不能互相鏈接;主機組通常在給用戶或用戶組指派監控權限時使用;
監控項(item):
一個特定監控指標的相關的數據,這些數據來自於被監控對象;item是zabbix進行數據收集的核心,沒有item,將沒有數據;相對某監控對象來說,每個item都由“key”進行標識;
觸發器(trigger):
一個表達式,用於評估某監控對象的某特定item內所接收到的數據是否在合理範圍內,即閾值;接收到的數據量大於閾值時,觸發器狀態將從“OK”轉變為“Problem”,當數據量再次迴歸到合理範圍時,其狀態將從“Problem”轉換回“OK”;
事件(event):
即發生的一個值得關注的事情
例如觸發器的狀態轉變,新的agent或重新上線agent的自動註冊等;
動作(action):
指對於特定事件事先定義的處理方法,通過包含操作(如發送通知)和條件(何時執行操作);
報警升級(escalation):
發送警報或執行遠程命令的自義定方案,如每隔5分鐘發送一次警報,共發送5次等;
媒介(media):
發送通知的手段或通道,如Email、Jabber或SMS、Script等;
通知(notification):
通過選定的媒介向用戶發送的有關某事件的信息;
遠程命令(remote command):
預定義的命令,可在被監控主機處於某特定條件下時自動執行;
模板(template):
用於快速定義被監控主機的預設條目集合,通常包含了item、trigger、graph(數據展示圖即可視化)、screen(屏幕)、application以及low-level discovery rule(較低級別的發現規則,但需要消耗大量資源,一般很少使用);模板可以直接鏈接至單個主機;
應用 (application):
一組item的集合;
web場景(web scennario):
用於檢測web站點可用性的一個或多個HTTP請求;
前端(frontend):
Zabbix的web接口
Zabbix的邏輯架構:
maintenance:保養(即維護窗口)
internal:內部
5、zabbix服務器段進程介紹
poller: 輪詢拉取數據的進程,可以有多個,
alerter:報警
housekeeper:管家,數據管理,清除過期數據
watchdog:守護進程,監控所有進程是否都正常運行,如果監測到有進程被關閉會重新激活該進程
escalator:報警升級
timer:計數器
nodewatcher:監控主機的
數據庫配置同步器:分佈式環境中proxy節點和server幾點之間同步
數據庫數據同步器
盜用了一些素材和圖片,請見諒。
閱讀更多 心欲無痕 的文章