Orabbixでデータが拾えない件
いろいろ参考にしております。
現在 Orabbixを使用してORACLEの監視を考えております。どなたか ORACLEとjavaに詳しい方にお聞きしたいのですが。
環境:
Windows 10上の VirtualBox 5.2.12 r122591
ゲストOS:CentOS Linux release 7.4.1708 (Core)
ゲストOSのLinux上に ORACLE 12cをインストールしています。
ORACLEデータベースは非コンテナデータベース
データベース名:orcl
ゲストのLinuxでユーザ oracle にて
$ sqlplus zabbix/zabbix-password@orcl
でデータベースに接続できます。
同じサーバにorabbixをインストールしました。
orabbix の設定ファイル /opt/orabbix/conf/config.props は以下のようになっています。
#
DatabaseList=orcl
#
orcl.Url=jdbc:oracle:thin:@localhost:1521:orcl
orcl.User=zabbix
orcl.Password=zabbix-password
#
orabbixサービスを起動しログを見ると以下のように繋がってはいます。
# tail /opt/orabbix/logs/orabbix.log
2018-06-22 10:36:27,044 [main] INFO Orabbix - Starting Orabbix Version 1.2.3
2018-06-22 10:36:27,051 [main] INFO Orabbix - Orabbix started with pid:16889
2018-06-22 10:36:27,051 [main] INFO Orabbix - PidFile -> ./logs/orabbix.pid
2018-06-22 10:36:27,146 [main] INFO Orabbix - DB Pool created: org.apache.commons.dbcp.datasources.SharedPoolDataSource@c2e1f26
2018-06-22 10:36:27,146 [main] INFO Orabbix - URL=jdbc:oracle:thin:@localhost:1521:orcl
~中略~
2018-06-22 10:36:27,767 [main] INFO Orabbix - Connected as ZABBIX
2018-06-22 10:36:27,769 [main] INFO Orabbix - --------- on Database -> orcl
ところが、この後のログに
2018-06-22 10:36:28,438 [pool-1-thread-1] WARN Orabbix - received unexpected response '' for key 'alive'
2018-06-22 10:36:28,439 [pool-1-thread-1] WARN Orabbix - received unexpected response '' for key 'Orabbix.Version'
2018-06-22 10:36:28,440 [pool-1-thread-1] WARN Orabbix - received unexpected response '' for key 'archive'
2018-06-22 10:36:28,441 [pool-1-thread-1] WARN Orabbix - received unexpected response '' for key 'audit'
2018-06-22 10:36:28,442 [pool-1-thread-1] WARN Orabbix - received unexpected response '' for key 'dbblockgets'
2018-06-22 10:36:28,443 [pool-1-thread-1] WARN Orabbix - received unexpected response '' for key 'dbconsistentgets'
2018-06-22 10:36:28,444 [pool-1-thread-1] WARN Orabbix - received unexpected response '' for key 'dbhitratio'
2018-06-22 10:36:28,495 [pool-1-thread-1] WARN Orabbix - received unexpected response '' for key 'uptime'
と出ていて何も拾えていない事がわかりました。
不思議なのは、"alive","Orabbix Version"といったORACLEにクエリーを投げているわけではないパラメータも拾えていない事です。
試しに、上記SQLPLUS上で同じクエリ(クエリの中身はorcl.QueryListFile=./conf/query.props)を投入したところ、何かそれっぽい値が返ってきています。
例)uptime.Query=select to_char((sysdate-startup_time)*86400, 'FM99999999999999990') retvalue from v$instanceを入れてみます。
SQL> select to_char((sysdate-startup_time)*86400, 'FM99999999999999990') retvalue from v$instance;
RETVALUE
------------------
3090
javaの問題かと思い少し古いバージョンに差し替えてみましたが結果は同じでした。
現在のjava version "1.8.0_162"
少し古い java version "1.6.0_27"
何か情報をお持ちの方いらしたらご教示下されば幸いです。
PS:
中国語のフォーラムに同じような件を問い合わせた方が居たらしいのですが、(google翻訳のお世話になりました)
「解決した」だけで方法を書かずに終わっていました。どうやったら解決したかを書いて欲しかったです。
tsuboya - 投稿数: 5
調べを進めていくうちに以下の事がわかりました。
・バージョン情報
Zabbix ・Version 4.0Alpha8
Oracle ・Version 12.2.0.1.0 Enterprise Edition
Orabbix・Version 1.2.3
このZabbixのバージョンが新しすぎるのが原因のようなので
zabbix-server-pgsql-3.4.11-1.el7.x86_64 に入れ替えてみることにしました。
結果はいずれ書きます。
tsuboya - 投稿数: 5
動かなかったOrabbixですが、Zabbixをzabbix-server-pgsql-3.4.11-1.el7.x86_64 に入れ替えてみたところ
正常にデータが拾えるようになりました。
・orabbixの各種設定ファイルのうち、ログファイルに関する設定を変更しサービスを再起動します。
# vi /opt/orabbix/conf/log4j.properties
--------------------------------------------------------------------
# Set root logger level to DEBUG and its only appender to Orabbix.
log4j.rootLogger=INFO , Orabbix
↓
log4j.rootLogger=DEBUG , Orabbix
--------------------------------------------------------------------
・サービスのログを見てみます
2018-06-27 15:56:38,129 [main] INFO Orabbix - Starting Orabbix Version 1.2.3
2018-06-27 15:56:38,153 [main] INFO Orabbix - Orabbix started with pid:5560
~略~
2018-06-27 15:56:38,937 [main] INFO Orabbix - Connected as ZABBIX
2018-06-27 15:56:38,939 [main] INFO Orabbix - --------- on Database -> orcl
~略~
・例としてクエリー uptimeを見てみます
2018-06-27 15:56:38,994 [main] DEBUG Orabbix - Note: uptime.NoDataFound null or not present null
2018-06-27 15:56:38,994 [main] DEBUG Orabbix - Note: uptime.WhenNotAlive null or not present null
2018-06-27 15:56:38,994 [main] DEBUG Orabbix - Note: uptime.RaceConditionQuery null or not present null
~略~
・気になるところが書かれているようです
2018-06-27 15:56:39,157 [pool-1-thread-1] DEBUG Orabbix - Actual query is uptimeNextrun 2018/06/27 15:58:38 on database=orcl Period=2
2018-06-27 15:56:39,158 [pool-1-thread-1] DEBUG Orabbix - I'm going to return 18498 for query uptime on database=orcl
・何か値が返ってきているようです。先日と同じようにコマンドラインでも実行してみました。同じような値が返ってきています。
SQL> select to_char((sysdate-startup_time)*86400, 'FM99999999999999990') retvalue from v$instance;
RETVALUE
------------------
18850
・その後のログですが…
2018-06-27 15:56:39,158 [pool-1-thread-1] DEBUG Orabbix - I'm going to return 18498 for query uptime on database=orcl
・先ほどの値(value 18498)をZabbixに送信しているようです。
2018-06-27 15:56:39,222 [pool-1-thread-1] DEBUG Orabbix - sending b3JjbA==dXB0aW1lMTg0OTg=
・実際の送信電文はbase64エンコードされているようで、以下デコードの結果を転記しておきます。これはzabbixに設定されているキーとは一致しています。
# echo b3JjbA==|base64 -d
orcl
# echo dXB0aW1l|base64 -d
uptime
# echo MTg0OTg=|base64 -d
18498
2018-06-27 15:56:39,222 [pool-1-thread-1] DEBUG Orabbix - received
2018-06-27 15:56:39,223 [pool-1-thread-1] WARN Orabbix - received unexpected response '' for key 'uptime'
・zabbixからの返答が「想定外の値」ということらしいです。
・一方Zabbix側の受信ログからそれっぽいのを探したところ以下のようなログが大量に出ていました。
2486:20180627:155639.201 Message from 192.168.56.102 is missing header. Message ignored.
・メッセージにヘッダが付いていないなどと怒られています。これはバージョンと共にAPIが変更になっているフシがあります。
・最新版のZabbix(サポート切れの版は使え無い)に対応したOrabbixが必要そうです。
別のテスト:
・Zabbix用データ送信ユーティリティ・zabbix_sender
# zabbix_sender -z 192.168.56.101 -p 10051 -s orcl -k OrabbixVersion -o "v1.2.3"
送信してみたところ、正常に受信できて「最新データ」に表示されました。
あと、Zabbixをダウングレードすると管理用データベースのバージョンがどうたらと言われて作り直しました。
アップグレードには自動対応らしいですが、逆はダメなようです。
結論:Zabbixが新しすぎて周辺が対応できていませんでした。
安定バージョンを使用しましょう。という当たり前な答えですみません。
以上