1

環境

Icinga2 Web2でのプロビジョニングと使用IDO PostgreSQLに取り組んでいます。IDO MySQLAnsibleCentOS 7

私は偉大なhttps://github.com/Icinga/icinga2-ansibleロールに基づいて仕事をしています。IDO PostgreSQL などの自動化とサポートを追加するために、プロジェクト (mickael-ange/icinga2-ansible) をフォークしました。PostgreSQL サーバー 9.4 を使用しています。

さて、icinga2-ansible-web2-uiIcinga2 Web2 と IDO PostgreSQL または IDO MySQLをウィザードなしで自動的にインストールするロールのバージョンになります。

私の問題

サーバーは、次のような Icinga2 Web2 インターフェイスでデータを取得する方法がわからないという例外で正常に動作しているようです。

  • CommentsそしてメニューDowntimesからOverview
  • Event GridEvent OverviewNotifications、メニューTimelineからHistory

Commentsとを作成できますSchedule Downtimesが、UI に表示されません。ダウンタイムは正しく処理されます。

送信できますNotificationsが、UI にも表示されません。SELinux が許容モードの場合、通知が送信されます。

私の質問は次のとおりです。データベースにコメント、ダウンタイムなどを入力するためのIDOまたはIcinga2 Web2構成はありますか..?

じぶんの/etc/icinga2/features-enabled/ido-pgsql.conf

library "db_ido_pgsql"

object IdoPgsqlConnection "ido-pgsql" {
  user = "icinga"
  password = "icinga"
  host = "localhost"
  database = "icinga"
  table_prefix = "icinga_"
  instance_name = "icinga2"
  instance_description = "icinga2 instance"

  cleanup = {
    downtimehistory_age = 48h
    logentries_age = 31d
  }

  categories = DbCatConfig | DbCatState
}

ノート

注1

Icinga2 プロジェクトのほとんどのドキュメントとフォーラムを既に検索しましたが、葉巻は見つかりませんでした。以前にこの問題が発生したことがないことに驚いているので、おそらく私の側の問題です。

注2

Icinga IRC チャネルでチャットし、さらにテストを行った後、私の問題は PostgreSQL バックエンドでのみ発生することがわかりました。MySQL バックエンドで期待どおりに動作しています。

セッションのデバッグ

デバッグ セッション 1

自分の環境に関する情報/ログをさらに収集しました。

PostgreSQL のアクセス許可

Icinga ユーザーの PostgreSQL 権限を確認しました。

  • TABLE権限は、、、、に設定されてSELECTいますINSERTUPDATEDELETE
  • SEQUENCE権限がに設定されていますUSAGE

バックエンド(およびリソース)postgresにアクセスするユーザーとして構成しようとしましたが、UIにリストされていません(コメントを作成した後)。icinga_idoicingaweb_idoComments

\dpコマンドごとに一覧表示された PosgreSQL 権限は次のとおりです。

icinga=> \dp
                                                             Access privileges
 Schema |                              Name                               |   Type   |     Access privileges     | Column access privileges 
--------+-----------------------------------------------------------------+----------+---------------------------+--------------------------
 public | icinga_acknowledgements                                         | table    | postgres=arwdDxt/postgres+| 
        |                                                                 |          | icinga=arwd/postgres      | 
 public | icinga_acknowledgements_acknowledgement_id_seq                  | sequence | postgres=rwU/postgres    +| 
        |                                                                 |          | icinga=U/postgres         | 
 public | icinga_commands                                                 | table    | postgres=arwdDxt/postgres+| 
        |                                                                 |          | icinga=arwd/postgres      | 
 public | icinga_commands_command_id_seq                                  | sequence | postgres=rwU/postgres    +| 
        |                                                                 |          | icinga=U/postgres         | 
 public | icinga_commenthistory                                           | table    | postgres=arwdDxt/postgres+| 
        |                                                                 |          | icinga=arwd/postgres      | 
 public | icinga_commenthistory_commenthistory_id_seq                     | sequence | postgres=rwU/postgres    +| 
        |                                                                 |          | icinga=U/postgres         | 
<truncated>

さらに、Icinga UI から作成したときに、PostgreSQL ログ (例: /var/lib/pgsql/9.4/data/pg_log/postgresql-Thu.log) にエラーはありませんComment

ただし、ユーザーを使用して UISEQUENCEから参照しようとするとエラーが発生することがわかりました(ユーザーにはエラーはありません)。pgAdminicingapostgres

< 2016-01-21 03:55:52.436 GMT >STATEMENT:  SELECT last_value, min_value, max_value, cache_value, is_cycled, increment_by, is_called
      FROM icinga_acknowledgements_acknowledgement_id_seq

しかし、ユーザーはに対する権限icingaしか持っていないので、それが理にかなっているのかどうかはわかりません。USAGESEQUENCE

PostgreSQL と MySQL バックエンドのデバッグ ログの比較

そのため、コメントを作成するときに、両側 (MySQL IDO と PostgreSQL IDO) の Icinga デバッグ ログを比較することになります。icinga_externalcommandsicinga_comments、およびicinga_commenthistoryテーブルにデータを挿入する、私が探していた SQL ステートメントがあるのは、MySQL バックエンドだけであることがわかります。

2 つ以上のリンクを提供するほどの評判はありません (例: pastebin)。ここにログがあります。

Commentwith PostgreSQL バックエンドの追加:

[2016-01-21 04:14:00 +0000] information/ExternalCommandListener: Executing external command: [1453349640] ADD_HOST_COMMENT;icinga2-web2-postgres;1;icingaadmin;dededewdwwewdew
[2016-01-21 04:14:00 +0000] debug/DbEvents: add external command history
[2016-01-21 04:14:00 +0000] notice/ExternalCommandProcessor: Creating comment for host icinga2-web2-postgres
[2016-01-21 04:14:00 +0000] information/ConfigCompiler: Compiling config file: /var/lib/icinga2/api/packages/_api/icinga2-web2-postgres-1453347670-1/conf.d/comments/icinga2-web2-postgres!icinga2-web2-postgres-1453349640-1.conf
[2016-01-21 04:14:00 +0000] information/ConfigItem: Committing config items
[2016-01-21 04:14:00 +0000] warning/ApplyRule: Apply rule 'satellite-host' (in /etc/icinga2/conf.d/satellite.conf: 29:1-29:41) for type 'Dependency' does not match anywhere!
[2016-01-21 04:14:00 +0000] warning/ApplyRule: Apply rule '' (in /etc/icinga2/conf.d/services.conf: 57:1-57:65) for type 'Service' does not match anywhere!
[2016-01-21 04:14:00 +0000] warning/ApplyRule: Apply rule '' (in /etc/icinga2/conf.d/services.conf: 65:1-65:53) for type 'Service' does not match anywhere!
[2016-01-21 04:14:00 +0000] information/ConfigItem: Instantiated 1 Comment.
[2016-01-21 04:14:00 +0000] information/ConfigItem: Triggering Start signal for config items
[2016-01-21 04:14:00 +0000] information/ConfigItem: Activated all objects.
[2016-01-21 04:14:00 +0000] notice/Comment: Added comment 'icinga2-web2-postgres!icinga2-web2-postgres-1453349640-1'.
[2016-01-21 04:14:01 +0000] debug/IdoPgsqlConnection: Query: COMMIT
[2016-01-21 04:14:01 +0000] debug/IdoPgsqlConnection: Query: BEGIN

Commentwith MySQL バックエンドの追加:

[2016-01-21 04:12:49 +0000] information/ExternalCommandListener: Executing external command: [1453349569] ADD_HOST_COMMENT;icinga2-web2-mysql;1;icingaadmin;yggygyyj
[2016-01-21 04:12:49 +0000] debug/DbEvents: add external command history
[2016-01-21 04:12:49 +0000] notice/ExternalCommandProcessor: Creating comment for host icinga2-web2-mysql
[2016-01-21 04:12:49 +0000] information/ConfigCompiler: Compiling config file: /var/lib/icinga2/api/packages/_api/icinga2-web2-mysql-1453347256-1/conf.d/comments/icinga2-web2-mysql!icinga2-web2-mysql-1453349569-0.conf
[2016-01-21 04:12:49 +0000] information/ConfigItem: Committing config items
[2016-01-21 04:12:49 +0000] warning/ApplyRule: Apply rule 'satellite-host' (in /etc/icinga2/conf.d/satellite.conf: 29:1-29:41) for type 'Dependency' does not match anywhere!
[2016-01-21 04:12:49 +0000] warning/ApplyRule: Apply rule '' (in /etc/icinga2/conf.d/services.conf: 57:1-57:65) for type 'Service' does not match anywhere!
[2016-01-21 04:12:49 +0000] warning/ApplyRule: Apply rule '' (in /etc/icinga2/conf.d/services.conf: 65:1-65:53) for type 'Service' does not match anywhere!
[2016-01-21 04:12:49 +0000] information/ConfigItem: Instantiated 1 Comment.
[2016-01-21 04:12:49 +0000] information/ConfigItem: Triggering Start signal for config items
[2016-01-21 04:12:49 +0000] information/ConfigItem: Activated all objects.
[2016-01-21 04:12:49 +0000] notice/Comment: Added comment 'icinga2-web2-mysql!icinga2-web2-mysql-1453349569-0'.

[2016-01-21 04:12:50 +0000] debug/IdoMysqlConnection: Query: INSERT INTO icinga_externalcommands (command_args, command_name, command_type, endpoint_object_id, entry_time, instance_id) VALUES ('icinga2-web2-mysql;1;icingaadmin;yggygyyj', 'ADD_HOST_COMMENT', '1', 1, FROM_UNIXTIME(1453349569), 1)
[2016-01-21 04:12:50 +0000] debug/IdoMysqlConnection: Query: INSERT INTO icinga_comments (author_name, comment_data, comment_source, comment_time, comment_type, endpoint_object_id, entry_time, entry_time_usec, entry_type, expires, instance_id, internal_comment_id, is_persistent, name, object_id) VALUES ('icingaadmin', 'yggygyyj', '1', FROM_UNIXTIME(1453349569), '2', 1, FROM_UNIXTIME(1453349569), '947563', '1', '0', 1, '1', '1', 'icinga2-web2-mysql!icinga2-web2-mysql-1453349569-0', 68)
[2016-01-21 04:12:50 +0000] debug/IdoMysqlConnection: Query: INSERT INTO icinga_commenthistory (author_name, comment_data, comment_source, comment_time, comment_type, endpoint_object_id, entry_time, entry_time_usec, entry_type, expires, instance_id, internal_comment_id, is_persistent, name, object_id) VALUES ('icingaadmin', 'yggygyyj', '1', FROM_UNIXTIME(1453349569), '2', 1, FROM_UNIXTIME(1453349569), '947563', '1', '0', 1, '1', '1', 'icinga2-web2-mysql!icinga2-web2-mysql-1453349569-0', 68)
[2016-01-21 04:12:50 +0000] debug/IdoMysqlConnection: Query: COMMIT
[2016-01-21 04:12:50 +0000] debug/IdoMysqlConnection: Query: BEGIN

PostgreSQL と MySQL バックエンドで Icinga2 を再起動する

PostgreSQL と MySQL バックエンドの両方で Icinga2 を再起動すると、ほとんど同じログが表示されます。

# Icinga2 restart with PostgreSQL

[2016-01-21 05:02:11 +0000] information/Application: Received request to shut down.
[2016-01-21 05:02:11 +0000] information/Application: Shutting down...
[2016-01-21 05:02:11 +0000] information/CheckerComponent: Checker stopped.
[2016-01-21 05:02:11 +0000] information/DbConnection: Resuming IDO connection: ido-pgsql
[2016-01-21 05:02:11 +0000] information/ConfigItem: Activated all objects.
[2016-01-21 05:02:11 +0000] information/ConfigCompiler: Compiling config file: /var/lib/icinga2/modified-attributes.conf
[2016-01-21 05:02:11 +0000] information/IdoPgsqlConnection: pgSQL IDO instance id: 1 (schema version: '1.14.0')

# Icinga2 restart with MySQL

[2016-01-21 05:03:20 +0000] information/Application: Received request to shut down.
[2016-01-21 05:03:20 +0000] information/Application: Shutting down...
[2016-01-21 05:03:20 +0000] information/CheckerComponent: Checker stopped.
[2016-01-21 05:03:20 +0000] information/DbConnection: Resuming IDO connection: ido-mysql
[2016-01-21 05:03:20 +0000] information/ConfigItem: Activated all objects.
[2016-01-21 05:03:20 +0000] information/ConfigCompiler: Compiling config file: /var/lib/icinga2/modified-attributes.conf
[2016-01-21 05:03:20 +0000] information/IdoMysqlConnection: MySQL IDO instance id: 1 (schema version: '1.14.0')

パッケージのバージョン

  • icinga2-2.4.1-1.el7.centos.x86_64
  • icinga2-ido-pgsql-2.4.1-1.el7.centos.x86_64
  • postgresql94-9.4.5-1PGDG.rhel7.x86_64
  • postgresql94-server-9.4.5-1PGDG.rhel7.x86_64

この問題の再現方法

問題を再現するエネルギーがある場合は、mickael-ange/icinga2-ansibleGithub リポジトリ (ブランチ: Issue-No-Historical-Data-in-Icinga2-Web2-and-DB) を複製し、 icinga2-we2-vagrant.mdの指示に従ってください。必要なツールがまだインストールされていない場合は、インストールする必要があります。次に、librarian-ansible を使用してロールの依存関係をインストールします。最後に、問題を再現するセクション (#ido-no-historical-data-in-icinga2-web2-and-db) を書きました。

ここまでお読みいただきありがとうございます!ミカエル

4

1 に答える 1

0

最後に、履歴データが DB に挿入されなかった理由を突き止めたので、ここで自分自身に応答します。

ドキュメントで説明されているように:

カテゴリ オプション。データベースに書き込む必要がある情報のタイプ。

そのため、構成からカテゴリを削除したときido-pgsql.conf。Icinga2 を再起動すると、期待どおりにデータが DB に書き込まれます。Comments、、Downtimesまあ、私が欲しかったものはすべてUIにリストされています。

cleanupおそらく私が望んでいるものではないので、セクションも削除しました。

最終的なido-pgsql.conf構成:

library "db_ido_pgsql"

object IdoPgsqlConnection "ido-pgsql" {
  user = "icinga"
  password = "icinga"
  host = "localhost"
  database = "icinga"
  table_prefix = "icinga_"
  instance_name = "icinga2"
  instance_description = "icinga2 instance"
}
于 2016-01-21T07:35:55.020 に答える