天天看點

zabbix詳解(一)

zabbix簡介

zabbix是一個基于WEB界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。

zabbix能監視各種網絡參數,保證伺服器系統的安全營運;并提供柔軟的通知機制以讓系統管理者快速定位/解決存在的各種問題。

zabbix由3部分構成,zabbixserver、可選元件zabbix proxy、可選元件zabbix agent。

zabbix server可以通過SNMP,zabbix agent,,ping,端口監視等方法提供對遠端伺服器/網絡狀态的監視,資料收集等功能,它可以運作在Linux,Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X等平台之上。

zabbix proxy 是從監控裝置收集監測資料和發送到zabbixserver的程序,屬于代表zabbix server 的運作所有收集到的資料被暫時存放在代理伺服器,之後統一由代理伺服器轉發給zabbix server所屬的伺服器,部署proxy是可選的,但是對于分擔單個zabbix伺服器的負載是非常有益的。如果盡在zabbix proxy上收集資料,那麼将減輕zabbix server上的程序對cpu資源和磁盤I/O的消耗。zabbix proxy在沒有本地管理者的情況下,是集中監控遠端區域,分支和網絡的理想解決方案。

zabbix agent需要安裝在被監視的目标伺服器上,它主要完成對硬體資訊或與作業系統有關的記憶體,CPU等資訊的收集。zabbix agent可以運作在Linux ,Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X, Tru64/OSF1,Windows NT4.0, Windows 2000/2003/XP/Vista)等系統之上。

zabbix server可以單獨監視遠端伺服器的服務狀态;同時也可以與zabbix agent配合,可以輪詢zabbix agent主動接收監視資料(trapping方式),同時還可被動接收zabbix agent發送的資料(trapping方式)。

另外zabbix server還支援SNMP (v1,v2),可以與SNMP軟體(例如:net-snmp)等配合使用。

zabbix安裝

zabbix的安裝可以通過rpm包、源碼編譯、官方yum源三種方法安裝,這裡介紹利用yum源來安裝。通路官方網址:http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/,隻要安裝其中的zabbix-release-2.4-1.el6.noarch.rpm即可自動生成yum源

相關安裝包的說明:

  • 公共元件:

 zabbix-2.4.7-1.el6.x86_64.rpm

  • java監控元件:

  zabbix-java-gateway-2.4.7-1.el6.x86_64.rpm

  • 伺服器端如果需要手動擷取資料要裝get

  zabbix-get-2.4.7-1.el6.x86_64.rpm

  • 用戶端自動發送資料要裝send

  zabbix-sender-2.4.7-1.el6.x86_64.rpm

  • 要裝server端的話,隻要裝server、和相應資料庫的server-mysql即可:

  zabbix-server-2.4.7-1.el6.x86_64.rpm         

  zabbix-server-mysql-2.4.7-1.el6.x86_64.rpm

  如果需要手動擷取資料要裝get

  • 要裝web端的話,隻要裝web、和相應資料庫的web-mysql,還有一個japanese的日文包用來顯示中文(2.0與2.2可能已有專用的中文包):

  zabbix-web-2.4.7-1.el6.noarch.rpm   

  zabbix-web-mysql-2.4.7-1.el6.noarch.rpm

  zabbix-web-japanese-2.4.7-1.el6.noarch.rpm

  • 要裝proxy的話,隻要安裝zabbix、proxy、proxy-mysql三個即可:

  zabbix-2.4.7-1.el6.x86_64.rpm

  zabbix-proxy-2.4.7-1.el6.x86_64.rpm          

  zabbix-proxy-mysql-2.4.7-1.el6.x86_64.rpm

安裝執行個體

  • 把A1和A2兩台機器分别配置為Server與agent
  • A1上需要安裝server、mysql、agent、web,因為伺服器本身一般都會作為一個agent端一起監控
  • A2上隻需安裝agent即可

A1的安裝與配置

a)server安裝

server程式的安裝

yum install zabbix-server-xxxx.rpmzabbix-server-mysql-xxx.rpm zabbix-get-xxx.rpm            zabbix-2.4.0-1.el6.x86_64.rpm

web程式的安裝

yum install zabbix-web-xxx.rpm  zabbix-web-mysql-xxx.rpm  zabbix-2.4.0-1.el6.x86_64.rpm

agent程式的安裝

yum install zabbix-agent-xxx.rpm  zabbix-sender-xxx.rpm  zabbix-2.4.0-1.el6.x86_64.rpm

注意:公共元件zabbix-2.4.0-1.el6.x86_64.rpm 是必須安裝的,而且server端一般都會裝上agent,監控自己

安裝後/etc/httpd/conf.d/下會有zabbix.conf

啟動服務service httpd start

cd/usr/share/doc/zabbix-server-mysql-2.4.0/create 該目錄下有mysql建立和更新的模闆腳本,需要導入到server的資料庫(如果是安裝proxy端隻需導入schema.sql)

導入順序:schema.sql -> images.sql -> data.sql

mysql zabbix -u root -p < schema.sql

mysql zabbix -u root -p < images.sql

mysql zabbix -u root -p < data.sql 

b) 配置server

通過修改zabbix_server.conf

vim /etc/zabbix/zabbix_server.conf

常用選項說明:

  • ListenPort=10051

    預設監聽端口,不改的話就不用動

  • SourceIP=

    給外面連接配接的IP,如果有多個可以在這裡指定,隻有一個不用指定

  • LogFileSize=0

    日志檔案大小,指定後日志會自動滾動,0為不滾動

  • DebugLevel

    調試級别,日志級别,一般不做調整

  • DBHost=localhost

    如果資料庫是本機用localhost速度更快,例如這裡可以指定172.16.100.7

  • DBSchema=

    用于DB2或PostgreSQL

  • DBUser=zbxuser

    DBPassword=zbxpass

    根據實際情況修改

  • StartPollersUnreachable=1

    探測主機是否線上

  • StartDiscoverers=0

    自動發現功能,消耗資源,關閉

  • StartTimers=1

    啟動幾個計時器程序

  • HousekeepingFrequency=1

    每隔1小時啟動一次,删除過期資料

  • MaxHousekeeperDelete=500

    一次最多删多少個

  • SenderFrequency=30

    報警頻率

  • FpingLocation=/usr/sbin/fping

    程式位置,要使用必須先安裝Fping

  • 都設定好後可以啟動服務了,它會啟動很多程序,同時監聽ipv4和ipv6

service zabbix-server start

c) web的配置

  • 首先要去編輯php的時區

vim /etc/php.ini

去掉注釋 data.timezone = Asia/Chongqing

  • 重新開機httpd服務

service httpd restart

  • 然後通路

http://172.16.100.7/zabbix

選擇2,沒問題再3,填入資料庫的相關資訊,主機位址、端口、名字。最後就可以登陸通路了

d) 把本機配置為agent

agent程式已經安裝,編輯配置檔案vim/etc/zabbix/zabbix_agentd.conf

選項說明:

  • Server=172.16.100.7,127.0.0.1

伺服器的設定,同時也是一個授權,授權給這個伺服器來擷取資料.可以多個

  • ServerActive=172.16.100.7,127.0.0.1

用戶端可以主動通知伺服器端,這裡是通知對象的設定,同上,可以設定多個位址。目前主機即是Server又是Agent的時候,127.0.0.1不能去掉

  • Hostname=node1

主機名要全局唯一

  • 都配置好了啟動

    service zabbix-agent start

    ss -tunlp 檢視

e) web上監控相應agent

configuration -> hosts ,如果有開啟自動發現功能這裡就會顯示出來,沒有的話就create host,預設disable ,點選啟用

f) 安裝另一個agent

  • 程式安裝

yum install zabbix-agent-xxx.rpm  zabbix-sender-xxx.rpm  zabbix-2.4.0-1.el6.x86_64.rpm

  • 修改配置檔案/etc/zabbix/zabbix_agentd.conf

修改hostname,server

  • 啟動服務servicezabbix-agent start
  • 再到web界面添加host

注意!!!

添加host時要注意Host name 的名字如果不是填IP,就要和/etc/zabbix/zabbix_agentd.conf中hostname名字保持一緻!否則當用戶端主動發送資訊給伺服器端時,伺服器端會檢測失敗,這裡規範的寫法應該是和agent配置檔案hostname一緻

zabbix監控配置流程

Zabbix完整的監控配置流程大體上由如下步驟組成:

         Host group(主機組) --> Hosts(主機) -->Applications(應用) -->Items(監控項) --> Triggers(觸發器) --> Events(事件) -->Actions(動作) -->User groups(使用者組) -->Users(使用者) --> Medias(媒介)

zabbix主機與組配置

主機不單單指linux、windows等伺服器,它還包括路由器、交換機等裝置。

 (1)建立主機

configuration -> Hosts -> Create host

屬性 描述
Host name 主機名,隻允許數字、空格、句号、下劃線、不支援非主流符号。zabbix用戶端配置檔案中的hostname名稱一定要與這個名字一緻!
Visble name 顯示名稱,可選項。主機名的别名
Groups 主機要加入的組,一個主機至少要加入一個組!
New host group 新主機組。想建立一個組,可以在這裡寫上
Interfaces 主機接口:包含agent,snmp,jmx,IPMI。推薦使用IP位址方式來監控,也可以使用域名。zabbix agent 預設端口10050,snmp 161,jmx 12345,IMPI 623
Monitored by proxy 是否通過proxy監控

(2)Templates主機模闆

可以把主機連結到想要的模闆上,模闆上的項目就會應用到主機上

unlink: 取消模闆,模闆中的item依舊保留在host上

unlink and clear: 取消模闆,并且删除監控到的資料以及将模闆添加到host的item也删除

主機組

zabbix item 監控項

items是從主機裡面擷取的特定資料。通常稱之為監控項

(1)item的構成

(a)item的組成,由key+參數組成。

例:

需要擷取cpu資訊,則需要一個對應的監控key: system.cpu.load來實作

system.cpu.load[avg5] 擷取5分鐘的cpu負載情況

system.cpu.load[avg1] 擷取1分鐘的cpu負載情況

擷取網卡流量,則需要key:net.if.in或net.if.out

net.if.in[eth0] 擷取eth0接口的網卡流入流量

(b)key名稱的命名

允許字元:所有數字、大小寫字母、下劃線、減号、點

(c)key參數

key 可以有多個參數,它們之間用逗号 “,” 分開

key 的參數可以是帶引号的字元串、不帶引号的字元串以及數組

key 的參數如果為空,那麼将會使用它設定的預設值

key 的參數帶引号,任何unicode資料都合法,如果參數裡面帶有雙引号,則要使用 “\” 來轉義

key 的參數不帶引号,除了逗号和右中括号,其他任何unicode字元串都合法。

key 的參數是一個數組,那麼數組要多加一對中括号,并且數組裡面的參數同樣要遵循參數規範

注意:每個key背後都應該有一個指令或腳本來負現實作資料收集;此指令或腳本可調用傳遞給key的參數,調用方式為$1, $2,...

(2)item types 監控類型

如圖,圈起來的就是所有的類型

常用的類型有agent、jmx、impi、snmp、agent-active

一種類型相當于一個接口,如果一個item中配置了多個接口,zabbix會依次(Agent->snmp->jmx->ipmi)調用,直到找到合适的接口為止

(a)agent 類型

agent有兩種,agent(被動檢測)和agent-active(主動檢測)

差別:

agent(被動檢測): zabbix server向 zabbix agent 讨要資料

agent-active(主動檢測): zabbix agent 送出資料給 zabbixserver

agent 常用key

                            網卡流量相關:

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

                                               if:接口,如eht0

                                               mode:bytes, packets, errors, dropped

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

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

                            端口相關:

                                     net.tcp.listen[port]

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

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

                                     net.udp.listen[port]

                            程序相關:

                                     kernel.maxfiles

                                     kernel.maxproc

                            CPU相關:

                                     system.cpu.intr中斷

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

                                     system.cpu.num[<type>]數量

                                     system.cpu.switches

                                     system.cpu.util[<cpu>,<type>,<mode>]使用率

                            磁盤IO或檔案系統相關:

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

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

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

(3)建立item

Configuration -> Hosts -> 在需要的主機上點選items-> Create item...

屬性說明:

Host 主機或者模闆
Name

監控項item名稱可以使用如下宏變量:

$1,$2...$9 這9個參數對應item key的參數位置

例如:free disk on $1 如果item key 為vfs.fs.size[/,free] ,那麼對應的名稱會變成 free disk on / ,$1對應了第一個參數“/”

Type item類型,常用有agent,agent-active,snmp
key 可選系統自帶的key或自定義key
Host interface 主機接口
Type of information

擷取到的資料類型

Numeric(unsigned) - 64bit unsigned integer

Numeric(float) - floating point

numbercharacter - 字元串,最長255位元組

Log - 日志檔案 .key 必須為log[]

Text- 文本

Date type

定義擷取到資料的資料類型

Boolean - 資料為0或1. true表示1 false 為0 ,不區分大小寫

Octal - 八進制

Decimal - 十進制

Hexadecimal - 十六進制

Units

預設情況下,如果原始值超過1000,那麼它會先除以1000并且顯示出來。例如設定了機關為bps并且受到的值為11102,将會顯示為11.1kbps

如果機關被指定為B(byte),Bps(bytes per second),那麼它會除以1024然後再顯示資料

如果指定如下時間機關:

unixtime - 轉為 “yyyy.mm.ddhh:mm:ss” 隻能使用正數

uptime - 轉為 “hh:mm:ss” 或者 “N days,hh:mm:ss”

例如收到的值為881764秒,它将會顯示為“10 days,04:56:04”

s - 轉為 “yyy mmm ddd hhhmmm sss ms”

例如收到的值為881764(秒),它将會顯示為 10d 4h 56m 。有時隻會顯示2個單元,例如1m 5h,如果傳回的值小于0.001,它隻會顯示 <1 ms

禁用的機關:ms、rpm、RPM、%

Use custom multiplier 如果啟用這個選項,所有接收到的整數或者浮點數都會乘以這個文本框裡面的值。使用這選項,zabbix将會把收到的KB,MBps 等資料先轉為B, Bps 。否則zabbix不能正确設定字首(K,M,G等)
Update interval (in sec)

資料更新時間。

如果設定為0,那麼這個資料将永久不更新。但如果在靈活更新間隔(flexible interval)裡面設定了一個非0間隔,那麼以這個為準

Flexible intervals

可以建立例外的更新間隔,例如:

Interval: 10,Period:1-5,10:00-19:00,表示周一到周五的早上10點到晚上19點每十秒更新一次資料。其餘使用預設值。

最多隻能設定7個靈活更新間隔

如果設定的多個靈活更新時間有沖突,那麼它會使用最小的時間間隔

注意:

1.如果時間間隔被設定為0,那麼資料永久不會更新

2.它不能用在zabbix active 主動方式的item

keep history(in days) 曆史記錄在資料庫中儲存的天數
keep trends(in days)

趨勢資料(以小時為機關的min,max,avg,count的資料)在資料庫中保留時長,過期資料将會被HouseKeeping删除

注意:趨勢資料隻能儲存數字類型資料,字元、日志這些都無法存儲

Store value

Asis - 資料不做處理

Delta(speed per second) 一般用于資料增長的類型

計算公式為(value-prev_value)/(time-prev_time)

value - 擷取到的原始值

prev_value - 上次接收到的值

time - 目前時間

prev_time - 上次接收資料的世界

網卡流量,每次擷取到的都是目前網卡總流量,比如第一次給的值是0位元組(時間為30),第二次擷取到的值為3000位元組(時間為31),可以得出最終資料是100位元組/秒

注意:如果目前擷取到的值比上一個值更小,那麼zabbix會忽略這個值,等待下一次的值

Delta(simple change)

計算公式為(value - prev_value)

Show value

值映射,需要配置數字值映射到字元的映射表。

例如:

1=>aa.com。如果key傳回的資料為1,那麼監控頁面不會顯示1,而是顯示aa.com. key傳回的資料隻能為整數,并且不做任何修改儲存到資料庫中,隻有在顯示的時候才會根據映射表來展示相應内容

New application 建立一個新的應用
Applications 設定item屬于哪個應用
Populates host inventory field 設定擷取到的資料自動填充到inventory 資産清單的相應屬性。前提是你的inventory 處于自動模式

(4)自定義item

文法:

UserParameter=<key>,<command>

定義方法:

在zabbix安裝目錄/etc/zabbix/zabbix_agentd.d/下建立對應的conf檔案,在檔案裡按文法編寫即可。

該conf内容為: cat /etc/zabbix/zabbix-agnet.d/mysql.conf

UserParameter=Mysql.dml[*],/usr/local/mysql/bin/mysql -h$1 -u$2 -p$3 -e 'SHOW GLOBAL STATUS' | awk'/Com_$4\>/{print $$2}'

(這裡-p後不要加空格,這裡指令參數使用了$符,是以要用兩個$)

重新開機用戶端服務使定義生效

service zabbix-agent restart

再在指令行用zabbix_get測試:

zabbix_get -s 172.16.100.7 -p 10050 -k"Mysql.dml[172.16.100.7,root,password,select]"

注意:可以在伺服器端使用zabbix_get指令來測試定義好的item

zabbix Applications 應用程式

Applications 是item的一個組。例如我們要監控Mysql,就可以把所有和Mysql相關的item放到這個應用程式中。

一個item可以屬于多個Application

(1)建立Application并添加item

  1. 點選configuration -> Hosts 或者 Templates
  2. 點選對應Host或Template中的 Application,再點選右上角的Create Application,填寫名稱添加即可

(2)添加item到application

    建立或編輯item,修改其中的applications為需要的即可

zabbix simple check 基本檢測

Simplecheck檢測用于無遠端客戶商的環境,沒有安裝Agent的情況下使用,可以支援的功能包括ICMP ping和service檢測。

Simplecheck所支援的key

(1)icmpping

用法:

  • zabbix使用外部指令fping處理icmp ping. fping 不包含在zabbix中,是以要額外安裝,如果配置了epel源,可以直接yum install fping 安裝
  • 安裝後修改zabbix_server.conf, 指定fping 路徑,配置參數FpingLocation=/usr/bin/fping.
  • 執行fping指令的zabbix使用者要設定setuid,fping指令時需要root
  • Web配置:Configuration -> Hosts -> 點選 zabbix server 的 items -> create item

    這裡隻填一個參數IP,其他用預設值,增加後就可以在Monitoring -> latest data 檢視資料

(2)icmppingloss

(3)icmppingsec

(4)net.tcp.service 檢測服務是否開啟

    建立過程同上圖,key内容如下:

                net.tcp.service[http]或 net.tcp.service[ftp,,155]

(5)net.tcp.service.perf 檢測伺服器性能

                net.tcp.service.perf[http,,8080]

zabbix 曆史資料與趨勢資料

所有的資料收集後成為過去的了,是以稱為曆史資料。以及還會收集每小時的平均資料作為趨勢資料,因為每小時才收集一次,是以趨勢資料占用的資源很小。

(1)保留曆史資料

可以通過如下方式設定保留資料的時長:

  • item項建立或編輯裡
  • 設定HouseKeeper tasks

(2)保留趨勢資料

可以通過如下方式設定保留趨勢資料的周期

  • 批量更新item
  • 設定Housekeeper tasks

注意:Housekeeper會定期删除過期的資料,一般曆史資料根據需要盡量少存點,因為資料量是很大的。趨勢資料占用資源小,可以保留長一點。例如儲存曆史記錄15天,趨勢資料保留2年。另外,如果曆史資料設定為0,zabbix用與觸發器後不會存到資料庫.如果趨勢資料設定為0,zabbix不會計算和存儲它。

         重新開機伺服器會丢失資料導緻這個小時的平均資料不正确。你的資料是什麼類型的,趨勢資料也是什麼類型的。整數的資料特别要注意一個問題,如果一共擷取了兩個值,其中一個0,一個1,那麼它們的平均值是0,而不是0.5

本文轉載自:http://blog.51cto.com/dengxi/1743146

繼續閱讀