Platz da LConf, der Director kommt!

Lange Zeit war das von NETWAYS entwickelte Tool LConf das Mittel der Wahl wenn ein grafisches Konfigurationsfrontend für Icinga gesucht wurde. Mit Icinga 2 und dem damit einhergehenden geänderten Konfigurationsformat litt jedoch die Kompatibilität, außerdem ist das ursprüngliche Konzept von LConf mit der Zuweisung von Services über Vererbungen eines OpenLDAP-Baumes spätestens mit den vielen Möglichkeiten der Apply Rules von Icinga 2 überholt.
Als eigenes Modul in Icinga Web 2 integriert, ist der Director das einzige Konfigurationstool das eine vollständige Unterstützung für Icinga 2 bietet. Die Kommunikation erfolgt dabei direkt mit der API des Icinga 2 Cores (seit Icinga 2.4). Daher stellt sich also die Frage: Wie lässt sich die Icinga Konfiguration von LConf am Besten auf den Director, respektive von Icinga 1.x auf Icinga 2.x migrieren?
Icinga Web 2 bietet bereits nativ eine Unterstützung für LDAP, diese steht auch den Modulen zur Verfügung. Um LConf nun als Import Source im Director zu verwenden, muss dafür in Web 2 noch eine entsprechende Resource eingerichtet werden.

Host in LConf


Bei der Import Source reicht es dann i.d.R. aus die Objektklasse auf lconfHost einzuschränken, denn mehr als nur Hosts zu importieren, macht in den wenigsten Fällen sind. Services sollten aufgrund von CheckCommands aus der Icinga Template Library (= ITL) sowieso neu gemacht und in dem Zuge auch gleich überdacht werden. Durch die Apply Rules liegt der Fokus auf Host Eigenschaften anhand deren später Services zugewiesen werden können. Neben Standardattributen stehen hier auch sog. Custom Attribute oder Custom Variablen (CustomVars) zur Verfügung, mit denen weitere individuelle Informationen wie beispielsweise Betriebssystem, Rolle oder Standort hinterlegt werden können.
Normalerweise ist es bei Hosts ausreichend cn, lconfAddress, lconfAlias und lconfHostCustomvar zu importieren. Da CustomVars in LConf mit Unterstrich vorm Bezeichner und einem Leerzeichen vor dem eigentlichen Wert angegeben werden müssen, sieht das in der Vorschau der Import Source beispielhaft so aus:

[
“_operatingsystem Linux”,
“_role Webserver”,
“_rack Rack01”
]

Diese Syntax kann vom Director nur schwer weiter verarbeitet werden, daher gibt es dort seit kurzem den Modifier “Transform LConf CustomVars to Hash“, mit dem das Ganze wie folgt transformiert wird:

{
operatingsystem: “Linux”,
rack: “Rack01”,
role: “Webserver”
}

Host im Director


Bei der darauf aufbauenden Sync Rule können dann alle CustomVars mit “All custom variables (vars)” automatisch umgesetzt werden, dabei spielt es keine Rolle ob die Hosts eine, keine oder mehrere Custom Attribute definiert haben.
Damit ist es sehr einfach die Hosts aus dem bestehenden LConf-Baum bereits im Produktivbetrieb schon auf die künftige Verwendung mit Icinga 2 vorzubereiten und sie dann mit dem Director einmalig oder regelmäßig zu importieren, sodass zumindest ein paar Andenken an den “geliebten” LConf bleiben…
Wer hier oder auch bei anderen Aufgaben mit Icinga und dem Director noch Unterstützung benötigt, kann aber natürlich auch gerne auf uns zukommen.

Markus Waldmüller
Markus Waldmüller
Lead Senior Consultant

Markus war bereits mehrere Jahre als Sysadmin in Neumarkt i.d.OPf. und Regensburg tätig. Nach Technikerschule und Selbständigkeit ist er nun Anfang 2013 bei NETWAYS als Lead Senior Consultant gelandet. Wenn er nicht gerade die Welt bereist, ist der sportbegeisterte Neumarkter mit an Sicherheit grenzender Wahrscheinlichkeit auf dem Mountainbike oder am Baggersee zu finden.

LConf 1.5.0 released

lconf_logoWhile the backend exporter has been overhauled in many places, we’ve also tackled long lasting issues such as missing schema attributes or nasty import bugs. On the other hand, the LConf web interface reflects the schema additions as well fixes annoying bugs with custom variable removal, and also integrates community contributed patches such as a parent host drop down.
Download LConf Backend 1.5.0, LConf Icinga Web 1.5.0 & LConf Standalone Web 1.5.0.
Find the Changelog below.
Cheers, Alex & Michael

LConf Backend 1.5.0

CHANGES

  • Schema: Additional object attributes (see below) requiring update
  • Import: Skip already existing objects, set address to host name if not defined

FEATURES

  • Feature #1432: add inherits_parent attribute for host/service dependency
  • Feature #1480: add first_notification_delay as schema attribute to host/service
  • Feature #1886: contact attributes address1-6 missing
  • Feature #2082: Add ldap_person and allow auxiliary objectClass in ldap schema
  • Feature #2429: Add the attribute “address6” for ipv6 dual stack to the host-settings
  • Feature #2495: Add attribute contactgroup_members and servicegroup_members
  • Feature #2690: Complete LDAP schema
  • Feature #2889: LConfImport: Skip already existing objects and continue import
  • Feature #2891: LConfImport: Set host address to name if not existing

FIXES

  • Bug #2192: LConfImport.pl doesn’t ignore comments in objects.cache
  • Bug #2240: hostgroup alias/display_name is overridden with cn
  • Bug #2761: Escalations are no longer exported
  • Bug #2857: LConf 1.5.0-rc1: additional hostgroups are exported with a “+”
  • Bug #2859: Default User filter for Icinga2 is too restrictive
  • Bug #2887: str2arr_by_delim_without_excludes() must not return empty array values
  • Bug #2899: customvars with value 0 are not exported

LConf Icinga Web Module 1.5.0

CHANGES

  • Requires LConf Backend 1.5.x!
  • New object attributes (see below)
  • Export checks for unsaved settings
  • Exclude not supported attributes in properties tab

FEATURES

  • Feature #1568: Notify to save last changes before export
  • Feature #1727: Parent settings for Hosts via GUI
  • Feature #2096: connection manager: add the default 389 port and localhost as default
  • Feature #2425: Add “Max check attempts” to check settings
  • Feature #2517: ServiceEscalationServiceGroups and ServiceEscalationHostGroups dropdown missing
  • Feature #2645: Add an option to define override or add for specific attribute values (groups, contacts, etc)
  • Feature #2875: Add attributes: host address6, {contact,service}group_members, contact address1-6
  • Feature #2877: Add inherits_parents (dependencies 1.x) and first_notification_delay (host/service) attributes

FIXES

  • Bug #2177: Quicklinks from grid to access the hostObject directly in LConf don’t work
  • Bug #2410: delete customvar not possible
  • Bug #2553: Testcheck fails at expanding macros
  • Bug #2643: Contacts can not have an interval
  • Bug #2811: Find a way to hide StructObj attributes in Properties tab
  • Bug #2839: Add property not possible

LConf Standalone Web 1.5.0

Same as Icinga Web Module, and additionally:
FEATURES

  • Feature #2841: Increase Ajax timeout
  • Feature #2871: Add support for Apache 2.4
Michael Friedrich
Michael Friedrich
Senior Developer

Michael ist seit vielen Jahren Icinga-Entwickler und hat sich Ende 2012 in das Abenteuer NETWAYS gewagt. Ein Umzug von Wien nach Nürnberg mit der Vorliebe, österreichische Köstlichkeiten zu importieren - so mancher Kollege verzweifelt an den süchtig machenden Dragee-Keksi und der Linzer Torte. Oder schlicht am österreichischen Dialekt der gerne mit Thomas im Büro intensiviert wird ("Jo eh."). Wenn sich Michael mal nicht in der Community helfend meldet, arbeitet er am nächsten LEGO-Projekt oder geniesst...

LConf Backend releases 1.4.4 & 1.5.0-RC1

lconf_logoWe’ve recently released LConf 1.4.3 and the first beta of 1.5.0 including performance improvements. This time, we’ve come around a couple of bugs with the Icinga 2 export and therefore release 1.4.4.

Additionally we’re working on getting things straightened up for the final 1.5.0 release. To get things going aside from performance improvements, there’s a new deployment script capable of Icinga 2 zones.d as well as additional schema changes (icon_image). Keep your fingers crossed, 1.5.0 is scheduled end of Q1. This time it’s 1.5.0-rc1 time.icinga_logo_200x69

Grab them while they’re hot and let us know how much better 1.5.x scales!
 

Michael Friedrich
Michael Friedrich
Senior Developer

Michael ist seit vielen Jahren Icinga-Entwickler und hat sich Ende 2012 in das Abenteuer NETWAYS gewagt. Ein Umzug von Wien nach Nürnberg mit der Vorliebe, österreichische Köstlichkeiten zu importieren - so mancher Kollege verzweifelt an den süchtig machenden Dragee-Keksi und der Linzer Torte. Oder schlicht am österreichischen Dialekt der gerne mit Thomas im Büro intensiviert wird ("Jo eh."). Wenn sich Michael mal nicht in der Community helfend meldet, arbeitet er am nächsten LEGO-Projekt oder geniesst...

LConf bugfix releases & performance improvements

lconf_logoThere was definitely too much happening in 2014, and while there is progress to be seen on Icinga 2 and Icinga Web 2, LConf required some attention & love. Acknowledging bugs doesn’t automatically fix them, and we’d also like to have the Icinga 2 migration export for our customers ready to be used preparing the final migration in 2015. Furthermore we’ll definitely need to get better responding to bugs and feature requests on our redmine bug tracker.
Which is why the LConf taskforce was founded, the week before christmas holidays and even in our English speaking week. Four days full of code, drawings, swearing and whatnot. On the long run, we’ve fixed quite a few LConf backend bugs (not only Icinga 2), banged our head on LConf Icinga Web frontend bugs and finally tried to improve the export performance somehow. We’re also aware that the LConf Standalone Web gets more important these days when integrating it into the upcoming Icinga Web 2. Last but not least we’ve reviewed quite a few user contributed patches and integrated them upstream – thanks for that, keep up the good work!
In order to keep your installations safe, all the remaining bugfixes are applied to the existing 1.4.x branches. Which means we’re releasing the following versions today:

The LConf Export performance problem is addressed separately. Since we were required to change large parts of the code, it is released as beta version on top of the released 1.4.x branch, but as 1.5.0-beta (Changelog, Download). We did test and develop it using a rather huge ldap tree at a customer (25 min average export time down to 5 minutes), but it certainly requires your tests & feedback as well.
Merry Christmas from the LConf taskforce!
Achim, Alex, Michael & Markus

Michael Friedrich
Michael Friedrich
Senior Developer

Michael ist seit vielen Jahren Icinga-Entwickler und hat sich Ende 2012 in das Abenteuer NETWAYS gewagt. Ein Umzug von Wien nach Nürnberg mit der Vorliebe, österreichische Köstlichkeiten zu importieren - so mancher Kollege verzweifelt an den süchtig machenden Dragee-Keksi und der Linzer Torte. Oder schlicht am österreichischen Dialekt der gerne mit Thomas im Büro intensiviert wird ("Jo eh."). Wenn sich Michael mal nicht in der Community helfend meldet, arbeitet er am nächsten LEGO-Projekt oder geniesst...

Weekly Snap: LConf, Iperf & Icinga 2 Training

weekly snap16 – 20 June brought much ado about monitoring – from an LConf release and training course on Icinga 2, to a guide to SMS alerts and a network performance tool.
Christian began the week by announcing a new webinar on Foreman for OpenNebula, as Silke introduced our new training course on Icinga 2.
Meanwhile, Michael released LConf 1.4.2 and LConf for Icinga Web 1.4.0 with compatibility updates for Icinga 2.
Continuing on the monitoring theme, Georg explained how to set up Icinga / Nagios SMS alerts on Linux systems, and Tobias showed how to assess network performance with Iperf.
Lastly, Lennart came to a Puppet course’s rescue in Paris as a substitute trainer.

LConf 1.4.2 with Icinga 2 export, LConf Web Bugfix releases

lconf_logo_2LConf 1.4.2 contains several bug fixes, and adds export compatibility for the Icinga 2 2.0.0 configuration syntax again. There were massive changes ongoing ever since Icinga 2 0.0.9 which rendered the feature unusable for a while now. Luckily the Icinga team (yeah, me too actually) finally released Icinga 2 2.0.0 on Monday, so we’ve fixed LConf 1.4.x in order to make LConf users happy as well 🙂 logo_icinga3
LConf for Icinga Web 1.4.0 contains plenty bugfixes and now follows the same version schema such as the LConf backend. The standalone Web has been updated too.
Keep in mind that the Icinga 2 export does not add any new features introduced with Icinga 2 2.0.0 (apply rules, etc) but only acts as compatibility layer, replacing any required migration script around. If you are interested in the new capabilities Icinga 2 (configuration) introduces, join the Icinga 2 training (I am one of the trainers) – or fetch the latest iX magazine special issue featuring an Icinga 2 article written by me.
Have fun with LConf!

Michael Friedrich
Michael Friedrich
Senior Developer

Michael ist seit vielen Jahren Icinga-Entwickler und hat sich Ende 2012 in das Abenteuer NETWAYS gewagt. Ein Umzug von Wien nach Nürnberg mit der Vorliebe, österreichische Köstlichkeiten zu importieren - so mancher Kollege verzweifelt an den süchtig machenden Dragee-Keksi und der Linzer Torte. Oder schlicht am österreichischen Dialekt der gerne mit Thomas im Büro intensiviert wird ("Jo eh."). Wenn sich Michael mal nicht in der Community helfend meldet, arbeitet er am nächsten LEGO-Projekt oder geniesst...

Weekly Snap: LConf & ACL, OSMC & OSBC Call for Papers

weekly snap5 – 9 May packed in tips for LConf, spreadsheets and streaming clients, three events and Puppet webinar too.
On events, Eva announced our Call for Papers for the Open Source Monitoring Conference and the Open Source Backup Conference, while Bernd headed off to Linux Tag in Berlin.
Christian continued, with a webinar on Puppet and Foreman as Dirk set up restricted user accounts in LConf using ACL.
Finally, Thilo made spread sheet magic with the help of the Ruby Gem, Roo and Marius compared Chromecast, Apple TV and Roku Stick.

Wie kann ich einen Teil meiner Arbeit loswerden? – Oder: LConf und ACL

Da ich persönlich eher zu den faulen Menschen gehöre und sich bestimmt jeder Admin auch dazu zählen kann, will ich in diesem Blogpost darauf eingehen wie man zumindest die Aufgabe Monitoring ein wenig auf fleißige Kollegen oder auch Azubis und Praktikanten verschieben kann. Natürlich möchte man sich im Nachhinein nicht mehr Arbeit gemacht haben, indem man Fehlersuche betreiben muss, daher ist mein Ansatz: graphische Administration und eingeschränkte Berechtigungen.
Unser Werkzeug für graphische Administration LConf dürfte mittlerweile wohl bekannt sein. Wem dieses gar nichts sagt kann sich ja mal das Webinar anschauen. Kurz zusammengefasst verwendet LConf ein LDAP-Backend, bietet Vererbung und Templates sowie ein hübsches Frontend.
Gebe ich nun dem Azubi eine kurze Einweisung und volle administrative Rechte, sehe ich mich schon statt beim Feierabend-Bier beim Restore und anschließendem “Hätte ich’s bloß gleich selbst gemacht” und “Wenn etwas richtig gemacht werden soll, muss man es selber machen”. Und damit sich niemand diskriminiert fühlt, gilt das gleiche natürlich für alle anderen Kollegen wie Windows- oder Netzwerk-Admins. 😉
Diese Grundhaltung höre ich doch des öfteren bei Kunden und Schulungsteilnehmern, daher müssen also eingeschränkte Rechte her und dies ermöglicht LDAP zum Glück leicht mittels ACL. Voraussetzung hierfür ist ein Benutzer oder eine Gruppe innerhalb des LDAP. Da der LConf-Connection-Manager mir erlaubt eine Verbindung zu erstellen und dann einer Gruppe Zugriff auf diese zu erlauben, reicht mir ein Benutzer.
Diesen lege ich mir folgendermaßen an:

  1. Passwort-Hash generieren:
    # slappasswd
    New password: awesome
    Re-enter new password: awesome
    {SSHA}ZOmXcrADeKGkthMlJ3PZwKbyM8bnbP5t
  2. Datei user.ldif für den Import bauen:
    dn: cn=myuser,ou=users,dc=icinga,dc=lab
    objectClass: organizationalPerson
    cn: myuser
    sn: User
    description: My User
    userPassword: {SSHA}ZOmXcrADeKGkthMlJ3PZwKbyM8bnbP5t
  3. Benutzer mit administrativem Account einspielen:
    ldapadd -x -h localhost -D cn=admin,dc=icinga,dc=lab -W -f user.ldif

Nun muss ich mir überlegen wie meine Grundstruktur aussieht und worauf ich meinen Benutzer berechtigen will. Mein Ansatz ist hierbei dem Kollegen auf einen Teilbaum gemäß seiner Zuständigkeit schreibend zu berechtigen und Templates sowie grundlegende Objekte lesend zur Verfügung zu stellen. Hierfür müssen die Standard-Zugriffsregeln teilweise gelöscht werden bevor die neuen gesetzt werden, da diese in der gespeicherten Reihenfolge abgearbeitet werden.
Die Vorgehensweise ist hierbei:

  1. Datei access.xml für Import bauen:
    changetype: modify
    dn: olcDatabase={1}hdb,cn=config
    delete: olcAccess
    olcAccess: to dn.base="" by * read
    -
    delete: olcAccess
    olcAccess: to * by self write by dn="cn=admin,dc=icinga,dc=lab" write by * read
    -
    add: olcAccess
    olcAccess: to dn.base="dc=icinga,dc=lab" by users read
    -
    add: olcAccess
    olcAccess: to dn.base="ou=LConf,dc=icinga,dc=lab" by users read
    -
    add: olcAccess
    olcAccess: to dn.base="ou=IcingaConfig,ou=LConf,dc=icinga,dc=lab" by users read
    -
    add: olcAccess
    olcAccess: to dn.subtree="ou=global,ou=IcingaConfig,ou=LConf,dc=icinga,dc=lab" by users read
    -
    add: olcAccess
    olcAccess: to dn.subtree="ou=Templates,ou=LConf,dc=icinga,dc=lab" by users read
    -
    add: olcAccess
    olcAccess: to dn.subtree="ou=myconfig,ou=IcingaConfig,ou=LConf,dc=icinga,dc=lab" by dn="cn=myuser,ou=users,dc=icinga,dc=lab" write
    -
    add: olcAccess
    olcAccess: to * by self write by dn="cn=admin,dc=icinga,dc=lab" write
  2. Importieren unter Nutzung der ldapi-Schnittstelle:
    ldapmodify -Y EXTERNAL -H ldapi:/// -f access.ldif

Nun noch in dem Wissen, dass die Kollegen nicht so leicht was kaputt machen können, die Verbindung im LConf-Frontend angelegt, die Kollegen berechtigt und eine Einweisung im Wiki hinterlegt. Danach heißt es dann heim zum Feierabend-Bier während die fleißigen Kollegen mit den neuen Rechten Hosts und Services ins Monitoring aufnehmen! 😉
In diesem Sinne viel Erfolg beim Verteilen der Arbeit und natürlich Prost!

Dirk Götz
Dirk Götz
Senior Consultant

Dirk ist Red Hat Spezialist und arbeitet bei NETWAYS im Bereich Consulting für Icinga, Puppet, Ansible, Foreman und andere Systems-Management-Lösungen. Früher war er bei einem Träger der gesetzlichen Rentenversicherung als Senior Administrator beschäftigt und auch für die Ausbildung der Azubis verantwortlich wie nun bei NETWAYS.

LConf 1.4.1 released

This release only contains plenty of bug fixes, most of them address problems with the Icinga 2 export introduced in LConf 1.4.0. Furthermore this release adopts the introduced change with host/service dependency configuration from Icinga 2 0.0.8 release on tuesday.
Thanks for the patches to Alexander Leisentritt and Thomas Gebhardt. Special thanks to Jörg Monpetain (VHV) for hunting the bugs with LConf 1.4.0 and Icinga 2 and testing all the provided fixes!
Download the tarball.
Changelog

  • Icinga 2: Changed host/service dependency export for Icinga 2 0.0.8 export #2374 #2503
  • Icinga 2: Fix checkcommand vs servicecheckcommand #2392
  • Icinga 2: Fix missing host event_command attribute #2394
  • Icinga 2: Fix custom macro export #2400 #2416 #2418 #2455
  • Icinga 2: Fix regexp for {host,service}groups (Thomas Gebhardt) #2443
  • Icinga 2: Fix missing host checks #2402
  • Icinga 2: Sanitize trailing whitespaces on timeperiod keys #2406
  • Icinga 2: Fix CV prefix for _HOST/_SERVICE macros #2414
  • Icinga 2: Fix parents not exported as host dependencies #2441
  • Icinga 2: Fix reload command in LConfDeployIcinga2.sh #2384
  • Fix host dependency export (Alexander Leisentritt) #2370
  • Fix link to a service adds all other services on the same level #2453
  • Fix spec file #2382 #2386
Michael Friedrich
Michael Friedrich
Senior Developer

Michael ist seit vielen Jahren Icinga-Entwickler und hat sich Ende 2012 in das Abenteuer NETWAYS gewagt. Ein Umzug von Wien nach Nürnberg mit der Vorliebe, österreichische Köstlichkeiten zu importieren - so mancher Kollege verzweifelt an den süchtig machenden Dragee-Keksi und der Linzer Torte. Oder schlicht am österreichischen Dialekt der gerne mit Thomas im Büro intensiviert wird ("Jo eh."). Wenn sich Michael mal nicht in der Community helfend meldet, arbeitet er am nächsten LEGO-Projekt oder geniesst...

LConf 1.4 supporting Icinga 2

There have been many questions targetting Icinga 2 and a configuration gui such as LConf. As promised to users and customers during OSMC 2013, LConf ships the first step towards a succesful migration from Icinga 1.x to Icinga 2: The LConf Backend supports exporting the LDAP configuration tree in native Icinga 2 configuration syntax.
The frontends (LConf Standalone Web, LConf for Icinga Web) remain untouched and will support your daily work. If configured, the LConf Export backend will automagically convert the required changes (new notification objects between services and users, check command macros or the newly introduced optional host check, etc. ). An additional deployment script has also been added, even though distributed monitoring using the new Icinga 2 cluster stack should be considered during migration 😉

# mkdir /etc/icinga2/conf.d/lconf
# sudo -u icinga /usr/local/LConf/bin/LConfExport.pl -o /etc/icinga2/conf.d/lconf --format 2
# service icinga2 restart

Besides that, the 1.4.0 release ships community contributed patches such as a configurable ldap port (thanks Lukas Matecki), additional debug output and plenty of bug fixes. Check the Changelog in the documentation. Download LConf 1.4.0 now (or give the package repository a shot) and let us know what you think 🙂
During upgrade, make sure to update your config.pm (especially for Icinga 2 export). Please report bugs and features requests to the LConf Backend bug tracker.

Michael Friedrich
Michael Friedrich
Senior Developer

Michael ist seit vielen Jahren Icinga-Entwickler und hat sich Ende 2012 in das Abenteuer NETWAYS gewagt. Ein Umzug von Wien nach Nürnberg mit der Vorliebe, österreichische Köstlichkeiten zu importieren - so mancher Kollege verzweifelt an den süchtig machenden Dragee-Keksi und der Linzer Torte. Oder schlicht am österreichischen Dialekt der gerne mit Thomas im Büro intensiviert wird ("Jo eh."). Wenn sich Michael mal nicht in der Community helfend meldet, arbeitet er am nächsten LEGO-Projekt oder geniesst...