背景
デザイナーという立場上、業務ではあまり本番ネットワーク環境を構築する事はなく、あくまでアイディアを確認するためのデモ環境を作ることが多かったので、今まであまりサーバーの監視という事をしてきませんでした。
ただ、k8s
や GitLab CE
を使うようになって、サーバーの構成が複雑になってきたり、不具合が起こった時にサーバーが重くなりすぎて、そもそもssh等でサーバーにログインできなくなる…という問題が発生してきたので、監視ツールを導入する事にしました。
Zabbix + docker-compose
上記のような背景からあまり監視ツールには詳しくなかったのですが、会社の先輩から Zabbix
と MUNIN
というツールを教えてもらいました。MUNIN
の方が簡単そうではあったのですが、k8s
のクラスタも監視するとなると Zabbix
の方が良さそうに思ったので、今回は Zabbix
を採用する事にします。
幸いにして docker-compose
の構成が公式でアップされていたので、それをベースに構築したのですが、とても簡単に構築できました。これも先人達の知恵のおかげですね!
環境
基本的にサーバーは全て ubuntu 20.04
で構成しています。監視対象のクライアントは任意の数で問題ありません。
- Zabbix サーバー x 1
- 監視対象クライアント x n
Docker と docker-compose のインストール
基本的には、公式サイトの通りに進めていきます。
Docker
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
実行権限を与える
そのままだと実行にroot権限が必要なので、現在のユーザーでも実行できるようにしておきます。
sudo groupadd docker
sudo usermod -aG docker $(id -u -n)
この後、 設定を有効にするために再度ログインします。
Zabbix Server
まずはサーバーを立ち上げます。docker-compose
を使用したら簡単に起動できました。
clone
公式の docker-compose
一式を clone
してきます。
git clone https://github.com/zabbix/zabbix-docker.git
cd zabbix-docker
構成選択
任意の構成ファイルを docker-compose.yaml
としてコピーします。ここでは、 docker-compose_v3_alpine_pgsql_latest.yaml
を使用しました。
cp docker-compose_v3_alpine_pgsql_latest.yaml docker-compose.yaml
タイムゾーン
デフォルトではタイムゾーンが日本ではないので、変更します。
nano .env_web
…
PHP_TZ=Asia/Tokyo
…
iptables
通信に必要なポートを開放します。
sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 10051 -j ACCEPT
起動
以上で設定が完了したので、起動します。
docker-compose up -d
初期設定
ログインします。デフォルトのままなら、ユーザー名は Admin
(A大文字)、パスワードは zabbix
です。

設定 > ホスト > Zabbix server
と進みます。
デフォルトでは、インターフェイスの部分に 127.0.0.1
が入っていますが、それを削除し、代わりに DNS名のところに zabbix-agent
を入力します。また、接続方法も DNS
にします。

キャプチャを撮り忘れて後から撮ったので、既にホスト数が2になってしまっていますが、これでサーバーの基本設定は完了です!

Zabbix Agent
次に監視対象のクライアントの設定をして、サーバーに表示させます。
エージェントインストール
apt
で提供されているので、素直にインストールします。
sudo apt-get install zabbix-agent
エージェント設定
エージェントの設定を行います。
sudo nano /etc/zabbix/zabbix_agentd.conf
色々と設定項目がありますが、必須なのは
Server=<Zabbix ServerのIPアドレス>
ServerActive=<Zabbix ServerのIPアドレス>
Hostname=<任意のホスト名>
でした。
ここで設定するホスト名は任意ですが、後でサーバー側で設定する際に必要になります。
サービス再起動
設定を反映するために再起動します。
sudo service zabbix-agent restart
iptables
こちらも、通信用のポートを開けておきます。
sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 10050 -j ACCEPT
おまけ: Zabbix agent 設定をスクリプトで済ます
複数端末で手動設定するのは骨が折れるので、僕は以下のコマンドで実行しました。
SERVER_IP=<サーバーのIP>
HOSTNAME=<ホスト名>
sudo sed -i -e "s@127.0.0.1@$SERVER_IP@g" -e "s@Hostname=Zabbix server@Hostname=$HOSTNAME@g" -e "s@# Hostname=@Hostname=$HOSTNAME@g" /etc/zabbix/zabbix_agentd.conf
sudo service zabbix-agent restart
sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 10050 -j ACCEPT
Zabbix Server に登録
サーバーにログインして、設定 > ホスト > ホストの作成
と進みます。
- ホスト名
- グループ
- インターフェース
が必須の項目になります。ホスト名は先程設定したものを使用します。

テンプレートタブに移動して、任意のものを選択します。今回は Template OS Linux by Zabbix agent
を使用します。

ここまで設定したら、「追加」を押して設定完了です!
最後に
難しそうに感じていた監視ツールの導入ですが、意外な程すんなりと導入できました。Zabbix Server
を docker-compose
で起動できたのが大きいですね。
今回は導入しただけで細かい使い方は追えていませんが、人気も高く紹介記事数も多いツールとの事ですので、これから勉強していこうと思います。
参考
本記事は以下の記事を全面的に参考にして作成しました。
Zabbix 5.0 を Docker Compose で起動する手順
普段使いのUbuntuにZabbix-agentをインストールして監視する