Zabbix 是由 Alexei Vladishev 開發(fā)的一種網(wǎng)絡(luò)監(jiān)視、管理系統(tǒng)来屠,基于 Server-Client 架構(gòu)轨淌∪希可用于監(jiān)視各種網(wǎng)絡(luò)服務(wù)舅柜、服務(wù)器和網(wǎng)絡(luò)機(jī)器等狀態(tài)咖杂。
使用各種 Database-end 如 MySQL, PostgreSQL, SQLite, Oracle 或 IBM DB2 儲(chǔ)存資料。Server 端基于 C語(yǔ)言、Web 管理端 frontend 則是基于 PHP 所制作的祷杈。Zabbix 可以使用多種方式監(jiān)視∩可以只使用 Simple Check 不需要安裝 Client 端但汞,亦可基于 SMTP 或 HTTP ... 各種協(xié)定做死活監(jiān)視。在客戶端如 UNIX, Windows 中安裝 Zabbix Agent 之后互站,可監(jiān)視 CPU Load特占、網(wǎng)絡(luò)使用狀況、硬盤容量等各種狀態(tài)云茸。而就算沒有安裝 Agent 在監(jiān)視對(duì)象中是目,Zabbix 也可以經(jīng)由 SNMP、TCP标捺、ICMP懊纳、利用 IPMI、SSH亡容、telnet 對(duì)目標(biāo)進(jìn)行監(jiān)視嗤疯。另外,Zabbix 包含 XMPP 等各種 Item 警示功能闺兢。
Zabbix 的授權(quán)是屬于 GPLv2茂缚。
zabbix server: 負(fù)責(zé)接收agent發(fā)送的報(bào)告信息的核心組件,所有配置屋谭、統(tǒng)計(jì)數(shù)據(jù)及操作數(shù)據(jù)均由其組織進(jìn)行脚囊。
zabbix database: 專用于存儲(chǔ)所有配置信息,以及由zabbix收集的數(shù)據(jù)桐磁。
web gui: zabbix的GUI接口悔耘,通常與Server運(yùn)行在同一臺(tái)主機(jī)上。
zabbix proxy: 可選組件我擂,常用于分布監(jiān)控環(huán)境中衬以,代理server收集部分被監(jiān)控端的監(jiān)控?cái)?shù)據(jù)并統(tǒng)一發(fā)往server端。
agent: 部署在被監(jiān)控主機(jī)上校摩,負(fù)責(zé)收集本地?cái)?shù)據(jù)并發(fā)往server端或proxy端看峻。
zabbix常用的術(shù)語(yǔ):
- 主機(jī)(host):要監(jiān)控的網(wǎng)絡(luò)設(shè)備,可由IP或DNS名稱指定衙吩。
- 主機(jī)組(host group):主機(jī)的邏輯容器互妓,可以包含主機(jī)和模板,但同一個(gè)組內(nèi)的主機(jī)和模板不能互相鏈接;主機(jī)組通常在給用戶或用戶組指派監(jiān)控權(quán)限時(shí)使用车猬。
- 監(jiān)控項(xiàng)(item):一個(gè)特定監(jiān)控指標(biāo)的相關(guān)的數(shù)據(jù)霉猛,這些數(shù)據(jù)來自于被監(jiān)控對(duì)象;item是zabbix進(jìn)行數(shù)據(jù)收集的核心珠闰,沒有item惜浅,將沒有數(shù)據(jù);相對(duì)某監(jiān)控對(duì)象來說伏嗜,每個(gè)item都由“key”進(jìn)行標(biāo)識(shí)坛悉。
- 觸發(fā)器(trigger): 一個(gè)表達(dá)式,用于評(píng)估某監(jiān)控對(duì)象的某特定item內(nèi)所接收到的數(shù)據(jù)是否在合理范圍內(nèi)承绸,即閾值裸影;接收到的數(shù)據(jù)量大于閾值時(shí),觸發(fā)器狀態(tài)將從“OK”轉(zhuǎn)變?yōu)椤癙roblem”军熏,當(dāng)數(shù)據(jù)量再次回歸到合理范圍時(shí)轩猩,其狀態(tài)將從“Problem”轉(zhuǎn)換回“OK”。
- 事件(event): 即發(fā)生的一個(gè)值得關(guān)注的事情荡澎,例如觸發(fā)器的狀態(tài)轉(zhuǎn)變均践,新的agent或重新上線的agent的自動(dòng)注冊(cè)等。
- 動(dòng)作(action): 指對(duì)于特定事件事先定義的處理方法摩幔,通過包含操作(發(fā)發(fā)送通知)和條件(何時(shí)執(zhí)行操作)彤委。
- 報(bào)警升級(jí)(escalation): 發(fā)送警報(bào)或執(zhí)行遠(yuǎn)程命令的自定義方案,如隔5分鐘發(fā)送一次警報(bào)或衡,共發(fā)送5次等焦影。
- 媒介(media): 發(fā)磅通知的手段或通道,如Email封断、Jabber或SMS等斯辰。
- 通知(notification): 通過選定的媒介向用戶發(fā)送的有關(guān)某事件的信息。
- 遠(yuǎn)程命令(remote command): 預(yù)定義的命令澄港,可在被 監(jiān)控主機(jī)處于某特定條件下進(jìn)自動(dòng)執(zhí)行椒涯。
- 模板(template): 用于快速定義被監(jiān)控主機(jī)的預(yù)設(shè)條目集合柄沮,通常包含了item回梧、trigger、graph祖搓、screen狱意、application以及l(fā)ow-level discovery rule。模板可以直接鏈接至單個(gè)主機(jī)拯欧。
- 應(yīng)用(application): 一組item的集合详囤。
- web場(chǎng)景(web scennario): 用于檢測(cè)web站點(diǎn)可用性的一個(gè)或多個(gè)HTTP請(qǐng)求。
- 前端(frontend): zabbix的web接口。
- 圖形(graph)
- 屏幕(screens)
- 幻燈(slide show)
zabbix程序組件
zabbix_server:服務(wù)端守護(hù)進(jìn)程
zabbix_agentd:agent守護(hù)進(jìn)程藏姐;
zabbix_proxy:代理服務(wù)器隆箩,可選;
zabbix_database:存儲(chǔ)系統(tǒng)羔杨,MySQL/PGSQL
zabbix_web: Web GUI
zabbix_get:命令行工具捌臊,測(cè)試向agent端發(fā)起數(shù)據(jù)采集請(qǐng)求;
zabbix_sender:命令行兜材,測(cè)試向server端發(fā)送數(shù)據(jù)理澎;
zabbix_java_gateway:java網(wǎng)關(guān);
zabbix安裝(測(cè)試起間在同一臺(tái)主機(jī)上安裝db \ zabbix server \ zabbix web 本機(jī)IP 10.1.49.32)
- 安裝數(shù)據(jù)庫(kù)曙寡,ZBX DB
- 安裝zabbix_web amp環(huán)境
(一)數(shù)據(jù)庫(kù)安裝
~]# yum -y install mariadb-server
~]# vim /etc/my.cnf 在[mysqld]項(xiàng)中添加skip_name_resolve=ON innodb_file_per_table=ON character-set-server = utf8
~]# systemctl start mariadb.service
~]# systemctl enable mariadb.service
~]# mysql_secure_installation
mysql> CREATE DATABASE zabbix CHARSET 'utf8';
mysql> GRANT ALL ON zabbix.* TO 'zbxuser'@'10.1.%.%' IDENTIFIED BY 'zbxpass';
mysql> FLUSH PRIVILEGES;
(二)zabbix_server安裝
~]# yum install zabbix-server-mysql-3.0.2-1.el7.x86_64.rpm zabbix-get-3.0.2-1.el7.x86_64.rpm
~]# gzip -d /usr/share/doc/zabbix-server-mysql-3.0.2/create.sql.gz
~]# mysql -uzbxuser -h10.1.49.32 -pzbxpass zabbix < /usr/share/doc/zabbix-server-mysql-3.0.2/create.sql
注意:zabbix 2的sql腳本有三個(gè)糠爬,需要依次導(dǎo)入;
配置zabbix (/etc/zabbix/zabbix_server.conf)举庶,常用的如下(通用配置段):
ListenPort=10051
SourceIP= # 指定zabbix服務(wù)器端去被監(jiān)控服務(wù)主機(jī)上采樣數(shù)據(jù)時(shí)使用的IP
LogType={file|system|console} # 默認(rèn)選file即可
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0 # 是否滾動(dòng)記錄日志且日志大小設(shè)置
DebugLevel=3
DBHost=localhost
DBName=zabbix
DBUser=zbxuser
DBPassword=zbxpass
DBPort=3306
DBSocket=/tmp/mysql.sock # 這項(xiàng)如果是連接本地?cái)?shù)據(jù)庫(kù)(即DBHost=localhost)時(shí)要保證與mysql的socket文件保持一致
~]#systemctl start zabbix-server.service # 若無(wú)法沒有啟動(dòng)执隧,可能是由于缺少組件“trousers-0.3.13-1.el7.x86_64”
(三)zabbix web GUI安裝
1.解決依賴關(guān)系
~]# yum install httpd php php-mysql php-mbstring php-gd php-bcmath php-ldap php-xml
2.安裝web GUI
~]# yum install zabbix-web-3.0.2-1.el7.noarch.rpm zabbix-web-mysql-3.0.2-1.el7.noarch.rpm
3.配置php時(shí)區(qū)參數(shù)在a或b中進(jìn)行設(shè)置
(a) php.ini
(b) /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
4.啟動(dòng)web服務(wù)
~]# systemctl start httpd.service
5.訪問web 安裝zabbix3.0如下圖:
http://HOST/zabbix # 默認(rèn)的管理員帳號(hào)密碼:admin zabbix
安裝后生成的配置文件:/etc/zabbix/web/zabbix.conf.php (可修改)```
![Zabbix安裝界面1](http://upload-images.jianshu.io/upload_images/2057465-c02329462875d2fc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![zabbix安裝界面2](http://upload-images.jianshu.io/upload_images/2057465-52828a607e38f2db.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![zabbix安裝界面3](http://upload-images.jianshu.io/upload_images/2057465-3384eec4452fb973.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![zabbix安裝界面4](http://upload-images.jianshu.io/upload_images/2057465-07476b26643703c3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![zabbix安裝界面5](http://upload-images.jianshu.io/upload_images/2057465-15f0c6bbeff5ce8d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![zabbix安裝界面6](http://upload-images.jianshu.io/upload_images/2057465-ca7403950f85393e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
(四)zabbix agent(10.1.249.134)安裝配置:
安裝程序包
~]# yum install zabbix-agent-3.0.2-1.el7.x86_64.rpm zabbix-sender-3.0.2-1.el7.x86_64.rpm程序環(huán)境:
配置文件:/etc/zabbix/zabbix_agentd.conf
Unit File:zabbix-agent.service
3.配置文件配置段
############ GENERAL PARAMETERS #################
Passive checks related 被動(dòng)監(jiān)控相關(guān)的配置
Active checks related 主動(dòng)監(jiān)控相關(guān)的配置
############ ADVANCED PARAMETERS #################
####### USER-DEFINED MONITORED PARAMETERS ####### 用戶自定義的監(jiān)控參數(shù)
####### LOADABLE MODULES #######
####### TLS-RELATED PARAMETERS #######
- 配置文件設(shè)置
Server=IP1,IP2,... # 主/被 動(dòng)檢查相關(guān)都填寫上
ListenPort=10050 # zabbix agent默認(rèn)監(jiān)聽的端口
ListenIP=0.0.0.0 # zabbix agent不只一個(gè)ip時(shí),指定一個(gè)
StartAgents=3 # 預(yù)啟動(dòng)的進(jìn)程數(shù)
ServerActive=IP1,IP2,...
Hostname=HOST-Id # 客戶端主機(jī)的hostname - 啟動(dòng)服務(wù)
systemctl start zabbix-agent.service # 默認(rèn)監(jiān)聽在10050端口
#### 配置監(jiān)控
快速配置一個(gè)監(jiān)控項(xiàng):
```Configuration --> host groups --> host --> applications --> item --> triggers (events) --> action (condtions, operations)```
**operations:** remote command, alert # 兩種操作方式
**host groups:**主機(jī)組
**host:**主機(jī)
**applications:**可以理解為保存各item(監(jiān)控項(xiàng))的容器
**item:** 監(jiān)控項(xiàng),每個(gè)item都有一個(gè)自帶的graph,多個(gè)graph可以組成screen,多個(gè)screen可以組成slide show.
**triggers:**觸發(fā)器户侥,為監(jiān)控項(xiàng)所收集的數(shù)據(jù)定義閾值殴玛。它是一個(gè)邏輯表達(dá)式。每一個(gè)觸發(fā)器僅能關(guān)聯(lián)至一個(gè)監(jiān)控項(xiàng)添祸,但可以為一個(gè)監(jiān)控項(xiàng)同時(shí)使用多個(gè)觸發(fā)器滚粟。觸發(fā)器間可存在依賴關(guān)系。觸發(fā)器的表達(dá)式:**`{<server>:<key>.<function>(<parameter>)}<operator><constant>`**
> server: 主機(jī)名稱
key:主機(jī)上關(guān)聯(lián)的相應(yīng)監(jiān)控項(xiàng)的key 即item key
function:評(píng)估采集到的數(shù)據(jù)是否在合理范圍內(nèi)時(shí)所使用的函數(shù)刃泌,其評(píng)估過程可以根據(jù)采取的數(shù)據(jù)凡壤、當(dāng)前時(shí)間及其它因素進(jìn)行。有avg count date last max change dayofweek delta diff iregexp nodata now sum...
parameter:函數(shù)參數(shù)耙替,以“#”為前綴表示最近幾次的取值亚侠。0代表 #1 即上一次
operator: 為操作符,如+ = * / % > < 等等
示例:{www.magedu.com:system.cpu.load[all,avg1].last(0)}>3
**items:** 將多個(gè)指標(biāo)的數(shù)據(jù)放在同一個(gè)圖形里
**grapps: ** 多個(gè)圖形可以放在一個(gè)screen里
**screens --> slide show**
**item key** 每一個(gè)監(jiān)控項(xiàng)(item)上必須有一個(gè)item key可以理解為采集主機(jī)具體某項(xiàng)數(shù)據(jù)的手段(或命令別名)如下圖,可以在Server端用這個(gè)命令zabbix -s 10.1.249.163 -k "agent.hostname" 獲得監(jiān)控主機(jī)的hostname
![zabbix內(nèi)置的item key](http://upload-images.jianshu.io/upload_images/2057465-ea17a860050cc281.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
**item key的類型**
item:item key
兩類:
zabbix 內(nèi)建:
zabbix agent
zabbix agent(active)
用戶自定義(UserParamter)
**通信媒介**
媒介類型(Media Types):定義信息傳遞的方式俗扇。
報(bào)警信息的傳遞方式硝烂;
類型:
Email:郵件,需要定義發(fā)件人郵箱地址和SMTP服務(wù)器铜幽;
Script:自定義腳本滞谢,此腳本有發(fā)送信息至相關(guān)用戶的功能;
SMS除抛、Jabber狮杨、Ez Texting
接收通知信息者為zabbix的用戶:需要為用戶定義對(duì)應(yīng)各種媒介通道的接收方式;
localmail:
script:
**Action操作**
Action:
conditions:觸發(fā)此動(dòng)作的條件到忽,一般通過“事件”觸發(fā)橄教;
operations:觸發(fā)條件滿足時(shí)要采取的動(dòng)作;其有兩種類型如下兩張圖:
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2057465-30b817d81a4097fd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2057465-a6ee35c356237c75.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
message`與`remote command`
1.send message
功能:發(fā)報(bào)警信息給關(guān)聯(lián)的用戶;
(1)可用傳遞方式:
(a) Email
(b) script:報(bào)警腳本
位于server主機(jī)的AlertScriptsPath指令參數(shù)定義的目錄下护蝶,默認(rèn)為/usr/lib/zabbix/alertscripts华烟;zabbix調(diào)用腳本時(shí)會(huì)向其傳遞參數(shù);3.0之前的版本通過
$1:消息接收人持灰;
$2:消息主題垦江;
$3:消息正文;
3.x之后的版本搅方,此三個(gè)參數(shù)默認(rèn)不再傳遞比吭,需自行定義; 可以使用宏來模擬此前的行為:
{ALTET.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
注意:每個(gè)信息接收人相對(duì)于此媒介來說姨涡,得配置相應(yīng)的接收地址衩藤;
發(fā)信息的信道:
郵件
腳本
2.remote command
功能:
在agent所在的主機(jī)上運(yùn)行用戶指定的命令或腳本來嘗試著恢復(fù)故障;例如:
重啟服務(wù)涛漂;
任何由用戶自定義的腳本赏表;
類型:
IPMI
custom script
ssh
telnet
global script
![custom script類型的action](http://upload-images.jianshu.io/upload_images/2057465-80a9f15e07813a49.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
> **custom script如上圖(以客戶端的zabbix用戶執(zhí)行腳本)實(shí)現(xiàn)的前提**
在agent端配置:
(1) zabbix擁有執(zhí)行相應(yīng)腳本的權(quán)限;
編輯/etc/sudoers文件匈仗,添加:
zabbix ALL=(ALL) NOPASSWD: ALL
注釋如下行:
Defaults requiretty # 不注釋這項(xiàng)可能會(huì)因?yàn)榘踩珕栴}無(wú)法執(zhí)行遠(yuǎn)程腳本命令瓢剿。
(2) agent進(jìn)程要允許執(zhí)行遠(yuǎn)程命令,編輯/etc/zabbix/zabbix-agentd.conf文件悠轩,設(shè)置:
**EnableRemoteCommands=1如下圖** 重啟zabbix-agent.service服務(wù)生效间狂;
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2057465-6a3a31aaf5ca0150.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
展示接口:
graph:simple,custom火架;
screen:
slide show:
模板:
主機(jī)配置模板鉴象,可鏈接至主機(jī),從而實(shí)現(xiàn)主機(jī)的快速監(jiān)控配置何鸡;
模板可繼承纺弊;
在模板之上link其它模板即可;
從主機(jī)上刪除模板:
unlink:反鏈接
unlink and clear:反鏈接并清除數(shù)據(jù)骡男;
模板可導(dǎo)出淆游,也可以從指定文件導(dǎo)入;
**宏:MACRO**
預(yù)設(shè)的文本替換模式隔盛;
級(jí)別:
全局宏:Administration --> General --> Macros
模板宏:Configuration --> Templates --> TEMPLATE --> Macros
主機(jī)宏:Configuration --> Hosts --> HOST --> Macros
類型:
內(nèi)建:{MACRO_NAME}
自定義:{$MARCRO_NAME}
命名方式:大寫字母犹菱、數(shù)字和下劃線;
**網(wǎng)絡(luò)發(fā)現(xiàn):掃描指定網(wǎng)段上的主機(jī)并將其添加進(jìn)來管理**
zabbix server掃描指定網(wǎng)絡(luò)范圍內(nèi)的主機(jī)骚亿;
發(fā)現(xiàn)方式:
ip地址范圍:
可用服務(wù)探測(cè)(ftp, ssh, http, ...)
zabbix_agentd的響應(yīng)對(duì)某個(gè)key的請(qǐng)求已亥;
snmp_agent響應(yīng);
一旦發(fā)現(xiàn)某主機(jī)来屠,就會(huì)產(chǎn)生發(fā)現(xiàn)事件;
事件有8類:
Host, Service
Up/Down, Discovered/Lost
發(fā)現(xiàn)操作分兩步:
discover
actions:
conditions
operations
可采取的動(dòng)作:
send message, remote command
add/remove host
enable/disable host
add host to group
link template to host
...