2019 年度 OSS リテラシー 3 : サーバ監視 (zabbix)

zabbix のインストールと設定

インストール

$ sudo -s

# apt-get update

# apt-get upgrade

# apt-get install zabbix-server-mysql zabbix-frontend-php zabbix-agent fonts-ipafont

データベース MySQL の設定 (1)

パッケージに関する文書は /usr/share/doc/ 以下に置かれている. 設定の方法に困ったときには /usr/share/doc/ 以下を見る癖をつけると良い. 今回は /usr/share/doc/zabbix-server-mysql/README.Debian を参照してデータベースとユーザの設定を行う.

$ sudo -s

# mysql -u root

  ...(略)...

  MariaDB [(none)]> CREATE DATABASE zabbix CHARACTER SET utf8;

     Query OK, 1 row affected (0.01 sec)

  MariaDB [(none)]> CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'XXXXXX';   (パスワードは適宜)

  MariaDB [(none)]> GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';

  MariaDB [(none)]> quit;

     Bye

zabbix データベースに必要なテーブルを作成する. /usr/share/doc/zabbix-server-mysql/README.Debian の記述を参照して, 以下のようにテーブルを一括して作成する. なお, 以下のコマンドにおいて, パスワードは自分のものに変更すること. また, -p とパスワードの間に空白を入れないこと. 但し, 2019/10/22 現在, このコマンド実行時にエラーが発生する.

# zcat /usr/share/zabbix-server-mysql/{schema,images,data}.sql.gz | mysql -u zabbix -p<password> zabbix 

ERROR 1118 (42000) at line 1278: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.

OSS を利用しているとよく起きることではあるが, このような場合は当該ソフトウェアのコミュニティの バグ情報などを見てみると良い. 上記の問題については, <URL:https://support.zabbix.com/browse/ZBX-16465> に報告が上がっている. それをみると, MariaDB のバージョン問題であること, やはり Debian 10 で困っている人たちがいること, 2019/10/02 に解決されたばかりの問題であること, などがわかる.

練習課題

<URL:https://support.zabbix.com/browse/ZBX-16465> には, データベースに必要なテーブルが作成されない原因やその解決方法が書かれている. 理由を把握し, 解決方法を読み取ること!

データベース MySQL の設定 (2)

前述の解決方法がわかったところで, データベースに必要なテーブルの作成を改めて行う. 簡単のために, データベースを一旦削除して作り直す.

$ sudo -s

# mysql -u root

  ...(略)...

  MariaDB [(none)]> DROP DATABASE zabbix;

  MariaDB [(none)]> CREATE DATABASE zabbix CHARACTER SET utf8;

  MariaDB [(none)]> ****** (ここで練習問題で把握したコマンドを実行)

改めてテーブルの作成のためのコマンドを実行する. なお, 以下のコマンドにおいて, パスワードは自分のものに変更すること. また, -p とパスワードの間に空白を入れないこと. 今度はエラーが出ないで済むだろう.

# zcat /usr/share/zabbix-server-mysql/{schema,images,data}.sql.gz | mysql -u zabbix -p<password> zabbix 

PHP の設定

PHP のタイムゾーンを Asia/Tokyo にしておかないと, 後述の Web インターフェイスを用いた設定作業でエラーが出る. そのためにこの段階でタイムゾーンを設定しておく.

# cd /etc/php/7.3/apache2

# vi php.ini 

  [Date]
  ; Defines the default timezone used by the date functions
  ; http://php.net/date.timezone
  date.timezone = Asia/Tokyo

zabbix の設定ファイルの修正

データベース名 (DBName), データベースのユーザ名 (DBUser) はデフォルトの値 (両方とも zabbix) から変更する必要はない. ホスト名 (DBHost) とパスワード (DBPassword) を変更すればよい. ホスト名は localhost (仮想マシン自身) にすること.

# vi /etc/zabbix/zabbix_server.conf

  ### Option: DBHost
  #       Database host name.
  #       If set to localhost, socket is used for MySQL.
  #       If set to empty string, socket is used for PostgreSQL.
  #
  # Mandatory: no
  # Default:
  DBHost=localhost

  ### Option: DBPassword
  #       Database password. Ignored for SQLite.
  #       Comment this line if no password is used.
  #
  # Mandatory: no
  # Default:
  DBPassword=XXXXXXXX

# /etc/init.d/zabbix-server restart

apache2 に zabbix 用の設定ファイルを読み込ませる.

# a2enconf zabbix-frontend-php

# /etc/init.d/apache2  restart

  [ ok ] Restarting apache2 (via systemctl): apache2.service.

zabbix で利用するフォントを日本語フォントに設定しておかないと, 日本語が表示できない. 今回は以下のように差し替える.

# cd /usr/share/zabbix/fonts/

# ls

  DejaVuSans.ttf

# mv DejaVuSans.ttf DejaVuSans.ttf.bk

# ln -s ../../fonts/truetype/fonts-japanese-gothic.ttf  ./DejaVuSans.ttf

Web インターフェイスを用いた設定作業

ブラウザから, http://10.176.0.XXX/zabbix にアクセスする (XXX は自分の仮想マシンに合わせてください).

MariaDB のユーザ zabbix のパスワードを入力する.

Name にはホスト名を入れる.

ここで, ターミナルから以下のファイルを作成する. Web インターフェイスは www-data 権限で動くので, ファイルの所有者・グループをそれぞれ www-data にしておく必要がある.

# touch /etc/zabbix/zabbix.conf.php

# chown www-data.www-data /etc/zabbix/zabbix.conf.php

デフォルトユーザ/パスワードは Admin/zabbix である.

すぐにパスワードを変更しないといけない. 右上の人型のアイコンを押すと設定画面が現れる. パスワードと言語を変更する.

サーバ状態の監視

「監視データ」=> 「スクリーン」=> 「Zabbix server」を選択. 自分の vm が表示されることを確認すること.

今後のホスト監視のための設定

今後, センサーを自動的に zabbix で監視する予定である. そのための設定をしておく. 「設定」=> 「アクション」=> イベントソースを「自動登録」に => 「アクションの作成」

アクションに「ホストメタデータ」として IoTeX2019 を入力, 実行内容に「ホストを追加」「ホストグループに追加」「テンプレートとリンク」を設定する. なお, これらの設定を行う際は「追加」「新規」のアイコンをその都度押す必要がある.

課題

  • 自分のサーバ (vm) の状態を zabbix 上で表示して, そのスナップショットを wbt で提出せよ.
  • 以下の手順に従って, 友人のサーバ (vm) の監視を行い, そのスナップショットを wbt で提出せよ.

友人同士でサーバを監視する

zabbix-agent の設定

設定ファイルを編集する. 先に HostMetadat が IoTeX2019 となっているサーバを自動登録する設定がしたので, それを利用している.

$ sudo -s

# cd /etc/zabbix

# cp zabbix_agentd.conf zabbix_agentd.conf.bk

# vi zabbix_agentd.conf  

  (以下の項目のみ設定. 必要に応じてコメントアウトする/コメントアウトを外す)

  Server=127.0.0.1,10.176.0.XXX             (友人の IP を追加)

  ServerActive=127.0.0.1,10.176.0.XXX       (友人の IP を追加)

  HostnameItem=system.hostname

  HostMetadata=IoTeX2019

再起動

# /etc/init.d/zabbix-agent restart

zabbix のスクリーンの設定

自分の zabbix の画面 (http://10.176.0.XXX/zabbix/) を開く. 「設定」-> 「ホスト」から自分のラズパイを選択すると, 友人のホストが登録されているのがわかると思う.

次に, 自動登録されたホストの監視データを表示するためのスクリーンを用意する. まずは初期設定を行う. 「監視データ」=> 「スクリーン」 ( => 「全てのスクリーン」) => 「スクリーンの作成」を選ぶ.

次に, 作成したスクリーンを選択し, そこにグラフを嵌め込んでいく. リソースとして「グラフ」や「シンプルグラフ」を使うと良いだろう. ダイナミックアイテムのチェックボックスにチェックを入れておくと良い (複数のホストに対して同じスクリーンを使えるようになる).

最終的には以下のようなスクリーンを作ると良い.