[PYTHON] [blackbird-elb] Überwachung von AWS ElasticLoadBalancing

blackbird ElasticLoadBalancing plugin

In Dieses Plug-In wird die CloudWatch-API auf der Amselseite ausgeführt, um verschiedene Metriken des elastischen Lastausgleichs (im Folgenden: ELB) zu erfassen.

You can get following CloudWatch Metrics

Sie können die folgenden CloudWatch-Metriken erhalten. Von links nach rechts der Name der CloudWatch-Metrik (siehe Siehe die ursprüngliche Startseite für die Bedeutung der Metrik selbst) (Wie die Summe oder der Durchschnitt pro Zeiteinheit (genau genommen pro Erfassungsintervall)), eine kleine Erklärung.

CloudWatch Metric Name Statistics Detail
HTTPCode_Backend_2XX Sum Gesamtstatus der 2XX-Serie des Backend-Servers innerhalb des Erfassungsintervalls
HTTPCode_Backend_3XX Sum Gesamt-3XX-Status der Backend-Server innerhalb des Erfassungsintervalls
HTTPCode_Backend_4XX Sum Gesamtstatus der 4XX-Serie des Backend-Servers innerhalb des Erfassungsintervalls
HTTPCode_ELB_4XX Sum Gesamtstatus der 5XX-Serie des ELB-Servers innerhalb des Erfassungsintervalls
HTTPCode_ELB_5XX Sum Gesamtstatus der 5XX-Serie des ELB-Servers innerhalb des Erfassungsintervalls
Latency (Average) Average Durchschnittliche Antwortzeit innerhalb des Erfassungsintervalls
Latency (Maximum) Maximum Maximale Antwortzeit innerhalb des Erfassungsintervalls
Latency (Minimum) Minimum Minimale Antwortzeit innerhalb des Erfassungsintervalls
RequestCount Sum Anzahl der Anforderungen innerhalb des Erfassungsintervalls
SpilloverCount Sum Anzahl der Überläufe aus der internen Anforderungswarteschlange von ELB innerhalb des Erfassungsintervalls
BackendConnectionErrors Sum Die Nummer, die innerhalb des Erfassungsintervalls nicht mit dem Back-End-Server verbunden werden konnte
HealthyHostCount Maximum Anzahl der Backend-Server im Erfassungsintervall, die den Health Check erfolgreich durchgeführt haben
UnhealthyHostCount Maximum Anzahl der Backend-Server im Erfassungsintervall, bei denen HealthCheck fehlgeschlagen ist

About SpilloverCount

Wie der Name schon sagt, bedeutet Spillover Count die Anzahl der Überläufe. Die ELB speichert die Anforderung intern in einer Warteschlange (Surge Queue genannt). Wenn das Backend zu ausgelastet ist, wird die Anforderung vorübergehend in dieser Warteschlange gespeichert. Und wenn die Warteschlange überläuft, wird die Spillover-Anzahl 1 oder mehr. (Ich finde es schlecht, dass ich beim Schreiben keine SurgeQueueLength bekommen habe ... ich werde es bald bekommen.)

Wenn also die SurgeQueueLength zunimmt, kann der Back-End-Server den Datenverkehr überhaupt nicht verarbeiten, was ziemlich schlecht ist. Wenn Sie jedoch Ihr Bestes geben, können Sie ihn möglicherweise zurückgeben, bevor die Warteschlange in diesem Zustand überläuft. Wenn sich die Spillover-Anzahl von Anfang an erhöht, bedeutet dies wahrscheinlich, dass es kaum als Dienst fungiert.

About BackendConnectionErrors

Ich denke, dass es insofern ähnlich ist, als es nicht als Dienst fungiert, wenn es zunimmt, aber es führt epoll (wie nginx) oder ähnliche E / A- und Netzwerkverarbeitung asynchron durch. Wenn es sich bei dem einen um einen Backend-Server handelt, kann die neue Verbindung selbst hergestellt werden, der Prozess kann jedoch möglicherweise überhaupt nicht mithalten. In einem solchen Fall wird BackendConnectionErrors nicht angezeigt, aber es scheint, dass SpilloverCount zunimmt.

Zabbix Template

Lassen Sie uns nun über die Zabbix-Vorlage sprechen.

Triggers

Es ist nur eine grobe Funktion,

Es wird eine Warnung wie diese auslösen. Der Ort, an dem jeder konstant ist, ist auf "Makro der Vorlage" eingestellt. Bearbeiten Sie ihn daher entsprechend den Merkmalen des Datenverkehrs des Dienstes. Da jeder Auslöser drei Stufen der Serbilität aufweist, ist es auch möglich, Chat für Informationen, E-Mail für Durchschnitt und Mobiltelefon für Hoch durchzuführen.

Graphs

Durchschnittliche Reaktionszeit

スクリーンショット_2014-12-03_21_37_51.png

Integrationsdiagramm für den Backend-Statuscode

スクリーンショット_2014-12-03_21_39_00.png

RequestCount

スクリーンショット_2014-12-03_21_44_41.png

Maximale Reaktionszeit

Wird weggelassen, da es sich um ein gewöhnliches Balkendiagramm handelt

Integrationsdiagramm des ELB-Statuscodes (nur 4XX, 5XX)

Ry für gewöhnliches Balkendiagramm

How to Install

Case of Using pip

pip install blackbird-elb

Da es in PyPi registriert ist, fügen Sie es bitte schnell mit pip ein.

Case of Using yum

Zuerst erstellen wir eine Repo-Datei. (Natürlich würde ich am Ende gerne etwas wie "http://blackbird.example.com/blackbird_install.sh | sh" machen, aber bitte warten Sie etwas länger.)

[blackbird]
name=blackbird package repository
baseurl=https://vagrants.github.io/blackbird/repo/yum/6/x86_64
enabled=0
gpgcheck=0
yum install blackbird --enablerepo=blackbird

How to Use

Configure your blackbird

#Jeder Abschnittsname im INI-Dateiformat ist in Ordnung
#Da jedoch intern ein Thread mit diesem Namen erstellt wird, ist es sicherer, ihn nicht an anderer Stelle zu tragen.
[ANYTHING_OK]
#Das Erfassungsintervall. Sie können 1 Sekunde einstellen, der Mindestwert beträgt jedoch 60 Sekunden, da CloudWatch dies nicht unterstützt.
interval = 300

#Der Name der Region. Standard ist uns-east-1。
region_name = ap-northeast-1

#AWS-Gutschrift
#Ich möchte mich mit sts von der IAM-Rolle der EC2-Instanz authentifizieren, also warten Sie bitte eine Weile. Ich möchte auch hier keinen Berechtigungsnachweis schreiben
aws_access_key_id = ACCESS_KEY_ID
aws_secret_access_key = SECRET_ACCESS_KEY

#ELB Name
load_balancer_name = YOUR_ELB_NAME

#Die CloudWatch-Metriken von ELB können für jede AZ einen Wert annehmen, also die Verfügbarkeit_Zone angeben(Ich bin auch glücklich, weil ich weiß, von welchem AZ es abhängt.)
availability_zone = ap-northeast-1a

# Zabbix Web(Es ist der Zabbix-Bildschirm, den Sie normalerweise verwenden)Geben Sie oben den Host an. Ich kenne das Ziel nicht. .. .. Vergessen Sie also nicht, zuerst einen Host auf der Zabbix-Seite zu erstellen.
hostname = YOUR_ELB_NAME_ON_ZABBIX

#Das Modul gibt an, welches Plugin verwendet werden soll, ist hier jedoch auf elb festgelegt
module = elb

Daher befindet sich diese Einstellungsdatei unter "include_dir" (Amsel kann wie "/etc/blackbird/conf.d / *. Conf" wie Nginx sein), die auf "defaults.cfg" der Amsel selbst gesetzt wurde. Bitte setzen Sie es oder fügen Sie es unter defaults.cfg hinzu.

Lass uns deine Amsel laufen lassen!

Case of Install by pip

blackbird --config YOUR_DEFAULT_CONFIG

Case of Install by yum

sudo service blackbird start

Damit wird der Wert eingegeben, wenn die für das Intervall angegebene Zeit abgelaufen ist! Muss.

Recommended Posts

[blackbird-elb] Überwachung von AWS ElasticLoadBalancing
[blackbird-dynamodb] Überwachung von AWS DynamoDB
[blackbird-rds] Überwachung von AWS RDS
[blackbird-aws-service-limits] Überwachung der AWS-Servicelimits
[Amsel-Kinesis-Stream] Überwachung von AWS KinesisStream
AWS IoT Device Alive Monitoring