Zabbixがうまく動かない!というときに原因を調べる方法や参考になるサイトや資料、本家にバグ報告を行う方法までをまとめてみました。こういった情報はあまりまとまったものがないので、思ったように動かない、パフォーマンスが出ない、他の人はどうしてるんだろう?、バグのような気がするんだけど…という時に参考にして頂ければと思います。
Googleなどを使ってネットを検索する
オープンソースのソフトウェアの場合は最も一般的な方法です。IT系のサイトの記事や個人のブログなどで問題の解決方法が書かれている場合もあるので、うまく検索にヒットする場合は解決策が見つかる可能性が高いと思います。
ただ、Zabbixの場合はZabbix SIAやZABBIX-JPのサイトに情報が集中していると思います。Googleなどで検索をかけるよりも、各サイトのフォーラムやドキュメントなどを見る方が効率的な場合も多いです。
ドキュメントを読む
監視の設定が合っているかどうか分からない、というような場合はまずドキュメントを見てみましょう。Zabbixの公式ドキュメントは以下のURLで公開されています。
英語版は日々更新されていますので、以前見つからなかった場合でも改善されている可能性もあります。日本語版は後から追随する形になるので、日本語版になくても英語版には記載がある可能性もあります。
英語のドキュメントは…という人も、勉強だと思って根気よく読んでみることをお勧めします。オープンソースソフトウェアを利用するには、英語のドキュメントに慣れることは重要です。
フォーラムとサポートシステムの投稿を検索する
英語、日本語ともにコミュニティのフォーラムには活発に投稿があるので、フォーラムを検索することで同じ問題を抱える人やその回答が見つかるかもしれません。
また、Zabbix SIAにはサポートシステムがあり、バグ報告や新機能の追加要望などはこちらで管理されています。
アカウントの作成は自由にできますので、気になるバグ報告があればログインしてウォッチしておくことで更新時にメールを受け取ることができます。
また、サポートシステムで重要だと思うバグ報告や、欲しいと思う機能改善/追加要望があればぜひVote(投票)をしておいてください。投票の数が多いほど実現の可能性が高くなります。
書籍を参考にする
手前味噌ですが、Zabbixの書籍を執筆しています。こちらにも参考になる情報を記載していますので、試しに書店で手に取ってみて頂ければと思います。
ログをじっくり見る
基本中の基本ではあるのですが、ソフトウェアのログは英語で出力されることがほとんどなので、意外と見落としがちです。
コンパイル時の問題であればコンパイルのログにエラーが出力されます。人によっては意味不明なエラーに見えるかもしれませんが、前後のログも含めて少しじっくり見てみてください。意外と重要なエラーを見落としていることもよくあります。エラーメッセージでネット検索をかけてみるのも良い方法です。
Zabbixの監視設定でつまづいた時も、ZabbixサーバやZabbixエージェントのログを確認してみてください。Zabbixの場合、監視設定がWebインターフェースなので忘れがちですが、実際に監視の処理を行っているのはOS上のプロセスなので、ログに重要なエラーが出力されているかもしれません。
ちなみに、Zabbixに関連のあるログは以下の4つです。
- Zabbixサーバのログ: /var/log/zabbix/zabbix_server.log
- Zabbixエージェントのログ: /var/log/zabbix/zabbix_agentd.log
- Zabbixプロキシサーバのログ: /var/log/zabbix/zabbix/_proxy.log
- Webインターフェース関連のログ: /var/log/httpd/error.log
フォーラムに投稿する
フォーラムで同じ投稿が見つからなければ、質問を投稿してみるのもコミュニティへの参加の1つです。その際、以下のことに気をつけて投稿すると良い回答をもらえる可能性が高いと思います。
- 同じ質問がすでに投稿されていないか、まずは検索してみる。
- 利用しているZabbixのバージョンや、問題が発生する設定の内容、必要な場合は利用しているOSや環境の説明を書くこと。回答する人はすべての環境やパターンを知っているわけではありません。
- まずは自分で試してみた上で、その結果、問題が出ている箇所を質問すること。可能性があるすべてのことを回答するのは手間がかかりますし、場合によっては非現実的です。
公開フォーラムで質問をするということは、同じ問題に遭遇した人の助けになるということでもあります。他の人の参考になることも考えて、具体的に状況を書いた方が良いです。また、フォーラムの支援を受けて最終的に解決したかどうか、そのときの設定や解決方法なども投稿すれば、それは他のユーザの有用な情報になります。
デバッグログを出力する
Zabbixはデバッグログを出力できるようになっています。Zabbixエージェント、サーバ、プロキシサーバの各プロセスは、設定ファイルで以下のように設定して再起動するとでバッグログを出力できます。
DebugLevel=4
内部で実行している関数の実行状況や、重要な変数のデータ、実行しているSQLクエリなどがログに出力されるようになり、デバッグログを参照することでどこで問題が発生しているかを特定できる可能性があります。
Webインターフェースでも以下の手順でデバッグログを出力できます。
- ユーザーグループの設定でデバッグモードを有効にする
- デバッグモードを有効にしたユーザーグループに所属するユーザーでログイン
- 右上の「デバッグ」のリンクをクリック
すると、今表示している画面を出力する際にかかった時間や利用したメモリ容量、実行したSQLと要した時間などが表示できます。Webインターフェスのパフォーマンスが悪いといった場合に有用な情報を得ることができます
ソースコードを読む
オープンソースであることの一番のメリットは、誰でもソースコードを読めることです。当然ですが、ソフトウェアはソースコード以外のものからは出来ていないので、問題解決にあたってソースコードを読まない手はないと思います。
ログやデバッグログなどである程度問題個所の特定ができれば、ソースコードを調べればソフトウェアそのものが原因なのか、それとも外部の要因(環境依存、利用しているライブラリの問題)なのかが明確に分かります。内部の動きを知ることで、より深くZabbixを理解することもできますので、問題の調査のときは参照してみると良いと思います。
一般的にオープンソースのソフトウェアに仕様書はありません。だいたいの場合、定められたコーディングルールに沿って実現する機能を実装し、途中でレビューを入れながら細かく修正を入れていく、というスタイルだと思いますし、Zabbixもそのように開発されています。ドキュメントは出来上がったソフトウェアの動きをベースに作成されています。
つまりは今あるソースコードが仕様書なわけで、最新のドキュメントであり、それが全てです。ソースコードを読めるかどうかはオープンソースソフトウェアを利用する上で、問題解析にあたって大きな差が出てくると思います。
バグ報告や機能改善要望を送る
オープンソースソフトウェアというのはバグ出しや機能改善要望をユーザーと一緒にやっていくところに面白さがあると思いますし、そのプロセスがとても重要だと思います。開発側はユーザーからのフイードバックをダイレクトに受けられますし、ユーザー側は開発に協力したり、リクエストを出してそのフィードバックがすぐに受けることができます。
マニュアルを見た、ログも確認した、コミュニティフォーラムにも解決方法はない、だけど、どうにも動きがおかしい。というときはバグの第一発見者である可能性があります。可能であればデバッグログを出してみたり、ソースを読んでみるとバグかどうか確実性が高まると思います。
多分これはバグだ!となれば、ぜひZabbix SIAにバグ報告をしてみましょう。誰かがバグ報告をしなければその問題は永遠に直らないかもしれませんし、バグ報告できるのは第一発見者の特権です。パッチを付けて取り込まれた場合はリリースノートに名前を載せてもらえます。
Zabbix SIAへのバグ報告は上にも書いたサポートシステムから行います。サポートシステムへの投稿は必ず英語でお願いします。これは投稿の文章もそうですが、スクリーンショットを取るときの画面の言語、ログに含まれる言語などにも注意してください。ちなみに日本語はダメですが、ラトビア語かロシア語なら大丈夫です。
バグ報告の場合はZABBIX BUGS AND ISSUES(ZBX)に、新規機能追加要望の場合はZABBIX FEATURE REQUESTS(ZBXNEXT)に投稿します。
バグ報告するときは、上の「フォーラムに投稿するときの注意点」と同様のことに注意することと、加えて以下のことにも注意しておくと良いです。
- 問題の内容を簡潔に書く。(1)どのような環境/操作/設定のときに、(2)どのような動作をする。(3)どのような点が問題で、(4)どのようにするのが良いか。といった形で書くのが良いと思います。箇条書きで良いので簡潔に、分かりやすく。
- ある程度の大きさのパッチを作成する場合、Zabbixのコーディングルールに従うようにする
- 仕様が大きく変わるようなパッチの作成はできるだけ避ける
- どうしても仕様が変わらざるを得ない問題の場合、説明をより詳細に書いてディスカッションする
基本的に、他の部分にも影響が出るようなパッチは簡単には取り込まれませんし、取り込まれるとしても時間がかかります。大きな修正を取り込む場合、他に良い修正方法がないか検討する必要も出てきますし、他の機能への影響やテストも必要になります。大きめのパッチを投稿するような場合は、ディスカッションをより重視した方が良いです。
Zabbix SIAのエンジニアとコミュニケーションを取る
バグ報告するにあたってコミュニケーションも重要と書きましたが、Zabbix SIAのエンジニアと直接コミュニケーションを取るにあたり、一番リアルタイムにレスポンスがもらえるのはIRCでチャットすることです。
Zabbixの公式IRCチャネルがfreenodeサーバのzabbixグループにあり、誰でも参加できます。常に100人程度のユーザが参加していますし、Zabbix SIAの開発者や世界中のアクティブなZabbixコミュニティメンバーが集まっています。
発言しなくても参加してみるだけでも有益な情報が得られて面白いと思います。あまり発言は多くないですが、私も昼間は基本的にログインしています。
バグ報告/機能追加要望をしてみたい!という人に
Zabbix SIAに直接バグ報告や機能追加要望をしてみたい、けど自信が無い、という場合は以下の方法で誰か詳しい人にコンタクトを取ってみてください。Zabbixのコミュニティは親切な人が多いので、誰かが手助けしてくれると思います。
- ZABBIX-JPフォーラムに投稿する
- Twitterで#zabbixまたは#zabbix_jpハッシュタグをつけてつぶやく
- Twitterで私の個人アカウント@kodai74、もしくはZabbix SIA公式日本語アカウント@zabbix_jpに聞いてみる
IRCで私にダイレクトメッセージを送ってもらっても構いません。バグ報告やパッチ投稿の手助けも何かしらできると思いますので気軽にご連絡ください。
「Zabbixのバグを見つけたけど、誰かがバグ報告して修正されるまで待っていよう」というよりは、小さなものでも、パッチがなくても良いので開発元に報告することがオープンソースの活動への参加と貢献につながると思います。
0 件のコメント:
コメントを投稿