Prüfen des ESX 3.x-Hosts auf Auslastung der CPU, des Arbeitsspeichers, der physischen Netzwerkkarten, der virtuellen Switches und der virtuellen Storageadapter.
Plugins über die Webservicesschnitstelle:
- Alarm wenn Migration Recommendations anstehen
- Inkonstistenzcheck (Zombi-VMs aufspüren, Vergleich der Sichtweise von VCenter und den einzelnen ESX-Hosts. Alarm, wenn diese sich nicht einig sind)
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...NETWAYS
Dieser Workshop ist in erster Linie für Konferenzteilnehmer gedacht, die sich für Plugin-Programmierung interessieren.
Der Workshop zeigt auf, welche überwachenswerten Daten und Parameter es auf einem NetApp-Filer gibt und wie die Zugänge zu diesen Daten (Telnet, HTTP, SNMP, SSH, XML/Webservices, Data ONTAP APIs) sind. Ingo Lantschner wird eine theoretische Einführung und Demonstration an Hand des NetApp-Simulators präsentieren und mit den Teilnehmern ein Demo-Plugin auf Basis der o.g. Erkenntnisse entwickeln, anschließend erfolgt der Upload des Plugins auf Nagios-Exchange.
MySQL Performance Tuning für Oracle-DBA'sFromDual GmbH
MySQL Performance Tuning
* Was ist Performance?
* Was kostet Performance?
* Tuning Massnahmen
* MySQL Konfiguration
* Wo schauen?
* Langsame Abfragen finden
* Optimiere das Query!
* Monitoring
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...NETWAYS
Dieser Workshop ist in erster Linie für Konferenzteilnehmer gedacht, die sich für Plugin-Programmierung interessieren.
Der Workshop zeigt auf, welche überwachenswerten Daten und Parameter es auf einem NetApp-Filer gibt und wie die Zugänge zu diesen Daten (Telnet, HTTP, SNMP, SSH, XML/Webservices, Data ONTAP APIs) sind. Ingo Lantschner wird eine theoretische Einführung und Demonstration an Hand des NetApp-Simulators präsentieren und mit den Teilnehmern ein Demo-Plugin auf Basis der o.g. Erkenntnisse entwickeln, anschließend erfolgt der Upload des Plugins auf Nagios-Exchange.
MySQL Performance Tuning für Oracle-DBA'sFromDual GmbH
MySQL Performance Tuning
* Was ist Performance?
* Was kostet Performance?
* Tuning Massnahmen
* MySQL Konfiguration
* Wo schauen?
* Langsame Abfragen finden
* Optimiere das Query!
* Monitoring
Containerized End-2-End Testing - JUG Saxony DayTobias Schneck
Bei der Konzeption von End-2-End-Tests ist eine der größten Probleme die Frage, wie die Testausführung robust, reproduzierbar und skalierbar gestaltet werden kann. Einen eleganten Ausweg bieten in Container verpackte Testumgebungen. Dadurch wird es möglich, einen definierten Systemstand reproduzierbar und performant zu testen. Anhand der Open-SourceTools „Sakuli“ und „Docker“ wird gezeigt, wie parallele GUI-Tests in nativen Umgebungen Web- und Rich-Client-Anwendungen performant testen.
Der Datenbank-Backup ist gemacht - was nun?FromDual GmbH
* Datenbank-Backup – welcher Zweck?
* Tauglichkeit des Backup, Verifikation
* Echtdaten vollständig nutzen
* Dem Datenschutz genügen
* Material für die Entwicklung
* Automatisierung
Open Source DMS / ECM agorum core das freie Dokumentenmanagement System und Enterprise Content Management System mit Workflow und Archivieren-Funktion.
Secure Scripting SIG Security Köln Dienstag, 16. Oktober 2012
Wo hin nur mit den Passwörtern in Oracle Scripten?
Passwörter "verstecken"
Datenbank Skripte vor Manipulationen schützen
Oracle LDAP-Integration für SQL*Net
Ja, wo laufen Sie denn? LDAP-Integration für SQL*Net
Überblick SQL*Net
LDAP-Integration
Das `LDAP`-Prinzip
Oracle OID
Active Directory
OpenLDAP
Wer sich mit XPages-Entwicklung beschäftigt, wird über Kurz oder Lang auch auf OpenNTF und die eXtension Library stoßen.
Was ist die eXtension Library und wie kann ich die Erweiterungen in meiner Entwicklungsumgebung nutzen?
Wie können mir die zahlreichen Custom Controls auf OpenNTF helfen, den Entwicklungsaufwand zu reduzieren?
Seit Juli 2011 gibt es die Möglichkeit, aus XPages heraus auf relationale Datenbanken zuzugreifen. Was wird dazu benötigt und wie sieht der Zugriff in der Praxis aus?
Zielgruppe: Teilnehmer mit Grundlagenkenntnissen in der XPages-Entwicklung
Kenntnisse: Grundlagenkenntnisse in der XPages-Entwicklung
Containerized End-2-End Testing - JUG Saxony DayTobias Schneck
Bei der Konzeption von End-2-End-Tests ist eine der größten Probleme die Frage, wie die Testausführung robust, reproduzierbar und skalierbar gestaltet werden kann. Einen eleganten Ausweg bieten in Container verpackte Testumgebungen. Dadurch wird es möglich, einen definierten Systemstand reproduzierbar und performant zu testen. Anhand der Open-SourceTools „Sakuli“ und „Docker“ wird gezeigt, wie parallele GUI-Tests in nativen Umgebungen Web- und Rich-Client-Anwendungen performant testen.
Der Datenbank-Backup ist gemacht - was nun?FromDual GmbH
* Datenbank-Backup – welcher Zweck?
* Tauglichkeit des Backup, Verifikation
* Echtdaten vollständig nutzen
* Dem Datenschutz genügen
* Material für die Entwicklung
* Automatisierung
Open Source DMS / ECM agorum core das freie Dokumentenmanagement System und Enterprise Content Management System mit Workflow und Archivieren-Funktion.
Secure Scripting SIG Security Köln Dienstag, 16. Oktober 2012
Wo hin nur mit den Passwörtern in Oracle Scripten?
Passwörter "verstecken"
Datenbank Skripte vor Manipulationen schützen
Oracle LDAP-Integration für SQL*Net
Ja, wo laufen Sie denn? LDAP-Integration für SQL*Net
Überblick SQL*Net
LDAP-Integration
Das `LDAP`-Prinzip
Oracle OID
Active Directory
OpenLDAP
Wer sich mit XPages-Entwicklung beschäftigt, wird über Kurz oder Lang auch auf OpenNTF und die eXtension Library stoßen.
Was ist die eXtension Library und wie kann ich die Erweiterungen in meiner Entwicklungsumgebung nutzen?
Wie können mir die zahlreichen Custom Controls auf OpenNTF helfen, den Entwicklungsaufwand zu reduzieren?
Seit Juli 2011 gibt es die Möglichkeit, aus XPages heraus auf relationale Datenbanken zuzugreifen. Was wird dazu benötigt und wie sieht der Zugriff in der Praxis aus?
Zielgruppe: Teilnehmer mit Grundlagenkenntnissen in der XPages-Entwicklung
Kenntnisse: Grundlagenkenntnisse in der XPages-Entwicklung
In diesem Vortrag wird zum einen ein Überblick und eine Begriffsklärung zum Thema CPU/PSU gegeben. Zum anderen wird gezeigt, wie man patcht und welche Dinge dabei beachtet werden sollten.OPITZ CONSULTING Beraterin Katja Werner hielt diesen Vortrag bei der DOAG SIG Security am 3.3.2011.
Die Themen Infrastructure Automation / Orchestration, Cloud und Software Defined Networks sind in aller Munde und nahezu jeder Netzwerkhersteller, der etwas auf sich hält,bietet Produkte und stellenweise sogar Lösungen in dieser Buzzwordblase an.
Der in den letzten Jahren vollzogene Paradigmenwechsel hin zu mehr (Host/Segment-)Routing und weniger Layer2-Magie – Stickwort >>IP Fabric<< - sowie die Besinnung auf offene Standards (OSPF, ISIS, BGP, MPLS) nicht nur in Data-Center-Netzwerken hat neue Standards (z.B. VXLAN) beschert und Open-Source-basierte "Open Networking"-Plattformen auf dem Markt erscheinen lassen. Auf einmal ist man nicht mehr an das Betriebsystem und die Vorgaben des Hardwarevendors gebunden, sondern kann die Control-Plane einiger Gerate mit verschiedenen Linux-basierten Produkten nahezu vollstandig selbst kontrollieren und orchestrieren.
Dank der Linux-Basis und Freude am Open-Source-Gedanken mancher Hersteller sind einige Features in Open-Source-Komponenten (Linux-VRFs, MPLS-Forwarding-Plane im Kernel, etc.) gewandert und stehen somit überall zur Verfügung. Besonders zu erwähnen ist hier das Debian-basierte System von Cumulus Networks, aus deren Feder ifupdown2 sowie VRF-Support in Linux stammen. Eine Sammlung dieser Technologien und Ansätze lassen sich auch in Low-Budget- und/oder Eigenbau-Netzwerken anwenden und können hier erstaunliche und mächtige Optionen eröffnen.
Der Vortrag wird am Beispiel der Netzwerk- und Server-Infrastruktur des Freifunk Hochstift darlegen, wie man mit ein bisschen SaltStack, knapp 1000 Zeilen Python und erschwinglicher Hardware eine SDN-basierte Service-Provider Infrastruktur bereitstellen kann, in der Overlay-Netze und Anycast keine Fremdworte sind.
Neben einem “Technology-Overview” wird es eine Failosophy und Lessons Learned aus dem echten Leben eines Freifunker geben ;-)
Das Zielpublikum des Vortrags umfasst in erster Linie (Linux-)Administratoren und Netzwerker, die bereits Erfahrungen mit der jeweils anderen Welt haben und wissen was Routing ist. Eine positive Einstellung zu Automatisierung ist von Vorteil.
Die Themen Infrastructure Automation / Orchestration, Cloud und Software Defined Networks sind in aller Munde und nahezu jeder Netzwerkhersteller, der etwas auf sich hält,bietet Produkte und stellenweise sogar Lösungen in dieser Buzzwordblase an.
Der in den letzten Jahren vollzogene Paradigmenwechsel hin zu mehr (Host/Segment-)Routing und weniger Layer2-Magie – Stickwort >>IP Fabric<< - sowie die Besinnung auf offene Standards (OSPF, ISIS, BGP, MPLS) nicht nur in Data-Center-Netzwerken hat neue Standards (z.B. VXLAN) beschert und Open-Source-basierte "Open Networking"-Plattformen auf dem Markt erscheinen lassen. Auf einmal ist man nicht mehr an das Betriebsystem und die Vorgaben des Hardwarevendors gebunden, sondern kann die Control-Plane einiger Gerate mit verschiedenen Linux-basierten Produkten nahezu vollstandig selbst kontrollieren und orchestrieren.
Dank der Linux-Basis und Freude am Open-Source-Gedanken mancher Hersteller sind einige Features in Open-Source-Komponenten (Linux-VRFs, MPLS-Forwarding-Plane im Kernel, etc.) gewandert und stehen somit überall zur Verfügung. Besonders zu erwähnen ist hier das Debian-basierte System von Cumulus Networks, aus deren Feder ifupdown2 sowie VRF-Support in Linux stammen. Eine Sammlung dieser Technologien und Ansätze lassen sich auch in Low-Budget- und/oder Eigenbau-Netzwerken anwenden und können hier erstaunliche und mächtige Optionen eröffnen.
Der Vortrag wird am Beispiel der Netzwerk- und Server-Infrastruktur des Freifunk Hochstift darlegen, wie man mit ein bisschen SaltStack, knapp 1000 Zeilen Python und erschwinglicher Hardware eine SDN-basierte Service-Provider Infrastruktur bereitstellen kann, in der Overlay-Netze und Anycast keine Fremdworte sind.
Neben einem “Technology-Overview” wird es eine Failosophy und Lessons Learned aus dem echten Leben eines Freifunker geben ;-)
Das Zielpublikum des Vortrags umfasst in erster Linie (Linux-)Administratoren und Netzwerker, die bereits Erfahrungen mit der jeweils anderen Welt haben und wissen was Routing ist. Eine positive Einstellung zu Automatisierung ist von Vorteil.
OSDC 2011 | Enterprise Cloud Lösung - Open Stack in der Praxis by Christian B...NETWAYS
OpenStack ist eine IaaS (Infrastructure as a service) Plattform für Cloud Lösungen. Initial wurde das OpenStack Projekt von Rackspace und der NASA gegründet, inzwischen haben sich aber auch viele weitere Firmen, wie Citrix, DELL, RightScale und sogar INTEL und AMD angeschlossen. Das Projekt besteht aus zwei verchiedenen Teilbereichen: OpenStack Compute, einem Cloud Computing Controller, der alle Aktivitäten, wie beispielsweise das Starten und Stoppen von Maschinen in der Cloud koordiniert. Sowie OpenStack Object Storage einem verteilten Speichersystem für VM Images, Bilder, E-Mails und weitere Objekte innerhalb einer Cloud.
Der Vortrag schildert die ersten praktischen Erfahrungen mit OpenStack aus konkreten Evaluationsprojekten: Warum entscheiden sich große Firmen für OpenStack, wie wird evaluiert, packetiert und getestet?
Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...NETWAYS
Nagios auf eine HA Clusterinfrastrukur mit Clusterfilesystem- warum macht man so etwas. Vorteile und Nachteile gegenüber einer Master-/Slave- Konfiguration. Wodurch kann ein solcher Konstrukt erzwungen werden? Was ist beim Aufsetzen zu bedenken? Und was mach ich mit Cronjobs?
Kubernetes und Docker sind trotz des hohen Verbreitungsgrads noch relativ junge Technologien. Viele Menschen machen gerade gute und teilweise auch schmerzliche Erfahrungen mit beiden. Der Vortrag bietet einen Katalog an Patterns und Antipatterns bei der Entwicklung von Anwendungen auf Basis Kubernetes und Docker. Der Katalog repräsentiert dabei die Erfahrung aus mehreren Industrieprojekten, die es bis in Produktion geschafft haben.
Es geht darum, was man bei Docker-Files und Kubernetes-Deskriptoren richtig und falsch machen kann; welche Architekturbausteine man einsetzen sollte; wie die Continuous Delivery Pipeline gestaltet werden sollte und wie Anwendungen auf Cloud-Native-Plattformen gut betreibbar und diagnostizierbar gemacht werden können.
Docker und Kubernetes Patterns & Anti-PatternsQAware GmbH
JavaLand 2018, Brühl: Vortrag von Josef Adersberger (@adersberger, CTO bei QAware).
Abstract:
Kubernetes und Docker sind trotz des hohen Verbreitungsgrads noch relativ junge Technologien. Viele Menschen machen gerade gute und teilweise auch schmerzliche Erfahrungen mit beiden. Der Vortrag bietet einen Katalog an Patterns und Antipatterns bei der Entwicklung von Anwendungen auf Basis Kubernetes und Docker. Der Katalog repräsentiert dabei die Erfahrung aus mehreren Industrieprojekten, die es bis in Produktion geschafft haben.
Es geht darum, was man bei Docker-Files und Kubernetes-Deskriptoren richtig und falsch machen kann; welche Architekturbausteine man einsetzen sollte; wie die Continuous Delivery Pipeline gestaltet werden sollte und wie Anwendungen auf Cloud-Native-Plattformen gut betreibbar und diagnostizierbar gemacht werden können.
Ähnlich wie Nagios Conference 2007 | Vmware Monitoring by Ingo Latschner (20)
Nagios Conference 2007 | Vmware Monitoring by Ingo Latschner
1. Monitoring virtueller Umgebungen mit Nagios
Erfahrungen beim Schreiben von Nagios-Plugins für eine VMware ESX3-Umgebung
Ingo Lantschner
A-1060 Wien
ingo@boxbe.com
http://ingo.lantschner.name/
Jahrgang 1967• Matura 1985 BRG
Reithmannstraße • Studium LÖK an der
Boku Wien • 1988 Gesellenbrief
Landschaftsgärtner in München • 1996
Gründung NTx Ges.n.b.R. Wien • 2003
Gründung Bino na Biso ASBL in Kinshasa
• 2005 Spezialisierung auf
Systemmonitoring, Trendanalyse, OSS,
Nagios • 2006 Upgrade und
Administration des ÖGB-Nagios • 2007
Erstellen von Plugins für VMware ESX3,
Brocade Switches, HP iLO BMCs, u.a.
Ingo Lantschner
http://ingo.lantschner.name, ingo@boxbe.com, Tel +43-664-1438418, A-1060 Wien, Marchettigasse 5/10
1
2
Donnerstag, 11. Oktober 2007
2. Einige meiner Steckenpferde
http://ingo.lantschner.name
Besonderheiten virtueller Umgebungen
Virtuelle Server bzw. deren Hosts unterscheiden sich von physischen Servern
insbesondere in Bezug auf:
• CPU
• Speicherverwaltung
• NUMA
• Ballooning
• Shared Memory
3
4
Donnerstag, 11. Oktober 2007
3. http://ingo.lantschner.name
Monitoring der CPU Auslastung eines ESX-Hosts
• Datenquellen
• esxtop
• /proc/vmware
• Gründe für Bevorzugung von esxtop gegenüber /proc/vmware
• lt. VMware können sich die Strukturen in /proc/vmware jederzeit ändern
• keine Dokumentation für /proc/vmware verfügbar
http://ingo.lantschner.name
NUMA
• NUMA = Non Uniform Memory Allocation, Je CPU-(Gruppe) eine eigene Memory-Bank = Node -->
beschleunigter Datentransfer
• UMA = das was wir bisher als normal ansahen
• Herausforderung für das Monitoring = Erkennen, wenn einer der NUMA-Nodes ein Speicherproblem
bekommt
• Wie gegensteuern? CPU-Affinität der einzelnen VMs verstellen
• Monitoring: „NUMA free“-Spalte in esxtop auswerten.
• Logik: Wenn jede der NUMA-Nodes > Schwellwert => OK
5
6
Donnerstag, 11. Oktober 2007
4. http://ingo.lantschner.name
Ballooning
• Definition Memory Ballooning lt.
VMware: „Shift memory dynamically
from idle virtual machines to active
ones. Memory ballooning artificially
induces memory pressure within idle
virtual machines, forcing them to use
their own paging areas and release
memory for active virtual machines.“
• Durchführung mittels memctl-Treiber
von VMware (VMware-Tools)
• Grund warum non-vmware-aware
Plugins auf virtuellen Servern scheitern
ESX
VMa
VMb
SC
http://ingo.lantschner.name
Pagesharing
• Der ESX kann seine VMs dazu veranlassen, identische
Speicherinhalte gemeinsam zu nützen.
• Bringt vor allem dann viel, wenn Virtuelle Maschinen mit dem
gleichen Betriebssystem auf dem Host laufen.
• Interessante Zusatzinfo beim Monitoring des ESX-Servers,
aber im Gegensatz zu Ballooning/NUMA kein kritischer
Störfaktor für das Monitoring.
7
8
Donnerstag, 11. Oktober 2007
5. http://ingo.lantschner.name
Monitoring des ESX-Arbeitsspeichers
• Datenquelle: esxtop
esxtop -b -d 10 -n 2
"(PDH-CSV 4.0) (CET)(0)","vmw999.localMemoryMemory Overcommit (1 Minute Avg)","vmw999.localMemoryMem (...)
"02/21/2007 12:11:04","0.00","0.00","0.00","0.03","0.01","0.01","100.00","100.00","100.00","100.00","100.00",(...)
"02/21/2007 12:11:14","0.00","0.00","0.00","0.03","0.01","0.01","2.06","0.64","0.26","0.82","0.94",1,0,97,2,1(...)
• ergibt sowohl detailliertes Zahlenmaterial als auch einen „state“ der einen von 4 Werten annehmen
kann.
• high state = OK
• soft und hard state = WARNING
• low state = CRITICAL
http://ingo.lantschner.name
check_esxtop.pl - Überblick
• Funktionsweise
• Komponenten
• sub write_esxtop3rc
• sub mktab
• sub cpu
• sub mem
• Implementierung
9
10
Donnerstag, 11. Oktober 2007
6. http://ingo.lantschner.name
check_esxtop.pl - Funktionsweise
1. /usr/bin/esxtop -b -d 3 -n 2
• sudo (SUID-Bit ist zu wenig)
• .esxtop3rc legt die Ausgabe fest (welche Werte) - ggf. anlegen
2. Übernahme in Hash-Table
3. Auswertung abhängig von den Parametern
4. Ausgabe und exit
http://ingo.lantschner.name
sub write_esxtop3rc
• Für den Fall, dass bei Programmaufruf keine Datei mit dem Namen .esxtop3rc im Homedirectory des
Users gefunden wird, erstellt das Plugin eine für seine Zwecke passende.
• Eine bestehende Datei wird nicht überschrieben, auch dann nicht, wenn sie die für das Plugin falsche
Konfiguration beinhaltet.
• Überlegung: Wenn Anzeichen bestehen, dass esxtop nicht die richtigen Daten übergibt, kann man
die bestehende .esxtop3rc umbenennen bzw. löschen und anschliessend das Skript (Plugin)
aufrufen. Ab dann, sollte eine passende .esxtop3rc vorliegen.
11
12
Donnerstag, 11. Oktober 2007
7. http://ingo.lantschner.name
sub mktab
• Bereits im Hauptprogramm werden die CSV-Daten von esxtop in das Array @out gespeichert:
my @out = `/usr/bin/sudo /usr/bin/esxtop -b -d 3 -n 2`;
• Dieses wird dann zerlegt, so dass Kopfzeile und zweite Datenzeile in den Arrays @head und @data zu
liegen kommen. Die erste Datenzeile ist für uns uninteressant, daher wird sie nicht extrahiert.
my @head = split /,/, $out[0];
my @data = split /,/, $out[2];
• Die Routine mktab produziert dann einen Hash der Form „Wertname -> Messwert“ abgelegt in der
Variablen %tab.
Auszug des %tab-Hash
PhysicalCpu0_prctProcessorTime -> 2.76
PhysicalCpu1_prctProcessorTime -> 0.86
PhysicalCpu2_prctProcessorTime -> 0.15
PhysicalCpu3_prctProcessorTime -> 1.29
data[0]
data[2]
esxtop -b -d 10 -n 2
"(PDH-CSV 4.0) (CET)(0)","vmw999.localMemoryMemory Overcommit (1 Minute Avg)",(...)
"02/21/2007 12:11:04","0.00","0.00","0.00","0.03","0.01","0.01","100.00","100.00",(...)
"02/21/2007 12:11:14","0.00","0.00","0.00","0.03","0.01","0.01","2.06","0.64",(...)
13
14
Donnerstag, 11. Oktober 2007
8. http://ingo.lantschner.name
sub cpu
Von esxtop wird ein bereits berechneter Wert für die "overall" CPU-
Auslastung (über alle CPUs hinweg) ausgegeben. Dieser wird von
dieser Subroutine mit den Schwellwerten verglichen und ausgegeben.
Beispiel:
# ./check_esxtop.pl cpu 70 90
OK: 0.2 % Total CPU-Time
http://ingo.lantschner.name
sub cpuv
• grundsätzlich anders als sub cpu, da jede CPU einzeln geprüft wird
• schneller, nicht ganz sauberer Hack, basiert auf dem /proc-Dateisystem um die Anzahl der CPUs zu
ermitteln
Anzahl der
CPUs
ermitteln
Vergleich m.
Schwellwerten
15
16
Donnerstag, 11. Oktober 2007
9. http://ingo.lantschner.name
sub mem - Begriffsdefinitionen
• Freier (free) Speicher: Hauptspeicher der zur Zeit aus Sicht des ESX
unbelegt ist, weder von sich, noch von einer VM oder der Console.
• Speicher der zurückgefordert werden kann (reclaimable):
Hauptspeicher der von einer VM zur Zeit belegt ist, der aber von
dieser mittels memctl-Treiber als zur Zeit nicht benötigt an den ESX-
Server gemeldet wurde. Details dazu siehe Doku des ESX-Servers,
Stichwort Ballooning.
• Verfügbarer (available) Speicher: Speicher der sich aus der Addition
von freiem und zurückforderbarem Speicher ergibt.
http://ingo.lantschner.name
sub mem - Logik
• Verglichen mit den Schwellwerten wird nur der verfügbare Speicher.
• Angezeigt werden bei Übergabe der Verboseoption (memv) alle vorher genannten Werte sowie einige
in Bezug auf Page Sharing.
• Die Prozentwerte (auch die der Schwellwerte) sind immer im Verhältnis zum gesamt verbauten RAM
in der Maschine zu sehen (dieser Wert wird natürlich vom Plugin zur Laufzeit ermittelt).
• zusätzlich wird der State ausgewertet - das „kritischere“ Ergebnis bestimmt den Returncode
17
18
Donnerstag, 11. Oktober 2007
10. http://ingo.lantschner.name
sub mem - Beispiel
# ./check_esxtop.pl mem 60 80
OK - Memory Used 10.1 % (3681 MB available)
# ./check_esxtop.pl memv 60 80
OK - Memory Used: 10.1 % (414 MB)<br>
Memory Free: 89.9 % (3681 MB)<br>
Memory Reclaimable: 0 MB<br>
Memory Available: 89.9 % (3681 MB)<br>
Memory Availability State: high (memory is not under pressure)<br>
Total Machine Memory: 4095 MB<br>
Page Sharing (shared/common/saving MB): 1/1/0
http://ingo.lantschner.name
sub nic
• Vom Plugin wird zunächst einmal ermittelt wird, welche NICs vorhanden sind. Dazu liest es die Datei "/
proc/vmware/pci" aus.
• Anschliessend werden deren aktuelle Datentransferwerte (rx und tx) aus der %tab ausgelesen, addiert und
in Relation zum ebenfalls der %tab entnommenem Linkspeed gesetzt.
• Bzgl. des Linkspeed ist ein Plausibilitätstest eingebaut: Der Linkspeed muss zwischen 10 und 100.000
MBit/sek. liegen. Wir denken also auch ein wenig in die Zukunft.
• Weiters muss, schon alleine um Divisionen durch Null zu verhindern, überprüft werden, ob der Link
überhaupt up ist. Ist er bei nur einer NIC down, wird das Plugin den Rückgabewert 2 (CRITICAL) an Nagios
übermitteln. Somit führen nicht angeschlossene Netzwerkadapter zu einem kritischen Ergebnis. Dies ist
einer der Nachteile der eingebauten Intelligenz. (Der Vorteil ist das einfache Rollout über Templates.)
• eXclude: Um bestimmte, nicht angeschlossenen Netzwerkadapter auszuschliessen, kann der Schalter nicx
bzw. nicvx verwendet werden. Dann können am Ende der Befehlszeile beliebig viele, kommagetrennte
NICs angegeben werden, die das Plugin nicht prüfen soll. Das Plugin überprüft aber nicht, ob die
angegebenen Adapter überhaupt existieren (wozu auch?)
19
20
Donnerstag, 11. Oktober 2007
11. check nic: Beispiele
# ./check_esxtop.pl nic 10 20
OK: All physical NICs are below 10% usage.
# ./check_esxtop.pl nicv 10 20
OK: All physical NICs are below 10% usage.<br>
vmnic0: 0.001%, 0.01Mb/s<br>
vmnic1: 0.055%, 0.55Mb/s
# ./check_esxtop.pl nicvx 10 20 vmnic1
OK: All physical NICs are below 10% usage.<br>
vmnic0: 0%, 0Mb/s
# ./check_esxtop.pl nicvx 10 20 vmnic1,vmnic2
OK: All physical NICs are below 10% usage.<br>
vmnic0: 0%, 0Mb/s
http://ingo.lantschner.name
Implementierung und Rollout
• Plugin wird auf jeden zu prüfenden ESX-Host kopiert
• Aufruf über NRPE
• Da einige der Kommandos, z.B. esxtop, root-Kontext benötigen, muss es mit sudo
aufgerufen werden.
Somit läuft dann zwar das gesamte Skript mit höheren Rechten, dafür ist aber der Benutzer
nagios nicht mehr pauschal ermächtigt jedes beliebige Tool ohne Passwort im root-Kontext
zu starten. Die Überlegung dabei ist, dass es sicherer ist, den Benutzer nagios bzgl. seiner
sudoer-Berechtigung auf das Verzeichnis /usr/lib/nagios/plugins einzuschränken und das
Perlscript von nrped weg mit sudo aufzurufen.
Weiters sind natürlich Vorkehrungen zu treffen, dass der Nagiosuser nicht missbraucht
werden kann und sicherzustellen, dass nur root im plugin-Verzeichnis Schreibrechte hat.
21
22
Donnerstag, 11. Oktober 2007
13. VMware Webservices - Teil 1
Verwendung des VIPerl-Toolkit zum Erstellen von Nagios-Plugins
http://ingo.lantschner.name
Webservices Schnittstelle - Überblick
• Webservices kurz erklärt
• Installation am Nagios Host
• Grundstruktur von Plugins zur Nutzung von Webservices
• Plugins
• Migration Recommendations
• Inkonsitenz-Check
• ACHTUNG: Die folgenden Beispiele beruhen auf einer SF-Betaversion des VIPerl-Toolkits. Aktuellere
Version auf http://www.vmware.com/support/developer/viperltoolkit
1
2
Dienstag, 09. Oktober 2007
15. Hosts direkt kontaktieren
VMware Host Agent
ESX01.vmware.com
ESX02.vmware.com
ESX03.vmware.com
ESX Client GUI
VMware
Proprietary
Protocol
ESX Client GUI
VMware
Proprietary
Protocol
SOAP/HTTPS
ISV Management
Server
Management
Server DB
ESX Client GUI VMware
Proprietary
Protocol
VMware Host Agent
VMware Host Agent
VMware
Proprietary
Protocol
VMware
Proprietary
Protocol
VMware
Proprietary
Protocol
http://ingo.lantschner.name
Installation VIperl-Toolkit am Nagios
• Download tar-Archiv
• Folge dem README (cpan wäre fein)
• Zugriff auf Port 443 des ESX sicherstellen
• Am ESX:
• 443 ist voreingestellt offen und aktiv
• Security: Eigener User mit nur Lesen-Rechten wäre kein Fehler - Webservices sind vor allem
auch zum Steuern des ESX da!
5
6
Dienstag, 09. Oktober 2007
16. http://ingo.lantschner.name
Grundstruktur eines WS-Plugins
#!/usr/bin/perl -w
use strict;
use warnings;
use VMware::VIRuntime;
Vim::login(service_url => "https://somehost:443/sdk",
user_name => "root", password => "zirkus");
#
# Hier kommt der Code für die Abfragen hin
#
Vim::logout();
Sidestep OO-Module für Anwender
7
8
Dienstag, 09. Oktober 2007
17. VMware Webservices - Teil 2
Verwendung des VIPerl-Toolkit zum Erstellen von Nagios-Plugins
http://ingo.lantschner.name
Beispiel: Namen der auf einem Host befindlichen virtuellen
Maschinen auflisten
#!/usr/bin/perl -w
use strict;
use warnings;
use VMware::VIRuntime;
Vim::login(service_url => "https://esxhost.my.org/sdk",
user_name => "nagios", password => "******");
my $vm_views = Vim::find_entity_views(view_type => 'VirtualMachine');
foreach $vm (@$vm_views) {
print "name: " . $vm->name . "n";
}
Vim::logout();
1
2
Dienstag, 09. Oktober 2007
18. http://ingo.lantschner.name
entity_views: Erklärung an Hand eines Beispiels
• Konfiguration: Ein ESX-Host beherbergt zwei virtuelle Maschinen VMa und VMb.
• Die Funktion find_entity_views(view_type => 'VirtualMachine') retourniert einen Skalar, der ein Array
referenziert.
• In diesem Array sind zwei view objects enthalten - für jede der VM eines.
• Diese view objects sind ihrerseits sehr umfangreiche Container und enthalten:
• Properties und die darin enthaltenen Datenobjekte (data objects)
• Methoden, um auf diese „properties“ zuzugreifen
• Methoden um das „managed object“ zu verändern ESX
VMa
VMb
http://ingo.lantschner.name
Das Beispielskript im Ablauf
• $vm_views ist eine Referenz auf ein Array, z.B. ARRAY(0x1f541a8).
• Die Elemente dieses Arrays sind „view objects“ vom Typ VirtualMachine
• Diese werden mit foreach nacheinander in die Variable $vm kopiert. Würden wir diese Variable $vm
mit print nach stdout schreiben, erhalten wir etwas wie: VirtualMachine=HASH(0x3858264) - es ist
also eine Klasse mit Hash.
Dieses Objekt enthält dann ein komplexes Datenmodell, das mit Datadumper beispielsweise
ausgegeben werden kann.
print Dumper ($vm) . "n";
3
4
Dienstag, 09. Oktober 2007
20. http://ingo.lantschner.name
Direktes Adressieren von Werten
print "runtime->bootTime: " . $vm->runtime->bootTime
runtime->bootTime: 2007-03-20T11:00:16.764147+01:00
print "runtime->powerState: " . $vm->runtime->powerState->val
runtime->powerState: poweredOn
http://ingo.lantschner.name
Managed Objects References
• Um auf die Daten von virtuellen Maschinen über den VCenter zuzugreifen ist ein weiterer Zwischenschritt nötig, da diese ein
vom VCenter aus betrachtet ein referenziertes Managed Object sind. (Sie laufen ja nicht am VCenter sondern auf vom Vcenter
verwalteten Hosts.)
• Vim::get_view würde einen Pointer auf die Datenstrukturen einer VM zurückgeben, erwartet aber seinerseits eine Referenz auf
ein Managed Object (=VM) als Argument
my $vm_ref = Vim::get_view(mo_ref => $_);
• Diese Referenz holen wir uns zuvor mit Vim::find_entity_view
my $host_view = Vim::find_entity_view( view_type => 'HostSystem',
filter => { name => $host } );
• Die Variable $host_view zeigt nun auf die Datenstruktur des $host
• Mit der Methode $host_view->vm erhalten wir eine Liste der Pointer auf die Datenstrukturen der VMs dieses Hosts (die
gesuchten Managed Object References)
• Somit bekommen wir eine Liste (eigentl. nur einen Pointer auf eine Array) der auf $host laufenden VMs.
• Diese Liste wird mit foreach abgearbeitet, um die Namen und den Powerstate auszulesen:
$host_view->vm
7
8
Dienstag, 09. Oktober 2007
22. http://ingo.lantschner.name
Beispiel: Check DRS-Migration Recommendations
check_mig.pl --url=https://vcenter.my.org/sdk --user=nagios
--pass=somePass --cluster=ESXCLuster1 --warning=2 --critical=4
Ergibt eine Warnung wenn zumindest eine „zwei- oder mehr Sternchen
Empfehlung“ vorliegt und Critical wenn es mehr als 4 sind.
• Logik: Für den betreffenden Cluster, werden die Properties mittels Dumper in ein
Array geschrieben. Dieses wird nach dem String „drsRecommendation“
durchsucht. Findet das Plugin den String "'drsRecommendation' => undef" so
liegen keine Empfehlungen vor und alles ist OK. Andernfalls werden die rating-
Zeilen durchsucht und das jeweils höchste Rating in die Variable $rating kopiert.
• $rating wird dann mit --warning und --critical verglichen
check_mig.pl: Codeschipsel
11
12
Dienstag, 09. Oktober 2007
23. http://ingo.lantschner.name
Inkonsitenz Check - check_zombi.pl
• Eigenleben von VMs
• abgeschaltete VMs laufen weiter und sind nur noch mit ps auf der Servicekonsole
zu finden.
• die selbe (sic!) VM läuft gleichzeitig auf unterschiedlichen ESX-Hosts
USAGE and Example:
check_zombi.pl --url=https://vcenter.my.org/sdk --user=nagios --
pass=somepass --host=esx03
No thresholds used. If inconsistences were detected, result is
CRITICAL, if not the plugin exits with OK.
http://ingo.lantschner.name
check_zombi
• Drei Datenquellen werden befragt und verglichen
• pslist: Mittels ps -evx und Mustersuche, werden die Namen der VMs über die Prozessliste
ermittelt. Dieser Teil benötigt eine Hilfsplugin am ESX-Host.
• esxlist: Mittels vmware-cmd wird die Liste der aktiven VMs am Host ermittelt. Auch hier wird ein
eigenes Hilfsplugin vorausgesetzt.
• vclist: Alle am VCenter für diesen Host registrierten und aktiven virtuellen Maschinen werden
ermittelt (über die Webservices Schnittstelle)
• Stimmen diese drei Listen nicht überein, so gibt das Plugin alle drei Listen und den Status CRITCIAL
retour.
• Sind die drei Listen identisch, beendet der Check mit OK.
• Zur Sicherheit wird der Hostname laut VCenter im Ergebnis erwähnt.
13
14
Dienstag, 09. Oktober 2007
24. http://ingo.lantschner.name
check_zombi - Helperplugins
• get_vmware-cmd-l.pl
• setzt das Kommando vmware-cmd -l am ESX in der Servicekonsole ab
• speichert die Liste der laufenden VMs in ein Array und sendet dieses als String auf stdout
• getvmxlist.pl
• setzt das Kommando ps in der Servicekonsole am ESX ab
• grept nach vmx
• Bereitet die Ausgabe auf und sendet eine Liste der relvanten Prozesse an stdout
http://ingo.lantschner.name
check_zombi - Auswertung der Listen
• Aufbereitung der Listen:
• Groß-/Kleinschreibung vereinheitlichen
• sortieren
• Zweistufige Auswertung
• Stufe 1: Es wird geprüft, ob die Anzahl der Hosts je Liste identisch ist. Ist sie es nicht, wird sofort
CRITICAL gemeldet und jede weitere Prüfung entfällt.
• Stufe 2: Stimmt die Anzahl, wird jede Liste Element für Element von vorne beginnend mit den
beiden anderen verglichen. Bei der ersten Unstimmigkeit wird abgebrochen und CRITICAL
retourniert.
• Werden beide Tests erfolgreich absolviert, so wir OK zurückgegeben.
15
16
Dienstag, 09. Oktober 2007
25. check_zombi.pl: Abfrage VCenter
http://ingo.lantschner.name
check_zombi - Implementierung
• Vorhandene NRPE-Infrastruktur
• Ermittlung der pslist und der esxlist über Helper-Plugins
• Diese beiden müssen am jeweiligen ESX-Host lokal vorhanden sein
• NRPE muss auf jedem ESX-Host passend konfiguriert werden.
# ls -l /usr/lib/nagios/plugins/get*
get_vmware-cmd-l.pl
get_vmxlist.pl
# cat /etc/nagios/nrpe.cfg
...
command[get_vmxlist]=/usr/lib/nagios/plugins/get_vmxlist.pl
command[get_vmware-cmd-l]=/usr/lib/nagios/plugins/get_vmware-cmd-l.pl
...
17
18
Dienstag, 09. Oktober 2007
26. ESX1
check_zombi.pl - the Big Picture
Nagios
VCenter ESX2
get_vmxlist.pl
get_vmware-cmd-l.pl
nrped
check_
zombi.
pl
443
OK, Cluster ist konsistent.
31
vclist
2
esxlist
@list = `/usr/bin/vmware-cmd -l`;
@list = `/bin/ps -evx | /bin/grep .vmx | /bin/grep -v grep`;
pslist
Ende und Fragen/Anregungen/Diskussion?
ingo@boxbe.com
http://ingo.lantschner.name
http://itblog.lantschner.name
Danke für die Aufmerksamkeit!
19
20
Dienstag, 09. Oktober 2007
27. VMware Webservices - Teil 2
Verwendung des VIPerl-Toolkit zum Erstellen von Nagios-Plugins
http://ingo.lantschner.name
Beispiel: Namen der auf einem Host befindlichen virtuellen
Maschinen auflisten
#!/usr/bin/perl -w
use strict;
use warnings;
use VMware::VIRuntime;
Vim::login(service_url => "https://esxhost.my.org/sdk",
user_name => "nagios", password => "******");
my $vm_views = Vim::find_entity_views(view_type => 'VirtualMachine');
foreach $vm (@$vm_views) {
print "name: " . $vm->name . "n";
}
Vim::logout();
1
2
Dienstag, 09. Oktober 2007
28. http://ingo.lantschner.name
entity_views: Erklärung an Hand eines Beispiels
• Konfiguration: Ein ESX-Host beherbergt zwei virtuelle Maschinen VMa und VMb.
• Die Funktion find_entity_views(view_type => 'VirtualMachine') retourniert einen Skalar, der ein Array
referenziert.
• In diesem Array sind zwei view objects enthalten - für jede der VM eines.
• Diese view objects sind ihrerseits sehr umfangreiche Container und enthalten:
• Properties und die darin enthaltenen Datenobjekte (data objects)
• Methoden, um auf diese „properties“ zuzugreifen
• Methoden um das „managed object“ zu verändern ESX
VMa
VMb
http://ingo.lantschner.name
Das Beispielskript im Ablauf
• $vm_views ist eine Referenz auf ein Array, z.B. ARRAY(0x1f541a8).
• Die Elemente dieses Arrays sind „view objects“ vom Typ VirtualMachine
• Diese werden mit foreach nacheinander in die Variable $vm kopiert. Würden wir diese Variable $vm
mit print nach stdout schreiben, erhalten wir etwas wie: VirtualMachine=HASH(0x3858264) - es ist
also eine Klasse mit Hash.
Dieses Objekt enthält dann ein komplexes Datenmodell, das mit Datadumper beispielsweise
ausgegeben werden kann.
print Dumper ($vm) . "n";
3
4
Dienstag, 09. Oktober 2007
30. http://ingo.lantschner.name
Direktes Adressieren von Werten
print "runtime->bootTime: " . $vm->runtime->bootTime
runtime->bootTime: 2007-03-20T11:00:16.764147+01:00
print "runtime->powerState: " . $vm->runtime->powerState->val
runtime->powerState: poweredOn
http://ingo.lantschner.name
Managed Objects References
• Um auf die Daten von virtuellen Maschinen über den VCenter zuzugreifen ist ein weiterer Zwischenschritt nötig, da diese ein
vom VCenter aus betrachtet ein referenziertes Managed Object sind. (Sie laufen ja nicht am VCenter sondern auf vom Vcenter
verwalteten Hosts.)
• Vim::get_view würde einen Pointer auf die Datenstrukturen einer VM zurückgeben, erwartet aber seinerseits eine Referenz auf
ein Managed Object (=VM) als Argument
my $vm_ref = Vim::get_view(mo_ref => $_);
• Diese Referenz holen wir uns zuvor mit Vim::find_entity_view
my $host_view = Vim::find_entity_view( view_type => 'HostSystem',
filter => { name => $host } );
• Die Variable $host_view zeigt nun auf die Datenstruktur des $host
• Mit der Methode $host_view->vm erhalten wir eine Liste der Pointer auf die Datenstrukturen der VMs dieses Hosts (die
gesuchten Managed Object References)
• Somit bekommen wir eine Liste (eigentl. nur einen Pointer auf eine Array) der auf $host laufenden VMs.
• Diese Liste wird mit foreach abgearbeitet, um die Namen und den Powerstate auszulesen:
$host_view->vm
7
8
Dienstag, 09. Oktober 2007
32. http://ingo.lantschner.name
Beispiel: Check DRS-Migration Recommendations
check_mig.pl --url=https://vcenter.my.org/sdk --user=nagios
--pass=somePass --cluster=ESXCLuster1 --warning=2 --critical=4
Ergibt eine Warnung wenn zumindest eine „zwei- oder mehr Sternchen
Empfehlung“ vorliegt und Critical wenn es mehr als 4 sind.
• Logik: Für den betreffenden Cluster, werden die Properties mittels Dumper in ein
Array geschrieben. Dieses wird nach dem String „drsRecommendation“
durchsucht. Findet das Plugin den String "'drsRecommendation' => undef" so
liegen keine Empfehlungen vor und alles ist OK. Andernfalls werden die rating-
Zeilen durchsucht und das jeweils höchste Rating in die Variable $rating kopiert.
• $rating wird dann mit --warning und --critical verglichen
check_mig.pl: Codeschipsel
11
12
Dienstag, 09. Oktober 2007
33. http://ingo.lantschner.name
Inkonsitenz Check - check_zombi.pl
• Eigenleben von VMs
• abgeschaltete VMs laufen weiter und sind nur noch mit ps auf der Servicekonsole
zu finden.
• die selbe (sic!) VM läuft gleichzeitig auf unterschiedlichen ESX-Hosts
USAGE and Example:
check_zombi.pl --url=https://vcenter.my.org/sdk --user=nagios --
pass=somepass --host=esx03
No thresholds used. If inconsistences were detected, result is
CRITICAL, if not the plugin exits with OK.
http://ingo.lantschner.name
check_zombi
• Drei Datenquellen werden befragt und verglichen
• pslist: Mittels ps -evx und Mustersuche, werden die Namen der VMs über die Prozessliste
ermittelt. Dieser Teil benötigt eine Hilfsplugin am ESX-Host.
• esxlist: Mittels vmware-cmd wird die Liste der aktiven VMs am Host ermittelt. Auch hier wird ein
eigenes Hilfsplugin vorausgesetzt.
• vclist: Alle am VCenter für diesen Host registrierten und aktiven virtuellen Maschinen werden
ermittelt (über die Webservices Schnittstelle)
• Stimmen diese drei Listen nicht überein, so gibt das Plugin alle drei Listen und den Status CRITCIAL
retour.
• Sind die drei Listen identisch, beendet der Check mit OK.
• Zur Sicherheit wird der Hostname laut VCenter im Ergebnis erwähnt.
13
14
Dienstag, 09. Oktober 2007
34. http://ingo.lantschner.name
check_zombi - Helperplugins
• get_vmware-cmd-l.pl
• setzt das Kommando vmware-cmd -l am ESX in der Servicekonsole ab
• speichert die Liste der laufenden VMs in ein Array und sendet dieses als String auf stdout
• getvmxlist.pl
• setzt das Kommando ps in der Servicekonsole am ESX ab
• grept nach vmx
• Bereitet die Ausgabe auf und sendet eine Liste der relvanten Prozesse an stdout
http://ingo.lantschner.name
check_zombi - Auswertung der Listen
• Aufbereitung der Listen:
• Groß-/Kleinschreibung vereinheitlichen
• sortieren
• Zweistufige Auswertung
• Stufe 1: Es wird geprüft, ob die Anzahl der Hosts je Liste identisch ist. Ist sie es nicht, wird sofort
CRITICAL gemeldet und jede weitere Prüfung entfällt.
• Stufe 2: Stimmt die Anzahl, wird jede Liste Element für Element von vorne beginnend mit den
beiden anderen verglichen. Bei der ersten Unstimmigkeit wird abgebrochen und CRITICAL
retourniert.
• Werden beide Tests erfolgreich absolviert, so wir OK zurückgegeben.
15
16
Dienstag, 09. Oktober 2007
35. check_zombi.pl: Abfrage VCenter
http://ingo.lantschner.name
check_zombi - Implementierung
• Vorhandene NRPE-Infrastruktur
• Ermittlung der pslist und der esxlist über Helper-Plugins
• Diese beiden müssen am jeweiligen ESX-Host lokal vorhanden sein
• NRPE muss auf jedem ESX-Host passend konfiguriert werden.
# ls -l /usr/lib/nagios/plugins/get*
get_vmware-cmd-l.pl
get_vmxlist.pl
# cat /etc/nagios/nrpe.cfg
...
command[get_vmxlist]=/usr/lib/nagios/plugins/get_vmxlist.pl
command[get_vmware-cmd-l]=/usr/lib/nagios/plugins/get_vmware-cmd-l.pl
...
17
18
Dienstag, 09. Oktober 2007
36. ESX1
check_zombi.pl - the Big Picture
Nagios
VCenter ESX2
get_vmxlist.pl
get_vmware-cmd-l.pl
nrped
check_
zombi.
pl
443
OK, Cluster ist konsistent.
31
vclist
2
esxlist
@list = `/usr/bin/vmware-cmd -l`;
@list = `/bin/ps -evx | /bin/grep .vmx | /bin/grep -v grep`;
pslist
Ende und Fragen/Anregungen/Diskussion?
ingo@boxbe.com
http://ingo.lantschner.name
http://itblog.lantschner.name
Danke für die Aufmerksamkeit!
19
20
Dienstag, 09. Oktober 2007