shawn-sterling / graphios

A program to send nagios perf data to graphite (carbon) / statsd / librato / influxdb
289 stars 100 forks source link

OMD python install - 'no post install could be performed' #55

Open christrotter opened 9 years ago

christrotter commented 9 years ago

I get this:

copying build/scripts-2.6/graphios.py -> /usr/bin
changing mode of /usr/bin/graphios.py to 755
Running post install task
sorry I couldn't find the nagios.cfg file
NO POST INSTALL COULD BE PERFORMED

So I edited setup.py: (see omd path)

def _post_install():
    """
    tries to find the nagios.cfg and insert graphios perf commands/cfg
    """
    lookin = ['/etc/nagios/', '/opt/nagios/', '/usr/local/nagios',
              '/usr/nagios', '/omd/sites/SITENAMEHERE/etc/nagios']
    nag_cfg = find_nagios_cfg(lookin)
    if nag_cfg is None:
        print("sorry I couldn't find the nagios.cfg file")
        print("NO POST INSTALL COULD BE PERFORMED")

Ran it again: python setup.py install

Running post install task
found nagios.cfg in /omd/sites/SITENAMEHERE/etc/nagios/nagios.cfg
Traceback (most recent call last):
  File "setup.py", line 176, in <module>
    https://github.com/shawn-sterling/graphios'
  File "/usr/lib64/python2.6/distutils/core.py", line 152, in setup
    dist.run_commands()
  File "/usr/lib64/python2.6/distutils/dist.py", line 975, in run_commands
    self.run_command(cmd)
  File "/usr/lib64/python2.6/distutils/dist.py", line 995, in run_command
    cmd_obj.run()
  File "setup.py", line 131, in run
    self.execute(_post_install, [], msg="Running post install task")
  File "/usr/lib64/python2.6/distutils/cmd.py", line 358, in execute
    util.execute(func, args, msg, dry_run=self.dry_run)
  File "/usr/lib64/python2.6/distutils/util.py", line 408, in execute
    func(*args)
  File "setup.py", line 103, in _post_install
    print("parsed nagcfg, nagios_log is at %s" % nconfig['log_file'])
KeyError: 'log_file'

So it's something in here:

 print("found nagios.cfg in %s" % nag_cfg)
        nconfig = parse_nagios_cfg(nag_cfg)
        print("parsed nagcfg, nagios_log is at %s" % nconfig['log_file'])
        if backup_file(nag_cfg):
            add_perfdata_config(nconfig, nag_cfg)
        else:
            print("Backup failed, add modify nagios.cfg manually.")

Checking that nagios.cfg file - it's OMD-generated:

# Nagios main configuration file

# This file will be read in after the files in nagios.d.
# Variables you set here will override settings in those
# files. Better do not edit the files in nagios.d but rather
# copy variables from there to here. That will save you
# trouble when updating your sites to new versions.

#use_regexp_matching=1

So it's expecting to see something...but OMD uses conf.d and nagios.d for configs. I suspect you could just put stuff straight in here... (the OMD documentation appears a little pieced-together - initially mentions OMD 1.2x, later on mentions OMD 5.6...)

Guessing this function is actually what's failing...

def add_perfdata_config(nconfig, nag_cfg):
    """
    adds the graphios perfdata cfg to the nagios.cfg
    """

I'll play around, see if I can get it working - will update.

Update: Oh yeah, here's the folder structure if you were curious:

[root@server nagios]# pwd
/omd/sites/SITENAMEHERE/etc/nagios
[root@server nagios]# ls -h
apache.conf  cgi.cfg  conf.d  config.inc.php  nagios.cfg  nagios.d  resource.cfg  ssi
[root@server nagios]# ls conf.d/
check_mk_objects.cfg  check_mk_templates.cfg  commands.cfg  jmx4perl_nagios.cfg  notification_commands.cfg  pnp4nagios.cfg  templates.cfg  thruk_templates.cfg  timeperiods.cfg
[root@server nagios]# ls nagios.d
dependency.cfg  eventhandler.cfg  flapping.cfg  freshness.cfg  logging.cfg  misc.cfg  mk-livestatus.cfg  obsess.cfg  omd.cfg  pnp4nagios.cfg  retention.cfg  timing.cfg  tuning.cfg
christrotter commented 9 years ago

Yeah, OMD's preference is to put user overrides into the nagios.cfg:

# Please do not change settings here. Copy the variables
# you want to override to ../nagios.cfg and edit them there.
# Settings in nagios.cfg have always precedence.

So dere ya go!

shawn-sterling commented 9 years ago

Hi there Chris, sorry for the late reply.

Thank you for doing all the troubleshooting for me. :) I think the right way to go would be to try and detect omd and ignore if we can't find the log_file key in the nagios config. I should be able to add this over the weekend.

madonius commented 8 years ago

Hey,

In Debian 8.0 nagios is installed under /etc/nagios3/ added it manually but it would be great if you could include that too.

xixjxj commented 6 years ago

Hi, may I ask how we can workaround this issue? My OMD server does not have internet access. Now, i am getting the same issue when installing graphios by issuing "python setup.py install".

Any update is highly appreciated.