/nodejs-icinga2api

Nodejs module for Icinga2 Api

Primary LanguageJavaScriptMIT LicenseMIT

icinga2

Icinga2 Remote api module. You can create, remove, update, etc of icinga2 objects

Icinga2 api doc

Installation

npm install icinga2-api

Getting started

Example

  1. Check if the host "4demo" exist in monitoring.
  2. If not, create host "4demo".
const icingaapi = require('icinga2-api');

var icingaServer = new icingaapi("icingas2server.local", "5665", "apiUser", "apiUserPass");
    icingaServer.getHostState("4demo", function (err, result) {
        if (err) {
            if (err.Statuscode == "404") {
                console.log("Host 4demo on monitoring was not found, create one");
                
                // Create a host on icinga2.
                icingaServer.createHost("passive-host", "4demo", "4Demo Server", "adito", servername, function (err, result) {
                    if (err) {
                        console.error(err);
                    } else {
                        console.log("Host 4demo was created successfull");
                    }
                });
            }
            console.error(err);
        } else {
            console.log(result);
        }
    })

Methods

  • getServices = function (callback)
  • getService = function (ServerName, ServiceName, callback)
  • getHosts = function (callback)
  • getHost = function (ServerName, callback)
  • getHostFiltered = function (filter, callback)
  • getServiceWithState = function (state, callback)
    • state = 0/1/2
  • createHost = function (template, host, displayname, gruppe, onServer, callback)
    • template - icinga2 host-template
    • onServer = "dockerHost", set a custom variable in icinga2
  • createService = function (template, host, service, displayname, gruppe, onServer, callback)
  • createServiceCustom = function (serviceObj, host, service, callback)
    • serviceObj =
      var serviceObj = JSON.stringify({
          "templates": ["passive-service"],
          "attrs": {
              "display_name": "Service Top",
              "vars.group": "adito",
              "vars.server": "dockerdmz"
          }
      })
  • createHostCustom = function (hostObj, host, callback)
    • hostObj
      var hostBody = JSON.stringify({
          "templates": ["passive-host"],
          "attrs": {
              "display_name": "4Demo Server",
              "vars.group": "adito",
              "vars.server": "dockerdmz"
          }
      })
  • deleteHost = function (host, callback)
  • deleteService = function (service, host, callback)
  • setHostDowntime = function (dObj, hostname, callback)
    • dObj (downtime object)
          var dObj = {
              'type': 'Host',
              'start_time': actTime,
              'end_time': endtime,
              'author': 'icingaadmin',
              'comment': "Downtime for Backup"
          }
  • setFilteredDowntime = function (dFilter, callback)
    • dFilter (example: set downtime for all server where custom variable server = dockerhost)
          var setDownTimeObject = {
              'type': 'Host',
              'start_time': actTime,
              'end_time': endtime,
              'author': 'icingaadmin',
              'comment': "Downtime for Backup",
              'filter': 'host.vars.server == server',
              'filter_vars': {
                  'server': "dockerhost"
              }
          }
  • removeFilteredDowntime = function (dFilter, callback)
    • dFilter(remove all Downtimes with autor "icingaadmin" and custom vars server "dockerhost"
          var removeDownTimeObject = ({
              "type": "Downtime",
              "filter": "downtime.author == filterAuthor && host.vars.server == filteredHost",
              "filter_vars": {
                  "filterAuthor": "icingaadmin",
                  "filteredHost": "dockerhost"
              }
          })
  • disableHostNotification = function (hostname, callback)
  • setHostState = function (host, hostState, StateMessage, callback)
  • setServiceState = function (service, host, serviceState, serviceMessage, callback)
  • getHostState = function (hostName, callback)
  • setServicePerfdata = function (service, server, state, output, perfarr, callback)
    • perfarr (Data array) - show process-check-result in icinga2 api doc
          var perfdataArr = ["Memory in %=" + memUsedinPerc + "%;" + aditoMemWarn + ";" + aditomemErr + ";0"]
  • setHostPerfdata = function (server, state, output, perfarr, callback)
  • updateHostAttr = function (hostObj, host, callback)
    • hostObj
      var hostObj = JSON.stringify({
          "templates": [icingaConf.templatehost],
          "attrs": {
              "display_name": "Adito Server Public",
              "vars.group": "adito",
              "vars.AditoServerName": "aditoServer",
              "vars.AditoServerVersion": "4.6.34",
              "vars.AditoStartupTime": "Mo.",
              "vars.CPUs": "4"
          })
  • updateServiceAttr = function (serviceObj, host, service, callback)

Examples

Check test.js for more details