zabbixの概要
zabbixは、アプリケーション、サーバ、ネットワークの監視ツールです。サーバに限れば、メモリ、CPU、SSD容量の監視を行うことができます。
似たサービスで、CloudWatchがあります。このCloudWatchとの違いは、自由度です。Cloud WatchはCPUの利用率、メモリ利用率を監視できます。しかし、容量のようなエージェントを利用した関しには向いてはいません。CloudWatchにはエージェントがありますが、この方法は非推奨となっています。スクリプトで収集した情報を監視できない以上、他の自由度の高い監視には不向きです。
Zabbixでは監視方法を自由にカスタマイズすることができます。監視できるものであればzabbixで監視ができますし、その監視のアラートを自身で付け加えることができます。
それ以外にZabbixは複数の異なるサーバの監視もできます。また、ネットワーク監視もエージェント経由で行うことができます。このように、どのような環境であっても監視することができるのもZabbixの特徴でもあります。
zabbixの利点
Zabbixの特徴は、カスタマイズ性が非常に高いところです。カスタマイズ性が高ければ、それぞれの業務フローに合わせた運用を可能にします。
例えば、集計作業が主なサーバがあったとしましょう。そこのサーバは計算リソースを主であり、監視対象がCPUとメモリだけ監視していればいいとします。そして、監視業務の内容がCPUとメモリを常時監視だとしましょう。人がこれを監視しようとすると、ずっと画面に張り付いているかスクリプトを使って5分ごとに値を取得して閾値を超えた場合にやる方法があります。
Zabbixの場合は、CPUとメモリを監視するテンプレートを作っておいて監視するサーバに紐づけておきます。テンプレートにはCPUとメモリを監視する設定とCPUとメモリの閾値を設定しておきます。その情報をダッシュボードに載せておいて、監視しやすい体制を取ります。
画像の通り、ダッシュボードにはCPUとメモリを載せています。日次業務でCPUとメモリを監視したいのであれば、このダッシュボードを見ればいいです。更に、Zabbixはデータを貯蓄をしているので、過去のデータも閲覧することができます。
更に、テンプレートにはトリガーと呼ばれる閾値を超えた場合アラートを出せる機能があります。これもダッシュボードに仕込むことができるので、朝一でダッシュボードを見ればアラートがどこで上がっているかも分かります。
Zabbixはそれ以外にもネットワークの監視もできるので、ネットワークの監視情報もダッシュボードに置くことができます。つまり、業務に必要な物が1つの画面に集約をすることができます。
それ以外にも、多種多様な監視をすることができるので、値の表示のやり方も閾値の設定もさまざまな方法で設定をすることができます。
Zabbixははじめから何もかも用意されているソフトではありませんが、利用者が使い道を決めていて、業務プロセスも決めていた場合その形に合わせた監視運用を助けてくれます。
zabbixの使い方
用語の説明
アイテム
アイテムは、サーバを監視する対象を設定します。
アイテムには、CPU、メモリ、サーバ容量、その他の監視できる項目を追加することができます。
アイテムには表示する値の単位を決定でき、監視する間隔を決めることができます。
トリガー
トリガーは、閾値を超えた場合にアラートを出す設定をします。
メモリ利用率が80%超えた場合重度の障害のアラートを出す、のような設定をすることができます。
アラートには「情報、警告、軽度の障害、重度の障害、致命的な障害」で分けられていて、各アラートに重要度を振り分けることができます。
ホスト
ホストは監視対象のサーバを設定をする項目です。
ここにテンプレートを付けて、テンプレートで設定している監視項目、閾値の設定を取り込みサーバを監視してくれます。
ホストには主に、監視するサーバのIPアドレス、アイテム、トリガーを設定することができます。
テンプレート
テンプレートはホストのアイテムやトリガーといったホストに対して設定をするサーバのIPアドレスの設定を除いた設定集です。
テンプレートにアイテムやトリガーなどの項目を設定することで、別のサーバに再利用することができます。
テンプレートを作っておくことで、同じ設定を別サーバにすることを防ぎ監視項目の設定の手間を減らすことができます。
エージェント
エージェントは、監視対象に置くことで監視サーバの情報をzabbixに置くことができます。
エージェントを監視対象に仕込むことでzabbixサーバはエージェントからの情報を吸い出しやすくなります。
構築の達成目標
- zabbixでサーバ容量の監視
- テンプレートを作り、ホストに紐付ける
- ホストの監視情報をzabbixのダッシュボードに入れる
前提条件
- ubuntu 20.4
- zabbix構築済み(dockerで構築済み)
- VPS: Conoha
zabbixエージェントをインストール
1. zabbix agentをaptに追加
$ mkdir app $ cd app $ wget https://repo.zabbix.com/zabbix/5.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.4-1+ubuntu20.04_all.deb $ sudo dpkg -i zabbix-release_5.4-1+ubuntu20.04_all.deb $ sudo apt update
2. zabbix agentをインストールする
$ sudo apt install zabbix-agent
3. agentの設定を変更する
今回は、自身のコンテナのエージェントに対しての設定を組み込みます。
ここで、受け付けるzabbixサーバのIPを設定します。
Server=127.0.0.1, 0.0.0.0/0
/etc/zabbix/zabbix_agentd.conf
ufwのポートを開けます。
$ sudo ufw allow 10050/tcp
4. agentのセキュア化
以下の操作はroot権限で行います。
$ sudo su $ mkdir /etc/zabbix/keys $ openssl rand -hex 32 > /etc/zabbix/keys/zabbix_agentd.psk
以下の操作でpskの内容を見ることができます。pksの値はzabbixサーバのセキュリティの設定で使います。
$ cat /etc/zabbix/keys/zabbix_agentd.psk
zabbix agentの設定を変更を行う。
TLSConnect=psk TLSAccept=psk TLSPSKIdentity=${ 適当なパスワードを入れておく } TLSPSKFile=/etc/zabbix/keys/zabbix_agentd.psk
/etc/zabbix/zabbix_agentd.conf
TLSPSKIdentityの値はzabbixサーバのセキュリティの設定で使います。
4. agentを再起動、常時起動を設定する
テンプレートの作り方
1. 設定からテンプレートをクリックする
設定をクリックして、赤枠のテンプレートをクリックする。
2. 「テンプレートの作成」をクリック
赤枠の「テンプレートの作成」をクリックする
3. テンプレート名と所属するホストを設定する
テンプレート名とグループを設定する。
テンプレート名は「Test_Template」としておく。任意の名前を入れも問題はない。
グループは「zabbix server」を選択する
4. テンプレートにサーバ容量を監視するテンプレートを追加する
赤枠の「Test_Template」をクリックする
赤枠の「テンプレートとのリンク」をクリック後、「Lionux memory by Zabbix agent」を選択する。これでメモリ監視をできるようにする。
ホストの追加の方法
1. 設定からホストをクリックする
赤枠の「ホスト」をクリックする
2. 「ホストの作成」をクリックする
赤枠の「ホストの作成」をクリックする
3. ホスト名と所属グループとインターフェイスを設定
ホスト名とグループとインターフェイスを指定する
ホスト名は「Test_HostServer」とする。ここは任意の名前を入れても問題はない。
グループは「Zabbix Server」を千tなくする
インターフェイスには、自身のIPアドレスを入れる。portはそのままにする。
4. テンプレートとつなげる
赤枠のテンプレートをクリックする。そして、青枠の「新規テンプレートをチンク」に先程作ったテンプレートをつなげる。
5. hostのセキュリティ情報を更新する
赤枠の暗号化をクリックする
青枠には「PSK」を選択
黄枠には「PSKのアイデンティティ」にはPSKの設定で作ったパスワードを入れます。
pskには先程暗号化で作ったpskの文をそのまま入れます。
ダッシュボートの追加のやり方
1. ダッシュボードの「ダッシュボードの変更」をクリックする
赤枠のダッシュボードをクリックします。
赤枠の「ダッシュボードの変更」をクリックする
2. Add widgetを作成する
スペースを開けて範囲を選択したら「add wedge」をクリックする
3. データの概要を選択して、ホストを指定する。
赤枠のタイプを「データの概要」を選択する。
青枠の部分にはホストグループを「Zabbix Serve」、ホストを先程作った「Test_HostServer」とします。
ダッシュボードを整形したら、青枠の「変更を保存する」をクリックします。これでダッシュボードにサーバの概要が表示されます。
参考資料
ubuntuのzabbixagentのインストール方法: https://izuminmin.com/server/zabbix5-agents-ubuntu/
インスタンスの利用可能な CloudWatch メトリクスのリスト表示: https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html
Amazon EC2 Linux インスタンスのメモリとディスクのメトリクスのモニタリング: https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/mon-scripts.html