zabbix學(xué)習(xí)

作者:吳兆松(網(wǎng)名:itnihao)

“他始終堅信,技術(shù)的積累只是時間問題,解決問題的思路和思想高于具體的技術(shù)細(xì)節(jié)”

第一章 監(jiān)控系統(tǒng)簡介

1,那些東西需要監(jiān)控

底層支持,硬件,存儲,網(wǎng)絡(luò)設(shè)備,網(wǎng)絡(luò)環(huán)境

系統(tǒng)架構(gòu),操作系統(tǒng),虛擬化,集群

上層應(yīng)用,數(shù)據(jù)庫,應(yīng)用軟件

2,監(jiān)控系統(tǒng)的實現(xiàn)

數(shù)據(jù)采集,客戶端實現(xiàn)

數(shù)據(jù)存儲分析展示告警,服務(wù)端實現(xiàn)

a,被動模式:對server開銷大,可以實現(xiàn)無agent方式

b,主動模式:客戶端實現(xiàn),server保持心跳

一個監(jiān)控系統(tǒng)應(yīng)該支持主動上報(主動模式)和定時采集(被動模式),這里站的角度是agent的角度

一個大規(guī)模分布式的監(jiān)控系統(tǒng),需要支持C/P/S(client,proxy,server),兼容異地多機(jī)房

可能存在的問題,告警洪水?數(shù)據(jù)延遲?專線帶寬占用?

3,開源監(jiān)控系統(tǒng)現(xiàn)狀

Cacti,仙人掌,RRDtool繪圖,網(wǎng)絡(luò)流量監(jiān)測圖形分析軟件

Smokeping,常規(guī)的ping,dns,ssh性能監(jiān)控,RRDtool底層,網(wǎng)絡(luò)丟包和延時

Opentsdb,開源時序數(shù)據(jù)庫,支持秒級數(shù)據(jù)采集和告警

Zabbix,大規(guī)模分布式監(jiān)控系統(tǒng),功能豐富,可擴(kuò)展,易用,支持二次開發(fā)等優(yōu)點

4,監(jiān)控系統(tǒng)的前世今生

為什么監(jiān)控?突發(fā)的流量,突發(fā)的訪問量,突發(fā)的負(fù)載,通知運維,介入修復(fù)

怎么實現(xiàn)?

a,支持完整的指標(biāo)

b,支持和其他業(yè)務(wù)的擴(kuò)展關(guān)聯(lián),包括cmdb,cas,和告警需求

c,api接口和api文檔

d,數(shù)據(jù)匯總和容量評估

未來的目標(biāo)?業(yè)務(wù)價值的持續(xù)提升,業(yè)務(wù)無中斷

第二章 zabbix介紹

1,zabbix先知

zabbix用戶群體大,文檔齊全,社區(qū)繁榮,單節(jié)點理論支持 5w設(shè)備,適合企業(yè)需要

zabbix使用簡單,從入門都高級,都有可以擴(kuò)展和參考的地方

2,zabbix架構(gòu),數(shù)據(jù)壓力,nvps,number of processed values per second(每秒處理的數(shù)據(jù)值)

通用 C/S 分布式 C/P/S or C/N/S

watchdog,

housekeeper,刪除過期數(shù)據(jù)

alerter,

poller,

httppoller,

discoverer,

pinger,

db_config_syncer,

db_data_syncer,

nodewather,

timer,

escalator,

3,zabbix功能特性

a,多樣化的數(shù)據(jù)收集,自帶的和擴(kuò)展的,支持網(wǎng)絡(luò)發(fā)現(xiàn)

b,高度定制的告警觸發(fā),通知,處理

c,實時的繪圖,歷史的存儲,多樣話的界面展示

d,訪問快速,配置簡單,自帶審計

e,api完備,c語言編寫,性能非常高

第三章 安裝與部署

1,安裝條件

a,內(nèi)存 4core 4GB >1000, 8core 8GB >10000

b,硬盤占用:history=items*3600*24*days*byte(byte取決于數(shù)據(jù)庫引擎,一般是 50B)

trends=items*3600*24*day*byte(byte取決于數(shù)據(jù)庫引擎,一般是128B)

events=events*24*3600*byte(byte取決于數(shù)據(jù)庫引擎,一般是130B)

c,操作系統(tǒng),數(shù)據(jù)庫版本,web前端,zabbix-server依賴庫,ntp時間同步

2,zabbix-server端安裝步驟

a,安裝zabbix官方源和 epel源

b,yum 安裝zabbix-server

c,安裝mysq數(shù)據(jù)庫,導(dǎo)入數(shù)據(jù)表

d,配置zabbix_server.conf文件,啟動zabbix-server

e,配置防火墻,selinux和文件權(quán)限

f,配置web界面,指定數(shù)據(jù)庫和php頁面配置

g,常見的異常和故障解決

3,zabbix-agent安裝

a,linux安裝

rpm -ivh 安裝,rpm包可以定制,參考第十五章

iptables打開防火墻

配置zabbix_agentd.conf文件

b,windows安裝

安裝配置,下載安裝包解壓

注冊服務(wù),zabbix_agentd.exe --install

啟動服務(wù),net start “Zabbix Agent” net stop "Zabbix Agent"

c,zabbix_get? 數(shù)據(jù)獲取測試命令,相當(dāng)于 snmp中的snmpwalk

zabbix_get -s <host/ip> -p <port>? -I <ip addr> -k <key>

4,zabbix-server

a,存儲,優(yōu)化housekeeper,數(shù)據(jù)表分區(qū)

b,源碼init閱讀

c,高可用和安全,設(shè)置嚴(yán)格的防火墻策略,關(guān)注漏洞

d,數(shù)據(jù)備份,排除歷史數(shù)據(jù)表,保留配置表

刪除 history* trends* Acknowledges* Alerts Auditlog Events service_alarms

第四章 快速配置和使用

1,忘記zabbix密碼

mysql> select * from zabbix.users where alais='Admin';

mysql> update zabbix.users set passwd=md5('zabbix') where alias='Admin';

mysql> flush privileges;

2,配置流程

Host groups 主機(jī)組? ----> Hosts 主機(jī) ---->? Applications 監(jiān)控項組 ---->? Items 監(jiān)控項 ----> Triggers 觸發(fā)器 ----> Event 事件 ----> Actions 處理動作 ----> User groups 用戶組 ----> Users 用戶 ----> Medias 告警媒介----> Audit 審計日志

3,主機(jī)組的添加

分組管理策略:

a,以地理位置的維度劃分

b,以業(yè)務(wù)為單位劃分

c,以機(jī)器用戶劃分

d,以系統(tǒng)版本劃分

e,以應(yīng)用程序劃分

f,其他方式劃分方法

mysql> select * from zabbix.groups;

4,模板的添加

基于主機(jī)的同類數(shù)據(jù)的歸納抽象,統(tǒng)一成模板。模板可以繼承,模板可以關(guān)聯(lián)模板

模板中 宏的概念?

5,添加主機(jī)

必填項 hostname,visible name,groups,agent interfaces,ip address,port,status

主機(jī)使用link關(guān)聯(lián)模板,取消模板關(guān)聯(lián)的時候,unlink不會把已經(jīng)添加的數(shù)據(jù)給清理掉,unlink and clear,不僅去除關(guān)聯(lián),而且清除模板中的關(guān)聯(lián)指標(biāo)和數(shù)據(jù)

6,graphs圖像? >> screen 視圖? >> slide shows 幻燈片

graphs type,normal線條圖,stacked疊圖,pie餅圖,exploded分解餅圖

simple graph是item自帶的繪圖,不需要單獨配置

7,map地圖

8,web scenario撥測

監(jiān)控web程序的下載速度,放回碼及相應(yīng)時間,可以把一組連續(xù)的web作為一組撥測場景

通過腳本或者程序,使用curl命令,http庫實現(xiàn)需求

9,IT服務(wù)

IT服務(wù)時間可用性度量帶來的好處:

a,對提高服務(wù)的持續(xù)性提供數(shù)據(jù)依據(jù)

b,明確服務(wù)提供過程中的薄弱點

c,迫使服務(wù)得到有效的監(jiān)控

d,為服務(wù)成本提供數(shù)據(jù)支撐

IT服務(wù)可用性指標(biāo)包括:

a,服務(wù)的范圍和定義,劃分邊界

b,服務(wù)重要性定義,區(qū)分核心和非核心

c,服務(wù)數(shù)量級定義

d,服務(wù)不可用造成的業(yè)務(wù)影響程度評估

e,服務(wù)的可用時間,關(guān)鍵時間,次要時間,計劃中斷時間,容許的不可用時間等時間指標(biāo)定義

可用性分級為,持續(xù)性100%,容錯性100.00%,彈性99.99%,高可用99.90%,一般可用99%-95%

10,Availability report可用性報表,Host inventory資產(chǎn)管理

第五章 深入配置和使用

1,Items 監(jiān)控項

Item里面有什么? 獲取數(shù)據(jù)的方式,取值的數(shù)據(jù)類型,取值的間隔,歷史數(shù)據(jù)保存周期,趨勢數(shù)據(jù)保存周期,key分組等

Items添加,必選項,name,type,key,host interface。。。

2,key 鍵值

key格式 key[接參數(shù)],參數(shù)分為 引號字符串,非引號字符串,數(shù)組

引號字符串,用反斜杠 \ 轉(zhuǎn)義,非引號字符串一般能用,數(shù)據(jù)字符串用逗號 ,分開

key值返回類型,character,log,text,無效顯示為ZBX_NOTSUPPORTED

3,Items類型

zabbix-agent,默認(rèn)被動模式,passive,主動模式,active

自帶的常用key 分類和示例:

a,網(wǎng)絡(luò)的

net.if.in[eth0] 獲取eth0 的流量,等同于 net,if.in[eth0,bytes]

net.if.in[eth0,packets] 獲取eth0網(wǎng)卡接收的包量

net.if.out[if,<model>]

net.if.colisions[if]

net.if.total[if,<mode>]

數(shù)據(jù)來源于,ip a

b,端口的

net.tcp.listen[port]

net.tcp.port[<ip>,<port>]

net.tcp.service[service,<ip>,<port>]

net.tcp.service.perf[service,<ip>,<port>]

net.udp.listen[port]

數(shù)據(jù)來源于 netstat

c,監(jiān)控進(jìn)程的

kernel.maxfiles

kernel.maxproc

proc.mem[<name>,<user>,<mode>,<cmdline>]

proc.nu[<name>,<user>,<state>,<cmdline>]

數(shù)據(jù)來源于 proc文件

d,監(jiān)控CPU和內(nèi)存的

system.cpu.intr

system.cpu.load[<cpu>,<mode>]

system.cpu.num[<type>]

system.cpu.switches

system.cpu.util[<cpu>,<type>,<mode>]

vm.memory.size[<mode>]

system.swap.in[<device>,<type>]

system.swap.out[<device>,<type>]

system.swap.total[<device>,<type>]

e,磁盤IO的

vfs.dev.read[<device>,<type>,<mode>]

vfs.dev.read[<device>,<type>,<mode>]

vfs.fs.inode[fs,<mode>]

f,文件監(jiān)控的

vfs.file.cksum[file]

vfs.file.contents[file,<encoding>]

vfs.file.exits[file]

vfs.file.md5sum[file]

vfs.file.regexp[file,regex,<encoding>,<start line>,<end line>,<output>]

vfs.file.size[file]

vfs.file.time[file,<mode>]

vfs.fs.discovery

vfs.fs.size[fs,<mode>]

g,日志監(jiān)控的

log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>]

logrt[file_pattern,<regexp>,<encoding>,<maxlines>,<mode>,<output>]

simple-check用于無客戶端環(huán)境的檢查

常用key 分類和示例:

icmpping[<target>,<packets>,<interval>,<size>,<timeout>]

icmppinglosss[<target>,<packets>,<interval>,<size>,<timeout>]

icmppingsec[<target>,<packetes>,<interval>,<size>,<timeout>,<mode>]

net.tcp.service[service,<ip>,<port>]

zabbix-agent active模式

案例:日志的監(jiān)控,這里選日志是因為日志的監(jiān)控需要使用主動模式

zabbix internal 監(jiān)測zabbix server或者proxy 的自身性能數(shù)據(jù),自帶又server,proxy,agent

SSH,Telent和擴(kuò)展檢測

4,Macros 宏的配置

宏的作用是便于在模板 Template,指標(biāo) Items,觸發(fā)器 Trigger中的引用,{$名稱},比如{$SSH_PORT}

全局宏,Administration > General > Macros,作用于 模板,主機(jī)

模板宏,顧名思義,作用于模板,Configuration > Template > Macros

主機(jī)宏,Configuration > Hosts > Macros

5,維護(hù)時間 Maintenance

6,事件確認(rèn) Ack

第六章 告警和配置

告警是監(jiān)控的職能,zabbix的告警流程如下:

Host Groups 設(shè)備組 ---> Hosts 設(shè)備 ---> Applications 監(jiān)控項組 ---> Items 監(jiān)控項 ---> Triggers 觸發(fā)器 ---> Actions告警動作 ---> Medias告警媒介 ---> User Groups用戶組 --->? Users 用戶

告警的必備條件:有觸發(fā)器,有告警動作,有通知用戶,有通知媒介

1,Trigger 的配置

Trigger狀態(tài)兩種,OK,PROBLEM,tigger之間可以有不同的安全級別

Trigger 添加配置,name,expression,description,url,serverity,enable等項目

一個expression包含,item 監(jiān)控值,function正則邏輯表達(dá)式,last of time時間,time shit,時間偏移

serverity的等級分類,基本上通用所有監(jiān)控系統(tǒng)

a,Not classified,未知等級

b,Information,一般信息

c,Warning,警告信息

d,Average,一般故障

e,High,高級別故障

f,Disaster,致命故障

2,Trigger 告警依賴

場景:機(jī)房路由異常,agent會批量告警

3,常用單位

計時單位:S,second秒 m,minutes分鐘 h,hour小時 d,days天數(shù) w,weeks星期

計量單位:K,kilo M,mega G,giga

4,表達(dá)式? function+function parameter +運算符+ 滯留狀態(tài)

eg,

滯留狀態(tài)?? {TRIGGER.VALUE}=0 OR 1

溫度大于20度告警,小于15度才算恢復(fù),告警和恢復(fù)的閾值之間是一個間隔,不是一個具體值

({TRIGGER.VALUE}=0&{&SERVER:TEMP.LAST(0)}>20 )| ({TRIGGER.VALUE}=1&{SERVER:TEMP.LAST(0)}>15)

5,trigger函數(shù),這個一次是記不住的,只能是后面邊學(xué)習(xí)邊使用

a,abschange,差值的絕對值

b,avg,時間間隔的平均值

c,change

d,count,指定時間間隔的數(shù)值統(tǒng)計

e,date,返回當(dāng)前日期,dayteofmonth,返回當(dāng)前月的第幾天,dayofweek,返回當(dāng)前星期的第幾天

f,delta,max()-min(),最大值減去最小值

g,diff,返回1說明有差異,返回0為其他情況

h,fuzzytime,常用system.localtime來檢查本地時間與zabbix-server的時間同步

i,iregexp,與regexp類似,區(qū)別是不區(qū)分大小寫,支持 str,log,text

j,last,最近的值,#num表示最近的第n個值(往前數(shù)),當(dāng)前的#num和其他函數(shù)的#num有差別

k,logeventid,返回日志條目的id是否符合正則,logserverity,返回最近日志條目的日志等級,logsource,檢查是否匹配日志來源

l,max,返回指定時間間隔的最大值,min,返回指定時間間隔的最小值

m,nodata,返回值為1表示指定時間(間隔不小于30s)沒有數(shù)據(jù),0為其他情況

n,now,返回距離Epoch(1970年1月1日 00:00:00 UTC)時間的秒數(shù)

o,pre,返回之前的值,類似于last(#2)

p,str,查找最近值中的字符串

q,strlen,指定最近值的字符串長度,用法類似 last(#3)

r,sum,返回指定時間間隔內(nèi)的值總和,float 和int

s,time,放回當(dāng)前時間,yyyyddmm HHMMSS

6,Action 是觸發(fā)器 trigger被觸發(fā)后,產(chǎn)生事件 events之后的一系列動作 actions,

Trigger events,discovery events,auto registration events,internal events

Action 配置內(nèi)容,Action 動作 --> Conditions --> Operations

a,Action的基本內(nèi)容,name,subjiect,message defind,status。subject和message都是需要用 macros 宏

常用的macros宏包括:{TRIGGER.NAME},{TRIGGER.STATUS},{HOST.HOST},{ITEM.KEY},{TRIGGER.EXPRESSION},{EVENT.STATUS},{EVENT.AGE}

b,Condiction配置中的邏輯運算

=,條件等于 >=,條件大于或等于 <=,條件小于或等于 <>,排除 like,部分匹配 not like,部分不匹配 in,在范圍內(nèi) not in,不在范圍內(nèi)

默認(rèn)創(chuàng)建的action會包含兩個condiction,Trigger.value = problem &&? maintenance status = not in mantainance

Operation功能,send message發(fā)送消息,執(zhí)行遠(yuǎn)程命令 remote command

告警消息發(fā)送配置注意點,media配置,user permission用戶權(quán)限,message audit日志審計

Romote command執(zhí)行遠(yuǎn)程命令配置

a,操作涵蓋,拉起應(yīng)用服務(wù)(web服務(wù),中間件,crm),通過IPMI協(xié)議遠(yuǎn)程重啟,磁盤滿了之后,清理磁盤空間,CPU負(fù)載高后的VM遷移,資源不足下的擴(kuò)容

b,注意點,遠(yuǎn)程命令不支持agent主動模式,server -->agent,不支持代理,長度限制255字符,zabbix用戶有命令執(zhí)行權(quán)限,開通防火墻,zabbix不返回命令執(zhí)行狀態(tài)

c,EnableRometCommands =1

Media 告警媒介配置,mail郵件,sms短信,wechat微信,dingding釘釘

自定義告警腳本,/etc/zabbix/zabbix_server.conf AlaertScriptsPath=/etc/zabbix/alertscripts

zabbix-server 在調(diào)用腳本的時候,會傳遞三個變量參數(shù)給腳本作為位置參數(shù),$1是收件人,$2是主題,$3是內(nèi)容

7,告警升級機(jī)制,梯度告警處理

eg,示例1

default operation step duraton,告警時間間隔,120(minimum 60 seconds)

steps details start in durations(seconds)

1-2 send message to users(admin) via send-mail immediately 60

3-5 send message to users(admin) via send-sms 00:02:00 60

6-7 send message to users(manager) via send-sms 00:05:00 default

第一梯度,1,2步,通過郵件發(fā)送給admin用戶,間隔60s,發(fā)送2次

第二梯度,3,5步,告警發(fā)送2分鐘后,通過短信發(fā)送給admin用戶,間隔60s,發(fā)送3次

第三梯度,6,7步,告警發(fā)生5分鐘后,通過短信發(fā)送給manager用戶,默認(rèn)時間間隔 120s,發(fā)送2次

eg,示例2

default operation step duration,告警時間間隔,120(minimum 60 seconds)

steps details start in durations(seconds)

1-0 send message to users(admin) via send-mail immediately 60

5-7 send message to users(manager) via send-sms 00:04:00 90

第一梯度,1,0步,通過郵件發(fā)送給admin用戶,間隔60s,發(fā)送次數(shù)不限制,直到告警恢復(fù)為止

第二梯度,5,7步,告警發(fā)生4分鐘后,通過短信發(fā)送給manager用戶,間隔90s,發(fā)送3次

eg,示例3

default operation step duration,告警時間間隔,1800(minimum 60 seconds)

steps details start in durations(seconds)

1-0 send message to users groups(mysql admin) via send-mail immediately default

5 send message to users groups(mysql manager) via send-mail 02:00:00 default

6 run remote commands on current host 02:30:00 default

7 send message to user groups(mysql admin) via send-sms 03:00:00 default

8 run remote commands on current host 04:00:00 default

第一梯度,1,0步,通過郵件發(fā)送給mysql admin用戶組,間隔1800s即30分鐘,發(fā)送次數(shù)不限制,直到告警恢復(fù)為止

第二梯度,5步,告警發(fā)生2小時后,通過郵件發(fā)送給mysql manager用戶,發(fā)送1次

第三梯度,6步,告警發(fā)生后的2小時30分鐘,執(zhí)行遠(yuǎn)程重啟mysql命令

第四梯度,7步,告警發(fā)生后的3小時,短信通知mysql admin用戶組

第五梯度,8步,告警發(fā)生的4小時候后,執(zhí)行遠(yuǎn)程命令,通過IPMI重啟當(dāng)前主機(jī)

step設(shè)置從1 --> 0 時,一直發(fā)送告警,直到告警恢復(fù)

step設(shè)置從1 --> 1 時,告警只發(fā)送1次,后面不再重復(fù)發(fā)送

8,常見故障排查

a,檢查腳本權(quán)限,告警賬號配置

b,檢查告警機(jī)器讀取權(quán)限,檢查告警屏蔽策略

c,檢查zabbix-server日志和audit審核日志

第七章 監(jiān)控方式剖析

1,zabbix支持的監(jiān)控方式包括 Agent(tcp端口)、SNMP(udp端口)、JMX(jmx服務(wù))、IPMI(ipmi協(xié)議)

2,Agent監(jiān)控方式,主動和被動,第八章詳細(xì)講

3,Trapper監(jiān)控方式

trapper可以發(fā)送任意數(shù)據(jù)到服務(wù)器,主動推送,需要安裝 zabbix-sender

zabbix_sender -z host -p port -s “hostname” -k key -o message -vv verbose

4,SNMP監(jiān)控方式

Simple Network Managerment Protocol,簡單網(wǎng)絡(luò)管理協(xié)議,管理進(jìn)程 和被管理設(shè)備

基于TCP/IP的網(wǎng)絡(luò)管理包含三部分:

a,管理信息庫,management information base,MIB,主要是參數(shù)

b,管理信息結(jié)構(gòu),stucture fo management information,SIM,主要是公式和表示符號

c,簡單網(wǎng)絡(luò)管理協(xié)議,simple network management protocol,通訊協(xié)議

協(xié)議包含的命令有:Get,GetNext,Set,Response,Trap,前4個命令使用UDP協(xié)議,使用161端口,trap命令,使用UDP協(xié)議,使用162端口

snmpwalk -v 2c -c public 127.0.0.1 snmpwalk -v 2c -c public 127.0.0.1 SNMPv2-MIB::sysUpTime.0

5,IPMI監(jiān)控方式

IPMI,Intelligent Platform Managerment Interface,智能平臺管理接口,可以利用IPMI檢測服務(wù)器的物理特征,包括溫度,電壓,電扇,電源和機(jī)箱

yum install -y OpenIPMI impitool && /etc/init.d/ipmi start && /etc/init.d/ipmievd start

6,JMX監(jiān)控方式

JMX,Java Management Extendions,JAVA擴(kuò)展管理,是管理功能框架

java application --> zabbix-java-gateway --> zabbix server

配置JMX監(jiān)控的步驟:

a,安裝Zabbix-Java-Gateway,配置 zabbix_java_gateway.conf參數(shù)

b,配置zabbix_server.conf參數(shù)

c,java application 開啟JMX協(xié)議

d,web配置監(jiān)控的指標(biāo)和閾值

監(jiān)控java程序,配置java啟動參數(shù),監(jiān)控tomcat,配置catalina.sh腳本,監(jiān)控weblogic,配置setDomianEnv.sh

7,命令的執(zhí)行

system.run是zabbix agent 自帶的一個key,默認(rèn)不能使用,要使用需要打開 zabbix_agentd.conf中的 EnableRemoteCommands=1

第八章 分布式監(jiān)控

1,zabbix是一個分布式的監(jiān)控系統(tǒng),支持一個中心,多個節(jié)點的分布模式,適用于跨機(jī)房,跨地域的網(wǎng)絡(luò)監(jiān)控

zabbix agent -->? zabbix proxy --> firewalld --> zabbix server

2,agent的主動模式 和被動模式

默認(rèn)是被動模式,zabbix_agentd.conf中的 Server= 配置

server 向 agent請求數(shù)據(jù),<item key>\n,agent 向 server響應(yīng)數(shù)據(jù),<HEADER><DATALEN><DATA>

被動模式的流程:

a,server打開一個tcp鏈接

b,server發(fā)送一個key為agent.ping\n

c,agent接收到這個請求,然后響應(yīng)數(shù)據(jù)<HEADER><DATALEN>1

d,server對接收的數(shù)據(jù)進(jìn)行處理

e,tcp連接關(guān)閉

主動模式的配置,需要配置 ServerActive=Server IP,配置后重啟agent生效

批量修改模式,可以選擇所有item 后,選擇 mass update 批量修改

agent向server請求檢測列表,返回的item以json返回,包括 key,delay

請求列表的運行流程:

a,agent向server建立一個tcp連接

b,agent請求需要檢測的數(shù)據(jù)列表

c,server響應(yīng)agent,發(fā)送一個item列表,(item key,delay)

d,agent響應(yīng)請求

e,tcp連接完成本次會話后關(guān)閉

f,agent開始周期的收集數(shù)據(jù)

agent向server發(fā)送采集數(shù)據(jù),也是以json,host,keyi,value,clock

發(fā)送數(shù)據(jù)的運行流程:

a,agent向server建立一個tcp連接

b,agent發(fā)送在采集周期內(nèi),需要采集的數(shù)據(jù)給server

c,server處理agent發(fā)送的數(shù)據(jù)

d,tcp連接關(guān)閉

第九章 zabbix與自動化運維

zabbix的自動化,網(wǎng)絡(luò)自動發(fā)現(xiàn),主動注冊,LLD等自帶的自動化功能,對解決監(jiān)控自動化運維具有不可比擬的優(yōu)勢,同時考慮對配置的文件的管理,涉及到salt自動化配置工具,從工具層面展示自動化運維底層的配置管理。

自動化的目的,使用是減少工作量,提高工作效率

1, 自動添加主機(jī),自動添加模板,自動分組,自動添加監(jiān)控項,觸發(fā)器等 --->>> 網(wǎng)絡(luò)自動發(fā)現(xiàn),自動注冊

自動添加監(jiān)控項中有規(guī)律的變量 --->>> LLD,自動發(fā)現(xiàn)

2,server端網(wǎng)絡(luò)發(fā)現(xiàn),完成快速發(fā)現(xiàn)并添加主機(jī),簡單的管理,隨著環(huán)境改變快速更新監(jiān)控系統(tǒng)

網(wǎng)絡(luò)發(fā)現(xiàn)實現(xiàn)基于以下信息:ip地址段,基于服務(wù)的ftp,ssh,pop協(xié)議信息,zabbix-agent上報,snmp agent上報

a,配置自動發(fā)現(xiàn)規(guī)則,Configuration 配置 ---> Discovery 發(fā)現(xiàn) ---> Creat discovery rule 創(chuàng)建自動發(fā)現(xiàn)規(guī)則

b,配置自動發(fā)現(xiàn)動作,Configuration 配置 ---> Action 動作 ---> 選擇 event source ---> Discovery ---> 添加actions

sending notification #發(fā)送通知 adding/removing hosts #添加/刪除監(jiān)控主機(jī) enabling/diabling hosts #開啟/關(guān)閉主機(jī)監(jiān)控

removing hosts from a group #從一個組中移除一個監(jiān)控設(shè)備 excuting remote scripts #執(zhí)行遠(yuǎn)程腳本

c,檢查自動發(fā)現(xiàn)歷史,Monitoring 監(jiān)控 ---> Discovery 自動發(fā)現(xiàn)

網(wǎng)絡(luò)發(fā)現(xiàn)的強大在于,短時間自動添加成百上千的機(jī)器,自動添加模板,自動分組功能依賴于標(biāo)準(zhǔn)化交付

3,agent主動方式的自動注冊,Active Agent Auto-Registration,主動自動發(fā)現(xiàn)功能,適用于云環(huán)境下,ip端不集中,agent可以和server聯(lián)系,使用 HostMetadata 或者HostMetaDataItem 來做自動注冊的條件判斷,擴(kuò)展自動注冊的篩選過濾

4,Low level discovery,LLD自動發(fā)現(xiàn),適用于具有共同特性的一組變量,完成過程分為兩步,1、自動發(fā)現(xiàn)特定變量的名稱,2、添加變量的item

LLD發(fā)現(xiàn)的數(shù)據(jù)是一個json格式,設(shè)計到轉(zhuǎn)制的問題,使用 zabbix-get驗證

5,LLD配置案例,監(jiān)控多個url的狀態(tài)碼

a,zabbix agent 配置,添加server serveractiv配置,添加zabbix_agentd.conf/下配置

b,編寫low level discovery腳本,可以使用shell,使用python,perl代碼會更簡潔,目的是輸出json格式內(nèi)容

c,自定義key配置文件,設(shè)置 userparameter值,使用zabbix_get驗證數(shù)據(jù)

d,頁面先添加模板,添加 LLD規(guī)則,使用{#SITENAME}定義宏(macro),使用$1來代表檢測出來的url,配置item,trigger,graph

e,host管理模板,完成LLD規(guī)則對應(yīng)

6,saltstack,chef,puppet等自動化部署、配置文件管理與zabbix的協(xié)作

第十章 使用經(jīng)驗和技巧分享

1、如何有效的設(shè)置監(jiān)控告警

監(jiān)控告警消息的發(fā)送,是一件特別慎重的事情,處理得好,會提高響應(yīng)速度,反之,則會影響工作情緒,影響工作效率,進(jìn)而導(dǎo)致反感

監(jiān)控告警信息的需求有:

a,基于業(yè)務(wù)類型,區(qū)分基礎(chǔ)運維,應(yīng)用運維,網(wǎng)絡(luò)運維,業(yè)務(wù)運維,不同的告警發(fā)送不同的用戶

b,基于故障級別,低級故障一線運維處理,嚴(yán)重故障運維負(fù)責(zé)人處理,災(zāi)難故障通知部門負(fù)責(zé)人,特大故障周知其他部門領(lǐng)導(dǎo)

c,基于時間發(fā)送,設(shè)置維護(hù)期,設(shè)置非工作時間的告警發(fā)送級別

d,基于故障的相關(guān)依賴,避免告警的洪水泛濫,關(guān)聯(lián)業(yè)務(wù)嘗試腳本自動操作

告警信息的定制需要關(guān)注以下內(nèi)容:

a,哪些業(yè)務(wù)需要告警?

b,哪種故障需要告警?

c,告警等級如何劃分/

d,故障依賴關(guān)系如何定義?

e,告警信息如何匯總?

f,如何做到精準(zhǔn)有效的告警

2,監(jiān)控項適當(dāng)添加item圖形,擴(kuò)展默認(rèn)圖標(biāo)

3,針對默認(rèn)的觸發(fā)器調(diào)整,以適應(yīng)本地生產(chǎn)需求

4,數(shù)據(jù)圖斷圖的情況,此類情況有通用思路,但是要具體問題具體分析

a,系統(tǒng)負(fù)載高

b,tcp連接數(shù)過多

c,網(wǎng)絡(luò)異常

d,數(shù)據(jù)獲取異常

e,數(shù)據(jù)庫無法更新

第十一章 監(jiān)控案例

1,監(jiān)控TCP連接數(shù)

ss命令,ss state all |awk '{++S[$1]}' END {for (a in S) {printf "%ll -s %s\n",a,S[a]}}'

netstat命令,netstat -an|awk '/^tcp/ {++S[$NF] }' END {for (a in S) {printf "%ll -s %s\n",a,S[a]}}'

cat /proc/net/tcp文件,0A代表tcp_listen,0B代表tcp_closing

2,監(jiān)控nginx

nginx.conf配置中添加 /nginx_status頁面,curl "127.0.0.1/nginx_status” |awk ‘/active/reading/writing’ {priint $3}

3,監(jiān)控PHP-FPM

php-fpm.conf中配置pm.status_path=/phpfpmstatus,nginx.conf中配置location phpfpmstatu的 fastcgi_pass uninx:/tmp/fpm.sock

4,自帶模板監(jiān)控mysql

mysql的監(jiān)控比較簡單,使用show status可以查看相關(guān)的性能參數(shù)

在腳本中配置mysql_user=$2,mysql_password=$3,mysql_host=$4,這里的參數(shù)可以作為web界面宏macro傳進(jìn)來的自定義變量

5,使用percona監(jiān)控mysql

perconna對mysql服務(wù)器進(jìn)行了改進(jìn),提升了高負(fù)載下innodb的性能,使用perconna monitoring plugins可以補充perconna的監(jiān)控

先下載安裝percona monitoring plugins,再安裝perconna-zabbix-templates,測試key值,導(dǎo)入模板,完成監(jiān)控

6,監(jiān)控DELL服務(wù)器

導(dǎo)入DELL IPMI 監(jiān)控模板

7,監(jiān)控cisco路由器

配置cisco的snmp服務(wù),安裝net-snmp-utils,使用 snmpwalk -v 2c public 127.0.0.1 MIB 驗證

8,監(jiān)控vmware

配置zabbix-agentd.conf中的 startvmwarecollectors=1,使用系統(tǒng)自帶的vmware模板添加監(jiān)控

第十二章 zabbix性能優(yōu)化

1,zabbix性能低下的表現(xiàn):

a,zabbix隊列中有比較多的延遲,通過Admiinistration --> Queen查看

b,zabbix繪圖中有斷圖,item沒有數(shù)據(jù)

c,帶有nodata的觸發(fā)器經(jīng)常出現(xiàn) False

d,前端頁面無響應(yīng),打開慢

2,性能優(yōu)化的依據(jù),每秒處理的數(shù)量,nvps,等待的隊列數(shù)量,queen

3,配置文件中的參數(shù)優(yōu)化

a,進(jìn)程的數(shù)量,包括startpollers,startpollersunreachable,starttrappers,startpingers,startdiscoverers

b,緩存的大小,緩存的大小和內(nèi)容的大小有關(guān),要具體看

c,超時的時間,包括自動發(fā)現(xiàn)時間,數(shù)據(jù)上報時間

4,zabbix數(shù)據(jù)庫優(yōu)化

a,數(shù)據(jù)庫軟件本身優(yōu)化,使用更高性能的percona版本

b,數(shù)據(jù)庫參數(shù)調(diào)優(yōu)

c,表結(jié)構(gòu)優(yōu)化,分表等形式。注意,分表后,houserkeeper需要關(guān)閉

d,開啟慢查詢,針對慢查詢優(yōu)化

5,最后,擴(kuò)容zabbix集群規(guī)模,使用更好的硬件和配置,是銀彈

第十三章 zabbix-api使用

zabbix api具有重要功能,可以實現(xiàn)第三方調(diào)用,批量操作,與其他運維系統(tǒng)集成,使用JSON RPC協(xié)議

1,json-rpc協(xié)議是什么? 基于json的跨語言遠(yuǎn)程調(diào)用協(xié)議,相比webservice,java-rpc更便于調(diào)試,實現(xiàn),擴(kuò)展

a,調(diào)用和響應(yīng):

調(diào)用,{“method”:“getid”,“params”:["args"],“id”:1},method是調(diào)用方法名,params是參數(shù),id是調(diào)用標(biāo)識符,標(biāo)記一次調(diào)用過程

響應(yīng),{“result”:“id is 000”,“error”:null,“id”:1},result是方法返回值,error是調(diào)用時錯誤,無錯誤返回null,id是調(diào)用標(biāo)識符,與傳入的id一致

b,支持的數(shù)據(jù)類型,bool,flag,integer,float,ftring,timestamp,array,object,query

2,zabbix api中的代碼路ing位于前端php中的api/api_jsonapi.php,是api的入口文件,調(diào)用時的url為 http://x.x.x.x/api_jsonrpc.php

3,zabbix api 的使用流程

a,連接http://x.x.x.x/api_jsonrpc.php,提供用戶名和密碼,表示頭部json,使用post方法

b,獲得sessionid

c,通過sessionid,建立后續(xù)的連接,

d,提交post數(shù)據(jù),格式為json,使用對應(yīng)的方法,獲取需要的數(shù)據(jù)

4,使用curl 模擬api 的使用

a,獲取session的語句:

curl -i -X POST -H 'Conten-Type:application/json' -d '{"jsonrpc":"2.0","method":"user.authenticate","params":{"user":"Admin","password":"zabbix"},"auth":null,id:0}' http://192.168.0.0:8090/zabbix/api_jsonapi.php

b,響應(yīng)的結(jié)果

{“jsconrpc”:“2.0”,“result”:“abcdefghijklmn”,“id”:0}

c,使用session請求調(diào)用api 的host.get方法

curl -i -X POST -H 'Content-Type:application/json' -d '{"jsonrcp":"2.0","method":"host.get","params":{"ouput":"extend","filter":{"host":""}},"auth":"abcdefghijklmn","id":1}'

d,得到響應(yīng)如下:

{“jsonrpc”:“2.0”,“result”:[{"maintainances":[],"hostid":"10010","host":"zabbix server","status":"0"}],"id":1}

5,常用的接口方法和示例

a,用戶認(rèn)證

b,獲取主機(jī)

c,添加host

d,刪除host

6,使用第三方zabbix api模塊

第十四章 zabbix協(xié)議講解(跳過)

第十五章 定制zabbix-agent安裝包

定制安裝包,減少依賴問題,添加自定義配置,開箱即用

1,定制安裝包的步驟

a,yum install -y rpm-build git

b,useradd admin

c,su - admin

d,echo “% _topdir /home/admin/rpmbuild” >~/.rpmmacros

e,rpm2cpio zabbix-2.2.2.el6.zbx.src.rpm |cpio -div

f,mv zabbix2.2.2.spec /home/admin/rpmbuild/specs

g,mv * /home/admin/rpmbuild/sources

h,cd /home/admin/rpmbuild/specs

i,rpmbuild -ba zabbix2.2.2.spec

2,參數(shù)的配置,命令的編寫,都在spec文件中,修改后打包,這樣安裝好之后,就無需再次配置,可以開箱即用

第十六章 大型分布式監(jiān)控案例

1,大規(guī)模的監(jiān)控系統(tǒng)中,需要考慮一下因素

a,分布式架構(gòu)為首要考慮因素,將中心節(jié)點壓力分散到個邊緣節(jié)點

b,對數(shù)據(jù)存儲的可擴(kuò)展性成為一個必須解決的問題,是監(jiān)控系統(tǒng)能否正常工作的前提

c,系統(tǒng)的高可用和健壯性,災(zāi)備能力

d,具備為其他業(yè)務(wù)提供api的能力,和其他業(yè)務(wù)系統(tǒng)的聯(lián)系更為緊密

e,具備自動化功能,解決以業(yè)務(wù)為核心的運維智能

2,應(yīng)用安裝部署

a,機(jī)器資源規(guī)劃,ip地址規(guī)劃,應(yīng)用角色規(guī)劃

b,zabbix DB安裝,安裝perconna server,設(shè)置開機(jī)啟動

c,初始化db數(shù)據(jù)庫,導(dǎo)入zabbix數(shù)據(jù),設(shè)置db 主從和定期備份

d,安裝zabbix server

e,配置keepalive 高可用,編寫keepalive檢測腳本

f,安裝zabbix-gui,配置nginx和php-fpm

g,安裝 zabbix-proxy,設(shè)置 zabbix-proxy服務(wù)開機(jī)自啟動,web頁面添加proxy

h,配置zabbix agent conf文件

3,業(yè)務(wù)相關(guān)配置

a,用戶的配置,包括媒介media,用戶組 user groups

b,業(yè)務(wù)組配置,按照分組方法分

c,添加和定制監(jiān)控模板

d,配置自動發(fā)現(xiàn)等功能

f,針對其他功能的二次開發(fā)

4,最重要的是,定時檢查,修補遺漏。大膽假設(shè),仔細(xì)驗證


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Zabbix簡介 Zabbix官方網(wǎng)站Zabbix中文文檔 本文系統(tǒng)環(huán)境是CentOS7x86_64, Zabbi...
    Zhang21閱讀 8,305評論 0 37
  • 前言 因為一個運維項目關(guān)注了一下開源監(jiān)控軟件,比較了Nagios、Zabbix、Zenoss、Cacti、Gang...
    開源大熊閱讀 930評論 0 6
  • 專業(yè)考題類型管理運行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項A選項B選項C選項D選項E選項F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 10,503評論 0 13
  • 1.寫在前面 本文主要介紹的是zabbix的編譯安裝過程,包含它的基礎(chǔ)環(huán)境LNMP,雖然zabbix官方一般推薦的...
    天之藍(lán)色閱讀 2,657評論 0 16
  • 人的一生,振作著接觸一個又一個人,為了治愈名叫孤獨的傷痕。我的傷勢如何,不好言說。只是發(fā)覺憂郁在慢慢放大,心在結(jié)冰...
    勁寂草閱讀 271評論 0 0

友情鏈接更多精彩內(nèi)容