zabbix_進階使用

1、定義action爲腳本通知
2、宏(macros)
3、模板(Templates)
4、自定義items
5、網絡發現功能
6、web監控
7、監控方式
8、JMX的監控
9、代理分佈式監控

定義action爲腳本通知

1、自定義腳本

    vim /usr/lib/zabbix/alertscripts/test.sh
     #!/bin/bash
     to="$1"
     subject="$2"
     body="$3"

     echo "test script" | mail -s "$subject" "$to"

2、添加執行權限

chmod +x /usr/lib/zabbix/alertscripts/test.sh

3、定義Media types爲script
<監控系統zabbix> 128

4、action中定義動作爲執行腳本

注意:
需要重新啓動zabbix-server服務,讀取通知腳本

宏(macros)

1、可以理解成宏是”保存值的變量”。
zabbix內置的宏調用格式:{HOST.NAME}

2、用戶自定義宏
zabbix支持在全局、模板或主機級別使用用戶自定義宏。
使用格式:{$MACRO}
使用範圍:item kets、descriptions、trigger名稱及表達式、主機接口IP/DNS及端口、
discovery機制的SNMP協議的相關聲明中。

3、宏的生效範圍順序
主機級別的宏
一級模板中的宏,多個一級模板時按器ID排序
二級模板中的宏
全局宏

模板(Templates)

1、模板是一系列配置的集合,它可以方便的快速部署在某監控對象上,並支持重讀應用。
可以將模板應用到某一個主機上。應用模板可以實現快速的部署
及修改模板內容的配置項。

2、模板內容包括:

    items
    triggers
    graphs
    applications
    screens
    low-level discoverty rules

自定義items

1、語法格式

    UserParameter=<key>[],<command>
    UserParameter=mem.used,free -m | awk '/^Mem/{print $3}'
    UserParameter=mem.stats[*], cat /proc/meminfo | grep '^$1'
    UserParameter=mem.stats[*], cat /proc/meminfo | awk '/^$1/{print $$2}'       
    # $$2表示逃逸字符,以免被識別爲key傳遞來的參數
UserParameter=fpm.stats[*],curl -s http://127.0.0.1/fpm-status | awk
 '/^$1/{print $$NF}'
[] # 參數。例如 [*] 表示傳遞的參數都給後面的command。可以將參數傳遞給後面的命令

2、配置文件定義定義的tiems放置路徑 {在agent端使用}

    vim /etc/zabbix/zabbix_agentd.conf
    Include=/etc/zabbix/zabbix_agentd.d/*.conf

    在此路徑下新創建一個文件,並將自定義的item寫入此文件

3、示例

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

UserParameter=Nginx.active[*], /usr/bin/curl -s "http://$1:$2/status" | awk 
'/^Active/ {print $NF}'
UserParameter=Nginx.reading[*], /usr/bin/curl -s "http://$1:$2/status" | grep 
'Reading' | cut -d" " -f2
UserParameter=Nginx.writing[*], /usr/bin/curl -s "http://$1:$2/status" | grep 
'Writing' | cut -d" " -f4
UserParameter=Nginx.waiting[*], /usr/bin/curl -s "http://$1:$2/status" | grep 
'Waiting' | cut -d" " -f6
UserParameter=Nginx.accepted[*], /usr/bin/curl -s "http://$1:$2/status" | awk 
'/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$1}'
UserParameter=Nginx.handled[*], /usr/bin/curl -s "http://$1:$2/status" | awk 
'/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$2}'
UserParameter=Nginx.requests[*], /usr/bin/curl -s "http://$1:$2/status" | awk 
'/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$3}'

UserParameter=nginx.access_countaccess, /usr/lib/zabbix/externalscripts/logcheck_nginx.accesslog totalaccess 
UserParameter=nginx.access_count200, /usr/lib/zabbix/externalscripts/logcheck_nginx.accesslog 200access 
UserParameter=nginx.access_count202, /usr/lib/zabbix/externalscripts/logcheck_nginx.accesslog 202access
UserParameter=nginx.access_count4xx, /usr/lib/zabbix/externalscripts/logcheck_nginx.accesslog 4xxaccess
UserParameter=nginx.access_count3xx, /usr/lib/zabbix/externalscripts/logcheck_nginx.accesslog 3xxaccess
UserParameter=nginx.access_count5xx, /usr/lib/zabbix/externalscripts/logcheck_nginx.accesslog 5xxaccess

UserParameter=varnish.stat[*], /usr/lib/zabbix/externalscripts/varnishstatus 
varnish_stat $1
UserParameter=varnish.count[*], /usr/lib/zabbix/externalscripts/varnishstatus 
varnish_count $1
UserParameter=varnish.hitrate, /usr/lib/zabbix/externalscripts/varnishstatus 
varnish_hitrate

網絡發現功能

1、發現包括兩個階段:discovery 和 actions。

發現網絡的主機後,將主機添加到zabbix的監控中,並自定鏈接至指定的模板。可判定發現
的主機的服務角色。

2、發現主機的方式
IP範圍
主機上特定的服務
zabbix agent
SNMP agent

3、發現事件

Service Up              #服務持續 'up'
Service Down            #服務持續 'down'
Service Lost            #服務由 'up' 變 'down'
Service Discovered      #服務首次被發現或者由'down'變'up'
Host Up                 #主機至少有一個服務是 'up' 狀態
Host Down               #所有服務都持續 'down' 
Host Lost               #主機的所有服務在至少一個是 'up' 之後全部是 'down'。   
Host Discovered         #在主機的所有服務都 'down' 之後,至少一個服務是'up'。

4、

動作

zabbix 所有動作都是基於發現事件,例如:

發送通知
添加/刪除主機
啓用/禁用主機
添加主機到組
從組中刪除主機
將主機鏈接到模板/從模板中取消鏈接
執行遠程腳本命令
基於事件的網絡發現動作,可以根據設備類型,IP地址,狀態,運行時間/停機時間等進行
配置,查看動作操作和條件頁面。

5、網絡發現的主機會自動創建interface。
1.檢測到服務 - 例如,如果SNMP檢查成功,那麼將會創建一個SNMP接口;

2.如果主機響應Zabbix agent和SNMP的請求,那麼這兩種類型的接口都會被創建;

3.如果唯一性準則是是Zabbix agent鍵值或是SNMP OID返回的數據, 這第一個接口發現的
主機將會被創建,而這個接口將會被作爲默認接口,其他IP地址將會作爲附加接口被添加。

4.如果主機只響應agent檢查,則只能使用agent接口來創建。如果稍後開始響應SNMP的檢
查,那麼將添加SNMP接口爲附加接口。

5.如果最初創建了3個獨立的主機,他們都被自動發現的唯一性準則“IP”發現,然後修改自
動發現規則,爲了使A、B和C自動發現的唯一性準則結果是相同的,那麼接口B和C作爲接口
A的附加接口來創建第一個主機。主機B和C作爲個體主機仍然存在。在監控中 → 自動發現中,
添加的接口將以黑色字體和縮進形式顯示在“已發現的設備”這一列中,但在“已監測的主
機”這一列將只顯示第一個創建的主機A。由於被認爲附加接口的IP,所以不測量主機B和C
的“在線時間/斷線時間”。

6、主機發現後的action

web監控

1、監控指定站點資源下載速度,及響應時間,響應代碼。

****** 每一個站點稱爲一個:Scenario

內建key:

web.test.in[Scenario,Step,bps]  # 傳輸速率
web.test.time[Scenario,Step]    # 響應時間
web.test.rspcode[Scenario,Step] # 響應碼

監控方式

1、主動監控
相對於Agent而言,Agent主動報告數據給Server端。agent向server請求與自己先關的
監控項配置,
配置文件abbix_agent.conf:

ServerActive=
Hostname=
# HostnameItem=system.hostname
web界面接口配置item:
zabbix agent(active)

2、agent手動發送給server監控數據

web界面接口配置item:
    items類型爲"zabbix trapper"
agent端手動發送數據:
    zabbix_sender -z 172.18.26.1 -p 10051 -s node2 -k "send.test.data" -o 
 "10240"

    -s HOSTNAME     # 要與配置items配置的主機名一致
    -z ServerIP     # 服務器IP地址
    -o value        # 要發送的數據

3、被動監控
相對於Agent而言,server向Agent發起數據請求,Agent收集數據併發送給server端。

Linux啓用snmp的方法:

# yum install net-snmp net-snmp-utils 

配置文件:
    /etc/snmp/snmpd.conf

    常用的一些snmp的ACL
    定義ACL 

        .1.3.6.1.2.1.1.1.0:系統描述基本信息,SysDesc
        .1.3.6.1.2.1.1.3.0:監控時間,SysUptime
        .1.3.6.1.2.1.1.5.0:主機名,SysName
        .1.3.6.1.2.1.1.7.0:主機提供的服務,SysService
        .1.3.6.1.2.1.25.1.1:系統正常運行時間


        .1.3.6.1.2.1.2.1.0:網絡接口數目
        .1.3.6.1.2.1.2.2.1.2:網絡接口的描述信息
        .1.3.6.1.2.1.2.2.1.3:網絡接口類型
        .1.3.6.1.2.1.2:網絡接口的相關數據
        .1.3.6.1.4.1.2021:系統資料負載,memory,disk io,cpu load
        ....

啓動服務:

systemctl  start  snmpd.service 

測試工具:

# snmpget -v 2c  -c  public  HOST  OID
# snmpwalk  -v 2c -c public  HOST  OID 
Key <Unique string to be used as reference to triggers> For example, “my_param”.

JMX的監控

1、在Server端安裝額外組件

    zabbix-java-gateway-3.4.0-1.el7.x86_64.rpm

2、zabbix server配置

    javaGateway=
    javaGatewatPort=10052
    StartJavaPollers=5

3、被監控的JVM配置

/etc/sysconfig/tomcat

CATALINA_OPTS="-Djava.rmi.server.hostname=【TOMCAT_SERVER_IP】 -
Djavax.management.builder.initial= -Dcom.sun.management.jmxremote=true   -
Dcom.sun.management.jmxremote.port=12345  -
Dcom.sun.management.jmxremote.ssl=false  -
Dcom.sun.management.jmxremote.authenticate=false"
【TOMCAT_SERVER_IP】修改

4、web界面配置示例

    JMX interfaces 172.18.25.2

    key:
        jmx[java.lang:type=Memory,HeapMemoryUsage.used] 

代理分佈式監控

1、代理服務器安裝配置
1、安裝數據庫

MariaDB [(none)]> create database zbxproxydb character set 'utf8';
MariaDB [(none)]> grant all on zbxproxydb.* to 'zbxproxyuser'@'172.18.%.%' 
IDENTIFIED by 'zbxproxypass';
MariaDB [(none)]> flush privileges;
2、導入數據庫
##zcat /usr/share/doc/zabbix-proxy-mysql-3.4.0/schema.sql.gz | 
mysql zabbixproxydb
[ root@ygl ~ ]# mysql -uzbxproxyuser  -pzbxproxypass -h172.18.1.1 
zbxproxydb < schema.sql

3、安裝包

yum install zabbix-proxy-mysql-3.4.0-1.el7.x86_64.rpm 
zabbix-agent-3.4.0-1.el7.x86_64.rpm 
zabbix-get-3.4.0-1.el7.x86_64.rpm 
zabbix-sender-3.4.0-1.el7.x86_64.rpm

4、配置/etc/zabbix/zabbix_proxy.conf

Server=
    zabbix server主機地址;
Hostname=
    當前代理服務器的名稱;在server添加proxy時,必須使用此處指定的名稱;
    需要事先確保server能解析此名稱;
DBHost=
DBName=
DBUser=
DBPassword=

ConfigFrequency=10
DataSenderFrequency=1

3、在server端添加此Porxy
Administration –> Proxies

4、在Server端配置通過此Proxy監控的主機;

注意:zabbix agent端要允許zabbix proxy主機執行數據採集操作: 
    Server=
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章