作者:吳兆松(網(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ì)驗證