データベースサポート

(MySQLとPostgreSQL)


目次

イントロダクション
過去との決別・・・
Getting Started
MySQLサポートでコンパイルする
PostgreSQLサポートでコンパイルする
設定ディレクティブ

テーブル定義

イントロダクション

ここではコアプログラムとCGIプログラムの両方でネイティブに様々なタイプのデータをデータベースに保存するようにコンパイルする方法を説明します。現在はMySQLとPostgreSQLデータベースのみをサポートしていますが、将来的にはもっと多くのデータベースをサポートするかも知れません。

過去との決別・・・

それでは、データベース統合の詳細について進む前に、いくつか理解しておかなくてはならないことがあります。Nagiosでのステータスデータやコメントなどを保存する方式は、(おそらく今後もずっと)旧来からあるプレインテキストです。ダウンタイムファイルコメントファイルstate_retentionファイルに含まれる、デフォルトの外部データのルーチンではそのスタンダードファイルが使われます。デフォルトインストールでは、外部ホスト、サービス情報はそれ自身のファイルには蓄えられませんが、CGI設定ファイル追加ホスト、サービス情報定義で含めることができます。

あなたが、いくつかのあるいは全部の外部データの保存にデータベースを使用しようと思っているのであれば、いくつかの事が明らかに変更になると言うことを認識してください。データはもはやテキストファイルに保存されない代わりに、データベース上に保存されるしょう。私は膨大な量のドキュメントを書き直したくないので、あなたは文書を脳内翻訳する必要があるでしょう。また、状態情報がもはやステータスログに保存されず、代わりにデータベース上のどこかのいくつかのテーブルに保存されると言うことも認識する必要があります。同じように他のタイプの追加データ(ダウンタイムデータ、コメント、リテンション情報、追加ホスト情報)も影響を受けます。

Getting Started

まず初めに、MySQLもしくはPostgreSQLデータベースをネットワークのどこかのホストで稼働させており、Nagiosをコンパイルして稼働させるホストにそれらのクライアントライブラリがあるものとして話を進めます。同様にあなたが、使おうとしているデータベースのセキュリティやアカウント管理、テーブルやデータベースの作成方法などには知っているものとして進めます。もしそうでなければNagiosをデータベースサポートでコンパイルする前にそれらをまず学んでください。

とっても重要: configureスクリプトをデータベースサポートでconfigureスクリプトを(再度)走らせたら(後述します)コアプログラムとCGIの両方をコンパイルする事に注意してください(make allコマンドを使います)!!

MySQLサポートでコンパイルする

MySQLで様々なデータの保存をサポートするには、configureスクリプトで1つもしくはそれ以上のオプションをつける必要があるでしょう。

ここにいくつかのオプションがあります。初めに、MySQLにどのデータを保存するのか決め、(もしあれば)どのデータを古いフォーマット(テキストファイル)で保存するままにするのか決める必要があります。何を必要としているか決定したらどんなオプションをつければ良いかは以下のテーブルを参照してください。Note: オブジェクトデータ(サービス、ホスト、コマンド定義など)をMySQLに保存するのはまだサポートされていません。

データタイプconfigureスクリプトオプションコメント
全タイプ --with-mysql-xdata これは全タイプの外部データ(downtime data, comment data, status data, retention data, extended data)をMySQLに保存するようにします。オブジェクトデータ(サービスやホスト定義など)はまだ対応していません。
ダウンタイムデータ --with-mysql-downtime これはダウンタイムデータをMySQLに保存するようにします(スタンダード ダウンタイムファイルを置き換えます)。
コメントデータ --with-mysql-comments これはコメントデータをMySQLに保存するようにします(スタンダード コメントファイルを置き換えます)。
ステータスデータ --with-mysql-status これはステータスデータをMySQLに保存するようにします(スタンダード ステータスファイルを置き換えます)。
リテンションデータ --with-mysql-retention これはリテンションデータをMySQLに保存するようにします(スタンダード state_retentionファイルを置き換えます)。
追加データ --with-mysql-extinfo これは追加データをMySQLに保存するようにします(CGI設定ファイルのスタンダードhostextinfo[]定義を置き換えます)。

PostgreSQLでコンパイルする

PostgreSQLで様々なデータの保存をサポートするには、configureスクリプトで1つもしくはそれ以上のオプションをつける必要があるでしょう。

ここにいくつかのオプションがあります。初めに、PostgrfeSQLにどのデータを保存するのか決め、(もしあれば)どのデータを古いフォーマット(テキストファイル)で保存するままにするのか決める必要があります。何を必要としているか決定したらどんなオプションをつければ良いかは以下のテーブルを参照してください。Note: オブジェクトデータ(サービス、ホスト、コマンド定義など)をPostgreSQLに保存するのはまだサポートされていません。

データタイプconfigureスクリプトオプションコメント
全タイプ --with-pgsql-xdata これは全タイプの外部データ(downtime data, comment data, status data, retention data, extended data)をMySQLに保存するようにします。オブジェクトデータ(サービスやホスト定義など)はまだ対応していません。
ダウンタイムデータ --with-pgsql-downtime これはダウンタイムデータをMySQLに保存するようにします(スタンダード ダウンタイムファイルを置き換えます)。
コメントデータ --with-pgsql-comments これはコメントデータをMySQLに保存するようにします(スタンダード コメントファイルを置き換えます)。
ステータスデータ --with-pgsql-status これはステータスデータをMySQLに保存するようにします(スタンダード ステータスファイルを置き換えます)。
リテンションデータ --with-pgsql-retention これはリテンションデータをMySQLに保存するようにします(スタンダード state_retentionファイルを置き換えます)。
追加データ --with-pgsql-extinfo これは追加データをMySQLに保存するようにします(CGI設定ファイルのスタンダードhostextinfo[]定義を置き換えます)。

設定ディレクティブ

データベースにどの追加データのタイプを保存するか決めたら、リソースファイルと/もしくはCGI設定ファイルのいくつかの設定ディレクティブを追加します。その方法は・・・

ダウンタイムデータのための設定ディレクティブ: (--with-mysql-downtimeまたは--with-pgsql-downtimeオプション):

CGI設定ファイルの中の以下のディレクティブを追加します(メイン設定ファイルdowntime_file ディレクティブはもう使用されません)。

xdddb_host=database_host
xdddb_port=database_port
xdddb_username=database_user
xdddb_password=database_password
xdddb_database=database_name

これらについてはそれ自体が説明になっています。これらはCGIにデータベースサーバのアドレス(とポート)、ダウンタイムを保存するデータベース名そしてデータベースサーバに接続するためのユーザ名/パスワードを知らせます。Nagiosはダウンタイムデータの保存のためにこのデータベスに2つのテーブル(ここで定義してます)があると想定しています。Note:CGIのダウンタイムデータへのアクセスはread権限のみ必要です。従ってこのユーザはダウンタイムテーブルのSELECT権限のみにすべきです。

リソースファイル内には以下のディレクティブを追加します。

xdddb_host=database_host
xdddb_port=database_port
xdddb_username=database_user
xdddb_password=database_password
xdddb_database=database_name
xdddb_optimize_data=[0/1]

これらのディレクティブはNagiosプロセスが使う点を除いて、CGI設定ファイルに設定したものと同じです。ここで指定したデータベースユーザにはダウンタイムテーブルのSELECT、INSERT、UPDATE、DELETE権限が必要です。 CGIはどんなリソースファイルも読み込みません。従ってリソースファイルにはNagiosプロセスが読み込めるだけの権限で他からはアクセスできない排他的なパーミッションを与えることができます。xdddb_optimize_dataオプションはNagiosの起動/再起同時に、強制的にダウンタイムテーブルを最適化させるでしょう。もしダウンタイムデータにPostgreSQLデータベースを使用しているなら、これはダウンタイムデータテーブルにVACUUMを行うという意味になります。

コメントデータのための設定ディレクティブ: (--with-mysql-commentsまたは--with-pgsql-commentsオプション):

CGI設定ファイルの中の以下のディレクティブを追加します(メイン設定ファイルcomment_file ディレクティブはもう使用されません)。

xcddb_host=database_host
xcddb_port=database_port
xcddb_username=database_user
xcddb_password=database_password
xcddb_database=database_name

これらについてはそれ自体が説明になっています。これらはCGIにデータベースサーバのアドレス(とポート)、コメントを保存するデータベース名そしてデータベースサーバに接続するためのユーザ名/パスワードを知らせます。Nagiosはコメントの保存のためにこのデータベスに2つのテーブル(ここで定義してます)があると想定しています。Note:CGIのコメントへのアクセスはread権限のみ必要です。従ってこのユーザはダウンタイムテーブルのSELECT権限のみにすべきです。

リソースファイル内には以下のディレクティブを追加します。

xcddb_host=database_host
xcddb_port=database_port
xcddb_username=database_user
xcddb_password=database_password
xcddb_database=database_name
xcddb_optimize_data=[0/1]

これらのディレクティブはNagiosプロセスが使う点を除いて、CGI設定ファイルに設定したものと同じです。ここで指定したデータベースユーザにはコメントテーブルのSELECT、INSERT、UPDATE、DELETE権限が必要です。 CGIはどんなリソースファイルも読み込みません。従ってリソースファイルにはNagiosプロセスが読み込めるだけの権限で他からはアクセスできない排他的なパーミッションを与えることができます。xcddb_optimize_dataオプションはNagiosの起動/再起同時に、強制的にコメントテーブルを最適化させるでしょう。もしコメントテーブルにPostgreSQLデータベースを使用しているなら、これはダウンタイムデータテーブルにVACUUMを行うという意味になります。

ステータスデータのための設定ディレクティブ: (--with-mysql-statusもしくは--with-pgsql-statusオプション):

CGI設定ファイルの中の以下のディレクティブを追加します(メイン設定ファイルstatus_file ディレクティブはもう使用されません)。

xsddb_host=database_host
xsddb_port=database_port
xsddb_username=database_user
xsddb_password=database_password
xsddb_database=database_name

これらについてはそれ自体が説明になっています。これらはCGIにデータベースサーバのアドレス(とポート)、ステータスデータを保存するデータベース名そしてデータベースサーバに接続するためのユーザ名/パスワードを知らせます。Nagiosはステータスデータの保存のためにこのデータベスに3つのテーブル(ここで定義してます)があると想定しています。Note:CGIのダウンタイムデータへのアクセスはread権限のみ必要です。従ってこのユーザはステータステーブルのSELECT権限のみにすべきです。

リソースファイル内には以下のディレクティブを追加します。

xsddb_host=database_host
xsddb_port=database_port
xsddb_username=database_user
xsddb_password=database_password
xsddb_database=database_name
xsddb_optimize_data=[0/1]
xsddb_optimize_interval=seconds

これらのディレクティブはNagiosプロセスが使う点を除いて、CGI設定ファイルに設定したものと同じです。ここで指定したデータベースユーザにはステータステーブルのSELECT、INSERT、UPDATE、DELETE権限が必要です。 CGIはどんなリソースファイルも読み込みません。従ってリソースファイルにはNagiosプロセスが読み込めるだけの権限で他からはアクセスできない排他的なパーミッションを与えることができます。xsddb_optimize_intervalオプションはNagiosの起動/再起同時に、強制的にステータステーブルを最適化させるでしょう。もしステータスデータにPostgreSQLデータベースを使用しているなら、これはステータステーブルにVACUUMを行うという意味になります。

リテンションデータのための設定ディレクティブ: (--with-mysql-retentionもしくは--with-pgsql-retentionオプション):

リソースファイルの中に以下のディレクティブを追加します(メイン設定ファイルstate_retention_file ディレクティブはもう使用されません)。

xrddb_host=database_host
xrddb_port=database_port
xrddb_username=database_user
xrddb_password=database_password
xrddb_database=database_name
xrddb_optimize_data=[0/1]

これらについてはそれ自体が説明になっています。これらはCGIにデータベースサーバのアドレス(とポート)、リテンションデータを保存するデータベース名そしてデータベースサーバに接続するためのユーザ名/パスワードを知らせます。Nagiosはリテンションデータの保存のためにこのデータベスに3つのテーブル(ここで定義してます)があると想定しています。ここで指定したデータベースユーザにはリテンションデータテーブルのSELECT、INSERT、UPDATE、DELETE権限が必要です。CGIはどんなリソースファイルも読み込みません。従ってリソースファイルにはNagiosプロセスが読み込めるだけの権限で他からはアクセスできない排他的なパーミッションを与えることができます。xrddb_optimize_dataオプションはNagiosの起動/再起同時に、強制的にリテンションテーブルを最適化させるでしょう。もしリテンションデータにPostgreSQLデータベースを使用しているなら、これはリテンションデータテーブルにVACUUMを行うという意味になります。

追加データのための設定ディレクティブ: (--with-mysql-extinfoもしくは--with-pgsql-extinfoオプション):

CGI設定ファイルの中の以下のディレクティブを追加します(CGI設定ファイルのserviceextinfo[] ディレクティブはもう使用されません)。

xeddb_host=database_host
xeddb_port=database_port
xeddb_username=database_user
xeddb_password=database_password
xeddb_database=database_name

これらについてはそれ自体が説明になっています。これらはCGIにデータベースサーバのアドレス(とポート)、追加データを保存するデータベース名そしてデータベースサーバに接続するためのユーザ名/パスワードを知らせます。Nagiosは追加データの保存のためにこのデータベスに2つのテーブル(ここで定義してます)があると想定しています。Note:CGIの追加データへのアクセスはread権限のみ必要です。従ってこのユーザは追加データテーブルのSELECT権限のみにすべきです。

テーブル定義

データベースへの読み書きを行うために、まずデータを蓄えるいくつかのテーブルを作成します。 Note:もしデータベースに1つ以上のタイプのデータを蓄えるなら、それぞれのデータタイプ毎(コメント、ステータス情報など)に複数のデータベースを作成できます。同様に1つのデータベースにすべてを蓄えることもできます(異なるデータが1つのデータベスの異なるテーブルに保存されます)。 データベースに適切なテーブルを設定すれば、Nagiosはデータを読み書きできます。

重要:全タイプの追加データ用のテーブル作成スクリプトはMySQL用、PostgreSQL 用共にディストリビューションのcontrib/database/ディレクトリにあります。

ダウンタイムデータテーブル:

データベースにダウンタイムのエントリを蓄えるためには2つのテーブル(hostdowntimeservicedowntime)を作成する必要があります。一方のテーブルはホストのダウンタイムを保存し、もう一方はサービスのダウンタイムを保存します。CGIはこれらのテーブルにSELECT権限のみ必要です、一方でメインNagiosプロセスはSELECT、INSERT、UPDATE、DELETE権限が必要です。

コメントデータテーブル:

データベースにコメントのエントリを蓄えるためには2つのテーブル(hostcommentsservicecomments)を作成する必要があります。一方のテーブルはホストのコメントを保存し、もう一方はサービスのコメントを保存します。CGIはこれらのテーブルにSELECT権限のみ必要です、一方でメインNagiosプロセスはSELECT、INSERT、UPDATE、DELETE権限が必要です。

ステータスデータテーブル:

データベースにステータスデータのエントリを蓄えるためには3つのテーブル(programstatushoststatusservicestatus)を作成する必要があります。1つ目のテーブルはプログラムのステータスデータを保存し、2つ目はホストステータスデータを保存し、3つ目はサービスステータスデータを保存します。CGIはこれらのテーブルにSELECT権限のみ必要です、一方でメインNagiosプロセスはSELECT、INSERT、UPDATE、DELETE権限が必要です。

リテンションデータテーブル:

データベースにスリテンションデータのエントリを蓄えるためには3つのテーブル(programretentionhostretentionserviceretention)を作成する必要があります。1つ目のテーブルはプログラムのリテンションデータを保存し、2つ目はホストのデータを保存し、3つ目はサービスのスデータを保存します。メインNagiosプロセスはSELECT、INSERT、UPDATE、DELETE権限が必要です。CGIはこのテーブルに全くアクセスしません

追加データテーブル:

データベースに追加データのエントリを蓄えるためには2つのテーブル(hostextinfoserviceextinfo)を作成する必要があります。一方のテーブルはホストの追加情報を保存し、もう一方はサービスの追加情報を保存します(追加情報はCGIが使用します)。CGIはこれらのテーブルにSELECT権限のみ必要です、一方でメインNagiosプロセスはこのテーブルに全くアクセスしません