Docker監視用のZabbix Agent



以前、会社のシステムをDocker化する際にZabbix Agentのために「monitoringartist/dockbix-agent-xxl-limited」を利用していました。

参考元:https://team-6.hatenablog.jp/entry/2017/08/11/220510

一ヶ月くらいテスト期間が終わり運営を初めて間も無く急に以下のエラーがで動かなくなってしましました。

Freeware licence - Usage of this binary is restricted to official monitoringartist Docker images only.

提供しているサイトにその理由が書いておりました。

参考元:https://github.com/monitoringartist/dockbix-agent-xxl

一ヶ月くらいはなんで動いたのかと思いましたが、先ずは対応が優先なので色々検索して見ましたがほとんどが同じ製品を使う例かDockerにZabbixサーバーを入れて利用する内容でした。

検索をしても「monitoringartist/dockbix-agent-xxl-limited」を利用して監視する内容ばかりでした。もうちょっと頑張って検索したらOSが違いますが、基本的にはLinux(CentOs)なので試して以下のURLの内容を参考で実行しました。

参考元:https://qiita.com/_BSmile_/items/5fe13bb6305de8f98ccd

お〜上手くいっている!!
.....

エラー

だが、こちらの内容では以下のDockerログように起動されないです。

cannot load module "zabbix_module_docker.so": /usr/lib/modules-load.d/zabbix_module_docker.so: invalid ELF header

参考元で利用している
モジュールは既になくなったので、モジュールは以下のところでDebian8をダウンロードしました。(注意:ダウンロードのリンク次第が一度リダイレクトされるのでHtmlを開いて元のURLを利用してダウンロード)

参考元通りに実装したログを分析したら参考元でCoreOs用のZabbixAgent(こちら) が古すぎるのが原因そうでした。

対策

先ず、docker-zabbix-coreos/etc/zabbix/(*1)をクロンしておく。

その後、以下のURL(Agentが3.0を想定)から該当するもの「zabbix-agent_3.0.18-1%2Bjessie_amd64.deb」をダウンロードして「files/zabbix-agent_2.2.7+dfsg-1.1_amd64.deb」の代わりに利用する。

Zabbix Official Repository

Dockerfileの「zabbix-agent_2.2.7+dfsg-1.1_amd64.deb」ファイル名をダウンロードしたファイル名「zabbix-agent_3.0.18-1+jessie_amd64.deb」に変更する。

これでOKでした。「monitoringartist/dockbix-agent-xxl-limited」と同じことが出来ました。

FROM debian:jessie
MAINTAINER kugyon.i <[email protected]>

ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update && \
    apt-get -y install locales && \
    dpkg-reconfigure locales && \
    locale-gen C.UTF-8 && \
    /usr/sbin/update-locale LANG=C.UTF-8 && \
    echo 'en_US.UTF-8 UTF-8' >> /etc/locale.gen && \
    locale-gen
ENV LC_ALL C.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US.UTF-8
ENV TERM xterm

RUN apt-get -y install \
        ucf \
        procps \
        iproute \
        supervisor
COPY etc/supervisor/ /etc/supervisor/

RUN apt-get -y install --no-install-recommends \
        curl \
        jq \
        libcurl3-gnutls \
        libldap-2.4-2 \
        netcat-openbsd \
        pciutils \
        sudo

COPY files/zabbix-agent_3.0.18-1+jessie_amd64.deb /root/
RUN dpkg -i /root/zabbix-agent_3.0.18-1+jessie_amd64.deb
COPY etc/zabbix/ /etc/zabbix/

RUN mkdir -p /var/lib/zabbix && \
    chmod 700 /var/lib/zabbix && \
    chown zabbix:zabbix /var/lib/zabbix && \
    usermod -d /var/lib/zabbix zabbix && \
    usermod -a -G adm zabbix

COPY etc/sudoers.d/zabbix etc/sudoers.d/zabbix
RUN chmod 400 /etc/sudoers.d/zabbix

RUN apt-get clean && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN curl -k -o /usr/lib/modules-load.d/zabbix_module_docker.so -O https://raw.githubusercontent.com/monitoringartist/zabbix-docker-monitoring/gh-pages/debian8/3.0/zabbix_module_docker.so
RUN echo 'LoadModulePath=/usr/lib/modules-load.d/' > /etc/zabbix/zabbix_agentd.conf.d/docker-module.conf
RUN echo 'LoadModulePath=/usr/lib/modules-load.d/' >> /etc/zabbix/zabbix_agentd.conf.d/docker-module.conf
RUN echo 'LoadModule=zabbix_module_docker.so' >> /etc/zabbix/zabbix_agentd.conf.d/docker-module.conf
RUN echo 'AllowRoot=1' >> /etc/zabbix/zabbix_agentd.conf.d/docker-module.conf

COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh

EXPOSE 10050
ENTRYPOINT ["/entrypoint.sh"]