LoginSignup
3
2

More than 3 years have passed since last update.

Zabbix Server を docker-compose で起動し、他ホストからの情報を取得するまで

Last updated at Posted at 2020-09-29

背景

デザイナーという立場上、業務ではあまり本番ネットワーク環境を構築する事はなく、あくまでアイディアを確認するためのデモ環境を作ることが多かったので、今まであまりサーバーの監視という事をしてきませんでした。

ただ、k8sGitLab CE を使うようになって、サーバーの構成が複雑になってきたり、不具合が起こった時にサーバーが重くなりすぎて、そもそもssh等でサーバーにログインできなくなる…という問題が発生してきたので、監視ツールを導入する事にしました。

Zabbix + docker-compose

上記のような背景からあまり監視ツールには詳しくなかったのですが、会社の先輩から ZabbixMUNIN というツールを教えてもらいました。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 です。

login

設定 > ホスト > 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 Serverdocker-compose で起動できたのが大きいですね。
今回は導入しただけで細かい使い方は追えていませんが、人気も高く紹介記事数も多いツールとの事ですので、これから勉強していこうと思います。

参考

本記事は以下の記事を全面的に参考にして作成しました。

Zabbix 5.0 を Docker Compose で起動する手順
普段使いのUbuntuにZabbix-agentをインストールして監視する

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2