Graphite-API für Grafana und Icinga Web 2

Ziel dieses Posts ist es, am Ende die Metriken über die Graphite-API als Backend für Grafana und das Icinga-Web-2-Module graphite betreiben zu können.

Grafana übernimmt hierbei optional die Visualisierung über eigene Dashboards, was ansonsten Graphite-Web leistet. Für Icinga Web 2 ist Grafana nur erforderlich, falls nicht das Module graphite zum Einsatz kommen soll, sondern stattdessen grafana zur Darstellung im Icinga Web 2 verwendet werden sollte.

Die Graphite-API ist in Python implementiert und soll hierbei via HTTPS angesprochen werden. Zusätzlich ist der Zugriff via Basis-Authentifizierung zu beschränken. Dies alles überlassen wir dem Apache, auch die API lassen wir mittels WSGI im Apache laufen.

Der Vorteil gegenüber dem Graphite-Web liegt darin, die ganzen Django-Bibliotheken nicht zu benötigen und auch kein DB-Backend a la SQLite, MySQL oder PostgreSQL. Nachteil ist, das Projekt Graphite-API wird nicht vom Graphite-Team betrieben, somit ist die Pflege und Aktualität nicht sichergestellt.
(more…)

Lennart Betz
Lennart Betz
Senior Consultant

Der diplomierte Mathematiker arbeitet bei NETWAYS im Bereich Consulting und bereichert seine Kunden mit seinem Wissen zu Icinga, Nagios und anderen Open Source Administrationstools. Im Büro erleuchtet Lennart seine Kollegen mit fundierten geschichtlichen Vorträgen die seinesgleichen suchen.
Ansible + Icinga 2 = #monitoringlove

Ansible + Icinga 2 = #monitoringlove

Nein, ich bin nicht auf den Hype als solchen mit aufgesprungen. Es ist nur so… Ansible ist extrem nützlich. Und genau das werde ich anhand eines konkreten Beispiels aufzeigen: Ein Icinga 2 Cluster, vollständig aufgesetzt mit Ansible.

Vorkenntnisse

Wer noch nicht weiß, was zum Geier ein Icinga 2 Cluster und/oder Ansible ist, sollte sich vor dem Weiterlesen entsprechend einarbeiten, am besten im Rahmen einer entsprechenden Schulung in unserem Hause:

Alternativ ginge auch das wesentlich mühseligere Selbststudium:

Umgebung

So ein bisschen sensationell soll der Cluster schon sein, aber mit zunehmenden VMs wird es auch zunehmend eng auf meinem Arbeitsgerät. Wie praktisch, dass wir bei NWS einen OpenStack haben, dem ich mal schnell mit Terraform 14 VMs reindrücken kann (2 Master, 2 Satelliten und 10 Agents):

resource "openstack_compute_instance_v2" "aklimov-icinga2" {
	count = 14
	name = "aklimov-icinga2-${count.index}"
	image_name = "Centos 7"
	flavor_name = "s1.small"
	network { name = "${var.tenant_network}" }
	security_groups = [ "default", "Icinga" ]
	key_pair = "${var.openstack_keypair}"
}

Mit einem kleinen Skript in der Sprache meiner Wahl erstelle ich mir anhand der Terraform-Daten mehr oder weniger automatisch ein Ansible-Inventory (inventory.txt):

aklimov-icinga2-5 ansible_host=10.77.27.54 ansible_user=centos
aklimov-icinga2-4 ansible_host=10.77.27.45 ansible_user=centos
aklimov-icinga2-7 ansible_host=10.77.27.51 ansible_user=centos
aklimov-icinga2-9 ansible_host=10.77.27.40 ansible_user=centos
aklimov-icinga2-12 ansible_host=10.77.27.28 ansible_user=centos
aklimov-icinga2-13 ansible_host=10.77.27.18 ansible_user=centos
aklimov-icinga2-10 ansible_host=10.77.27.12 ansible_user=centos
aklimov-icinga2-1 ansible_host=10.77.27.34 ansible_user=centos
aklimov-icinga2-6 ansible_host=10.77.27.20 ansible_user=centos
aklimov-icinga2-3 ansible_host=10.77.27.49 ansible_user=centos
aklimov-icinga2-11 ansible_host=10.77.27.19 ansible_user=centos
aklimov-icinga2-0 ansible_host=10.77.27.21 ansible_user=centos
aklimov-icinga2-2 ansible_host=10.77.27.46 ansible_user=centos
aklimov-icinga2-8 ansible_host=10.77.27.50 ansible_user=centos

Auf die Plätze, fertig, Ansible!

Zunächst verifiziere ich die Funktionalität der VMs und sammle nebenbei deren öffentliche SSH-Schlüssel ein:

ansible all -i inventory.txt -m ping \
--ssh-common-args='-o StrictHostKeyChecking=no'

Ist das getan, geht es auch schon los mit dem Ansible-Playbook (playbook.yml):

---
- name: Icinga 2
  hosts: all
  become: yes
  become_method: sudo
  tasks:
  - name: EPEL repo
    yum:
      name: epel-release
  - name: Icinga repo key
    rpm_key:
      key: https://packages.icinga.com/icinga.key
  - name: Icinga repo
    yum:
      name: https://packages.icinga.com/epel/icinga-rpm-release-7-latest.noarch.rpm
  - name: Icinga 2 package
    yum:
      name: icinga2
  - name: Monitoring plugins
    yum:
      name: nagios-plugins-all
  - name: Icinga 2 service
    service:
      name: icinga2
      state: started
      enabled: yes
# (...)

Ein paar Repositories, ein paar Pakete – und Icinga ist auch schon einsatzbereit. Fehlt nur noch der eigentliche Cluster:

---
- name: Icinga 2
# (...)
- name: Icinga PKI master
  hosts: aklimov-icinga2-0
  become: yes
  become_method: sudo
  tasks:
  - name: Icinga 2 cluster setup
    shell: >
      icinga2 node setup
      --zone master
      --listen 0.0.0.0,5665
      --cn {{ inventory_hostname }}
      --master
      --disable-confd;
      rm -f /var/cache/icinga2/icinga2.vars
    args:
      creates: /var/lib/icinga2/certs/ca.crt
    notify: Restart Icinga 2
  - name: /var/cache/icinga2/icinga2.vars
    shell: icinga2 daemon -C
    args:
      creates: /var/cache/icinga2/icinga2.vars
  - name: Icinga 2 PKI ticket
    with_inventory_hostnames:
    - 'all:!{{ inventory_hostname }}'
    shell: >
      icinga2 pki ticket --cn {{ item }}
      >/var/cache/icinga2/{{ item }}.ticket
    args:
      creates: '/var/cache/icinga2/{{ item }}.ticket'
  - name: Fetch Icinga 2 PKI ticket
    with_inventory_hostnames:
    - 'all:!{{ inventory_hostname }}'
    fetch:
      dest: .tempfiles
      src: '/var/cache/icinga2/{{ item }}.ticket'
  - name: Fetch Icinga 2 master cert
    fetch:
      dest: .tempfiles
      src: '/var/lib/icinga2/certs/{{ inventory_hostname }}.crt'
  handlers:
  - name: Restart Icinga 2
    service:
      name: icinga2
      state: restarted
# (...)

Zuerst wird der Knoten eingerichtet, der allen anderen Tickets und später SSL/TLS Zertifikate ausstellt. Dann werden auch schon die Tickets ausgestellt, nachdem /var/cache/icinga2/icinga2.vars dafür neu erstellt wurde. Diese Tickets und das Zertifikat des Knotens werden danach in das Verzeichnis .tempfiles heruntergeladen. Die anderen Knoten brauchen diese Dateien, um sich automatisch an den Cluster anzuschließen:

---
- name: Icinga 2
# (...)
- name: Icinga PKI master
# (...)
- name: Icinga cluster nodes
  hosts: 'all:!aklimov-icinga2-0'
  become: yes
  become_method: sudo
  tasks:
  - name: Icinga master cert
    copy:
      dest: /var/cache/icinga2/trusted.crt
      owner: icinga
      group: icinga
      mode: '0644'
      src: .tempfiles/aklimov-icinga2-0/var/lib/icinga2/certs/aklimov-icinga2-0.crt
  - name: Icinga PKI ticket
    copy:
      dest: /var/cache/icinga2/my.ticket
      owner: icinga
      group: icinga
      mode: '0600'
      src: '.tempfiles/aklimov-icinga2-0/var/cache/icinga2/{{ inventory_hostname }}.ticket'
  - name: Icinga 2 cluster setup
    shell: >
      icinga2 node setup
      --zone {{ inventory_hostname }}
      --endpoint aklimov-icinga2-0,{{ hostvars['aklimov-icinga2-0'].ansible_all_ipv4_addresses[0] }},5665
      --parent_host {{ hostvars['aklimov-icinga2-0'].ansible_all_ipv4_addresses[0] }},5665
      --parent_zone master
      --listen 0.0.0.0,5665
      --ticket `cat /var/cache/icinga2/my.ticket`
      --trustedcert /var/cache/icinga2/trusted.crt
      --cn {{ inventory_hostname }}
      --accept-config
      --accept-commands
      --disable-confd
    args:
      creates: /var/lib/icinga2/certs/ca.crt
    notify: Restart Icinga 2
  handlers:
  - name: Restart Icinga 2
    service:
      name: icinga2
      state: restarted

Und ab dafür:

ansible-playbook -i inventory.txt playbook.yml

Voilà!

(...)

PLAY RECAP *******************************************************************************************************
aklimov-icinga2-0          : ok=14   changed=12   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
aklimov-icinga2-1          : ok=12   changed=10   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
aklimov-icinga2-10         : ok=12   changed=10   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
aklimov-icinga2-11         : ok=12   changed=10   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
aklimov-icinga2-12         : ok=12   changed=10   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
aklimov-icinga2-13         : ok=12   changed=10   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
aklimov-icinga2-2          : ok=12   changed=10   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
aklimov-icinga2-3          : ok=12   changed=10   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
aklimov-icinga2-4          : ok=12   changed=10   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
aklimov-icinga2-5          : ok=12   changed=10   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
aklimov-icinga2-6          : ok=12   changed=10   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
aklimov-icinga2-7          : ok=12   changed=10   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
aklimov-icinga2-8          : ok=12   changed=10   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
aklimov-icinga2-9          : ok=12   changed=10   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Jetzt fehlt nur noch die Icinga-Konfiguration. Aber diese überlasse ich keinem geringeren als dem Icinga Director.

Fazit

Was man nicht alles von A bis Z automatisieren kann!

Viel Spaß beim Nachmachen in der NWS Cloud!

Alexander Klimov
Alexander Klimov
Developer

Alexander hat 2017 seine Ausbildung zum Developer bei NETWAYS erfolgreich abgeschlossen. Als leidenschaftlicher Programmierer und begeisterter Anhänger der Idee freier Software, hat er sich dabei innerhalb kürzester Zeit in die Herzen seiner Kollegen im Development geschlichen. Wäre nicht ausgerechnet Gandhi sein Vorbild, würde er von dort aus daran arbeiten, seinen geheimen Plan, erst die Abteilung und dann die Weltherrschaft an sich zu reißen, zu realisieren - tut er aber nicht. Stattdessen beschreitet er mit der...

Monthly Snap July 2019

Summer has come to Nuremberg, and as July is typically the hottest month of the year, the NETWAYS gang is really happy to be in our new office with air conditioning! And our annual barbecue also always takes place in July, and now our office is much closer to the rooftop! All in all, a good month.

Lots of news from our Shop

Nicole kicked July off with her blog Produktankündigung: GUDE Expert Power Control 8031-Serie in which she presented upcoming products soon available in the NETWAYS shop.
She also informed us of a new software version for SMSEagle. SMSEagle veröffentlicht neue Geräte-Software
No idle time for Nicole, she had more news for us: now a simple SMS suffices to configure Ares remotely. HW group Ares – Konfiguration per SMS
Special offer on our NETWAYS monitor! Nicole let us know how to easily monitor temperature and humidity: NETWAYS Monitor Spezial-Angebot
Rekordtemperaturen – nicht im Rechenzentrum! How to keep the summer heat from your data centers? Nicole showed us various ways of monitoring them. Now the air conditioning must do the rest.

(Mental) health

See the world from Bernd`s point of view in his blog series Bernd hilft. This time: Bernd hilft – Das passt ja wie die Faust aufs Auge!
Breaks and holidays are important for the work- life- balance, as Blerim explained in Mach mal Pause! – „Just fit – Just awesome“, the newest addition to our health-related blog series.
Speaking of healthy! NETWAYS was well represented at this year`s Business to run! Andreas gave us some inside information on this 6,3k run on a very hot summer day. NETWAYS Running Squad beim B2Run

How to develop new developers?

Michael told his story about passing on knowledge. DEV stories: Icinga Core trainees in the making
Cleanup your Docker Environment Marius gave helpful tips for anyone using, and possibly having problems with, Docker

Upcoming events

What do the German Open Stack days have to offer? Das bieten die Deutschen OpenStack Tage Julia gave us an overview on the Event taking place in September.
Keya remembers, do you too? OSMC | Take a glance back… Make sure to get your ticket for this year`s OSMC, as usual it will take place in November in beautiful Nuremberg!

NETWAYS on tour!

Stefan humorously recapped the team Event of Sales, Finance & Administration and Events & Marketing in Fahrt ins Blaue – das Teamevent 2019. Enjoy the read!
At the same time the Dev retreat 2019 took place! Diana shared the highlights with us.

Well, technically…

Elastic Stack viel neues, aber sicher! Daniel took a look at the new Elastic Stack releases.
If it is Foreman-related, ask Dirk! This time he shared his knowledge on automation with Foreman: Automatisierte Updates mit Foreman Distributed Lock Manager
How to create self- sign certificates for internal uses? And what exactly is a certificate? Lennart helped us out in Selbstsignierte Zertifikate oder semantische Korinthen in der IT

Johannes taught us how to get RaspberryPI notifications on the Telegram app Temperatur und Feuchtigkeit in Telegram vom RaspberryPI
And Tim? He showed his sense of humour in his detailed guide to migrating a server. Lessons learned – how not to make beginner’s mistakes: Migrating server
How do we delete server safely? Tobias shared his experience on the NETWAYS way: Server löschen mit Darik´s Boot and Nuke

 

Catharina Celikel
Catharina Celikel
Office Manager

Catharina unterstützt seit März 2016 unsere Abteilung Finance & Administration. Die gebürtige Norwegerin ist Fremdsprachenkorrespondentin für Englisch. Als Office Manager kümmert sie sich deshalb nicht nur um das Tagesgeschäft sondern übernimmt nebenbei zusätzlich einen Großteil der Übersetzungen. Privat ist der bekennende Bücherwurm am liebsten mit dem Fahrrad unterwegs.

Azubiprojektwoche 2019

Wie jedes Jahr findet bei NETWAYS eine Azubiprojektwoche statt. In dieser sollen alle Azubis abteilungsübergreifend ein Projekt umsetzen. Dieses Jahr waren wir zu neunt und wenn man der Resonanz der Kollegen glauben schenken darf, dann war das Projekt ein voller Erfolg.

Alles begann am Morgen mit einem Brainwriting bei dem auch ordentlich Ideen gesammelt worden sind. Wer weiß, vielleicht gibt es die ein oder andere in den nächsten Jahren ja noch zu sehen.


Die Entscheidung fiel dann auf ein Projekt das sich um einen 3D-Drucker herum entwickeln soll. Ziel der Projektwoche ist immerhin, sowohl Spaß zu haben, als auch mal etwas Anderes zu machen als man sonst machen würde. Dazu kommt noch, dass man bestenfalls etwas kreiert was für NETWAYS einen Nutzen hat und nicht nur das uns gegebene Budget restlos aufbraucht. Bestimmt wird eines Tages mit dem 3D-Drucker ein Ersatzteil für unsere Kaffee-Maschine gedruckt und bis dahin könnten damit Goodies für unsere Schulungen oder ähnliches gedruckt werden. Vorwand – Check

Damit war auch schonmal ein Aufgabenbereich geschaffen, ein Team das sich mit dem Drucker auseinandersetzt, der dazugehörigen Software und bestenfalls auch selbst einige Dinge modelliert. (Wir haben dazu Blender genutzt)

Natürlich wäre Hallo wir haben einen 3D-Drucker gekauft und uns zu neunt damit beschäftigt ein etwas einfacher Weg sich aus der Affäre zu ziehen, deswegen gab es gleichzeitig noch einen Teil mit persönlicheren Beweggründen für alle Nerds und die es werden wollen.

Ein Gaming-Table, also ein Tisch der für mitunter für Tabletop-Games genutzt werden kann, aber natürlich war auch hier der Zukunftsgedanke gegeben.
Das ein odere andere Meeting-Thema mag sich anbieten an solch einen Tisch zu führen. Außerdem ist es sehr angenehm, dass sich nicht ein jeder zu einer Leinwand oder einem Fernseher wenden muss und nicht in den leeren Raum gesprochen wird.

Dadurch wurde natürlich ein zweites Squad geboren, weil der Fernseher lässt sich nicht von alleine in die MDF-Platte, die Tischbeine schrauben sich nicht von Selbst an, die Stichsäge schneidet nicht von alleine und der Überzug kommt auch nicht von irgendwo.

Wir haben uns in jeden Fall nicht zu wenig vorgenommen für fünf Tage und das ganze hat auch nur so gut funktioniert, weil jeder an einem Strang gezogen hat und man sich gegenseitig geholfen hat. Unsere Arbeitsstruktur hat sichergestellt das jeder über den Stand des jeweils anderen Bescheid wusste und entsprechend helfen konnte wenn eine Gruppen hinter den Zeitplan fällt. Am letzten Tag, dann noch ein paar Mal gemeinsam Proben, damit die Triple-Moderation nicht in die Hose geht, kurz bevor die Präsentation ansteht und natürlich ging alles gut.

Ein paar von uns werden bis zum nächsten Azubiprojekt keine Azubis mehr sein, sondern ausgelernt, während Andere versuchen werden das diesjährige Projekt zu toppen. Wir freuen uns drauf.

Alexander Stoll
Alexander Stoll
Junior Consultant

Alexander ist ein Organisationstalent und außerdem seit Kurzem Azubi im Professional Services. Wenn er nicht bei NETWAYS ist, sieht sein Tagesablauf so aus: Montag, Dienstag, Mittwoch Sport - Donnerstag Pen and Paper und ein Wochenende ohne Pläne. Den Sportteil lässt er gern auch mal ausfallen.

Kleine Sensorkunde

Jeder Hersteller im Bereich Messtechnik baut eigentlich seine eigenen Sensoren und veröffentlicht auch seine eigenen Spezifikationen. Hier ist es interessant, evtl. mal einen Blick auf die verschiedenen Parameter zu werfen, die einen Sensor ausmachen. Besonders in den Bereichen Temperatur- und Luftfeuchtigkeitsmessung gibt es für den Anwender einiges zu beachten.

Welche Stecker / Verbinder werden genutzt?
  • RJ11/RJ12/RJ45-Stecker werden häufig genutzt, um einen Sensor mit einer bestimmten Kabellänge an ein Messgerät anzuschließen
  • RJ11/RJ12/RJ45-Buchse werden häufig genutzt, um Sensoren mit variablen Kabellängen auszustatten oder diese als Daisy Chain zu verbinden. Auch sind diese Buchsen als Hub zu finden, so dass mehrere Sensoren an ein Messgerät gekoppelt werden können.
  • (Industrie-)Klemmen sind häufig bei pt100 oder pt1000 Sensoren zu finden. Dabei werden die Drähte direkt in Kontaktklemmen am Messgerät gesteckt.

 

Wie werden Sensoren spezifiziert?
  • Der Messbereich eines Sensors gibt an, in welchem Wertebereich dieser eingesetzt werden kann. Meist entpricht der Messbreich den Bereichen der Betriebsbedingungen.
  • Die Messgenauigkeit beschreibt, für welche Wertebereiche welche Messabweichungen erlaubt sind, beispielsweise beim HTemp-1Wire 3m von HW group:
    • ±0,8 °C bei +0 bis +60 °C
    • ±1,0 °C bei -10 bis +70 °C
    • ±2,0 °C bei -30 bis +80 °C
  • Die Betriebsbedingungen beschreiben, in welcher Umgebung ein Sensor eingesetzt werden kann. Beim Temperatur-/Luftfeuchte-Sensor 7105 von GUDE ist dies beispielsweise bei einer Temperatur zwischen -20 und +80 °C sowie einer Luftfeuchte von 0-95% (nicht kondensierend).
  • Auch werden die Messschritte bei Sensoren angegeben, z. B. ob es sich dabei um Grad-, Zehntelgrad- oder Hundertselgrad-Schritte handelt.
  • Viele Sensoren werden auch als wasserdicht angegeben. Dabei handelt es sich meistens um einen IP67-Standard, der aber nicht das Eintauchen in Wasser erlaubt. Hier ist auch zu beachten, ob der Sensor für den Outdoor-Gebrauch zugelassen ist.
  • Nicht alle Sensoren sind geeicht. Allerdings bieten viele Hersteller auch die Möglichkeit, Sensoren mit einem Eichungszertifikat zu liefern.
  • Viele Sensoren arbeiten mit einem 1-Wire-Bus. 1-Wire bezeichnet dabei die Anzahl der Drähte, die der Signalübertragung dienen. Bei einem 1-Wire arbeitet die Verbindung seriell und bidirektional über einen Draht.

 

Welche Sensor-Typen gibt es?

 

Sollten Sie unsicher sein, welcher Sensor für Sie geeignet oder kompatibel mit Ihren Geräten ist, dann sprechen Sie uns einfach an: per Mail an shop@netways.de oder per Telefon unter der Nummer 0911 92885-0. Auch wenn hier noch keine Lösung für Sie dabei sein sollte – wir untersützen Sie gerne dabei, das für Sie passende Produkt zu finden.

Quelle Bild: https://pixabay.com/de/photos/uhrzeit-uhr-luftfeuchtigkeit-luft-2353382/

Nicole Frosch
Nicole Frosch
Sales Engineer

Ihr Interesse für die IT kam bei Nicole in ihrer Zeit als Übersetzerin mit dem Fachgebiet Technik. Seit 2010 sammelt sie bereits Erfahrungen im Support und der Administration von Storagesystemen beim ZDF in Mainz. Ab September 2016 startete Sie Ihre Ausbildung zur Fachinformatikerin für Systemintegration bei NETWAYS, wo sie vor allem das Arbeiten mit Linux und freier Software reizt. In ihrer Freizeit überschüttet Sie Ihren Hund mit Liebe, kocht viel Gesundes, werkelt im Garten, liest...