概要
前回の記事で紹介したウェブアプリデプロイ環境だが今回はここにzabbixを導入してみる。 最近ではdockerの死活環境を監視するにはdatadogやprometheus+etc.等での監視環境があるがdatadogはコンテナ監視機能が有料なのとprometheusはalertとalertのgrafanaへの反映等にとても作業手順が多いため最初からalertやdashboardの設定がされているzabbixを採用した。 基本的に前回の続きからとなるためパッケージの導入やディレクトリ構成等は上記記事を参照してください。
zabbixの導入
まず手元の環境がlxcなのでコンテナ内特権を許可するために以下を実行。コンテナ内特権はzabbix-agentコンテナで使用します。
lxc config set {コンテナ名} security.privileged truecat <<EOT | lxc config set {コンテナ名} raw.lxc -lxc.cgroup.devices.allow = alxc.cap.drop =EOTlxc restart {コンテナ名}次にzabbix関連のコンテナを用意していきます今回はzabbix公式イメージではなくmonitoringartistのdocker向けのzabbixイメージを利用しますこちらを利用することでテンプレートの設定の手間等がほぼなしでセットアップができます。それでは前回作成したdocker-compose.ymlを下記の様に編集します。データベースのユーザ,パスワード等は適宜設定を変更してください。
version: '3'services: db: image: mysql ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: '0000'
laravel: image: yuim/laravel
zabbixdb: image: monitoringartist/zabbix-db-mariadb restart: always environment: MARIADB_USER: "zabbix" MARIADB_PASS: "zabbix" volumes: - zabbixdb:/var/lib/mysql
zabbixs: image: monitoringartist/dockbix-xxl restart: always environment: ZS_DBHost: "zabbixdb" ZS_DBUser: "zabbix" ZS_DBPassword: "zabbix" PHP_date_timezone: "Asia/Tokyo"
zabbixa: image: monitoringartist/dockbix-agent-xxl-limited privileged: true restart: unless-stopped volumes: - /:/rootfs - /var/run:/var/run
volumes: zabbixdb: driver: local次にzabbixのコンソールにアクセスできるようにvhosts.confを下記のように追記
server{ listen 80; server_name {fqdn}; location / { proxy_set_header Host $proxy_host; proxy_pass http://laravel; }}server{ listen 80; server_name {fqdn}; location / { proxy_set_header Host $proxy_host; proxy_pass http://zabbixs; }}最後に下記コマンドを実行するとzabbixが立ち上がります。コマンド実行完了後30秒程度でアクセスできるようになります。
docker-compose up -dagentの設定
起動が完了したら早速コンソールにアクセスしてログインします初期ID/PWはAdmin/zabbixですログインしたらメニューのConfigration->Hostsの順番でクリックし右上のCreate hostをクリックします。下記の通り設定してください。

次にTemplatesタブに移動してSelectをクリックしTemplate App Docker - www.monitoringartist.comとTemplate OS Linuxを選択しSelectをクリックその後下のAddをクリックしさらにその下にあるAddで登録します。初期設定で10分程度でコンテナが認識されるはずですコンテナの状況はMonitoring->Latset dataで確認できます。
alertの設定
そのままではdockerがstopした際等にalertをしてくれないのでプロトタイプにtriggerを設定していく。webの疎通確認のトリガーに関してはdockerだからといって特段変わった設定は要らないので今回は割愛します。プロトタイプのtrigger設定は先程のHostsの画面で先程作成したホストのDiscoveryをクリック次にRunning containersと記載がある行のTrigger prototypesをクリックその次に右上のCreate trigger prototypeをクリックそうするとtrigger作成画面になるので下記のように入力しAddをクリックし作成します。こちらも10分程度で反映されます。

mail通知の設定
dockerの監視に関する設定は以上になるが、zabbixにはメール通知機能がついておりそちらも設定したので設定方法を紹介する。まずAdministration->Media typesをクリック次にEmailをクリックgmailのsmtpsを利用する際は下記の様に設定します。

次にメール送信先ユーザーを設定していきます。今回は初期アカウントであるAdminに設定します。まずAdministration->Usersをクリック次にAdminをクリックMediaタブを選択しAddをクリックTypeでEmailを選択しSend toに送信先を入力しAddをクリック最後にその下のUpdateをクリックして保存します。最後にConfiguration->ActionsをクリックしDisabledになっている箇所をクリックしてEnabledにします。以上でメール送信の設定は完了です。