Diving into Elastic Stack 5.0.0-beta1 and Elastic Beats

logo2_elastic_150x75I’m always trying to look into new devops tools and how they fit best with Icinga 2 as a monitoring solution. Often demanded is an integration with Elastic Stack and Elastic Beats with Icinga 2. Gathering metrics and events, correlated to additional input sources analysing a greater outage and much more.

Last week the first 5.0.0 beta1 release hit my channels and I thought I’d give it a try. The installation is pretty straight forward using packages. Note: This is my first time installing Elastic Stack, still have little knowledge from colleague hero stories and the OSDC talk by Monica Sarbu and earlier conferences.

(more…)

Michael Friedrich

Autor: Michael Friedrich

Michael ist seit vielen Jahren Icinga Developer 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. Oder schlicht am österreichischen Dialekt der gerne mit Thomas im Büro intensiviert wird ("Jo eh."). Wenn sich Michael mal nicht im Monitoring-Portal helfend meldet, arbeitet er am nächsten LEGO-Projekt oder geniesst das schöne Nürnberg. Oder - at an Icinga Camp near you 😉

Sharing Git patches in a different way

training_gitSometimes it is necessary to share git patches locally. Either you cannot push it to the public domain in a feature or master branch or you simply don’t have an internet connection – for example while working in a customer VPN reproducing issues locally.

You could hope for XMPP sending patch files or any other local transport. But if you don’t want to add, commit, format-patch and send a patch file you’ll obviously go for plain text copy paste of a ‘git diff’ output. Editors and messengers tend to destroy the tab indent. Now what?

base64 encoding to the rescue.

michi@mbmif ~/coding/icinga/icinga2 (master) $ git diff | base64

Send the blob to your colleague who can easily apply it. Example on MacOS:

michi@mbmif ~/coding/icinga/icinga2 (master) $ base64 -D | patch -p1

Or if written to a temporary file:

michi@mbmif ~/coding/icinga/icinga2 (master) $ base64 -D < patchfile | patch -p1

More about working with Git and applying patches can be learned in our Git training sessions. There’s also a Git workshop during this years OSMC 🙂

Michael Friedrich

Autor: Michael Friedrich

Michael ist seit vielen Jahren Icinga Developer 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. Oder schlicht am österreichischen Dialekt der gerne mit Thomas im Büro intensiviert wird ("Jo eh."). Wenn sich Michael mal nicht im Monitoring-Portal helfend meldet, arbeitet er am nächsten LEGO-Projekt oder geniesst das schöne Nürnberg. Oder - at an Icinga Camp near you 😉

Neuerungen in RT 4.4

Wir setzen seit vielen Jahren RT (Request Tracker) als Ticket-System bei uns ein und bieten unseren Kunden ebenso Installations-Support sowie Kontingente für die Entwicklung von eigenen Plugins. Da die Pflege von RT und Upgrades immer gut getestet sein wollen, hat Marius gemeinsam mit NMS eine Docker-Infrastruktur etabliert, die sowohl Produktions- als auch Development-Umgebungen gleichermassen bedient. Seit einiger Zeit unterstütze ich nun Marius hierbei und unser aktuelles Projekt war das Upgrade auf die neueste RT-Version 4.4.

Nachdem wir letzte Woche die Quellen von RT in einem Feature-Branch aktualisiert hatten, ging es sogleich ans Testen von unseren Anpassungen und Plugins. Gott sei Dank mussten nur einige kleinere Änderungen durchgeführt werden, sowie einige Plugins endlich in den Core gewandert sind (RT::Authen::ExternalAuth, Assets, SLA). Dank der erfolgreichen Tests kam dann auch die Produktionsumgebung heut früh um 6 mit dem Update dran.

Im folgenden einige der Highlights von RT 4.4.

 

File Upload

Endlich per Drag-and-Drop ohne Page-Reload Dateien uploaden – wer hat sich das noch nicht sehnsüchtig gewünscht? 🙂

rt_file_upload

 

Timer für Tickets

Man steht immer mal wieder vor dem Problem, dass man sich frägt – wie lange habe ich denn nun an diesem Ticket gearbeitet? RT 4.4 bietet nunmehr die Möglichkeit via Popup die Zeit zu stoppen. Damit ist die Zeiterfassung gesichert 😉

rt_ticket_timer

 

Folge-Ticket mit Referenz auf bestehendes Ticket anlegen

Es kommt immer mal wieder vor, dass man eine Folge-Ticket anlegen möchte – etwa ein zusätzliches Development-TODO bei einem Problem in der Support-Queue. Früher musste man dazu ein neues Ticket anlegen, und dann manuell die Links aktualisieren. Jetzt klappt das direkt aus dem Ticket-Display heraus.

rt_ticket_links_create_refers_to

 

Keyboard Shortcuts

Mal eben schnell ins Suchfeld springen? Kein Problem. “?” listet alle verfügbaren Shortcuts auf. Ich bin mir sicher, dass es hier zukünftig noch mehr brauchbare Shortcuts geben wird. All jene die nicht mit MacOS und Trackpad “wischen” werden auch “gb” und “gf” lieben 🙂

rt_keyboard_shortcuts

 

Infinite Scroll

Bisher musste man bisweilen warten bis die komplette Seite geladen war, um auch die Ticket-History anzeigen zu können. Das war mitunter etwas hakelig. Mit RT 4.4 gibt es eine neue Option “as you scroll” in den Benutzer-Einstellungen, welche auch global in der RT_SiteConfig.pm gesetzt werden kann. Damit lädt die Ticket-Übersicht deutlich schneller.

rt_preferences_ticket_display_as_you_scroll

 

TicketSQL-Filter: __Active__ und __Inactive__

Vormals hat man die Suche etwa mit Status = ‘new’ or Status = ‘open’ or Status = ‘stalled’ gefüttert um alle aktiven Tickets anzuzeigen. In RT 4.4 sieht das wie folgt aus:

Status = '__Active__'

 

Noch nicht genug? Gerne unterstützen wir euch bei der Entwicklung von eigenen Plugins und/oder Scrips. Kommt einfach auf uns zu 🙂

 

Michael Friedrich

Autor: Michael Friedrich

Michael ist seit vielen Jahren Icinga Developer 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. Oder schlicht am österreichischen Dialekt der gerne mit Thomas im Büro intensiviert wird ("Jo eh."). Wenn sich Michael mal nicht im Monitoring-Portal helfend meldet, arbeitet er am nächsten LEGO-Projekt oder geniesst das schöne Nürnberg. Oder - at an Icinga Camp near you 😉

Manage vim with Puppet and use Icinga 2 syntax highlighting

vim is my preferred editor after all. Even I hack Icinga 2 code with vim way faster than any other interface. vim requires some configuration love of course.

Many distributions do not install vim or set it as default editor. In the Git training sessions on Debian/Ubuntu we’ll have a lab for making vim the default for example. Inside the CentOS base box used for the Icinga 2 Vagrant boxes I’ll also ensure via puppet manifest to install the vim package.

Now for the configuration bits – one keeps a local $HOME/.vimrc with own customizations. That works fine for your own workstation but what if you want to automate such setups and distribute a custom vimrc config on all your servers? You could keep just a file and sync that using Puppet manifests of course. But what about the mentioned default editor settings? And you do not want to break anything with a syntax error?

I’ve found this puppet-vim module pretty nifty and helpful. The most recent commit inside the Vagrant boxes uses it already.

class { 'vim':
  opt_bg_shading => 'light',
}

There are many other options available such as setting it as default editor on Debian. To mention some more:

  • opt_nocompatible
  • opt_bg_shading – I prefer a light background, also easier on a beamer for an Icinga Camp demo
  • opt_lastposition – jump to the last position when opening a file. I definitely want that everywhere.
  • opt_syntax – enable syntax highlighting. On older systems or Debian this is disabled by default.
  • opt_misc – sets some interesting default values for incremental search, etc.:
    [‘hlsearch’,’showcmd’,’showmatch’,’ignorecase’,’smartcase’,’incsearch’,’autowrite’,’hidden’]

In case you ask – why do you care so much about vim? I wanted to integrate the new Icinga 2 vim syntax highlighting packages into the Vagrant boxes. Just install “vim-icinga2” (currently snapshot packages, available with 2.5.0) and you’re ready to go. This is also part of our Icinga 2 training sessions helping you to understand keywords and object definitions far more easy.

  package { 'vim-icinga2':
    ensure => 'latest',
    require => [ Class['icinga_rpm'], Class['vim'] ],
    alias => 'vim-icinga2'
  }

Enjoy vim everywhere 🙂

vagrant_icinga2_vim_syntax_highlighting

 

Michael Friedrich

Autor: Michael Friedrich

Michael ist seit vielen Jahren Icinga Developer 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. Oder schlicht am österreichischen Dialekt der gerne mit Thomas im Büro intensiviert wird ("Jo eh."). Wenn sich Michael mal nicht im Monitoring-Portal helfend meldet, arbeitet er am nächsten LEGO-Projekt oder geniesst das schöne Nürnberg. Oder - at an Icinga Camp near you 😉

DEV-Trainings: Git und Jenkins

training_jenkinstraining_gitWir starten 2016 voll durch mit einem erweiterten Schulungsportfolio – neben Foreman und Ceph fokussieren wir uns im Development auf Git und Jenkins.

Die ersten Schulungen mit frisch erstellten Unterlagen fanden letzte Woche In-House bei einem unserer Kunden statt, sozusagen die “Feuertaufe” für die kommenden Schulungen.

git_introduction_basics_03_three_statesNach einer kurzen Einführung in die Geschichte von VCS und der Entstehungsgeschichte von Git haben wir anhand von praktischen Beispielen erste Schritte mit Git gemacht – wie initialisiere ich ein Repository, was bedeutet “modified”, “staged”, “committed”, was passiert bei “git add” und “git commit”? Bevor wir uns in die Tiefe mit Remote Repositories gestürzt haben, kam auch noch das Arbeiten mit Branches und unterschiedlicher Commit-Historie und – natürlich absichtlich provozierten – Fehlern beim Merge und Rebase dran.

Um das Gelernte auch in der Praxis weiterhin verwenden zu können, wurde die Arbeit mit einem lokalen Git-Server und fetch, pull, push und Branches vertieft. Das ganze kombiniert mit den unterschiedlichen Workflows (Feature-Branch, Gitflow, Forking) und praktischen Beispielen und nachgehender Analyse.

Die Brücke zur Jenkins-Schulung haben wir mit einem Git-Hook geschlagen, der für einen Git-Commit einen Jenkins-Job ansteuert.

jenkins_job_chuck_norrisNach der Installation des Jenkins-Installationspakets haben wir uns sogleich in die Konfiguration gestürzt – und natürlich in den ersten gemeinsamen Job. Ein Python-Script will gebaut werden, und später dann auch paketiert. In erster Linie haben wir uns Code Coverage und Qualität für CI und Test-Frameworks angesehen. Mit verschiedenen Build-Schritten und der Hilfe des Trainers gings dann auch gleich weiter mit der Einbindung an einen Jenkins-Agenten, der dediziert die Jenkins-Jobs ausführen sollte. Hierbei gibts einige Fallstricke zu beachten, gerade was SSH-Keys und shared Workspaces betrifft. Die Köpfe haben geraucht – aber spätestens dann als der frisch installierte Git-Hook den Jenkins-Paket-Bau angestossen hat, gabs für jeden das persönliche Erfolgserlebnis.

git_integrations_jenkins_git_hook
Neben den praktischen Beispielen haben wir uns auch Zeit genommen, gezielt Fragen zur eigenen Umgebung zu diskutieren, oder auch aus dem Nähkästchen zu plaudern. Git und Jenkins ist Teil unserer täglichen Arbeit an Icinga & Co und da gibts schon ein bissl Best Practice zu erzählen 😉

Für kurz entschlossene wissbegierige Anwender und jene die ihr Wissen auffrischen wollen – es gibt noch Plätze in unserer Git-Schulung am 28.6.2016 und Jenkins-Schulung am 30.8.2016 🙂

Und für all jene, die das Git-Fachwissen schon in sich aufgesaugt haben – wir hosten auch die eigene GitLab CE Instanz in unserer Cloud. Lust auf mehr? Kommt einfach auf uns zu!

PS: Trainings machen mir Spass – darum werd ich auch den diesjährigen Git-Workshop auf der OSMC halten 🙂

 

Michael Friedrich

Autor: Michael Friedrich

Michael ist seit vielen Jahren Icinga Developer 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. Oder schlicht am österreichischen Dialekt der gerne mit Thomas im Büro intensiviert wird ("Jo eh."). Wenn sich Michael mal nicht im Monitoring-Portal helfend meldet, arbeitet er am nächsten LEGO-Projekt oder geniesst das schöne Nürnberg. Oder - at an Icinga Camp near you 😉