zabbix 自動發現-磁盤io_1
在zabbix中添加新主機時,是需要手動添加,但在zabbix的Action裏有兩項功能,自動發現與自動註冊,運用這兩個功能中任意一個都可以實現自動添加機器,但添加的主機名是IP地址。
自動發現:添加discovery規則後,zabbix sever端基於IP範圍對agent機器進行掃描,並把掃描到的機器添加到web端。zabbix server端的操作,會使其壓力很大
自動註冊:zabbix agent端會自動發送信息到server端,然後agent主機會被添加到web端。zabbix agent端的操作
建議使用自動註冊功能,當在zabbix web端配置完discovery規則後,以後公司新增機器,就算不在一個網段,只要能夠與server機器通信,修改一下agent配置文件,就可以自動添加主機。當把服務安裝做成標準化,基本就很省心。
-
官網配置說明
地址: https://www.zabbix.com/documentation/3.4/zh/manual/discovery/auto_registration # 這裏定義自動註冊的方式 1、安裝fping yum -y install fping 2、步驟說明 名稱:自動註冊動作Linux 條件: 計算類型:AND 條件(A):主機元數據 似 Linux 條件(B):主機元數據 似 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae 操作 向用戶發送消息:通過Admin發送所有媒體 添加到主機組:Linux servers 鏈接到模板:Template OS Linux 3、zabbix_agentd.conf配置 Server=地址 ServerActive=地址 HostnameItem=system.hostname # 獲取主機名稱 HostMetadataItem=system.uname HostMetadata=Liunx 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae RefreshActiveChecks=60 # 刷新時間爲60秒, 實驗環境弄短一點,線上長一點 # 腳本 UserParameter=io.dis.status[*],/usr/local/zabbix/script/disk/discovery_iostat_disk.sh UserParameter=io.status[*],/usr/local/zabbix/script/disk/zabbix_iostat_disk.sh $1 $2
-
腳本
# 這裏是將文件弄成字典方式 [root@gmv6 disk]# cat discovery_iostat_disk.sh #!/bin/bash # # Name:service 自動發現io_磁盤 # Version Number:1.01 # Type: 自動發現io_磁盤 # Language:bash shell # Date:2017-08-07 # Author:xiong disk=(`awk '{print $1}' /tmp/io2.txt | sed -e "1,2d"`) length=${#disk[@]} printf "{\n" printf "\t\"data\":[\n" for ((i=0;i<$length;i++)); do printf '\t\t{' printf "\"{#DISK_NAME}\":\"${disk[$i]}\"}" if [ $i -lt $[$length - 1] ];then printf ",\n" fi done printf "\n\t]\n" printf "}\n" [root@gmv6 disk]# cat zabbix_iostat_disk.sh #!/bin/bash # # Name:service 自動發現io_磁盤 # Version Number:1.01 # Type: 自動發現io_磁盤 # Language:bash shell # Date:2017-08-07 # Author:xiong disk=$2 case $1 in rrqm) grep "$disk" /tmp/io2.txt | awk '{print $2}' ;; wrqm) grep "$disk" /tmp/io2.txt | awk '{print $3}' ;; rs) grep "$disk" /tmp/io2.txt | awk '{print $4}' ;; ws) grep "$disk" /tmp/io2.txt | awk '{print $5}' ;; rkB) grep "$disk" /tmp/io2.txt | awk '{print $6}' ;; wkB) grep "$disk" /tmp/io2.txt | awk '{print $7}' ;; avgrqsz) grep "$disk" /tmp/io2.txt | awk '{print $8}' ;; avgqusz) grep "$disk" /tmp/io2.txt | awk '{print $9}' ;; await) grep "$disk" /tmp/io2.txt | awk '{print $10}' ;; rawait) grep "$disk" /tmp/io2.txt | awk '{print $11}' ;; wawait) grep "$disk" /tmp/io2.txt | awk '{print $12}' ;; svctm) grep "$disk" /tmp/io2.txt | awk '{print $13}' ;; util) grep "$disk" /tmp/io2.txt | awk '{print $14}' ;; *) echo "使用方法 /bash disk_name disk_type" exit 5 ;; esac # 這個腳本獲取io的狀態, 最重要的腳本 [root@gmv6 disk]# cat iotop_total.sh #!/bin/bash # # Name:io scripts # Version Number:1.01 # Type:服務啓動腳本 # Language:bash shell # Date:2019年1月7日 # Author:xiong disk_raed(){ NUM=`/bin/sudo /sbin/iotop -b -n 1 | grep "Total DISK READ" | grep -v grep | awk -F "|" '{print $1}' | awk -F ":" '{print $2}' | awk '{print $1}' | awk -F "." '{print $1}'` echo ${NUM} } disk_write(){ NUM=`/bin/sudo /sbin/iotop -b -n 1 | grep "Total DISK WRITE" | grep -v grep | awk -F "|" '{print $2}' | awk -F ":" '{print $2}' | awk '{print $1}' | awk -F "." '{print $1}'` echo ${NUM} } main(){ case $1 in disk_raed) disk_raed ;; disk_write) disk_write ;; esac } main $1 最後需要隔一段時間執行一次這個腳本 crontab -e # zabbix io監控 0 */1 * * * /usr/local/zabbix/script/disk/iostat.sh
-
查看鍵值是否正確(服務器上執行)
[root@zabbix bin]# ./zabbix_get -s 地址 -k io.dis.status { "data":[ {"{#DISK_NAME}":"sda"}, {"{#DISK_NAME}":"dm-0"}, {"{#DISK_NAME}":"dm-1"}, {"{#DISK_NAME}":"dm-2"}, {"{#DISK_NAME}":"dm-3"}, {"{#DISK_NAME}":"dm-4"}, {"{#DISK_NAME}":"dm-5"} ] }
-
服務器上配置模板
創建自動發現規則
-
步驟
配置 – 動作 – 事件源(自動註冊) – 創建動作
-
創建動作
-
最終效果
接下篇- mysql庫 數據庫大小 索引大小, 數據庫行監控