Oracle Database Monitoring Issue

Started by deepb, May 23, 2024, 09:15:10 AM

Previous topic - Next topic

deepb

In version 4.5.0 Oracle subagent is not getting loaded. Agent config file is as below:

SubAgent = oracle.nsm
[ORACLE]
ID = DB1
Name = TEST
Username = dbuser
Password = "mypass123"

2024.05.23 11:25:27.629 *I* [db.drv            ] Database driver "sqlite.ddr" loaded and initialized successfully
2024.05.23 11:25:27.637 *I* [db.agent          ] Local database opened successfully
2024.05.23 11:25:27.637 *I* [startup            ] Agent ID is fe5c6553-04d2-4303-b702-f51d3befdbf2
2024.05.23 11:25:27.638 *I* [startup            ] Local host name is "RAC1.kmrcl.in"
2024.05.23 11:25:27.638 *I* [startup            ] Using system name "rac1"
2024.05.23 11:25:27.639 *I* [startup            ] Arbitrary command execution disabled
2024.05.23 11:25:28.642 *I* [linux              ] Unable to parse /proc/drbd, DRBD data collector will not start
2024.05.23 11:25:28.647 *I* [subagents          ] Subagent "Linux" (/usr/local/lib/netxms/linux.nsm) loaded successfully (version 4.5.0)
2024.05.23 11:25:28.647 *E* [subagents          ] Error loading subagent module "oracle.nsm" (/usr/local/lib/netxms/oracle.nsm: cannot open shared object file: No such file or directory)
2024.05.23 11:25:28.647 *E* [subagents          ] Error loading subagent module "netsvc.nsm" (/usr/local/lib/netxms/netsvc.nsm: cannot open shared object file: No such file or directory)

There's no oracle.ddr in /usr/local/lib/netxms/dbdrv/ ; only sqlite.ddr is there.
In /usr/local/lib/netxms netsvc.nsm is also missing.

Please help.

Alex Kirhenshtein

Prefix /usr/local usually indicates that you built it from source. Run configure with additional "—with-oracle=/path/to/cliebt/library" and rebuild. 
Same for netsvc, looks like you are missing libcurl 

deepb

#2
Thanks for the '--with-oracle' suggestion. It worked.
Now, Oracle.DBInfo.IsReachable(DB1) is coming NO

SubAgent = oracle.nsm
[ORACLE]
ID = DB1
Name = TEST
Username = dbuser
Password = "mypass123"

I also tried below config but that didn't work either.
Select
SubAgent = oracle.nsm
[ORACLE]
ID = DB1
TnsName = TEST
Username = dbuser
Password = "mypass123"

I gave full connection string as below. Also didn't work.
Select
SubAgent = oracle.nsm
[ORACLE]
ID = DB1
Name = dbuser@//localhost:1521/TEST
Username = dbuser
Password = "mypass123"

2024.05.28 15:16:46.285 *D* [comm.cs.1          ] Requesting metric "Oracle.DBInfo.IsReachable(DB1)"
2024.05.28 15:16:46.285 *D* [comm.cs.1          ] GetMetricValue("Oracle.DBInfo.IsReachable(DB1)"): 0 (SUCCESS) value = "NO"
2024.05.28 15:16:46.285 *D* [comm.cs.1          ] Outgoing message dump:
  ** 000000 | 00 1D 50 00 00 00 00 30 00 00 05 3E 00 00 00 02 | ..P....0...>....
  ** 000010 | 00 00 00 1C 00 00 00 00 00 00 00 00 00 00 00 00 | ................
  ** 000020 | 00 00 00 15 07 00 00 00 00 00 00 02 4E 4F 00 00 | ............NO..
  ** code=0x001D (CMD_REQUEST_COMPLETED) version=5 flags=0x0000 id=1342 size=48 numFields=2
  ** 000000: [    28] INT32       0
  ** 000010: [    21] UTF8-STRING "NO"

Is there any difference between the INI formats of 4.5.0 and 5.x ? Id or ID? TnsName or Name?
Can't find Administration Guide for old versions.

Filipp Sudanov

I am not big expert in oracle stuff, but here's config that works for me (we can now use just subagent name withou .nsm, but it does not change anything):

SubAgent = oracle
[ORACLE]
ID = DB1
Name = //10.10.1.1/orcl.office.companyname.com
Username = user
Password = password

On 6-th level of debug the following lines are in agent log:

2024.05.29 12:19:33.495 *D* [db.drv.oracle      ] OCI version 19.9.0.0.0
2024.05.29 12:19:33.497 *D* [db.drv.oracle      ] OCI statement caching is ENABLED
2024.05.29 12:19:33.497 *I* [db.drv            ] Database driver "oracle.ddr" loaded and initialized successfully
2024.05.29 12:19:33.498 *D* [oracle            ] ORACLE: poller thread for database oracle started
2024.05.29 12:19:33.498 *I* [subagents          ] Subagent "ORACLE" (/opt/netxms-master/lib/netxms/oracle.nsm) loaded successfully (version 5.0.0-rc141)
2024.05.29 12:19:33.605 *D* [db.drv.oracle      ] Connected to Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
2024.05.29 12:19:33.605 *D* [db.conn            ] New DB connection opened: handle=0x7f083c08b100
2024.05.29 12:19:33.605 *D* [db.query          ] DB Library: long running query threshold for session 0x7f083c08b100 set to 5000
2024.05.29 12:19:33.610 *I* [oracle            ] Connection with database oracle restored (version 12.1, connection TTL 3600)

What it's saying for you in the line with db.drv.oracle tag?

deepb

#4
It is working now with below config:

ID = DB1
Name = <IPADDRESS>:<PORT NUMBER>/<SERVICE NAME>
Username = dbuser
Password = mypass123