f.在node9上部署好zabbixphp
監控:前端
最關鍵的工具:傳感器:收集數據,檢測數據node
過程:mysql
數據採集 --> 數據存儲 --> 數據展現web
報警:採集到的數據超出閾值sql
常見的實現監控SNMP:Simple Network Management Protocol 簡單網絡管理協議數據庫
有兩部分組成:監控端(NMS)和被監控端(agent)json
SNMP的工做模式:後端
NMS主動向agent採集數據服務器
agent主動向NMS報告數據
NMS請求agent修改配置
SNMP的組件:三部分組成
MIB:management information base 管理信息庫(。。。將每一被監控的id到對應名稱的轉換)MIB:全部能夠被監控、被管理的對象的集合
每一個Agent都有管理信息庫
SMI:MIB表示符號
SNMP協議
SNMP是一個簡單協議,這個協議只能發送get,好比get abc,對方收到get abc以後,知道對方要收集abc的指標,可是abc是什麼?cpu利用率?內存空間?這就是MIB庫中定義的,abc假如爲cpu利用率,bcd爲磁盤空間空閒等,get abc後,Agent就知道對方要收集什麼數據了。而專用的agent端他們對協議自己實現了擴展,在協議自己就能夠描述獲取什麼數據的,在zabbix 2.2以前協議使用的都是JSON格式的,JSON(相似輕量級的xml)
NMS可發起操做:
Get(得到數據), GetNext(得到下一個數據或下一批), Set(設定、修改配置), Trap(等待被監控端所發來的主動報告數據)
agent: Response 響應一個或多個值
SNMP工做於UDP協議
NMS: 161端口
agent: 162端口
SNMP自己沒有提供數據存儲、報警等的能力,因此須要藉助第三方工具來實現數據存儲展現和報警。
常見的報警: 郵件、短信
報警升級操做:在指定時間內若是報警依然存在,則須要實現升級。
定義在維護時間內不進行報警【服務器下線,更新版本】
監控功能的實現:
專用agent
ssh
SNMP
IPMI
智慧平臺管理接口(Intelligent Platform Management Interface)本來是一種Intel架構的企業系統的周邊設備所採用的一種工業標準。IPMI亦是一個開放的免費標準,使用者無需支付額外的費用便可使用此標準。
zabbix 是基於json格式,因爲json有不少元數據,額外須要多消耗帶寬,到zabbix 2.4以後,不在使用json格式來描述數據,它本身直接在協議中經過換行來定義協議是如何工做的。zabbix自己是php所實現的,能夠經過API接口添加擴展自身業務的需求
MIB有mib視圖是mib的子集,一般配置Agent時,用戶能夠將commit名與mib視圖綁定,從而限制nms能夠訪問的mib對象。能夠在定義Agent時,明確指定經過哪個commit名 僅能獲取那一部分mib庫中的子集。包含關係經過mib樹來實現,是一顆倒置的數,每個被監控對象都有其惟一的OID。
Linux上snmp功能: net-snmp程序包
zabbix: 有專用agent的監控工具
監控主機:
Linux、Windows、FreeBSD
網絡設備:
SNMP, SSH(並不是全部)
數據存儲:
cacti: rrd (round robin database 環狀數據庫,環滿了,就覆蓋數據)
zabbix: mysql, pgsql
能夠在zabbix上定義一個觸發器,對每個被監控項定義一個或多個觸發器,觸發器中定義了閾值,一旦採集的數據超出了閾值或不符合閾值的指標,觸發器被觸發就會產生一個觸發事件,這個事件能夠被action所調用,action操做主要有兩類:執行程序;發送報警;
若是監控節點和數據量太大,則須要部署分佈式的zabbix監控,經過一箇中心控制zabbix【不監控任何數據】代理到後端多個zabbix上。代理監控的數據都保存到本身獨立的數據庫中,在一個指定的時間段時把代理監控的數據所有複製到中心控制端的數據存儲上,然後就能夠把代理上的數據都刪除,從而繼續進行監控存儲數據。
zabbix 2.4支持兩種分佈式機制:zabbix proxy; zabbix node。
zabbix架構中的組件:
監控端 zabbix-server:C語言
被監控端 OS:zabbix-agent: C語言
zabbix-web:GUI,用於實現zabbix設定和展現 php研發的
zabbix-proxy: 分佈式監控環境中的專用組件
zabbix-database: MySQL, PGSQL(postgreSQL)、Oracle、DB2、SQLite
Zabbix Server:負責接收Agent發送的報告信息的核心組件,全部配置、統計數據及操做數據均由其組織進行;
Database Storage:專用於存儲全部配置信息,以及由zabbix收集的數據;
Web interface:zabbix的GUI接口,一般與Server運行在同一臺主機上;
Proxy:可選組件,經常使用於分佈式監控環境中,代理Server收集部分被監控端的監控數據並同一發往Server端;
Agent:部署在被監控主機上,負責收集本地數據併發往Server端或Proxy端;
JMX:Zabbix監控Java應用
zabbix架構
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等;
通知(notification):經過選定的媒介向用戶發送的有關某事件的信息;
遠程命令(remote command):預約義的命令,可在被監控主機處於某特定條件下時自動執行;
模板(template):用於快速定義被監控主機的預設條目集合,一般包含了item,trigger,graph,screen,application以及low-level discovery rule;模板能夠直接鏈接至單個主機;
應用(application):一組item的集合;
web場景(web scennario):用於檢測web站點可用性的一個或多個HTTP請求;
前端(frontend):Zabbix的web接口;
Zabbix的邏輯架構
Zabbix啓動後,Zabbix Server Processes
watchdog 【監控每個進程是否處於正常運行當中】
housekeeper 【管家,監控數據是保存到數據庫上的,定義item時須要說明數據的保存時間,不在指定範圍內監控到的數據都會被清理】
poller【收集數據的】
alerter 【執行警報操做的】
httppoller【專用web的收集數據】
discoverer 【發現機制,一旦對應的主機啓動了就會加入監控列表中,很是消耗資源】
escalator 【報警升級】
timer【計時器】
nodewatcher 【監控各節點的,每個被監控主機都不在線時,這些主機上的item都不能監控數據了】
db_data_syncer 【數據庫的數據同步器,在分佈式場景中使用】
db_config_syncer 【數據庫的配置同步器,在分佈式場景中使用】
pinger 【經過ping操做探測主機是否在線】
zabbix產生的數據主要由四部分組成:
配置數據:比較小
歷史數據:50Bytes
歷史趨勢數據: 128Bytes
事件數據: 130Bytes
Install Zabbix
1.Create zabbixuser
2.Untar sourcetarball
3.Create zabbixdatabase and populate it
A mysql (Postgresql,....) installation isneeded...
4. ./configure ;make ; make install;
Some packages may be missing..
Does not take too long ( < 10min )
5.Createconfiguration file for zabbix server
(misc/conf/zabbix_server.conf)
6.Start the zabbixserver
經過服務器端的web接口來完成zabbix server的初始化,不使用web接口則如下操做完成便可。
Install the Zabbixweb interface
1.Apache/PHP isrequired
Copy PHP files to $DocumentRoot/zabbix
http://localhost/zabbix
2.Change php.ini
Default settings are by far not enough!
date.timezone = Asia/Shanghai
3.Restart webserver
4.Finishconfiguration
5.Login withadmin/zabbix
登陸默認帳號和密碼爲admin,zabbix
1.安裝httpd和php,mysql-server,zabbix-2.4.0-1.el6.x86_64.rpm zabbix-sender-2.4.0-1.el6.x86_64.rpmzabbix-agent-2.4.0-1.el6.x86_64.rpm zabbix-server-2.4.0-1.el6.x86_64.rpmzabbix-get-2.4.0-1.el6.x86_64.rpm zabbix-server-mysql-2.4.0-1.el6.x86_64.rpmzabbix-web-2.4.0-1.el6.noarch.rpm zabbix-web-mysql-2.4.0-1.el6.noarch.rpm
,受權用戶給zabbix使用
mysql> grantall on zabbix.* to 'zabxuser'@'192.168.%.%' identified by 'zabxpass';
mysql> grantall on zabbix.* to 'zabxuser'@'localhost' identified by 'zabxpass';
2.在啓動zabbix web以前須要先導入數據到數據庫中,對應數據在
# ls/usr/share/doc/zabbix-server-mysql-2.4.0/
create upgrades 有MySQL的模板腳本
# ls/usr/share/doc/zabbix-server-mysql-2.4.0/create/ 建立數據庫
data.sql p_w_picpaths.sql schema.sql 三個腳本都須要導入數據庫中,若是是proxy端,則只須要導入一個,他們執行次序和名字次序是相反的,先導入schema.sql、再導入p_w_picpaths.sql、最後導入data.sql
# mysql zabbix </usr/share/doc/zabbix-server-mysql-2.4.0/create/schema.sql 。。。
3. 配置zabbix的主配置文件,指定MySQL所在的位置等
# ListenPort=10051 服務器上須要監聽的端口
# DBHost=localhost 數據庫服務器節點,若是是本機建議使用localhost,與MySQL通訊時會更快
DBName=zabbix
# DBSchema=使用的爲mysql,不用指定
DBUser=zabbix
DBPassword=xxx
4. Change php.ini
Default settings are by far not enough!
date.timezone = Asia/Shanghai
#servicezabbix-server start
監控客戶端,客戶端須要安裝:zabbix-2.4.0-1.el6.x86_64.rpm net-snmp zabbix-agent-2.4.0-1.el6.x86_64.rpmzabbix-sender-2.4.0-1.el6.x86_64.rpm
mysql> selectkey_,type from items;
+-------------------------------------------+------+
| key_ | type |
+-------------------------------------------+------+
| proc.num[] | 0 |
|system.cpu.load[percpu,avg1] | 0 |爲0是zabbix Agent所提供的
|proc.num[,,run] | 0 |
|system.swap.size[,free] | 0 |
|system.users.num | 0 |
|vfs.file.cksum[/etc/passwd] | 0 |
| agent.ping | 0 |
|system.uptime | 0 |
| vm.memory.size[total] | 0 |
。。。
zabbix_get -s127.0.0.1 -p 10050 -k "system.cpu.load[all,avg1]"
向某一zabbix agent獲取key值
媒介類型(Media type)
在zabbix中,媒介指發送通知信息的通道,其一般有如下幾種類型
E-mail:電子郵件,即通知郵件的方式傳送通知信息;
SMS:手機短信,即經過鏈接至zabbix服務器GSM Modem發送通知;
Jabber:jabber消息;Jabber是一個開放的、基於XML的協議,可以實現基於Internet或LAN的即時通信服務;
自定義的通知腳本:以上方式不能知足需求時,zabbix能夠調用位於其配置文件「AlertScriptsPath」變量所定義的腳本查找目錄中的腳原本完成通知功能;
類別爲「Send Message」時的相關屬性:
Send to User groups:給選定組中的全部用戶發送通知;
Send to users: 給選定的用戶發送通知;
Send only to:發送通知時所使用的媒介,all爲全部媒介
Default Message:若是啓用,則發送默認消息;
Subject:消息的自定義主體,能夠包含宏;
Message:要發送的消息內容,可使用宏;