a_hamada/ 2022年 4月 15日/ 技術

こんにちは 濱田です。
本日が私の2回目の投稿になります。

今回は先日社内でzabbixの監視サーバを立てる機会があったのでその時のことを書こうと思います。

はじめに

そもそもなぜ私がzabbixで監視サーバを立てることになったかと言いますと、
ある日上司から
「zabbixで監視サーバ立てたいからやってみて」
と突然言われたのが発端でした。
私はzabbixもましてやサーバすらまともに触ったことがありません。
その後しばらく思考がフリーズしましたねw。

そもそもzabbixとは

とは言え何も分からないとサーバも立てようがないのでzabbixについて調べました。

ご存じの方も多いと思いますが
zabbixとはサーバやネットワークなどを集中監視するためのオープンソースの統合監視ツールです。
とまあ監視サーバというくらいなので何かを監視するのは素人の私にもわかります。
問題はそのサーバをどうやって立てるのかというところでした。

サーバを立てる

さすがに初めてサーバを触るということで、まずはクラウド上に実験用のサーバインスタンスを立ててやってみることにしました。
先輩社員の力も借りつつ紆余曲折ありながらどうにかサーバを立てることができたので、次は実際に立てたサーバ上にzabbixをセットアップしていきます。
ちなみにサーバOSはubuntu20.04で作成しました。

zabbixサーバインストールの前準備

さてサーバも無事立てられたので、ここからは私が実際にzabbix serverをインストールした際の手順をざっくり書いていこうと思います。

まずインストールする上で必要な準備をしていきます。

まずは必要なライブラリ等をインストールしていきます。
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common

次にDocker系のインストールを行います。
$ 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
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

インストールしたdocker-composeに実行権限を付与します。
$ sudo chmod +x /usr/local/bin/docker-compose

続いてdockerのgroupを追加します。
※ただ私がこの手順を実行したときにはこの時点でgroupが追加されていたのでもしかしたら必要ないかもしれません。
$ sudo groupadd docker

ユーザをグループに追加します。
$ sudo usermod -aG docker $(id -u -n)

zabbix serverのインストール

いよいよここからzabbix serverをインストールしていきます。

と言ってもzabbixは公式からDockerイメージが提供されているので、
サーバインスタンス上でそのイメージからコンテナをビルドすればあっという間に監視サーバがセットアップできてしまいます。
今回の件で初めてDocker使いましたがすごく便利ですね!

まずgitからリポジトリをクローンしてきます。
$ git clone https://github.com/zabbix/zabbix-docker.git

クローンしたディレクトリにcd
$ cd zabbix-docker

使用するdocker-compose用のyamlファイルをリネームします。
今回はalpineとmysqlを使用するイメージで構築しました。
$ cp docker-compose_v3_alpine_mysql_latest.yaml docker-compose.yaml

次に環境設定ファイルを編集していきます。
※この記事ではnanoを使用していますが適当なエディタを使用してください。
$ nano .env_web

エディタでタイムゾーンの設定を日本に変更します。
PHP_TZ=Asia/Tokyo

次に先ほどリネームしたdocker-compose.yamlを編集していきます。
$ nano docker-compose.yaml

servicesセクション配下の下記以外のコンポーネントは使用しないので削除しました。
zabbix-server
zabbix-web-nginx-mysql
zabbix-web-service
mysql-server
db_data_mysql

また各コンポーネントのoptionセクションに下記を追加
ちなみに下記は記述したコンポーネントのDockerコンテナをOS起動時に自動起動するための記述です。
手動でいちいち起動しなくて良いのは便利ですね。
restart: always
※この時一つ注意したいのがインデントがずれると設定が機能しなくなるので追加する場所に気をつけてください。必ず各コンポーネントのoptionセクションに追加してください。

ここまで完了したら最後にコンテナを起動します。
$ docker-compose up -d

起動が問題なく成功していれば下記URLにアクセスするとzabbixの管理サイトにアクセスできるはずです。
http://<サーバのIPアドレス>

なんと思った以上に簡単ですね!
まあこの手順に行き着くまでにいろいろありましたが…
先ほども書きましたがDockerにも今回初めて触れました。
ものすごく楽で良いですね。
今では社内のあらゆるものの環境がDockerに置き換わりつつあります。
もうきっと離れられないだろうな~w

まとめ

今回はzabbixで監視サーバを構築する手順について書きました。
次回はzabbixの管理サイト上で実際に監視対象を追加したりあれこれする方法をご紹介しようと思います。
これからzabbixの監視サーバを立てようと思っている方のお役に立てれば幸いです。
それではまた!

About a_hamada

2020年9月からWebプログラマに転向した半人前 日々勉強することばかり。 最近使っている言語はもっぱらPython