[container][監視][zabbix] Zabbix Serverを移行してcontainerに乗せ換えてみた

     
    • 最終更新日時:2018/04/13 11:17:04

    Embed
    Screenshot-2018-4-8 zabbix zabbix-docker

    自宅ではZabbix Serverを設置しているのですが、監視というよりはパフォーマンスのモニタリングツールになっています。
    このたび、Microsoft Azureに設置していたのですが、諸々の事情によりVPSに移行しました。
    んでこの際なので、今までは普通にOSにZabbixパッケージをインストールして終わりだったのですが、公式にDockerイメージが用意されているので、container化してみることにしました。

    ちなみにこちらに公式のDocker-composeのyamlが用意されています。

    zabbix/zabbix-docker: Official Zabbix Dockerfiles (under development, not ready for production) /
    https://github.com/zabbix/zabbix-docker

    今回はalpineベースのイメージを使用しています。これはなるべく移行先のVPSのリソースを節約する意図があります。

    移行先のVPSの情報はこちら。

    $ cat /etc/os-release 
    NAME="Ubuntu"
    VERSION="16.04.4 LTS (Xenial Xerus)"
    ID=ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu 16.04.4 LTS"
    VERSION_ID="16.04"
    HOME_URL="http://www.ubuntu.com/"
    SUPPORT_URL="http://help.ubuntu.com/"
    BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
    VERSION_CODENAME=xenial
    UBUNTU_CODENAME=xenial

    $ docker version
    Client:
    Version: 18.03.0-ce
    API version: 1.37
    Go version: go1.9.4
    Git commit: 0520e24
    Built: Wed Mar 21 23:10:01 2018
    OS/Arch: linux/amd64
    Experimental: false
    Orchestrator: swarm

    Server:
    Engine:
    Version: 18.03.0-ce
    API version: 1.37 (minimum version 1.12)
    Go version: go1.9.4
    Git commit: 0520e24
    Built: Wed Mar 21 23:08:31 2018
    OS/Arch: linux/amd64
    Experimental: false

    割り当てられているリソースは、CPU1コア、メモリ3GB、SSD50GBといった変則仕様です。CPUが1コアなのは普段アイドルのほうが多いから、メモリが多いのは、MariaDBと他にcontainerを載せられる余裕がでるかな?というものです。

    1. まず最初に移行元のMariaDBからDBをdumpします。
    対象は"zabbix"だけなんで、これだけをdumpします。(DB名が違う場合は適宜読み替えてください)
    mysqldump -u root -p zabbix > dump-zabbix-db.sql

    参考:
    MariaDB (MySQL) のデータベースをダンプする - MariaDB データベースのバックアップ /
    https://www.ipentec.com/document/software-mariadb-dump-database

    2. DBをdumpできたら、何らかの方法で移行先へコピーしておきます。

    3. docker-composeして使用したいyamlファイルをダウンロードしておきます。
    私が今回対象にしたのは以下のファイルです。

    zabbix-docker/docker-compose_v3_alpine_mysql_latest.yaml at 3.4 · zabbix/zabbix-docker /
    https://github.com/zabbix/zabbix-docker/blob/3.4/docker-compose_v3_alpine_mysql_latest.yaml

    こちらについては、「zabbix-snmptraps」や「zabbix-java-gateway」などZabbix Serverのすべてを有効化するように組まれています。
    私は使用しないのでこれらの記述は削除しました。また、DBについてもMySQLではなくMariaDB10.2を使用しているので、そのように修正しています。これについては、別途記事にしようかと思います。

    あと「db_data_mysql」とかあるのですが、永続化のためにあるようなのですが、今回の構成だと使用しないはずなので削除しています。

    あとこのyamlファイルの嬉しいところは、消費リソースの制限についても設定があるため、ホスト側は最低限のリソースを残せる点ではないでしょうか。

    4. そしてもう一つ。このままではZabbix Serverの日本語化、正確に言えば漢字を表示するためのフォントがないので、そのあたりを修正します。
    このあたりはさすが @zembutsu 先生が記事を書いてくださっています。

    参考:

    Docker応用チュートリアル:Zabbix Server - Qiita

    Docker Compose を使い、Zabbix Server を実行します。 Docker Compose の基本操作( 応用チュートリアル:WordPress )の理解が必要です。 Zabbix SIA から公式 Docker イメージや docker-compose.yml が配布されています。しかし、標準のイメージでは Zabbix Server の UI を日本語にすると画像のフォントが文字化けする問題があります。また、エージェントは自分自身を監視できません。


    @zembutsu 先生のはUbuntuベースに対するものなので、alpineで使用するために以下のように修正する必要があるはずです。
    FROM zabbix/zabbix-web-nginx-mysql:alpine-3.4-latest
    RUN echo "http://dl-4.alpinelinux.org/alpine/edge/testing" | tee -a /etc/apk/repositories && \
    apk --update add --no-cache font-ipa && \
    mv /usr/share/zabbix/fonts/graphfont.ttf /usr/share/zabbix/fonts/graphfont.ttf.org && \
    ln -s /usr/share/fonts/TTF/ipag.ttf /usr/share/zabbix/fonts/graphfont.ttf

    あとはQiitaの記事と同様に作業していただければと思います。

    5. 一旦、docker-composeでupする
    $ docker-compose -f docker-compose_v3_alpine_mysql_latest.yaml up -d

    これで初期構築なZabbix Serverが構築できたはずです。

    6. 最初にdumpしておいたDBデータを、今回立ち上げたcontainer上のDBにリストアします。
    dumpデータをcontainer DBにコピーします。
    $ docker cp dump-zabbix-db.sql zabbixdocker_mariadb-server_1:/tmp/dump-zabbix-db.sql

    次にDB container上にログインします。
    $ docker exec -it zabbixdocker_mariadb-server_1 /bin/bash

    あとは通常のDBリストアと同様に作業します。
    # mysql -u root -p zabbix < /tmp/dump-zabbix-db.sql

    7. docker-composeの再構築は必要ないはずですが、念のため。
    $ docker-compose -f docker-compose_v3_alpine_mysql_latest.yaml down && docker-compose -f docker-compose_v3_alpine_mysql_latest.yaml up -d

    8. Zabbix Webにログインする。
    http:<ip address>:8081 にアクセスを行えば接続できるはずです。また、DBを移行していることから、移行元で使用していたユーザーとパスワードでログインできるはずです。

    あとはZabbix Agent側のServerの指定先を修正する必要があれば修正してください。名前を引き継いでなどいれば大丈夫だと思いますが・・・

    とりあえず私の移行作業はこのような感じでした。
    移行先のVPSのリソースの消費がどの程度になるのか分からなかったため、今のところは厳しめにリソース監視しています。

    これでZabbix自体にアップデートがあってもdocker-compose pullで対応できるようになりました。ただcontainerに切り替えてしまったため、あまりこちらで設定するようなことが無くなってしまうのはどうかと思うですが、まぁ家庭用なので手間はかけない方がいいかなという判断もあります。

    Card

    2018/4/13 追記:
    この移行の後に気が付いたのですが、Zabbixの設定でZabbix Server自体の監視設定があると思いますが、containerに移行した場合、localhost指定の監視ではなくなります。
    サーバの指定はzabbix-agent(DNS)を指定することで、Zabbix Serverの監視を行うことが出来ると思います。

    課題:
    今のところZabbix ServerのDBの監視をしたいのですが、こちらも分離しているので、リモート接続する形を取れば監視できるのかなと思っていますが、現在調査中です。
    関連記事


    Pagination

    Trackback

    Trackback URL

    https://kometchtech.blog.fc2.com/tb.php/2110-31364329

    Comment

    Post Your Comment

    コメント登録フォーム
    公開設定

    Utility

    Profile

    kometchtech

    Author:kometchtech
    なんちゃってエンジニアです。
    2009年10月から業務都合により大阪勤務になりました。
    2010年1月、HYBRID W-ZERO3を購入しました。
    2010年11月、HTC Desire HDを購入しました。
    2012年2月、都内の会社に転職しました。
    2012年5月、HTC One Xを購入しました。
    2012年8月、事情により休職しました。
    2012年8月、SONY Xperia SXを購入しました。
    2013年1月、一身上の都合により退職しました。
    2014年3月、都内の会社に就職しました。
    2016年8月、HPC系の会社に転職しました。
    2018年6月、Xperia XZ1 compactに機種変。

    Amazonほしい物リスト
    何か問題などありましたら、こちらまで。 Twitter:@kometchtech follow us in feedly

    カレンダー

    08 | 2018/09 | 10
    - - - - - - 1
    2 3 4 5 6 7 8
    9 10 11 12 13 14 15
    16 17 18 19 20 21 22
    23 24 25 26 27 28 29
    30 - - - - - -

    全記事(数)表示

    全タイトルを表示

    バロメーター

    カテゴリー

    カテゴリークラウド

    アーカイブ

    検索フォーム

    FCカウンター

    オンライン

    現在の閲覧者数:

    Amazonアソシエイト

    スポンサードリンク

    月間ページランキング

    ブログパーツ

    サイトランキング