Select Page

NETWAYS Blog

Die Zeit ist reif!


Viele unserer Trainer werden sich bald in den verdienten Sommerurlaub verabschieden und auch unser Schulungsprogramm pausiert in den heißen Sommermonaten. Im September starten wir dann wieder voll durch mit neuen Trainings, noch mehr Wissen und viel Raum und Zeit zum Lernen und Ausprobieren. Mit der Erfahrung aus über 300 Open Source Projekten, wissen wir genau, worauf es ankommt und freuen uns darauf, dieses Wissen mit Ihnen zu teilen. Sichern Sie sich jetzt Ihren Platz und planen Sie sich im Herbst ein wenig Abwechslung und neuen Input ein! Die Zeit ist reif!
Alle Schulungen im Überblick finden Sie hier.

Das bietet unser Schulungsprogramm im Herbst:

 

  1. Elastic Stack | 2 Tage | 12.09. – 13.09.2018

Sie erhalten eine detaillierte Einführung in die, auf Open Source basierenden Logmanagement Tools Elasticsearch, Logstash und Kibana. Darüber hinaus werden Techniken der Logübertragung, -auswertung und -analyse vermittelt.

  1. Icinga 2 Advanced | 3 Tage | 18.09. – 20.09.2018

In diesem Lehrgang für Fortgeschrittene erfahren Sie alles, was für den Betrieb von größeren und komplexeren Umgebungen notwendig ist: über das Icinga 2 Setup, distributed Monitoring und Hochverfügbarkeit, Performancegraphing und vieles mehr.

  1. GitLab | 2 Tage | 18.09. – 19.09.2018

GitLab ist mittlerweile das Tool zur verteilten Versionsverwaltung und erfreut sich immer größerer Beliebtheit, nicht nur unter Entwicklern, auch in der DevOps-Bewegung. In unserer Schulung erfahren Sie, wie Git und GitLab die tägliche Arbeit erleichtern.

  1. Advanced Puppet | 3 Tage | 25.09. – 27.09.2018

Lernen Sie den Umgang mit systemübergreifender Konfiguration mit Puppet, Module um Komponenten zu erweitern und die Qualität ihrer Module mit Tests zu verbessern. Außerdem im Programm: Module-Design und Troubleshooting.

  1. Graphite + Grafana | 2 Tage | 25.09. – 26.09.2018

Ihre Schulung für erfolgreiches Performance-Monitoring, vom Sammeln und Auswerten von Werten mit Graphite, bis zum Darstellen und Analysieren mit Grafana und weiteren Tools für den Aufbau eines individuellen, integrierbaren Stacks.

  1. Icinga 2 Fundamentals | 4 Tage | 09.10. – 12.10.2018

In diesem Training erhalten Sie Basiswissen zur Installation von Icinga 2 und Icinga Web 2 garniert mit Praxisbeispielen und Best Practices für Icinga 2 Konfiguration, Integration von Remote Clients und PNP4Nagios und weiteren nützlichen Inhalten.

  1. Fundamentals for Puppet | 3 Tage | 16.10 – 18.10.2018

Lernen Sie die grundsätzliche Funktionsweise hinter der Abstraktionsschicht von Puppet kennen, den Aufbau von Puppet-Modulen und deren Entwicklung vom lokalen Prototyp zum Deployment auf dem Puppet-Master.

  1. Ansible | 2 Tage | 23.10. – 24.10.2018

Nebst Installation und Umgang mit Ansible geht das Training auf die Konfiguration von Linux/Unix Systemen, den Umgang mit Playbooks und Rollen ein und gibt Hinweise zur Erstellung eigener Module.
9. Ansible AWX (Tower) | 1 Tag | 25.10.2018
Ansible AWX und Ansible Tower begleiten Unternehmen bei der Automatisierung. In diesem Kurs geben wir Ihnen einen umfassenden Überblick über deren Einsatzmöglichkeiten.
10. Jenkins | 1 Tag | 25.10.2018
Erfahren Sie alles über Jenkins, ein erweiterbares, webbasiertes Continuous Integration System zur Automatisierung von Integration, Tests und Paketbau.
 
Die NETWAYS Schulungen bestehen aus einer Kombination von Vortrag und praktischen Übungen. Unsere kompetenten Trainer arbeiten – wie Sie – als Praktiker tagtäglich mit den entsprechenden Open Source Anwendungen. Im Preis enthalten sind umfangreiche Schulungsunterlagen und volle Verpflegung. Notebooks und Wifi stellen wir.
Alle hier gelisteten Schulungen finden im NETWAYS Headquarter in Nürnberg statt, Deutschherrnstraße 15-19. Gerne sind wir Ihnen bei der Buchung eines Hotels behilflich. Melden Sie sich einfach bei uns.
Weitere Infos und Anmeldung unter: netways.de/schulungen

Noch mehr Inhalte für unser Graphing Training

Nachdem wir in den ersten Monaten des Jahres mit unseren Trainings etwas zurückhaltend waren, geht’s nun wieder voll los. Neben vielen anderen Schulungen, startet
in knapp zwei Wochen auch das Graphite + Grafana Training in die neue Saison. Gerade in dem Bereich gibt es allerlei Neuigkeiten und so war es für uns natürlich klar diesen Fortschritt auch in die Schulungsunterlagen einfließen zu lassen.
Zuerst stand natürlich Versionspflege an: Die Graphite Version in Folien und Trainingsumgebung wurde auf 1.1.2 angehoben, die große Änderung seit 1.1.x ist der sog. Tag Support.
Die wohl größte Aufmerksamkeit gilt aber Grafana in der neuen Version 5. Dashboards, Erscheinungsbild, Einstellungen und Themes wurden komplett überarbeitet. Außerdem können Dashboards zu Verzeichnissen zusammengefasst werden, was große Vorteile und Erleichterungen bei der Vergabe von Berechtigungen bringt. In dem Zuge besteht nun auch die Möglichkeit Benutzer in Teams zu strukturieren.

Grafana v5


Das InfluxDB-Kapitel wurde auf die aktuelle Version 1.5 angehoben. Neben InfluxDB werfen wir in der Schulung auch einen kurzen Blick auf die anderen Komponenten des TICK-Stacks bestehend aus Telegraf, Chronograf und Kapacitor.
Auch die Integrationen haben wir gehörig überarbeitet: Der eingesetzte Icinga 2 Core und Icinga Web 2 wurden jeweils auf die aktuellen Versionen angehoben. Neben dem Grafana-Modul kann nun auch das kürzlich releaste Graphite-Modul für Icinga Web 2 behandelt werden. Der Logstash-Teil ist einer Kombination aus Icingabeat und Elasticsearch gewichen, sodass eine anschauliche Übung für Annotations in Grafana Platz findet.
Zusätzliche Slides stellen mögliche Alternativen zu den Standard Carbon-Komponenten vor und erklären dessen Vor- und Nachteile. Weiterhin geben wir Performancetipps und Hinweise auf mögliche Optimierungen der Graphite-Umgebung. In diesem Zusammenhang gehen wir insbesondere auf Bottlenecks und entsprechende Admin- und Benchmarktools ein.
Um die Darstellung der Folien und v.a. der Handouts zu verbessern, setzen wir auf eine neue Showoff-Version (0.19). Dazu wurde das CSS-Layout einer kompletten Überarbeitung unterzogen. Die eingesetzten VirtualBox-Images werden nun von Grund auf mit Vagrant provisioniert, wohingegen die Installation und Konfiguration der Notebooks nach wie vor mit Foreman und Puppet stattfindet.
Der Umfang des Trainings ist mit zwei Tagen gleich geblieben. Die neuen Inhalte werden in wenigen Tagen ebenso wie die Vagrantfiles auch auf dem GitHub-Repository zur Schulung verfügbar sein. Und auch danach geben wir uns größte Mühe mit unseren Trainings so nah wie möglich am “Puls der Zeit” zu sein.

Markus Waldmüller
Markus Waldmüller
Head of Strategic Projects

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 Senior Manager Services gelandet. Seit September 2023 kümmert er sich bei der NETWAYS Gruppe um strategische Projekte. Wenn er nicht gerade die Welt bereist, ist der sportbegeisterte Neumarkter mit an Sicherheit grenzender Wahrscheinlichkeit auf dem Mountainbike oder am Baggersee zu finden.

NETWAYS' upcoming Trainings, Spring 2018

The NETWAYS trainings are proof of our love for Open Source.  And as we always want to share our knowledge, we are happy to present our spring trainings:
 

1. Fundamentals for Puppet: 3 days training | 17.04.2018 to 19.04.2018

Learn the basic functionality behind the Puppet abstraction layer, how to build Puppet modules, and how to develop them from the local prototype to deployment on the Puppet master.


2. Ansible: 2 days training | 17.04.2018 to 18.04.2018
Learn to install and use Ansible. The training will focus on the configuration of Linux / Unix systems, the use of playbooks, and roles, as well as providing instructions for creating your own modules.

3. Ansible AWX: 1-day training | 19.04.2018 and 20.04.2018
Quick overview of the capabilities of Ansible AWX and working with AWX.

 
4. Graphite + Grafana: 2 days training | 24.04.2018 to 25.04.2018
Learn everything you need for running bigger, but also complex, environments.

5. Graylog:2 days training | 24.04.2018 to 25.04.2018
Learn installation and configuration of all platform components for collecting and processing log data, as well as their scaling. The goal of the training is to provide you with the knowledge you need to start your own Graylog installation.

We prefer a limited number of participants, to achieve a goal-oriented and efficient course of our training. We also provide hands on material.
Interested? Register now, more information on Trainings at NETWAYS watch this space.
Stay Updated!

Keya Kher
Keya Kher
Marketing Specialist

Keya ist seit Oktober 2017 in unserem Marketing Team. Nach ihrer Elternzeit ist sie seit Februar 2024 wieder zurück, um sich speziell um Icinga-Themen zu kümmern. Wenn sie sich nicht kreativ auslebt, entdeckt sie andere Städte oder schmökert in einem Buch. Ihr Favorit ist “The Shiva Trilogy”.  

Systemd-Unitfiles und Multi-Instanz-Setups

Tux
Vor einer Weile hab ich bereits eine kurze Erklärung zu Systemd-Unitfiles geschrieben, diesmal will ich auf das Multi-Instanz-Feature von Systemd eingehen, da auch dieses anscheinend nicht jedem bekannt ist.
Als Beispiel soll mir diesmal Graphite bzw. genauer gesagt die Python-Implementierung carbon-cache dienen. Diese skaliert nicht automatisch, sondern erfordert, dass man weitere Instanzen des Dienstes auf anderen Ports startet. Die Konfiguration auf Seiten des carbon-cache ist hierbei recht simpel, denn es wird in einer Ini-Datei nur eine neue Sektion mit den zu überschreibenden Werten geschrieben. Der Sektions-Name gibt hierbei der Instanz den Namen vor. Das ganze sieht dann beispielsweise für Instanz b so aus.

[cache:b]
LINE_RECEIVER_PORT = 2013
UDP_RECEIVER_PORT = 2013
PICKLE_RECEIVER_PORT = 2014
LINE_RECEIVER_PORT = 7102

Mit SystemV hätte man nun das Startskript für jede Instanz kopieren und anpassen müssen, da das mitgelieferte Unitfile leider das Multi-Instanz-Feature nicht nutzt muss ich dies zwar auch einmal tun, aber immerhin nur einmal. Hierbei ist es sinnvoll den Namen zu verändern, um nicht mit dem bestehen in Konflikt zu kommen, wenn man möchte kann man es aber auch durch Verwendung des gleichen Namens “überschreiben”. Für das Multi-Instanz-Feature muss nur ein @ an das Ende des Namens. Baut man nun an entsprechenden Stellen den Platzhalter %i ist auch schon das Multi-Instanz-Setup fertig und man kann einen Dienst mit name@instanz.service starten. In meinem Beispiel wäre dies carbon-cache-instance@b.service mit folgendem Unitfile unter /etc/systemd/system/carbon-cache-instance@.service.

[Unit]
Description=Graphite Carbon Cache Instance %i
After=network.target
[Service]
Type=forking
StandardOutput=syslog
StandardError=syslog
ExecStart=/usr/bin/carbon-cache --config=/etc/carbon/carbon.conf --pidfile=/var/run/carbon-cache-%i.pid --logdir=/var/log/carbon/ --instance=%i start
ExecReload=/bin/kill -USR1 $MAINPID
PIDFile=/var/run/carbon-cache-%i.pid
[Install]
WantedBy=multi-user.target

Ich hoffe diese kurze Erklärung hilft dem ein oder anderen und ich würde mich freuen zukünftig mehr Dienste, die auf Instanzierung ausgelegt sind, bereits mit einem entsprechenden Unitfile ausgeliefert zu sehen.

Dirk Götz
Dirk Götz
Principal 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.

Graphite vs. IOPS – experience exchange

Last year, Blerim told us how to benchmark a Graphite and now we want to share some experience on how to handle the emerging IOPS with its pro and contra. It is important to know that Graphite can store its metrics in 3 different ways (CACHE_WRITE_STRATEGY). Each one of them influences another system resource like CPU, RAM or IO. Let us start with an overview about each option and its function.

max

The cache will keep almost all the metrics in memory and only writes the one with the most datapoints. Sounds nice and helps a lot to reduce the general and random io. But this option should never be used without the WHISPER_AUTOFLUSH flag, because most of your metrics are only available in memory. Otherwise you have a high risk of losing your metrics in cases of unclean shutdown or system breaks.
The disadvantage here is that you need a strong CPU, because the cache must sort all the metrics. The required CPU usage increases with the amount of cached metrics and it is important to keep an eye on enough free capacity. Otherwise it will slow down the processing time for new metrics and dramatically reduce the rendering performance of the graphite-web app.

naive

This is the counterpart to the max option and writes the metrics randomly to the disk. It can be used if you need to save CPU power or have fast storage like solid state disk, but be aware that it generates a large amount of IOPS !

sorted

With this option the cache will sort all metrics according to the number of datapoints and write the list to the disk. It works similar to max, but writes all metrics, so the cache will not get to big. This helps to keep the CPU usage low while getting the benefit of caching the metrics in RAM.
All the mentioned options can be controlled with the MAX_UPDATES_PER_SECOND, but each one will be affected in its own way.

Summary

At the end, we made use of the sorted option and spread the workload to multiple cache instances. With this we reduced the amount of different metrics each cache has to process (consistent-hashing relay) and find the best solution in the mix of MAX_UPDATES_PER_SECOND per instance to the related IOPS and CPU/RAM usage. It may sound really low, but currently we are running 15 updates per second for each instance and could increase the in-memory-cache with a low CPU impact. So we have enough resources for fast rendering within graphite-web.
I hope this post can help you in understanding how the cache works and generates the IOPS and system requirements.