1. 程式人生 > >zabbix監控docker-主動模式指令碼監控

zabbix監控docker-主動模式指令碼監控

在網上查找了zabbix監控docker的方法,基本上分為兩種方法:一是用國外大神寫的zabbix_module_docker.so加模板來進行監控,這種方法只能看到容器id很不爽;二是自己寫指令碼進行監控,在網上下載了別人的指令碼進行監控,發現數據總是斷斷續續的,隔一段時間會沒資料,索性就自己來寫一個簡單的指令碼。

我的思路是利用docker stats這個docker自帶的命令來檢視cpu、記憶體和網路,反正我要求的也不多。。下面正式開始:

1、給zabbix 免密sudo的許可權
echo "zabbix ALL=(root) NOPASSWD:/bin/docker,/usr/bin/python,/usr/local/zabbix/scripts/docker_monitor.py,/usr/local/zabbix/scripts/docker_low_discovery.sh,/usr/local/zabbix/scripts/docker_processmonitor.sh">>/etc/sudoers

* 並且需要註釋掉#Defaults    requiretty這一行

2、在zabbix安裝目錄下新建一個發現docker的指令碼,這個指令碼是網上的沒有改直接拿過來用
# cat /usr/local/zabbix/scripts/docker_low_discovery.sh
#!/bin/bash
#Fucation:docker low-level discovery
docker() {
            port=($(sudo docker ps -a|grep -v "CONTAINER ID"|awk '{print $NF}'))
            printf '{\n'
            printf '\t"data":[\n'
               for key in ${!port[@]}
                   do
                       if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then
                          printf '\t {\n'
                          printf "\t\t\t\"{#CONTAINERNAME}\":\"${port[${key}]}\"},\n"

                     else [[ "${key}" -eq "((${#port[@]}-1))" ]]
                          printf '\t {\n'
                          printf "\t\t\t\"{#CONTAINERNAME}\":\"${port[${key}]}\"}\n"

                       fi
               done

                          printf '\t ]\n'
                          printf '}\n'
}
case $1 in
docker)
docker
;;
*)
echo "Usage:`basename $0` {docker}"
;;
esac
2、新建第二個監控docker的指令碼
#!/bin/bash

#cat /usr/local/zabbix/script/docker_statsmonitor.sh
#author wusong [email protected]
#2018-5-24

unit_change(){
  tmp="$1"
  num=0
  if [ "$(echo ${tmp}|grep GB)" != "" ]; then
    tmp=${tmp%GB*}
    num=`echo "scale=2;($tmp*1024)/1" | bc`
  elif [ "$(echo ${tmp}|grep kB)" != "" ]; then
    tmp=${tmp%kB*}
    num=`echo "scale=2;$tmp/1024" | bc | awk '{printf "%.2f", $0}'`
  else
    num=${tmp%MB*}
  fi
  echo "${num}"
}
docker_info(){
       name="$1"
       info_type="$2"
       result=""
        if [ "${info_type}" = "cpu" ];then
                result=$(sudo docker stats ${name} --no-stream | grep -v "CONTAINER ID")
                result=$(echo ${result} |awk '{print $3}')
                echo "${result%\%*}"
        elif [ "${info_type}" = "mem" ];then
                result=`sudo docker stats ${name} --no-stream | grep -v "CONTAINER ID" | awk '{print $7}'`
                echo "${result%\%*}"
        elif [ "${info_type}" = "neti" ];then
                tmp=`sudo docker stats ${name} --no-stream |grep -v "CONTAINER ID" | awk '{print $8}'`
                unit_change ${tmp}
        elif [ "${info_type}" = "neto" ];then
                tem=`sudo docker stats ${name} --no-stream |grep -v "CONTAINER ID" |awk '{print $10}'`
                unit_change ${tem}
        else
                echo "Error:patameter wrong"
        fi

}

if [ $# -ne 2 ]; then
  echo "Usage:  must be have two parameter to execute 'containerName & cpu|mem|neti|neto'"
fi

case $2 in
  cpu|mem|neti|neto)
    docker_info $1 $2
  ;;
  *)
    echo "Usage:`basename $0` must be have two parameter to execute 'containerName & cpu|mem|neti|neto'"
  ;;
esac;

這個指令碼作用就是查cpu、記憶體和網路流量,如果執行的時候報錯`bc : command not found`的話,`yum install bc` 安裝一下就好了。

3、修改zabbix_agentd.conf

vim zabbix_agentd.conf ,在裡面加上兩個引數,注意指令碼路徑改成你的路徑

UserParameter=docker_low_discovery[*],/bin/bash /usr/local/zabbix_agent/scripts/docker_low_discovery.sh $1
UserParameter=docker_statsmonitor[*],/bin/bash /usr/local/zabbix_agent/scripts/docker_statsmonitor.sh $1 $2
4、最後在zabbix web介面匯入模板,關聯主機,稍等即可


模板在文後。

問題除錯:

如果等了很久沒有出圖,或者報錯,可以用zabbix_get進行除錯,不過使用zabbix_get時必須開啟客戶端被動模式,要求暴露客戶端監聽埠。

使用方法:在zabbix_server機器上進入zabbix/bin目錄,執行

zabbix_get -s 客戶端ip -p 10050 -k "docker_low_discovery[docker]"

zabbix_get -s 客戶端ip -p 10050 -k "docker_statsmonitor[容器name,cpu]"

模板下載地址:https://download.csdn.net/download/qq_36961530/10437083

相關推薦

zabbix監控docker-主動模式指令碼監控

在網上查找了zabbix監控docker的方法,基本上分為兩種方法:一是用國外大神寫的zabbix_module_docker.so加模板來進行監控,這種方法只能看到容器id很不爽;二是自己寫指令碼進行監控,在網上下載了別人的指令碼進行監控,發現數據總是斷斷續續的,隔一段時間

Zabbix3.X---Zabbix _Agent主動模式監控(Active)

zabbxi_agetnd(一)簡介如果zabbix_server端當主機數量過多的時候,雖然可以通過增加代理的方式來進行收集數據,但是需要增加proxy機,所以還可以通過zabbix_agent主動往由Server端去發生數據來解決,否則,Zabbix會出現嚴重的性能問題,主要表現如下: 1、當被監控端主機

Zabbix Agent active主動模式監控日誌(多關鍵字)

需求:監控/data/app/app/logs/det.log日誌檔案,出現關鍵字BDRC_WARNING則告警,級別為Warning;出現關鍵字:BDRC_EROROR則告警,級別為Inform

Linux安裝Zabbix Agent(主動模式、被動模式

roc ron star sts mark 周期性 建立 ESS 會有 環境: 系統:centos 7.4平臺:zabbix 3.2安裝包:zabbix-3.2.11.tar 編譯安裝路徑 :/usr/local/zabbix_agentd/主動模式、被動模式介紹 如果需

zabbix主動模式和被動模式、添加監控主機、添加自定義模板、處理圖形中的亂碼、自動發現

roo 清理 瀏覽器 間隔 原型 fin 監測 9.png sim 主動模式和被動模式 主動或者被動是相對客戶端來講的 被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接受連接,並把監控信息傳遞給服務端 主動模式,客戶端會主動把監控數據匯報給服務端,服務

zabbix主動模式與被動模式、添加監控主機、添加自定義模板

Linux學習筆記zabbix主動模式與被動模式 添加監控主機 添加自定義模板 1.將原來的模板下載下來,刪除自己不需要的,導入時要更改名字。 2.創建一個鏈接的模板,取消鏈接後,在刪除模板中不想要的選項。 處理圖形中的亂碼 zabbix主動模式與被動模式、添加監控主機、添加自定義模板

zabbix 主動模式監控

0.11 OS 配置文件 blog timeout zab ref safe unsafe 參考網站: http://www.mamicode.com/info-detail-1724685.html http://www.cnblogs.com/dadonggg/p/8

zabbix主動模式和被動模式|添加監控主機 |添加自定義模板|處理圖形

數量 方框 name work 監控主機 face 接收 agen har 一、Zabbix客戶端安裝 1)、在客戶端上也需要下載zabbix的yum源 2)、下載yum源wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabb

zabbix主動模式監控zabbix-proxy分散式監控

一 zabbix的主動模式監控 當zabbix_server端當主機數量過多的時候,雖然可以通過增加代理的方式來進行收集資料,但是需要增加proxy機,所以還可以通過zabbix_agent主動往由Server端去發生資料來解決,否則,Zabbix會出現嚴

zabbix監控docker

dock filesize gen bug table bpa pan lib 配置 說明 第一種方案,借助docker的python版的api,然後通過自己封裝自定義腳本來做,稍微麻煩點,但是可以達到個人自定義的效果。 第二種借助國外的一位大神已經封裝好的模板來做,簡單省

主動模式和被動模式、添加監控主機、添加自定義模板、自動發現

自定義模板 上傳 點擊 中文 path face pla interface 文字 19.7 主動模式和被動模式 主動或被動是相對客戶端來講的 被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接收連接,並把監控信息傳遞給服務端 主動模式,客戶端會主動把監控數

19.7 主動模式和被動模式;19.8 添加監控主機;19.9 添加自定義模板19.10處理圖形中的

處理圖形中的亂碼 添加監控主機 主動模式和被動模式 19.7 主動模式和被動模式1. 主動或者被動是相對客戶端來講的2. 被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接受連接,並把監控信息傳遞給服務端3. 主動模式,客戶端會主動把監控數據匯報給服務端,服務端只負責接收即可。4.

19.7 主動模式和被動模式 19.8 添加監控主機 19.9 添加自定義模板 19.10 處理圖形

19.7 主動模式和被動模式 19.819.7 主動模式和被動模式 19.8 添加監控主機 19.9 添加自定義模板 19.10 處理圖形中的亂碼 19.11 自動發現 19.7 主動模式和被動模式 19.8 添加監控主機 19.9 添加自定義模板 19.10 處理圖形

六十五、主動模式和被動模式、添加監控主機、添加自定義模板、處理圖形中的亂碼、自動發現

監控主機 自定義模板 圖形亂碼 自動發現 六十五、主動模式和被動模式、添加監控主機、添加自定義模板、處理圖形中的亂碼、自動發現一、主動模式和被動模式主動或者被動是相對客戶端來講的被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接受連接,並把監控信息傳遞給服務端主動模式,客戶端會主

主動模式和被動模式,添加監控主機,添加自定義模板,處理圖形中的亂碼,自動發現

zabbix主動模式和被動模式 主動或者被動是相對客戶端來講的被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接受連接,並把監控信息傳遞給服務端主動模式,客戶端會主動把監控數據匯報給服務端,服務端只負責接收即可。當客戶端數量非常多時,建議使用主動模式,這樣可以降低服務端的壓力。服務端有公網ip,

66.主動模式和被動模式、添加監控主機、添加自定義模板、處理圖形中的亂碼、自動發現

主動模式和被動模式 添加監控主機 添加自定義模板 處理圖形中的亂碼 一、主動模式和被動模式 主動或者被動是相對客戶端來講的 被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接受連接,並把監控信息傳遞給服務端 主動模式,客戶端會主動把監控數據匯報給服務端,服務端只負責接收即可。

zabbix監控docker容器以及使用資源利用率

docker 資源利用率 占用 left blog RoCE 客戶 stats docker-py 環境需求:由於公司使用docker程序在線上環境中,防止容器以但掛掉我們這邊可以隨時監控到容器的情況,以及容器的資源占用情況;公司領導決定使用zabbix監控docker可參

主動模式和被動模式,添加監控主機,添加自定義模板,處理圖像中的亂碼,自動發現

添加監控主機 name def 地址 觸發器 mar 桌面 客戶 release 主動模式和被動模式 主動或者被動是相對客戶端來講的 被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接受連接,並把監控信息傳遞給服務端 主動模式,客戶端會主動把監控數據匯報給服

19.7 主動模式和被動模式 19.8 添加監控主機 19.9 添加自定義模板 19.10 處理圖形中的亂碼 19.11 自動發現

win 修改時間 自帶 配置 亂碼 發現 出現 重啟 絕對路徑 主動模式和被動模式 主動或者被動是相對客戶端來講的 被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接受連接,並把監控信息傳遞給服務端 主動模式,客戶端會主動把監控數據匯報給服務端,服務端只負

主動模式和被動模式 添加監控主機 添加自定義模板 處理圖形中的亂碼 自動發現

img 圖片 roc emctl windows min 觸發 定義 har 一、主動模式和被動模式如果監控的主機只有幾十臺或者幾百臺服務器的時候,使用主動模式和被動模式都可以,沒有問題二、添加監控主機點擊“配置”---主機群組,先添加主機群組,再添加主機模板是預設的,包括