環境
Icinga2
Web2
でのプロビジョニングと使用IDO PostgreSQL
に取り組んでいます。IDO MySQL
Ansible
CentOS 7
私は偉大なhttps://github.com/Icinga/icinga2-ansibleロールに基づいて仕事をしています。IDO PostgreSQL などの自動化とサポートを追加するために、プロジェクト (mickael-ange/icinga2-ansible) をフォークしました。PostgreSQL サーバー 9.4 を使用しています。
さて、icinga2-ansible-web2-ui
Icinga2 Web2 と IDO PostgreSQL または IDO MySQLをウィザードなしで自動的にインストールするロールのバージョンになります。
私の問題
サーバーは、次のような Icinga2 Web2 インターフェイスでデータを取得する方法がわからないという例外で正常に動作しているようです。
Comments
そしてメニューDowntimes
からOverview
Event Grid
、Event Overview
、Notifications
、メニュー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
いますINSERT
UPDATE
DELETE
SEQUENCE
権限がに設定されていますUSAGE
バックエンド(およびリソース)postgres
にアクセスするユーザーとして構成しようとしましたが、UIにリストされていません(コメントを作成した後)。icinga_ido
icingaweb_ido
Comments
\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
から参照しようとするとエラーが発生することがわかりました(ユーザーにはエラーはありません)。pgAdmin
icinga
postgres
< 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
しか持っていないので、それが理にかなっているのかどうかはわかりません。USAGE
SEQUENCE
PostgreSQL と MySQL バックエンドのデバッグ ログの比較
そのため、コメントを作成するときに、両側 (MySQL IDO と PostgreSQL IDO) の Icinga デバッグ ログを比較することになります。icinga_externalcommands
、icinga_comments
、およびicinga_commenthistory
テーブルにデータを挿入する、私が探していた SQL ステートメントがあるのは、MySQL バックエンドだけであることがわかります。
2 つ以上のリンクを提供するほどの評判はありません (例: pastebin)。ここにログがあります。
Comment
with 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
Comment
with 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-ansible
Github リポジトリ (ブランチ: Issue-No-Historical-Data-in-Icinga2-Web2-and-DB) を複製し、 icinga2-we2-vagrant.mdの指示に従ってください。必要なツールがまだインストールされていない場合は、インストールする必要があります。次に、librarian-ansible を使用してロールの依存関係をインストールします。最後に、問題を再現するセクション (#ido-no-historical-data-in-icinga2-web2-and-db) を書きました。
ここまでお読みいただきありがとうございます!ミカエル