ウチのESXiはシステム監視ができない。現在、4つのゲストOSが動いているのだが、CPUの使用率とかメモリの使用量とかが全て0のまま。インストールで何かをミスったのかもしれないけど、この問題について親切に教えてくれるページが見つからない…
Zabbix で全てのホストを監視することで状況を把握、ついでに家の中にある色々なデバイスの状態も監視していこう。
今回は、Ubuntu18.04LTS & MariaDB な環境に Zabbix4.0LTS をインストールしている。
Zabbixでネットワークにある装置を監視
Zabbix自体は何年も前に顧客が運用に取り組んでいて、かなりの規模の監視ができるよ、と教えてくれていた。間違いなくオーバースペックだが、ウチのESXiで動いているホストやその他機器を監視するためにZabbixを導入してみよう。
※監視についても書いていったらかなりの長さになってしまったので、インストールまでで一旦区切った。今後、監視についても投稿していく。
Zabbixの学習と計画
学習
とってもわかりやすい。
Cybertrust / Zabbix とは?
だが、人気があるだけに落とし穴もありそう。
Qiita / ネット情報を元にZabbixをインストールするとハマるポイント
バージョン違い、記述の省略…あるあるだよなぁ。
この投稿はきっと後で使うときが来るから、できるだけ全てをメモしていこうと思う…。
そんな あるある を意識した上で読めばきっと理解が進む。
あぱーブログ / ZabbixでLAMPサーバを監視設定メモ 〜もくじ〜
計画
ウチは環境がプアーなので、Zabbix 専用のサーバーを立てられない。データーベースを搭載しているサーバーは、各種サービスを提供しているアプリケーションサーバーかだけか…。
The Internet
┌──┴──┐
│ Router1 │※v6プラスで各種デバイスをインターネット接続させる。
└──┬──┘ IPv4でインターネット側にサービス提供するためPPPoEをブリッジ。
├─────────────┬───────┐
┌───┼─────────────┼─────┐ │ ┌────────┐
│ESXi │ │ │ ├─┤Main PC(R1) │
│┌──┴──┐ ┌───┴────┐│ │ └────────┘
││ Router2 │ │ Samba ad dc(R1)││ │ ┌────────┐
│└──┬──┘ └───┬────┘│ ├─┤Printer(R1) │
│ │ │ │ │ └────────┘
│ │ ┌───────┐ │ │ │ ┌────────┐
│ └──┤ Application ├──┘ │ ├─┤Wi-Fi Bridge(R1)├─ ケータイ/タブレット
│ │ Server(R2) │ │ │ └────────┘
│ └───────┘ │ ├─ その他諸々(R1) …
└───────────────────────┘ …
(1) Router2 は PPPoE でグローバルIPv4アドレスを払い出してもらう。アプリケーションサーバーは Router2 をデフォルトゲートウェイ(R2と表記)にしてサービスをインターネットに公開。
(2) Samba ad dc や その他の機器は Router1 デフォルトゲートウェイ(R1と記載)に設定し IPv6 or IPv4(v6プラス) でインターネットに接続。
(3) 全てが同一セグメントにいるので、Main PCをはじめとする各種デバイスは、アプリケーションサーバーのサービスを受けられる。
家庭内なので監視する対象はたかがしれているので、将来アプリケーションサーバーに Zabbix を搭載する計画として、調査用に使っている temp(その他諸々の1つ)というサーバーに導入して動きを確認してみることにした。
アプリケーションサーバーに導入するとなると、Zabbix を搭載するアプリケーションサーバー自体も監視対象になるので、そういう設定についても考えていく。
Zabbixのインストール
パッケージのインストール
パッケージの選定
Ubuntu18.04 は Zabbix を用意してくれているようなのだけれど、バージョンは3.0.12の模様。
ubuntu packages / zabbix-server-mysql
インストールについて調べてみたところ、リポジトリがあるみたい。
Server World / Zabbix 4.0 : インストール
本家のダウンロードページを見ると、最新版は4.2、LTS は4.0らしい。
ZABBIX / Download and install Zabbix
LTSとポイントリリースという考え方で、LTS のサポート期間は5年と書かれている。
ZABBIX / サポート期間とリリースポリシー
これらの情報から、Zabbix 4.0 LTS を選定した。
パッケージのインストール
ダウンロードページでプラットフォームを選択すると、インストール手順が表示される。
- ZABBIXバージョン
→ 4.0 LTS - OSディストリビューション
→ Ubuntu - OSバージョン
→ 18.04 (Bionic) - データベース
→ MySQL ※MariaDBだけれど多分大丈夫
そこに書かれている方法でインストールしてみる。
#リポジトリのインストール
$ wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-3+bionic_all.deb
$ sudo dpkg -i zabbix-release_4.0-3+bionic_all.deb
$ sudo apt update
#パッケージインストール
$ sudo apt -y install zabbix-server-mysql zabbix-frontend-php zabbix-agent
#データベースとユーザーの作成
$ sudo mysql
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';
MariaDB [(none)]> quit;
Bye
#データベースのスキーマ登録
$ sudo zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Enter password: [データベースユーザーのパスワード][Enter]
設定ファイルの編集
Zabbix の設定ファイルを編集。
/etc/zabbix/zabbix_server.conf
…
### Option: DBPassword
# Database password.
# Comment this line if no password is used.
#
# Mandatory: no
# Default:
# DBPassword=
DBPassword=データベースユーザーのパスワード
…
Apache の設定ファイルを編集。
/etc/zabbix/apache.conf
# Define /zabbix alias, this is the default
<IfModule mod_alias.c>
Alias /zabbix /usr/share/zabbix
</IfModule>
…
<IfModule mod_php5.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value max_input_vars 10000
php_value always_populate_raw_post_data -1
# php_value date.timezone Europe/Riga
php_value date.timezone Asia/Tokyo
</IfModule>
<IfModule mod_php7.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value max_input_vars 10000
php_value always_populate_raw_post_data -1
# php_value date.timezone Europe/Riga
php_value date.timezone Asia/Tokyo
</IfModule>
…
※以下のサイトを参考にタイムゾーンを設定。
kngy.net / PHPバージョンアップの際に発生するタイムゾーンエラーの対処方法
このファイルは /etc/apache2/conf-enabled にシンボリックリンクが作られており、サービス公開されているので、
https://temp.hogeserver.hogeddns.jp/zabbix
でサービスにアクセスできる。
利用ポートの開放
Zabbix サーバーは標準で10051ポートでレポートを受ける模様。
もちろん変更することもできるが、監視するホスト全てでポートの設定が必要になってめんどくさいことになってしまうので、10051ポートを開放することにする。
$ sudo ufw allow to any port 10051 from any comment "ZABBIX Server"
サービス開始
行った変更を反映させるため、サービスを再起動する。
また、zabbix-server と zabbix-agent を有効化し、再起動したらサービスが起動するようにする。
$ sudo systemctl restart zabbix-server zabbix-agent apache2
$ sudo systemctl enable zabbix-server zabbix-agent
※apache2は既に有効化されているので enable していないが、しても実害なし。
この状態で
https://temp.hogeserver.hogeddns.jp/zabbix
にアクセスしてみると…Welcome画面にに到達。
フロントエンドのインストール
ここからはこのページでインストールの仕方を教えてくれる。
ZABBIX / Zabbix Documentation 4.2 - Installing frontend
Nest step をクリック。
問題が発生していないことを確認して Next step をクリック。
データベースの接続情報を入力して Nest step をクリック。
Zabbix server はこのホストで動いているので、localhost としている。
Name のところにホスト名を入れておくと、Webページの右上に表示される。
Next step をクリック。
入力内容に間違いがないことを確認して Next step をクリック。
インストール成功。Finish をクリック。
ここまでに入力した値は以下のファイルに保管されている。
/etc/zabbix/web/zabbix.conf.php
<?php
// Zabbix GUI configuration file.
global $DB;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = 'localhost';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'データベースユーザーのパスワー';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';
$ZBX_SERVER = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'temp';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
ログイン画面に到達。右上には Hogeserver と書かれている。
Username: Admin
Password: zabbix
でログインする。
ログインできた。
日本語表示にする
フロントエンドの日本語表示
Zabbix にアクセスして日本語表示にしようとしたら、こんなメッセージが出ている。
You are not able to choose some of the languages, because locales for them are not installed on the web server.
Google先生による翻訳:
一部の言語は、Webサーバーにインストールされていないため、選択できません。
どうやら、日本語ロケールが必要ということの模様。
kakakakakku blog / ZabbixでWebインターフェースを日本語表示する
この中で使われている localedef って何なのかな?と調べてみると、日本語ロケールをコンパイルするみたい。
ubuntu manpage / localedef
日本語ロケールをインストールするだけなら、こちらの方が良さそうな…
Qiita / ubuntuで(できるだけ)全部のlocaleを追加する
で、もう一度ロケールについて探してみると…
ZABBIX org / How to/install locale
$ sudo dpkg-reconfigure locales
コマンドを実行すると設定画面が現れるので、ja_JP.UTF-8 UTF-8 を選択。
(行を合わせてスペースキーを押すとマークが入る)
次にデフォルトロケールの選択画面になる。これは en_US のままとした。ja_JP に変えてもいいのかもしれないけれど、経験上、エラーログとかで調査する場合に en の情報量が半端なく多いから。
設定が終わると以下が表示されてロケール導入完了。
Generating locales (this might take a while)...
en_US.UTF-8... done
ja_JP.UTF-8... done
Generation complete.
Apacheを再起動して反映させる。
$ sudo systemctl restart apache2
ブラウザでページを再表示させると日本語が選択できるようになる。
これで日本語環境になった。
グラフの日本語表示
このままだとグラフ表示で日本語が化けるので、設定を変更する。
誰でも ZABBIX / 4. グラフ 日本語文字化け修正
M+FONTSがかっこいいと思ったので、インストールしてみた。
$ sudo apt install fonts-mplus
※好みのフォントがあればそれをインストールすればOK。
以下のコマンドでグラフで使用するフォントを切り替える。
ここでは 2p regular を指定してみた。
$ sudo update-alternatives --install /usr/share/zabbix/assets/fonts/graphfont.ttf zabbix-frontend-font /usr/share/fonts/truetype/mplus/mplus-2p-regular.ttf 20
update-alternatives: using /usr/share/fonts/truetype/mplus/mplus-2p-regular.ttf to provide /usr/share/zabbix/assets/fonts/graphfont.ttf (zabbix-frontend-font) in auto mode
※インストールしたフォントは /usr/share/fonts の配下にインストールされるみたい。好みのフォントについて ubuntu パッケージ検索 で調べてファイルを直接指定すればいい。
これで、グラフも日本語表示ができるようになった。
一緒に利用するツールのインストール
zabbix_get
エージェントを使って監視するアイテムを設定する際、zabbix_get コマンドを使えばどんな値が取り出せるのか確かめてみることができる。
Zabbix サーバーをインストールしたら一緒にインストールされそうなものだけれど、明示的にインストールしないとこのコマンドは使えない。
$ sudo apt install zabbix-get
snmpwalk
SNMP を使って監視するアイテムを設定する際、snmpwalk というコマンドでその装置の状態を確かめることができる。これをインストールするには以下。
$ sudo apt install snmp
$ sudo systemctl stop snmpd
$ sudo systemctl disable snmpd
snmp コマンドを使うためだけにパッケージをインストールしたつもりだけれど、snmpd もインストールされてサービス開始してしまったので止めている。
fping
PING を使って監視するアイテムを設定すると、Zabbix は fping というコマンドを利用するらしい。パッケージには含まれないのでインストールしてね、という記述を見つけたが、依存関係でインストールされていた。
$ fping --version
fping: Version 4.0
ここまでの操作で Zabbix を使う準備ができた(と思う)。
※何か新たに必要になったら、ここに追記していく。
やったこと
missing zabbix_get
監視アイテムを設定するときに、事前に zabbix_get で動きを試しておきたいと思ったが、コマンドがみつからない。
$ zabbix_get
Command 'zabbix_get' not found, but can be installed with:
sudo apt install zabbix-proxy-mysql
sudo apt install zabbix-proxy-pgsql
sudo apt install zabbix-proxy-sqlite3
sudo apt install zabbix-server-mysql
sudo apt install zabbix-server-pgsql
間違いなく zabbix-server-mysql はインストールされている。
そりゃそうだ、サーバーはちゃんと動いてるもん。
$ sudo apt install zabbix-server-mysql
[sudo] password for hogeuser:
Reading package lists... Done
Building dependency tree
Reading state information... Done
zabbix-server-mysql is already the newest version (1:4.0.12-1+bionic).
0 upgraded, 0 newly installed, 0 to remove and 8 not upgraded.
探してみるとここに、yum でパッケージをインストールすればいい、って書かれていた。
ZABBIX Forum / 2.4.1 repo dist package missing zabbix_get
$ sudo apt install zabbix-get
これでコマンドが利用できる。
fping available
fping は使えるのかな?と思って確認してみたら、使える。
いつインストールされたのかな?と思って、他のUbuntu18.04サーバーにアクセスしてみたけれどもインストールされていない。
これはきっと Zabbix をインストールしたときに、一緒にインストールされたな…と。
Qiita / aptの依存関係を知りたいそんなときに
確かに、zabbix-server-mysql は fping に依存している。
$ apt-cache depends zabbix-server-mysql
zabbix-server-mysql
PreDepends: debconf
…
Depends: default-mysql-client
Depends: fping
Depends: adduser
…
そして、fping は zabbix-server-mysql に依存されている。
$ apt-cache rdepends fping
fping
Reverse Depends:
…
zabbix-server-pgsql
zabbix-server-mysql
zabbix-proxy-sqlite3
…
だからインストールされたのね。
グラフが文字化け
グラフを表示させてみたら、一部文字が文字化けしている。
これは分かりづらいな…。
Opensourcetechブログ / Zabbix 4.0 LTS グラフ 日本語文字化けの修正方法 ※有識者からの意見を頂き更新
これを見るとパッケージをインストールして対応できるようなことが書かれている。だけど、yum か。
ここを見ると、yum と apt が併記されている。
Qiita / zabbix メモ
早速インストールしたけれども、変化なし。
$ sudo apt install language-pack-ja
$ sudo systemctl restart apache2
パッケージの中身は mo という拡張子のファイル。どうやら、多言語対応プログラムで翻訳に使うファイルの模様(元言語→日本語とかの置き換えができるっぽい)。Zabbix は別のところに翻訳データが入っていそうなので見当違いだった。
最初のブログの中を見てみると、設定ファイルでフォントを指定しているらしいことが分かる。で、Ubuntu でIPAフォントをインストールするつもりで探すと…
サイバーセキュリティ&人工知能研究所 / Zabbix3 でグラフの文字化けを直す方法
パッケージ検索で探してみると、本体はこれらしい。
/usr/share/fonts/opentype/ipafont-gothic/ipag.ttf
/usr/share/fonts/opentype/ipafont-gothic/ipagp.ttf
でも、もう少し違ったフォントは使えないものか…と思ったらフォントが詳しくまとめられていた。
クロの思考ノート / 【2019年版】Linuxでも使えるフリーフォント集
M+FONTSがかっこいいと思ったので、インストールしてみた。
$ sudo apt install fonts-mplus
設定を変更。
/usr/share/zabbix/include/defines.inc.php
…
//define('ZBX_FONTPATH', realpath('assets/fonts')); // where to search for font (GD > 2.0.18)
//define('ZBX_GRAPH_FONT_NAME', 'graphfont'); // font file name
//define('ZBX_GRAPH_LEGEND_HEIGHT', 120); // when graph height is less then this value, some legend will not show up
define('ZBX_FONTPATH', '/usr/share/fonts/truetype/mplus')); // where to search for font (GD > 2.0.18)
define('ZBX_GRAPH_FONT_NAME', 'mplus'); // font file name
define('ZBX_GRAPH_LEGEND_HEIGHT', 120); // when graph height is less then this value, some legend will not show up
…
//define('ZBX_FONT_NAME', 'graphfont');
define('ZBX_FONT_NAME', 'mplus');
…
Webページが表示できなくなった。
どうも、フォントを変更する方法はこういうやりかたではなさそうな気がしてきた…。別の管理がありそうな…
誰でも ZABBIX / 4. グラフ 日本語文字化け修正
$ sudo update-alternatives --query zabbix-frontend-font
Name: zabbix-frontend-font
Link: /usr/share/zabbix/assets/fonts/graphfont.ttf
Status: auto
Best: /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf
Value: /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf
Alternative: /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf
Priority: 10
これだ。update-alternatives という仕組みで /usr/share/zabbix/assets/fonts/graphfont.ttf というリンクが zabbix-frontend-font という名前で用意されている。ここに実態のファイルを定義して切り替えて使うみたい。
このコマンド、OracleJava と OpenJava の切り替えで見たことがあるぞ…
ここまで調べた結果で、本編に実際の設定を記載した。
さいごに
大きなシステムに取り組むと使い方を覚えるのはなかなか大変。インストールはできても、実際にそれを運用するためには色々なお作法を覚える必要がある。
と、身構えていたのだけれど、ホストをちょっとずつ足していけば監視はできるし、見やすくしたいと思ったらちょっとずつ表示を加えていけば良さそう。
もちろん高度な監視をしようと思ったらそのための学習が必要になるんだろうけど、それも後からトッとずつ足していくことができそう。
つまり…やってみてだめなら作り直すやり方でも全然問題はないって話。
少しずつ監視ができるようにしていこうと思った。
コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他