- Zabbix簡要介紹
- Zabbix的監(jiān)控配置
- Zabbix的展示接口
- templates脐瑰,模板
- macros棺棵,宏
一、Zabbix簡要介紹:
(一)監(jiān)控系統(tǒng)的四種基本功能:
(1)采樣:
- 數(shù)據(jù)采集通道:SNMP, ssh, telnet, IPMI, agent, JMX(Java Management eXtension)
(2)存儲:
- 數(shù)據(jù):歷史數(shù)據(jù)掖鱼、趨勢數(shù)據(jù)
- 存儲系統(tǒng):關系型數(shù)據(jù)庫(MySQL)旺订,rrd(round-robin database),No-SQL數(shù)據(jù)庫(時間序列存儲)
(3)報警:
- 可以通過腳本執(zhí)行操作
- 媒介:郵件赠摇,短信固逗,即時通訊工具
(4)展示:直觀的可視界面
(二)Zabbix的特征
數(shù)據(jù)采樣:
數(shù)據(jù)采集通道:snmp, ssh/telnet, agent, ipmi, jmx(java Management eXtensions)
自定義采樣機制:UserPrameter(基于agent實現(xiàn))報警:根據(jù)設定的條件,報警可能向更高一級的管理員上報
數(shù)據(jù)存儲:支持mysql/pgsql
展示:
實時繪圖:graph, screen, slide show, map支持模板藕帜、網(wǎng)絡自動發(fā)現(xiàn)烫罩、分布式監(jiān)控
(三)Zabbix的邏輯組件
- 主機 (host)
- 主機組(host groups):多臺主機組成,方便管理
- 監(jiān)控項(item)
key:實現(xiàn)獲取監(jiān)控目標上的數(shù)據(jù)的命令或腳本的名稱 - 應用(application):同一類監(jiān)控項的集合
- 觸發(fā)器(trigger):監(jiān)控項符合某種條件的表達式
- 事件(event):觸發(fā)器條件符合時引發(fā)
- 動作(action):分為條件(condition)和操作(operation)組件
通知(notification):通知發(fā)生的事件
遠程命令(remote command):事件觸發(fā)動作的一類耘戚,在遠程主機上執(zhí)行命令
報警升級:當事件觸發(fā)動作在規(guī)定時間沒有發(fā)揮作用嗡髓,可能會向上一級管理員報警
媒介(media):發(fā)送通知的通道 - 模板(template):快速定義被監(jiān)控主機的各監(jiān)控項的預設項目集合
- 圖形(graph):用于展示歷史數(shù)據(jù)或趨勢數(shù)據(jù)的圖像
- 屏幕(screen):由多個graph組成
(四)Zabbix的程序組成結構
(1)zabbix程序的組件:
- zabbix_server:服務端守護進程
- zabbix_agentd:agent守護進程
- zabbix_proxy:代理服務器,可選組件
- zabbix_get:命令行工具收津,手動測試向agent發(fā)起數(shù)據(jù)采集請求
- zabbix_sender:命令行工具,運行于agent端浊伙,手動向server端發(fā)送數(shù)據(jù)
- zabbix_java_gateway:java網(wǎng)關
- zabbix_database:MySQL或PostgreSQL
- zabbix_web:Web GUI
(2)zabbix的安裝:
實驗1:實現(xiàn)在server端和agent端的zabbix安裝
本文中所有實驗主機ip情況:
node0.hellopeiyang.com: 192.168.136.230, zabbix agent
node1.hellopieyang.com: 192.168.136.130, zabbix agent
node2.hellopeiyang.com: 192.168.136.131, zabbix server
步驟1-5步驟為zabbix服務器端配置撞秋,步驟6-7為zabbix客戶端配置
- 步驟1:安裝并配置數(shù)據(jù)庫
yum install mariadb-server
vim /etc/my.cnf.d/server.cnf // 配置mysql服務器端參數(shù)
skip_name_resolve = ON
innodb_file_per_table = ON
innodb_buffer_pool_size = 256M
max_connections = 2000
systemctl start mariadb.service
mysql_secure_installation
mysql -uroot -pcentos // 創(chuàng)建zabbix數(shù)據(jù)庫并建立專屬管理員賬戶
MariaDB [(none)]> create database zbxdb;
MariaDB [(none)]> grant all on zbxdb.* to 'zbxuser'@'192.168.136.%' identified by 'zbxpass';
- 步驟2:安裝zabbix的server端和agent端
wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
rpm -ivh zabbix-release-3.4-1.el7.centos.noarch.rpm // 配置zabbix源的小工具
yum install zabbix-server-mysql zabbix-web zabbix-web-mysql zabbix-agent zabbix-get zabbix-sender
- 步驟3:配置zabbix數(shù)據(jù)庫,生成zabbix數(shù)據(jù)庫的專屬表
cp /usr/share/doc/zabbix-server-mysql-3.4.4/create.sql.gz /root/
gzip -d /root/create.sql.gz
mysql -umzbxuser -pzbxpass -h192.168.136.131
MariaDB [(none)]> USE zbxdb;
MariaDB [(zbxdb)]> source /root/create.sql
- 步驟4:修改zabbix的server端配置
cd /etc/zabbix
cp zabbix_server.conf zabbix_server.conf.bak
vim zabbix_server.conf
ListenPort=10051
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=192.168.136.131
DBName=zbxdb
DBUser=zbxuser
DBPassword=zbxpass
DBPort=3306
systemctl start zabbix-server
- 步驟5:修改zabbix的web端配置嚣鄙,時區(qū)設置
vim /etc/httpd/conf.d/zabbix.conf // 只在zabbix中生效
php_value date.timezone Asia/Shanghai
或者
vim /etc/php.ini // 在所有php應用中生效
date.timezone = Asia/Shanghai
systemctl start httpd
- 步驟6:安裝zabbix的agent端
wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
rpm -ivh zabbix-release-3.4-1.el7.centos.noarch.rpm
yum install zabbix-agent zabbix-sender
- 步驟7:配置zabbix的agent端配置
vim /etc/zabbix/zabbix_agentd.conf
##### Passive checks related // 被動監(jiān)控相關配置
Server=192.168.136.131
ListenPort=10050
ListenIP=0.0.0.0
##### Active checks related // 主動監(jiān)控相關配置吻贿,agent端主動向server周期性發(fā)送數(shù)據(jù)
ServerActive=192.168.136.131
Hostname=node1.hellopeiyang.com // 必須與監(jiān)控主機的主機名稱保持一致
systemctl start zabbix-agent
- 步驟8:此時可以登錄監(jiān)控主機的http服務,完成zabbix的web控制臺初始化
瀏覽器登錄:http://192.168.136.131/zabbix
哑子,ip地址為監(jiān)控主機
在配置數(shù)據(jù)庫連接步驟時舅列,注意按照之前的設置填寫肌割,其他按照提示內(nèi)容配置即可
二、Zabbix的監(jiān)控配置
(一)監(jiān)控配置的一般順序
host groups --> host --> application --> item --> trigger --> action (conditions, operations)
(二)items的設置: key+parameter
(1)key:分為兩種
zabbix內(nèi)建:按照數(shù)據(jù)采集通道的不同分布不同的類別帐要,如:
agent (server:pull)
agent(active) (agent:push)
snmp v1用戶自定義(UserParameter)
(2)采集到的數(shù)據(jù)的類型:
- 數(shù)值:整數(shù)把敞,浮點數(shù)
- 字符串:字符串,文本
(3)存儲的值:
- As is:不對數(shù)據(jù)做任何處理
- Delta(simple change):本次采樣減去前一次采樣的值的結果
- Delta(speed per second):本次采樣減去前一次采樣的值榨惠,再除以經(jīng)過的時長
(三)trigger的配置:
邏輯表達式奋早,通常用于定義數(shù)據(jù)的不合理區(qū)間(閾值)
OK:正常狀態(tài)
PROBLEM:非正常狀態(tài)觸發(fā)器表達式:
{hostname:key[paramters].function(arguments) }觸發(fā)器存在可調(diào)用的函數(shù):
nodata(), last(), date(), time(), now(), dayofmonth()等Severity:嚴重等級,依次遞增
Not classified, Information, Warning, Average, High, Disaster
(四)event事件機制:
(1)四種事件源:
trigger, discovery, auto registration, internal
(2)Media:媒介赠橙,告警信息的傳遞通道
類型:
Email:郵件
Script:自定義腳本
SMS:短信接收信息的目標為zabbix用戶:需要用戶上定義對應各種媒介通道的接收方式
(3)Action:
- conditions:多個條件之間存在邏輯關系
- operations:條件滿足時觸發(fā)的操作
(4)send message耽装,通知:
-
Media type:傳遞信息的通道
- Script:報警腳本
腳本放置路徑:zabbix_server.conf配置文件中AlertScriptsPath參數(shù)定義的路徑下,默認/usr/lib/zabbix/alertscripts/
zabbix服務器在調(diào)用腳本時期揪,會向其傳遞三個參數(shù)掉奄,此三個變量定義為內(nèi)部宏:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
信息接收人:
User Groups
Users: Admin
(5)remote command,遠程命令:
功能:在agent所在的主機上運行用戶指定的命令或腳本
-
前提:在agent需要完成的配置
zabbix用戶擁有所需要的管理權限
編輯/etc/sudoers文件凤薛,注釋如下行
Defaults requiretty
添加如下行:
zabbix ALL=(ALL) NOPASSWD: ALLagent進程要允許執(zhí)行遠程命令
編輯/etc/zabbix/zabbix_agentd.conf姓建,設置如下配置:
EnableRemoteCommands=1
(五)實驗:實現(xiàn)監(jiān)控遠程主機
實驗2:監(jiān)控遠程主機的nginx服務是否正常運行;若不正常枉侧,嘗試重啟服務引瀑;若重啟服務仍舊不能使服務恢復運行,則向指定地址發(fā)送告警郵件
實驗前提:按照實驗1的要求榨馁,在被監(jiān)控的遠程主機上安裝agent端并正確配置
- 步驟1:建立host groups憨栽,名為websrvs
- 步驟2:建立hosts,監(jiān)控主機node0.hellopeiyang.com
- 步驟3:建立items
通過監(jiān)聽80端口確認nginx服務狀態(tài)翼虫,監(jiān)控間隔時間5s屑柔,返回值轉換為"Service state"格式,將本item歸集至名為"nginx stats"的application中
- 步驟4:建立triggers
嚴重性定義為"High"珍剑,當最近3次測試tcp的80端口服務均不可用時掸宛,觸發(fā)本trigger
- 步驟5:建立event前先定義media媒介
本實驗報警信息通過email方式發(fā)送,故需要配置Media types中email的選項卡
- 步驟6:定義actions
設定執(zhí)行action的條件是“不處于維護狀態(tài)招拙,并且觸發(fā)了nginx服務不可用為真的trigger”
設定支持action的動作:1. 在遠程主機重啟nginx服務唧瘾;2. 若執(zhí)行動作1的60s后仍舊無法恢復正常,則向指定用戶發(fā)送郵件
定義動作1的具體配置别凤,為了能夠成功執(zhí)行遠程命令饰序,還需要在被監(jiān)控主機上做如下配置
visudo
zabbix ALL=(ALL) NOPASSWD: ALL // 配置sudo權限
vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1 // 允許執(zhí)行遠程命令
systemctl restart zabbix-agent
定義動作2的具體配置,注意按照步驟5定義選擇媒介
定義異常成功恢復時的操作规哪,此處定義為發(fā)郵件
- 步驟7:測試
關閉被監(jiān)控主機求豫,同時確保不能重啟nginx服務。可以在dashboard中看到監(jiān)控到nginx服務不可用蝠嘉,觸發(fā)了設置的trigger最疆,同時執(zhí)行了actions
執(zhí)行actions的詳細情況:先執(zhí)行重啟服務的遠程命令失敗,60s后發(fā)送郵件成功
確認成功接收到了郵件
手動啟動nginx服務蚤告,dashboard中的監(jiān)控已經(jīng)恢復正常努酸,同時acitons數(shù)增加1
查看actions具體情況,增加的action為恢復服務發(fā)送郵件
確認成功接收到了服務恢復通知郵件
此次確保在nginx服務不可用時遠程執(zhí)行命令重啟服務成功罩缴;當nginx服務不可用時蚊逢,自動恢復服務成功,只執(zhí)行了2個actions
查看actions具體情況箫章,分別是成功執(zhí)行遠程命令重啟nginx服務和發(fā)送服務恢復通知郵件
三烙荷、Zabbix的展示接口
(一)graph:圖形
(1)graph的分類:
- simple:默認生成,一張圖展示一個item
- custom:自定義檬寂,可以將多個item的指標展示在一張圖中
(2)實驗:實現(xiàn)自定義graph
實驗3:自定義一張圖终抽,實現(xiàn)在一張圖中顯示rate of packets(in) 和 rate of packets(out)兩個item
- 步驟1:自定義圖,Y軸最大值120桶至,rate of packets(in)的繪制風格為漸進色
- 步驟2:在Monitoring=>Graphs中昼伴,可以看到自定義的graph
(二)screen:
把多個graph整合于同一屏幕進行展示
-
實驗4:實現(xiàn)將多個graph整合在一個screen中
- 步驟1:定義screen的名稱"node1 status",2行×2列排布
- 步驟2:分別編輯每個“格子”鏈接的graph
- 步驟3:最終效果如下
(三)slide show:幻燈片
把多個screen以slide show的方式進行展示
-
實驗5:實現(xiàn)多個screen幻燈片方式循環(huán)展示
- 步驟1:首先準備好兩個以上的screen
- 步驟2:創(chuàng)建slide_shows镣屹,包含之前定義的screen圃郊,切換間隔5s
(四)map:
- 用于展示網(wǎng)絡連接拓撲,直觀查看連接狀態(tài)
四女蜈、templates持舆,模板:
主機配置模板:用于鏈接至目標主機實現(xiàn)快速監(jiān)控管理
實現(xiàn):通過在主機選項中鏈接模板,快速添加items, triggers, graphs等
- 模板可繼承:一個模板可以鏈接至其他模板
五伪窖、macros逸寓,宏:
定義:預設的文本替換模式
用途:當需要重復使用某個值,且此值需要統(tǒng)一變動時覆山,此時適用宏的使用
級別:
全局:Administration --> General --> Macros
模板:編輯模板 --> Macros
主機:編輯主機 --> Macros類型:
內(nèi)建:{MACRO_NAME}
自定義:{$MACRO_NAME}竹伸,命名方式:大寫字母、數(shù)字和下劃線-
實驗6:使用宏定義redis的監(jiān)聽端口簇宽,在定義item過程中使用宏
- 步驟1:定義主機宏{$REDIS_PORT}
- 步驟2:定義items勋篓,端口號可以直接用定義的宏{$REDIS_PORT}代替