運維之監控zabbix

運維之監控zabbix

監控系統:硬件、軟件、業務指標;採樣;告警;存儲;展示;

可監控對象:
設備/軟件
設備:服務器、路由器、交換機、IO系統
軟件:OS、網絡、應用程序
偶發性小故障:
主機down機、服務不可用、主機不可達
嚴重故障:
主機性能指標
趨勢:時間序列數據

監控通道:ssh,snmp,telnet,agent,ipmi(智能平臺管理接口)等

著名的開源監控工具:
cacti:利用snmp獲取數據,然後儲存在rrd數據庫中,通過web展示出來,有較好的繪圖能力,其告警能力較差;
nagios:定義告警規則,提供告警能力;
zabbix:集合採樣,告警,存儲,展示的監控系統;
ganglia:

數據存儲:時間序列數據
1、關係型數據庫
2、輪詢數據庫rrd
3、時間序列數據庫:nosql

 

zabbix:LTS:2.2,3.0

特性:
1、數據採樣:snmp,ssh/telnet,agent,ipmi,jmx
a、自定義檢查機制:userparamenter
b、自定義指定時間間隔
2、實時繪圖:展示
a、graph
b、map
c、screen
d、slide show
3、告警:升級
a、script
b、notification
4、數據存儲
a、mysql
b、pgsql
5、支持模板
6、網絡自動發現
7、分佈式監控:server   《===》proxy 《===》agent

zabbix程序的構成:
zabbix_server:服務端守護進程;默認監聽端口:10051
zabbix_agentd:agent端守護進程;默認監聽端口:10050
zabbix_proxy:代理服務器,可選組件;
zabbix_get:命令行工具,手動測試向agent端發起數據採集請求;
zabbix_sender:命令行工具,運行於agent端,手動向server端發送數據;
zabbix_java_gateway:java網關;

監控配置:術語
hostgroup:主機組
host:主機,即被監控設備;
item:監控項,key+採集到數據
application:應用,即同類別的多個item所形成的組;
trigger:觸發器;表達式;
event:事件;
action:condition+operation;動作
alert:告警
media:媒介

監控設備的接口:
1、agent interface
2、snmp interface
3、jmx interface
4、ipmi interface

item:key+parameter
key:1、zabbix內建;type:agent,agent(active),snmp  ...
2、自定義key;

採集到的信息種類:
字符
數值

數據類型:二進制、八進制、十進制、十六進制

store value:存儲爲
1、as is:數據不做任何處理;
2、delta(simple change):差值;即本次採樣值減去上次採樣值的結果;
3、delta(speed peer second):差值平均數;即本次採樣值減去上次採樣值的結果,然後除以採樣間隔時長;

常用的函數:nodata()、

媒介:media:
1、email:郵件
2、script:用來定義信息通道,完成信息傳遞的腳本;注意:新放入此目錄中的腳本,只有重啓zabbix-server方能被使用;
(1)腳本放置路徑:zabbix_server.conf配置文件中的參數:AlertScriptsPath=/usr/lib/zabbix/alertscripts定義
(2)zabbix會向腳本傳遞三個參數:
$1:經由此信道發送的接收目標;即send to
$2:標題;即Default Subject
$3:內容;即Default Message
3、jabber:
4、sms:短信

一次完整的監控配置:
hostgroup---》host---》[application]---》item---》trigger(events)---》(media type,user group,user)---》action

remote command:功用:
1、重啓服務
2、通過ipmi接口重啓服務器
3、任何自定義腳本可完成的功能:虛擬機遷移、清理磁盤空間等等

模板:主機配置模板;其用於鏈接至主機從而實現主機監控的快速配置;

宏(macros):類似變量,在調用時,自動替換成特定文本;分爲:內置宏{MACRO}、自定義宏{$MACRO}。命名方式:大寫字符,數字和下劃線;
級別從高到低:
主機級別:web gui---》configuration---》hosts---》macros中定義
模板級別:web gui---》configuration---》templates---》macros中定義
全局級別:web gui---》administrator---》general---》macros中定義
內置宏參考鏈接:https://www.zabbix.com/documentation/3.0/manual/appendix/macros/supported_by_location

用戶自定義key:UserParamenter;在zabbix-agent端定義,server端採集;注意,需重啓agentd服務,使自定義key生效;
語法格式:UserParamenter=<key>,<command>;定義在zabbix_agentd.conf中
實例:
1、UserParamenter=Memfree,cat /proc/meminfo | awk  '/^MemFree/{print $2}'
Key爲Memfree,後面是要執行的命令,命令的執行結果爲返回值;重啓agent後方能生效,在server端使用zabbix_get命令測試獲取數據即可;
2、UserParamenter=Memusage[*],cat /proc/meminfo | awk  '/^$1/{print  $$2}'
Key爲Memusage,且能夠接受一個參數
由於$1,$2等要用於UserParamenter的參數調用,awk中的$2之前要多用一個$符;
在server端測試時,其調用的Key可以爲Memusage[MemFree],Memusage[MemTotal]等。

自動發現:server掃描到的主機,添加之,自動將模板連接至主機;
zabbix網絡發現的方式:
1、ip地址範圍
2、可用的服務(ftp、ssh、http...)
3、zabbix_agent的響應
4、snmp_agent的響應

自動發現分爲discovery和actions兩個階段;
a、discovery事件:host、service:discoved,lost,up,down
b、actions:根據特定的discovery事件執行響應操作;
(1)增加、刪除主機
(2)啓動、禁用主機
(3)將主機添加至組,從組中刪除主機
(4)將模板鏈接至主機,反鏈接;

一般而言,發現狀態和採取的動作:
discovered---》add host
lost---》delete host
up---》enable
down---》disable

web監控:頁面可用性及性能

觸發器表達式:
{server:key.<function>(paramenter)}<operator><constant>;  其中<constant>爲閾值;
例如:{www.lewis.com:system.cpu.load{all,avg1}.last(0)}>3
表示主機www.lewis.com上所有cpu的過去一分鐘內的平均負載的最後一次取值大於3時將觸發狀態變換;對last函數來說,last(0)相當於last(#1);

常用function的用途:

diff():比較採樣值是否發生變化,通常通過checksum進行;
min():指定區間或時間範圍內的最小值;
max():指定區間或時間範圍內的最大值;
avg():指定區間或時間範圍內的平均值;
nodata():沒採集到數據;


主動/被動檢測:相對agent而言;
    被動檢測:agent,server向agent請求獲取配置的各監控項的相關數據,agent收到請求後返回數據給server;
    主動檢測:agent(active),agent向server請求與自己相關的監控項配置,主動將監控項對應的數據採樣後提交給server;


基於snmp的監控:snmp(簡單網絡管理協議):

    讀(get),寫(set),trap;

    snmp版本:v1,v2,v3;監聽:161/UDP

linux上snmp的配置:

被監控客戶端:
    # yum install net-snmp

    /etc/snmp/snmpd.conf    配置文件
    systemctl start snmpd.service    啓動服務
監控server端:
    # yum install net-snmp-utils    命令行工具合集
        例如# snmpwalk -v 2c  -c public 172.20.120.40   .1.3.6.1.2.1.1
              #  snmpget  -v 2c  -c public 172.20.120.40   system.sysDescr.0


分佈式監控:server---proxy---agent;可以按業務、地域等劃分proxy;
    proxy(代理):用於本區域數據收集,數據只存儲一段時間,並週期性地將數據發送給server端;

        active:proxy主動連接至server端發送數據和請求配置數據;
        passive:server端聯繫proxy端;
        配置文件:/etc/zabbix/zabbix_proxy.conf
                ProxyMode=0|1        active|passive
                Server=                      server ip
                ServerPort=                server port
                Hostname=                 proxy唯一的名字
                DBHost=localhost      當定義爲localhost時,使用mysql socket通信,定義爲空值時,使用postgresql socket通信;
                DBName=zabbix
                DBUser=zabbix
                DBPassword=
                DBSocket=/tmp/mysql.sock   指明msyql  socket文件路徑
                DBPort=3306
                HeartbeatFrequency=60        server多次監聽proxy的心跳,單位爲秒
                ConfigFrequency=3600          proxy多久向server拉取自己的配置信息
                DataSenderFrequency=1        proxy多久向server發送一次數據
        proxy亦需要配置數據庫,需要導入數據庫,/usr/share/doc/zabbix-proxy-mysql-3.0.2/schema.sql.gz;
        啓動proxy服務,# systemctl start zabbix-proxy.service
        後續在web gui添加此proxy,並通過proxy監控對應主機;


zabbix監控優化:
    nvps:new values per second:平均每秒接收的新的數據量;衡量的重要指標;100萬每分鐘;即約15000/s;
    web gui中的administration---queue頁面顯示了數據採集的延時情況;
    
    調優:

        1、database:歷史數據不要保存太長時間;儘量讓數據集可緩存到數據庫服務器內存中;
        2、觸發器表達式:減少使用min(),max(),avg();儘量使用last(),nodata();
        3、數據收集:polling較慢(減少使用snmp、agent-less、agent);儘量使用trapping(agent (active));
        4、數據類型:文本型數據處理較慢,儘量少收集類型爲text或string的數據,多使用類型爲Numeric的數據;

        

        zabbix服務的配置:

            1、zabbix internal類型的監控來獲知zabbix自己的狀態;

            2、服務器組件數量:
                    alerter,discoverer,escalator,http poller,housekeeper,icmp pinger,ipmi poller,trapper,configuration syncer,db watchdog

        

        數據庫優化:
                分表:history_*,trends*,events*


 

centos7下:zabbix3.0安裝,結合使用mariadb數據庫;
zabbix服務端:# yum install zabbix-server-mysql mariadb-server
zabbix-web GUI:# yum install zabbix-web-mysql  mariadb-server
zabbix被監控端:# yum install zabbix-agent
zabbix代理端:# yum install zabbix-proxy-mysql  mariadb-server

服務端配置文件:/etc/zabbix/zabbix_server.conf;分爲4個章節:
############ GENERAL PARAMETERS #################
############ ADVANCED PARAMETERS ################
####### LOADABLE MODULES #######
####### TLS-RELATED PARAMETERS #######

通用參數:
ListenPort=10051    定義數據採集的端口
SourceIP=                  定義數據採集通信所使用的ip地址
LogType=                  定義如何記錄日誌:system|file|console;爲指定file時,需指定其位置:LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=              定義日誌文件的自動滾動,0-1024,單位爲M,0爲不滾動;
DebugLevel=3           定義日誌級別:0-5
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost=localhost      當定義爲localhost時,使用mysql socket通信,定義爲空值時,使用postgresql socket通信;
DBName=zabbix
DBUser=zabbix
DBPassword=
DBSocket=/tmp/mysql.sock   指明msyql  socket文件路徑
DBPort=3306

 

示例:centos7.2+zabbix3.0+mariadb-server5.5.56
zabbix官網:https://www.zabbix.com/download
官方的repo倉庫包:zabbix-release提供下如下2個文件
1、/etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/3.0/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX

[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1

2、/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX

 

zabbix服務端配置:
1、安裝zabbix
# yum  install   zabbix-server-mysql   zabbix-web-mysql zabbix-agent

2、配置mariadb數據庫
# yum install mariadb-server
# vim /etc/my.cnf   添加如下
skip_name_resolv=on
innodb_file_per_table=on
# systemctl start mariadb
# mysql
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'127.0.0.1' identified by 'zabbix';
MariaDB [(none)]> flush privileges;
# zcat /usr/share/doc/zabbix-server-mysql-3.0.20/create.sql.gz | mysql zabbix

3、配置zabbix_server.conf
# vim /etc/zabbix/zabbix_server.conf
DBPassword=zabbix

4、配置zabbix前端web的時區
# vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai

5、安裝lamp,並啓動服務
# yum install php-mysql httpd
# systemctl start httpd zabbix-server zabbix-agent

6、zabbix的web GUI訪問路徑:http://172.20.120.40/zabbix,並進行後續配置;安裝完成後生成的配置文件爲:/etc/zabbix/web/zabbix.conf.php;web默認的登錄賬號密碼爲Admin/zabbix;

 

zabbix-agent端配置:
a、centos7
# yum install zabbix-agent
# vim /etc/zabbix/zabbix_agentd.conf
Server=172.20.120.40                     允許哪些zabbix服務端IP來連接,以逗號分隔;

ServerActive=172.20.120.40          主動向哪些zabbix服務端IP投遞數據
Hostname=node41                            節點的主機名,需與web gui中的配置一致,agent主動發送數據時必須配置的;
# systemctl restart zabbix-agent.service

b、window7
https://www.zabbix.com/download_agents  下載指定的版本的agent包
修改配置文件zabbix_agentd.win.conf
Server=172.20.120.40                     允許哪些zabbix服務端IP來連接
ServerActive=172.20.120.40          主動向哪些zabbix服務端IP投遞數據
Hostname=nodewin-98                            節點的主機名,需與web gui中的配置一致
安裝服務,然後啓動服務;
C:\Users\Administrator>D:\zabbix_agents_3.0.10.win\bin\win64\zabbix_agentd.exe -c D:\zabbix_agents_3.0.10.win\conf\zabbix_agentd.win.conf -i
其中-i,--install:安裝成爲windows的服務;
-c,--config:指明agent的配置文件位置;

常用windows下的items參考鏈接:https://www.zabbix.com/documentation/3.0/manual/config/items/itemtypes/zabbix_agent/win_keys
例如:CPU使用率:# zabbix_get -s 172.20.120.98 -k "perf_counter[\Processor(_Total)\% Processor Time]"

 

centos7告警示例:
方式一、remote command:即通過遠程執行命令來實現告警(如重啓服務、虛擬實例遷移等);
1、前提:在agent端需要完成如下配置:
(1)、zabbix用戶有所需要的管理權限;基於sudo授權;
# usermod -s /bin/bash zabbix
# visudo /etc/sudoers
zabbix ALL=(ALL) NOPASSWD: ALL
1)Defaults requiretty,修改爲#Defaults requiretty,表示不需要控制終端;
2)Defaults requiretty,修改爲Defaults:nobody   !requiretty,表示僅nobody不需要控制終端;
測試:# su - zabbix -c "sudo systemctl restart httpd.service"
(2)、agent進程要允許執行遠程命令;
vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1,LogRemoteCommands=1;

2、在web gui下配置action;如圖
1

方式二:發送告警郵件;並安裝dos2unix解決郵件告警爲附件的問題;
1、在zabbix-server端,安裝mailx並配置發件人信息
# yum install mailx -y
# vim /etc/mail.rc           在文末添加發件人信息如下
set [email protected]
set smtp=smtp.163.com set
set smtp-auth-user=username set
set smtp-auth-password=yourpassword
set smtp-auth=login

2、創建所需的alert腳本並賦予執行權限;其腳本放置路徑在/etc/zabbix/zabbix_server.conf定義,默認爲AlertScriptsPath=/usr/lib/zabbix/alertscripts
# vim /usr/lib/zabbix/alertscripts/sendmail.sh
#!/bin/bash
file=/tmp/mailtmp.txt
contact=$1
subject=$2
echo "$3" > $file
dos2unix -k $file
mail -s "$subject" "$contact" < $file

# chmod +x /usr/lib/zabbix/alertscripts/sendmail.sh
# touch /tmp/mailtmp.txt
# chown zabbix:zabbix /tmp/mailtmp.txt



3、在web gui中配置media,並設置user,最後在action中引用來實現告警郵件的發送
1
1
1


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章