Page 1 of 2

SQL Database Size check not working

Posted: Tue Nov 06, 2018 11:09 pm
by kwhogster
Nagios Core 4.3.4
Nsclient 4.3
Windows 2012 R2 Server with SQL 2012 Enterprise
Windows 2012 R2 Server with SQL 2014 Enterprise

Setting up this plugging check_sqldbsize.vbs

running the command from the Nagios server

root@tgcs017:/usr/local/nagios/etc/objects/windowsservers# /usr/lib/nagios/plugins/check_nrpe -t 50 -H TGCS016 -c check_sqldbsize -a tgcs016\wsussql SUSDB 8000 5000
C:\Program Files\NSClient++\scripts\check_sqldbsize.vbs(33, 1) Microsoft OLE DB Provider for SQL Server: [DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied.

Code: Select all

define command {
        command_name    check_sqldbsize
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -t 120 -c check_sqldbsize -a $ARG1$ $ARG2$ $ARG3$ $ARG4$
        }

Nsclient.ini

Code: Select all

; Check SQL DB Size
check_sqldbsize=c:\\windows\\system32\\cscript.exe //NoLogo scripts\\check_sqldbsize.vbs  $ARG1$ $ARG2$ $ARG3$ $ARG4$ 
Running the vbs script from the server works

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.


C:\Program Files\NSClient++\scripts>cscript check_sqldbsize.vbs tgcs016\wsussql
susdb 5000 9000
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

OK: SUSDB database size is 3757 MB.

Is this a security issue? Which account is the Nagios server using to pass the command over?

Or is it something else

Thank you

Re: SQL Database Size check not working

Posted: Wed Nov 07, 2018 9:48 am
by mcapra
In your command executed from the Nagios Core server:

Code: Select all

root@tgcs017:/usr/local/nagios/etc/objects/windowsservers# /usr/lib/nagios/plugins/check_nrpe -t 50 -H TGCS016 -c check_sqldbsize -a tgcs016\wsussql SUSDB 8000 5000
Have you taken Bash reserved characters into account? You may need a double backslash in your domain account like so when passing it to check_nrpe:

Code: Select all

root@tgcs017:/usr/local/nagios/etc/objects/windowsservers# /usr/lib/nagios/plugins/check_nrpe -t 50 -H TGCS016 -c check_sqldbsize -a tgcs016\\wsussql SUSDB 8000 5000

Re: SQL Database Size check not working

Posted: Wed Nov 07, 2018 10:17 am
by kwhogster
# /usr/lib/nagios/plugins/check_nrpe -t 50 -H TGCS016 -c check_sqldbsize -a tgcs016\\wsussql SUSDB 8000 5000

C:\Program Files\NSClient++\scripts\check_sqldbsize.vbs(33, 1) Microsoft OLE DB Provider for SQL Server: Cannot open database "SUSDB" requested by the login. The login failed.

tgcs016 is the server host name
wsussql is the sql instance
SUSDB is the sql database

Any ideas?

Re: SQL Database Size check not working

Posted: Wed Nov 07, 2018 3:21 pm
by tgriep
Try this, encase all of the arguments in between single quotes so they are passed as only one argument.

Code: Select all

/usr/local/nagios/etc/objects/windowsservers# /usr/lib/nagios/plugins/check_nrpe -t 50 -H TGCS016 -c check_sqldbsize -a 'tgcs016\wsussql SUSDB 8000 5000'
The username and password that is used to connect to the Database is hard coded in the VBS script to take a look at it and make sure they are updated for your SQL server account.

Re: SQL Database Size check not working

Posted: Wed Nov 07, 2018 7:50 pm
by kwhogster
Ok

I found in the vbs script

Source=" & dbserver & ";" & _
"Trusted_Connection=Yes;Initial Catalog=" & dbname & ";" ' & _
' "User ID=sa;Password=password;"

So I changed password to the SA accounts password saved the file and re ran the check Different message but same meaning

:/usr/local/nagios/etc/objects# /usr/lib/nagios/plugins/check_nrpe -t 50 -H TGCS016 -c check_sqldbsize -a 'TGCS016\WSUSSQL SUSDB 8000 5000'
C:\Program Files\NSClient++\scripts\check_sqldbsize.vbs(33, 1) Microsoft OLE DB Provider for SQL Server: Cannot open database "SUSDB" requested by the login. The login failed.

I checked on the SQL server and SA in not the dbowner and it will not let me make it the dbowner

No matter how I change the script it still runs fine on the server but not from Nagios

Has to be a permissions issue

Thoughts?

Re: SQL Database Size check not working

Posted: Thu Nov 08, 2018 10:55 am
by tgriep
The NSClient++ agent runs as a Local System Account and it may not have sufficient permissions to connect the database. That is why it works on the command line.
Try editing the NSClient++ service on the Windows server and have it use a login account.

Next, your test used a lower case database name but you are using upper case in the command. It should not matter but try using lower case in the command.

Check the MSSQL server log files for any authentication errors.

Re: SQL Database Size check not working

Posted: Thu Nov 08, 2018 1:35 pm
by kwhogster
Good call

Logon failed for user NT Authority\System for the database.

So I added NT Authority\System to the database and now the command works


Now off to my other SQL server to test will post results

Thank you,

Re: SQL Database Size check not working

Posted: Thu Nov 08, 2018 1:55 pm
by kwhogster
On my other Server

:/usr/local/nagios/etc/objects# /usr/lib/nagios/plugins/check_nrpe -t 50 -H TGCS014-N1 -c check_sqldbsize -a 'TGCS014-N1-SQLw\wrestling wrestlinghistory 8000 5000'
C:\Program Files\NSClient++\scripts\check_sqldbsize.vbs(33, 1) Microsoft OLE DB Provider for SQL Server: Login failed for user 'OUR\TGCS014-N1$'.



This time it shows a user account

Re: SQL Database Size check not working

Posted: Thu Nov 08, 2018 3:07 pm
by tgriep
Glad that the other server is working.
On the new server, did you edit the script and change the username and password to a valid account?
Any special characters in the password? Sometimes they cause issues unless they are escaped.

Re: SQL Database Size check not working

Posted: Thu Nov 08, 2018 3:20 pm
by kwhogster
Yes me too

Yes the sa account has same password as on my other sql server.

Only letters and numbers in password.

Login failed for user 'OUR\TGCS014-N1$'. this is the problem but not sure why it is trying to logon using this