Karesansuiでは、collected( http://collectd.org/ )を利用しホストOSのシステムリソース監視とゲストOSの監視に重点をおいたサーバー監視を行ないます。
サーバ監視のソフトウェアは、フリーソフトから有償製品まで、様々な種類がありますが、Karesansuiではその中でオープンソースソフトウェアであるcollectdを採用しました。collectdはシステムの様々な状態を収集する非常に小さなデーモンプログラムです。
UNIX上で動作し、ライセンスはGPLv2となっています。
本体がC言語で書かれた小さなデーモンプログラムのみで構成されており、システムに掛かる負荷が非常に少ないのが特徴です。
また、各種のデータの収集、記録などは、全てプラグインで追加していく形になっています。
各機能を使うためのプラグインも充実しており、あらかじめ90種類以上用意されています。
※Karesansui UIからは追加できませんが、任意のプラグイン設置も可能です。
CPUやネットワークトラフィックなど基本的なものから、Apacheの情報やSNMPなど、様々な情報を取得することができます。
さらに、自前でプラグインを作成するための言語バインディングも用意されているので、自分で好きな情報を集めるプラグインを作ることができます。
収集したデータの出力はRRD形式やCSV形式などがあります。KaresansuiではRRD形式を採用し収集データを行ないます。
また、収集したデータを別のサーバに送信する機能を持ったプラグインもあり、複数のサーバの情報を一箇所に集めることもできます。
※Karesansuiへの取り込みが検討されています。
その他に、collectdには値の収集/保存のほかにも、しきい値を利用したアラート機能があります。
Karesansui ではそれら機能を利用し、予めしきい値などの条件を設定しておき、条件に当てはまった場合に任意のスクリプトを実行したり、通知メールを送信する機能が実装されています。
この機能を利用することで、サーバの状態監視を自動化することができ、運用コストを劇的に軽減させることができます。
最後に、collectdはあくまでも値の収集や監視が目的なので、収集した値を見るためのインタフェースは提供されていません。
そこで、Karesansuiではシンプルで美しいレポート機能を実現しました。
collectd本体の設定ファイル : /etc/opt/hde/collectd.conf 各種プラグインの設定ファイル : /etc/opt/hde/collectd.d/* RRD形式のデータ保存について - rrdchachedサービス(デーモン)経由で、/var/opt/hde/collectd/配下に保存されます。
本体設定
収集間隔:10秒
本体設定
読み込みスレッド数:5
- 収集データ:CPUのアイドル時間など - 収集対象 :搭載されている全てのCPU(論理CPU数ごとに収集)
- 収集データ:メモリの使用量など - 収集対象 :搭載されているメモリ
- 収集データ:ファイルシステムの使用量と空き容量(dfコマンドの結果と同等) - 収集対象 :全て(dfコマンドで表示されるファイルシステム)
- 収集データ:時間当たりの読み込み/書き込みデータ量など - 収集対象 :"/^(([hs]|xv)d[a-f][0-9]?|([a-z]+\/)?c[0-9]d[0-9](p[0-9])?)$/"
- 収集データ:時間当たりの送信/受信パケット数など - 収集対象 :全てのNIC
- 収集データ:ロードアベレージ - 収集対象 :collectdが動作しているマシン
- 収集データ:起動時間 - 収集対象 :collectdが動作しているマシン
- 収集データ:ユーザ数 - 収集対象 :collectdが動作しているマシン
- 収集データ:仮想マシンのCPU、ディスク、ネットワークに関するデータ - 収集対象 :全てのゲストOS
syslogにcollectdのログを出力します。
- ログレベル:info - ログの出力先:/var/log/hde-collectd/collectd.log
pythonで書かれたプラグインを動作させます。
RRD形式で収集したデータをrrdchachedサービス(デーモン)経由で保存します。 - RRDファイルの保存先:/var/opt/hde/collectd
アクションには3つの場合があります。
1. 警告のしきい値を超えた場合
- 警告しきい値を超えた場合に、任意のスクリプトの実行及び通知メールの送信が可能です。
2. 危険のしきい値を超えた場合
- 危険しきい値を超えた場合に、任意のスクリプトの実行及び通知メールの送信が可能です。
3. 正常値へしきい値を戻った場合
- 正常値へしきい値が戻った場合、任意のスクリプトの実行及び通知メールの送信が可能です。
karesansuiはcollectdから呼ばれるコマンドだけ提供してます。
collectdから見ると、karesansuiは閾値を超えたときに呼ぶpythonプログラムのみを提供します。
このpythonプログラムがcollectdから渡されるデータから状況を判断し、任意のスクリプト実行や通知メールを送信します。
※Karesansui データベースと連携していますので、データベースが必須になります。
テーブル名 : watch
通知メールには、Karesansui固有の変数を利用して、データの差し込みをすることができます。
※メールヘッダと本文の間には空行を一つ以上入れてください。
※変数とは : 送信されるメール内で文字列の置き換えが行われます
| %{app_name} | アプリケーション名 |
| %{time} | 検知した時刻 |
| %{host} | 検知したホストの名前 |
| %{plugin} | 監視対象名 |
| %{plugin_instance} | 監視対象の特定 |
| %{type} | 監視対象のサブカテゴリ |
| %{type_instance} | 監視する項目名 |
| %{ds} | データソース名 |
| %{current_value} | 検知した時点での監視対象の値 |
| %{threshold_value} | 設定した閾値 |
| %{failure_max} | 危険値の閾値(上限設定) |
| %{warning_max} | 警告値の閾値(上限設定) |
| %{failure_min} | 危険値の閾値(下限設定) |
| %{warning_min} | 警告値の閾値(下限設定) |
| %{severity} | 警告レベル |
| %{script_result_message} | アクションスクリプト実行結果 |