Docker実践(六):容器監視

5137 ワード

前言
この2,3日容器のモニタリングの問題を研究して、配置の過程の中でネット上で基本的に成形の教程の文章が見つからないので、この文章は記録して、必要な人に助けをもたらすことを望みます.
スキーマの監視
モニタリングスキームZabbixを選択し、各コンテナ情報のモニタリングを実現するにはzabbix-docker-monitoringプラグインが必要です.
サービス・エンドの構成
ZabbixはC/Sアーキテクチャであり、サービス側は独立したホストに配置できることが望ましい.
サービス側docker-composeファイル:
version: '2'
services:
  zabbix:
    image: monitoringartist/zabbix-xxl
    ports:
      - 8080:80
      - 10051:10051
    volumes:
      - /etc/localtime:/etc/localtime:ro
    depends_on:
      - zabbix.db
    environment:
      ZS_DBHost: zabbix.db
      ZS_DBUser: zabbix
      ZS_DBPassword: zabbix_password
  zabbix.db:
    image: monitoringartist/zabbix-db-mariadb
    volumes:
      - /backups:/backups
      - /etc/localtime:/etc/localtime:ro
    volumes_from:
      - zabbix-db-storage
    environment:
      MARIADB_USER: zabbix
      MARIADB_PASS: zabbix_password
  zabbix-db-storage:
    image: busybox:latest
    volumes:
      - /var/lib/mysql

コンテナ方式運転Zabbix-agent
ホストにZabbix-agentをインストールすることなく、公式のコンテナを直接実行できます.
Zabbix-agentコンテナを実行します.
docker run \
  --name=zabbix-agent-xxl \
  -h $(hostname) \
  -p 10050:10050 \
  -v /:/rootfs \
  -v /var/run:/var/run \
  -e "ZA_Server=" \
  -d monitoringartist/zabbix-agent-xxl-limited:latest

コンテナの設定
  • ZA_Serverを変更し、直接サーバipに変更します.

  • コンテナ内のagentの構成変数を上書きする場合はrunの場合に-e ZA_Variable=valueの方法を使用できますが、AllowRoot、LoadModulePath、LoadModule、LogTypeの構成は上書きできません.AllowRootのデフォルト値は1です.Github Issueを参照してください.
    シンクホスト直接運転Zabbix-agent
    容器の方式運行zabbix-agentdocker.xnetデータの監視をサポートしていない.docker.xnetデータを監視するには、直接ホストコンピュータでzabbix-agentを運行し、zabbix_module_docker.soをロードし、Github Issueを参照しなければならない.
    1.zabbixユーザーとグループの追加
    groupadd zabbix
    useradd -g zabbix zabbix

    2.コンパイルインストールzabbix-agent
    apt-get install -y wget autoconf automake gcc subversion make pkg-config
    cd ~
    mkdir zabbix32
    cd zabbix32
    svn co svn://svn.zabbix.com/branches/3.2 .
    ./bootstrap.sh
    ./configure --enable-agent
    make install

    3.コンパイルzabbix_module_docker.so:
    cd ~/zabbix32
    mkdir src/modules/zabbix_module_docker
    cd src/modules/zabbix_module_docker
    wget https://raw.githubusercontent.com/monitoringartist/Zabbix-Docker-Monitoring/master/src/modules/zabbix_module_docker/zabbix_module_docker.c
    wget https://raw.githubusercontent.com/monitoringartist/Zabbix-Docker-Monitoring/master/src/modules/zabbix_module_docker/Makefile
    make
    cp zabbix_module_docker.so /usr/local/lib/zabbix/agent/

    4.zabbix_を起動するagentd
    システム管理プロセスを使用して、システムについてチェン一峰のネットワークログを参照し、/lib/systemd/system/zabbix-agentd.serviceファイルを作成します.
    [Unit]
    Description=Zabbix Agent
    After=syslog.target
    After=network.target
    
    [Service]
    Environment="CONFFILE=/usr/local/etc/zabbix_agentd.conf"
    Type=forking
    Restart=on-failure
    PIDFile=/tmp/zabbix_agentd.pid
    KillMode=control-group
    ExecStart=/usr/local/sbin/zabbix_agentd -c $CONFFILE
    ExecStop=/bin/kill -SIGTERM $MAINPID
    RestartSec=10s
    
    [Install]
    WantedBy=multi-user.target

    次のコマンドを実行してシステムctlにzabbix-agentdを起動する方法を通知します.
    sudo systemctl enable zabbix-agentd.service

    5.ロード・アイテムの構成
    zabbix-agentdプロファイル/usr/local/etc/zabbix_agentd.confの次のパラメータを変更します.
    Server=Zabbix-Server-IP
    ServerActive=Zabbix-Server-IP
    Hostname=Current-Host-Name
    Timeout=30
    LoadModulePath=/usr/local/lib/zabbix/agent
    LoadModule=zabbix_module_docker.so

    次のコマンドを実行してzabbix-agentdを起動します.
    systemctl start zabbix-agentd.service

    6.起動失敗分析
  • 起動に失敗した場合は、/tmp/zabbix_agentd.logファイルを表示します.存在しない場合は、手動で作成できます.所属するユーザーはzabbix:zabbixです.
  • エラー:
    zabbix_agentd [xxxxx]: cannot attach to existing shared memory: [13] Permission denied
    cannot allocate shared memory for collector
    zabbix_module_docker.soのコンパイルエラーであり、再コンパイルすればよい.

  • モニタの設定
    1.ログイン管理システム
    ブラウザはhttp://ZabbixServerIP:Portにアクセスし、zabbixサーバのweb管理インタフェースが表示されます.デフォルトのログインアカウントはAdmin/zabbixです(Adminの頭文字大文字に注意).
    操作を容易にするために、システム言語を中国語に設定できます.
    2.テンプレートのインポート
  • > にモニタテンプレートを導入:zabbix-template-app-docker.xml.

  • 注意:テンプレートには、すでに構成されているモニタリングスキームがあり、取捨選択を参照できます.
    3.ホストグループの作成
  • は、 > にホストグループを作成し、Docker Serversと命名した.

  • 4.ホストの作成
  • は、 > 内にホストを作成します.
  • グループ選択Docker Servers.
  • agent 監視するagent ipを記入します.
  • タブで、手順2でインポートしたテンプレートを選択し、更新を追加します.
  • は、 > において監視データを表示する.

  • リファレンス
  • How To Install Zabbix on Ubuntu & Configure it to Monitor Multiple VPS Servers
  • monitoringartist/zabbix-3.0-xxl
  • monitoringartist/zabbix-agent-xxl-limited
  • zabbix-docker-monitoring
  • Dockerモニタリングスキーム
  • の選択方法