ZabbixモニタリングDocker-アクティブモードスクリプトモニタリング

インターネットでdockerを監視するzabbixメソッドを見つけました。基本的に2つの方法があります。1つは外国の神によって書かれたzabbix_module_docker.soを使用して監視用のテンプレートを追加する方法です。この方法では、コンテナIDが不快であることが確認できます。自分で書くということです監視用のスクリプトをインターネットで他の人の監視用のスクリプトをダウンロードしたところ、データが常に断続的で、しばらくデータがないことがわかったので、自分で簡単なスクリプトを書くだけです。

私の考えは、dockerに付属のdocker statsコマンドを使用して、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

*そして#Defaultsrequirettyの行をコメントアウトする必要があります


2は、インストールディレクトリ内のスクリプトは、インターネットが変更されていないで、新しい発見のドッキングウィンドウのスクリプトをZABBIX直接に引き継ぎます
# 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を監視するための2番目のスクリプトを作成します
#!/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:コマンドが見つかりません」というエラーが報告された場合は、「yuminstallbc」でインストールしてください。


3.zabbix_agentd.confを変更します

vim zabbix_agentd.conf、内部に2つのパラメーターを追加し、パスへのスクリプトパスに注意してください

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


おすすめ

転載: blog.csdn.net/qq_36961530/article/details/80448301