Support forum for Nagios Core, Nagios Plugins, NCPA, NRPE, NSCA, NDOUtils and more. Engage with the community of users including those using the open source solutions.
I came across a problem in my MariaDB Nagios Database. The nagios_objects tablespace is displaying special Characters instead of host and service names.
Here is an example of how it looks like when it displays special characters (phpMyAdmin)
Now in the same database and in the same table (nagios_objects) I also have values which are being displayed correctly (name1: hostname, name2: servicename). It seems that after a while Nagios started to write special characters into the table, but I'm not sure about that and I also don't know what the reason could be. Maybe you guys can help me, please
I am using Nagios Core 4.3.4 with ndo2db 2.1.2. The MariaDB Database is on a seperate VM with MariaDB version 5.5.56.
use nagios;
SELECT @@character_set_database, @@collation_database;
SELECT * FROM information_schema.SCHEMATA WHERE schema_name = 'nagios';
SELECT TABLE_NAME, COLUMN_NAME, character_set_name, collation_name FROM information_schema.COLUMNS WHERE table_schema = 'nagios' AND table_name = 'nagios_objects';
mcapra wrote:Was the default character set / collation of your ndo2db database, or the character set / collation for the nagios_objects table, changed recently?
I haven't changed the collation or the character set since the installation. The collation of the nagios database is utf8_general_ci. The Server connection collation dispalyed in phpMyAdmin is utf8mb4_unicode_ci.
use nagios;
SELECT @@character_set_database, @@collation_database;
SELECT * FROM information_schema.SCHEMATA WHERE schema_name = 'nagios';
SELECT TABLE_NAME, COLUMN_NAME, character_set_name, collation_name FROM information_schema.COLUMNS WHERE table_schema = 'nagios' AND table_name = 'nagios_objects';
MariaDB [(none)]> use nagios;
SELECT * FROM information_schema.SCHEMATA WHERE schema_name = 'nagios';
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
SELECT TABLE_NAME, COLUMN_NAME, character_set_name, collation_name FROM information_schema.COLUMNS WHERE table_schema = 'nagios' AND table_name = 'nagios_objects';Database changed
MariaDB [nagios]> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8 | utf8_general_ci |
+--------------------------+----------------------+
1 row in set (0.01 sec)
MariaDB [nagios]> SELECT * FROM information_schema.SCHEMATA WHERE schema_name = 'nagios';
+--------------+-------------+----------------------------+------------------------+----------+
| CATALOG_NAME | SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH |
+--------------+-------------+----------------------------+------------------------+----------+
| def | nagios | utf8 | utf8_general_ci | NULL |
+--------------+-------------+----------------------------+------------------------+----------+
1 row in set (0.00 sec)
MariaDB [nagios]> SELECT TABLE_NAME, COLUMN_NAME, character_set_name, collation_name FROM information_schema.COLUMNS WHERE table_schema = 'nagios' AND table_name = 'nagios_objects';
+----------------+---------------+--------------------+-------------------+
| TABLE_NAME | COLUMN_NAME | character_set_name | collation_name |
+----------------+---------------+--------------------+-------------------+
| nagios_objects | object_id | NULL | NULL |
| nagios_objects | instance_id | NULL | NULL |
| nagios_objects | objecttype_id | NULL | NULL |
| nagios_objects | name1 | latin1 | latin1_swedish_ci |
| nagios_objects | name2 | latin1 | latin1_swedish_ci |
| nagios_objects | is_active | NULL | NULL |
+----------------+---------------+--------------------+-------------------+
6 rows in set (0.00 sec)
I now see that the character_set_name and collation_name of colums name1 and name2 is different from utf8_general_ci. Could that be the problem? If yes then why are there values that displayed correctly?
Did anything change recently? Like did you upgrade Core or NDO2DB, run yum updates, etc?
Are you doing updates to the DB through PHPMyAdmin or interacting directly with the nagios DB through a script or another automated process that could be doing it?
ssax wrote:Did anything change recently? Like did you upgrade Core or NDO2DB, run yum updates, etc?
Are you doing updates to the DB through PHPMyAdmin or interacting directly with the nagios DB through a script or another automated process that could be doing it?
I did run yum update on both machines some time after the installation. Here's what yum history info on nagios and ndoutils returns.
If I recall correctly the first try to update nagios failed because I am running Nagios Core as a two node HA-cluster based on a shared storage that is mounted only on the active node. The nagios update succeeds only if the VM I run yum update on is currently the active node.
I only use phpMyAdmin to check and look at the database. The ndo2db service should be the only thing writing to that database.
#####################################################################
# NDO2DB DAEMON CONFIG FILE
#
# Last Modified: 01-02-2009
#####################################################################
# LOCK FILE
# This is the lockfile that NDO2DB will use to store its PID number
# in when it is running in daemon mode.
lock_file=/var/run/ndoutils/ndo2db.pid
# USER/GROUP PRIVILIGES
# These options determine the user/group that the daemon should run as.
# You can specify a number (uid/gid) or a name for either option.
ndo2db_user=nagios
ndo2db_group=nagios
# SOCKET TYPE
# This option determines what type of socket the daemon will create
# an accept connections from.
# Value:
# unix = Unix domain socket (default)
# tcp = TCP socket
socket_type=unix
#socket_type=tcp
# SOCKET NAME
# This option determines the name and path of the UNIX domain
# socket that the daemon will create and accept connections from.
# This option is only valid if the socket type specified above
# is "unix".
socket_name=/var/run/ndoutils/ndo2db.sock
# TCP PORT
# This option determines what port the daemon will listen for
# connections on. This option is only vlaid if the socket type
# specified above is "tcp".
tcp_port=5668
# ENCRYPTION
# This option determines if the ndo2db daemon will accept SSL to encrypt the
# network traffic between module and ndo2db daemon.
# Both sides have to enable this feature which depends on SSL Libraries
# like openssl or kerberos
# This option is only valid if the output type
# option specified above is "tcpsocket".
#
# A value of '1' will enable this feature
use_ssl=0
# DATABASE SERVER TYPE
# This option determines what type of DB server the daemon should connect to.
# Values:
# mysql = MySQL
db_servertype=mysql
# DATABASE HOST
# This option specifies what host the DB server is running on.
db_host=***********
# DATABASE PORT
# This option specifies the port that the DB server is running on.
# Values:
# 3306 = Default MySQL port
db_port=3306
# DATABASE SOCKET
# This option specifies the path to the socket to use for local DB connections.
#
# MySQL's default location is /tmp/mysql.sock, but /var/lib/mysql/mysql.sock
# is common for RPM distributions, and /var/run/mysqld/mysqld.sock is seen on
# Ubuntu...
#
# You normally do not need to set this option unless you experience connection
# problems with messages in NDO2DB's log like:
# "Can't connect to local MySQL server through socket ..."
#db_socket=/var/lib/mysql/mysql.sock
# DATABASE NAME
# This option specifies the name of the database that should be used.
db_name=nagios
# DATABASE TABLE PREFIX
# Determines the prefix (if any) that should be prepended to table names.
# If you modify the table prefix, you'll need to modify the SQL script for
# creating the database!
db_prefix=nagios_
# DATABASE USERNAME/PASSWORD
# This is the username/password that will be used to authenticate to the DB.
# The user needs at least SELECT, INSERT, UPDATE, and DELETE privileges on
# the database.
db_user=ndoutils
db_pass=**********
## TABLE TRIMMING OPTIONS
# Several database tables containing Nagios event data can become quite large
# over time. Most admins will want to trim these tables and keep only a
# certain amount of data in them. The options below are used to specify the
# age (in MINUTES) that data should be allowd to remain in various tables
# before it is deleted. Using a value of zero (0) for any value means that
# that particular table should NOT be automatically trimmed.
# Keep timed events for 24 hours
max_timedevents_age=1440
# Keep system commands for 1 week
max_systemcommands_age=10080
# Keep service checks for 1 week
max_servicechecks_age=10080
# Keep host checks for 1 week
max_hostchecks_age=10080
# Keep event handlers for 31 days
max_eventhandlers_age=44640
# Keep external commands for 31 days
max_externalcommands_age=44640
# Keep notifications for 31 days
max_notifications_age=44640
# Keep contactnotifications for 31 days
max_contactnotifications_age=44640
# Keep contactnotificationmethods for 31 days
max_contactnotificationmethods_age=44640
# Keep logentries for 90 days
max_logentries_age=129600
# Keep acknowledgements for 31 days
max_acknowledgements_age=44640
# DEBUG LEVEL
# This option determines how much (if any) debugging information will
# be written to the debug file. OR values together to log multiple
# types of information.
# Values: -1 = Everything
# 0 = Nothing
# 1 = Process info
# 2 = SQL queries
debug_level=1
# DEBUG VERBOSITY
# This option determines how verbose the debug log out will be.
# Values: 0 = Brief output
# 1 = More detailed
# 2 = Very detailed
debug_verbosity=1
# DEBUG FILE
# This option determines where the daemon should write debugging information.
debug_file=/var/log/nagios/ndo2db.log
# MAX DEBUG FILE SIZE
# This option determines the maximum size (in bytes) of the debug file. If
# the file grows larger than this size, it will be renamed with a .old
# extension. If a file already exists with a .old extension it will
# automatically be deleted. This helps ensure your disk space usage doesn't
# get out of control when debugging.
max_debug_file_size=1000000
#####################################################################
# NDOMOD CONFIG FILE
#
# Last Modified: 09-05-2007
#####################################################################
# INSTANCE NAME
# This option identifies the "name" associated with this particular
# instance of Nagios and is used to seperate data coming from multiple
# instances. Defaults to 'default' (without quotes).
instance_name=default
# OUTPUT TYPE
# This option determines what type of output sink the NDO NEB module
# should use for data output. Valid options include:
# file = standard text file
# tcpsocket = TCP socket
# unixsocket = UNIX domain socket (default)
#output_type=file
#output_type=tcpsocket
output_type=unixsocket
# OUTPUT
# This option determines the name and path of the file or UNIX domain
# socket to which output will be sent if the output type option specified
# above is "file" or "unixsocket", respectively. If the output type
# option is "tcpsocket", this option is used to specify the IP address
# of fully qualified domain name of the host that the module should
# connect to for sending output.
#output=/var/run/ndoutils/ndo2db.dat
#output=127.0.0.1
output=/var/run/ndoutils/ndo2db.sock
# TCP PORT
# This option determines what port the module will connect to in
# order to send output. This option is only valid if the output type
# option specified above is "tcpsocket".
tcp_port=5668
# ENCRYPTION
# This option determines if the module will use SSL to encrypt the
# network traffic between module and ndo2db daemon.
# Both sides have to enable this feature which depends on SSL Libraries
# like openssl or kerberos
# This option is only valid if the output type
# option specified above is "tcpsocket".
#
# A value of '1' will enable this feature
use_ssl=0
# OUTPUT BUFFER
# This option determines the size of the output buffer, which will help
# prevent data from getting lost if there is a temporary disconnect from
# the data sink. The number of items specified here is the number of
# lines (each of variable size) of output that will be buffered.
output_buffer_items=5000
# BUFFER FILE
# This option is used to specify a file which will be used to store the
# contents of buffered data which could not be sent to the NDO2DB daemon
# before Nagios shuts down. Prior to shutting down, the NDO NEB module
# will write all buffered data to this file for later processing. When
# Nagios (re)starts, the NDO NEB module will read the contents of this
# file and send it to the NDO2DB daemon for processing.
buffer_file=/var/cache/ndoutils/ndomod.tmp
# FILE ROTATION INTERVAL
# This option determines how often (in seconds) the output file is
# rotated by Nagios. File rotation is handled by Nagios by executing
# the command defined by the file_rotation_command option. This
# option has no effect if the output_type option is a socket.
file_rotation_interval=14400
# FILE ROTATION COMMAND
# This option specified the command (as defined in Nagios) that is
# used to rotate the output file at the interval specified by the
# file_rotation_interval option. This option has no effect if the
# output_type option is a socket.
#
# See the file 'misccommands.cfg' for an example command definition
# that you can use to rotate the log file.
#file_rotation_command=rotate_ndo_log
# FILE ROTATION TIMEOUT
# This option specified the maximum number of seconds that the file
# rotation command should be allowed to run before being prematurely
# terminated.
file_rotation_timeout=60
# RECONNECT INTERVAL
# This option determines how often (in seconds) that the NDO NEB
# module will attempt to re-connect to the output file or socket if
# a connection to it is lost.
reconnect_interval=15
# RECONNECT WARNING INTERVAL
# This option determines how often (in seconds) a warning message will
# be logged to the Nagios log file if a connection to the output file
# or socket cannot be re-established.
reconnect_warning_interval=15
#reconnect_warning_interval=900
# DATA PROCESSING OPTIONS
# These options determine what data the NDO NEB Module will process
#
acknowledgement_data=1
adaptive_contact_data=1
adaptive_host_data=1
adaptive_program_data=1
adaptive_service_data=1
aggregated_status_data=1
comment_data=1
contact_status_data=1
downtime_data=1
event_handler_data=1
external_command_data=1
flapping_data=1
host_check_data=1
host_status_data=1
log_data=1
main_config_data=1
notification_data=1
object_config_data=1
process_data=1
program_status_data=1
retention_data=1
service_check_data=1
service_status_data=1
state_change_data=1
system_command_data=1
timed_event_data=1
# CONFIG OUTPUT OPTION
# This option determines what types of configuration data the NDO
# NEB module will dump from Nagios. Values can be OR'ed together.
# Values:
# 0 = Don't dump any configuration information
# 1 = Dump only original config (from config files)
# 2 = Dump config only after retained information has been restored
# 3 = Dump both original and retained configuration
config_output_options=2