[PYTHON] [blackbird-elb] Surveillance d'AWS ElasticLoadBalancing

blackbird ElasticLoadBalancing plugin

Dans Ce plug-in, l'API CloudWatch est exécutée côté merle pour acquérir diverses métriques d'Elastic Load Balancing (ci-après ELB).

You can get following CloudWatch Metrics

Vous pouvez obtenir les métriques CloudWatch suivantes. De gauche à droite, nom de la métrique CloudWatch (voir Reportez-vous à la page d'accueil d'origine pour la signification de la métrique elle-même), quelle statistique prendre (Comme le total ou la moyenne par unité de temps (à proprement parler, par intervalle d'acquisition)), une petite explication.

CloudWatch Metric Name Statistics Detail
HTTPCode_Backend_2XX Sum Total de l'état de la série 2XX du serveur principal dans l'intervalle d'acquisition
HTTPCode_Backend_3XX Sum Statut 3XX total des serveurs backend dans l'intervalle d'acquisition
HTTPCode_Backend_4XX Sum Total de l'état de la série 4XX du serveur principal dans l'intervalle d'acquisition
HTTPCode_ELB_4XX Sum Total de l'état de la série 5XX du serveur ELB dans l'intervalle d'acquisition
HTTPCode_ELB_5XX Sum Total de l'état de la série 5XX du serveur ELB dans l'intervalle d'acquisition
Latency (Average) Average Temps de réponse moyen dans l'intervalle d'acquisition
Latency (Maximum) Maximum Temps de réponse maximal dans l'intervalle d'acquisition
Latency (Minimum) Minimum Temps de réponse minimum dans l'intervalle d'acquisition
RequestCount Sum Nombre de demandes dans l'intervalle de capture
SpilloverCount Sum Nombre de débordements de la file d'attente de requêtes interne d'ELB dans l'intervalle d'acquisition
BackendConnectionErrors Sum Le numéro qui n'a pas pu être connecté au serveur backend dans l'intervalle d'acquisition
HealthyHostCount Maximum Nombre de serveurs backend dans l'intervalle d'acquisition qui ont réussi HealthChecked
UnhealthyHostCount Maximum Nombre de serveurs principaux dans l'intervalle d'acquisition qui ont échoué HealthCheck

About SpilloverCount

Comme son nom l'indique, Spillover Count signifie le nombre de débordements. L'ELB stocke en interne la demande dans une file d'attente (appelée file d'attente de surtension), et si le backend est trop occupé à gérer, la demande est temporairement stockée dans cette file d'attente. Et lorsque la file d'attente déborde, le nombre de débordements devient 1 ou plus. (Je pense que c'est dommage que je n'ai pas eu SurgeQueueLength en écrivant ... je l'obtiendrai bientôt.)

Ainsi, lorsque le SurgeQueueLength augmente, le serveur principal n'est pas en mesure de gérer le trafic en premier lieu, ce qui est assez mauvais, mais si vous faites de votre mieux, vous pourrez peut-être le retourner avant que la file d'attente ne déborde, dans cet état. Si le nombre de débordements augmente depuis le début, cela signifie probablement qu'il ne fonctionne guère en tant que service.

About BackendConnectionErrors

Je pense qu'il est similaire en ce sens qu'il ne fonctionne pas comme un service lorsqu'il augmente, mais qu'il effectue un epoll (tel que nginx) ou un traitement d'E / S et de réseau similaire de manière asynchrone. Si celui-ci est un serveur principal, la nouvelle connexion elle-même peut être établie, mais le processus peut ne pas être en mesure de suivre en premier lieu. Dans un tel cas, BackendConnectionErrors n'apparaît pas, mais il semble que SpilloverCount augmente.

Zabbix Template

Parlons maintenant du modèle Zabbix.

Triggers

C'est juste une fonction approximative,

Cela lancera une alerte comme celle-ci. L'endroit où chacun est constant est défini sur Macro du modèle, veuillez donc le modifier en fonction des caractéristiques de trafic du service. De plus, étant donné que chaque déclencheur a trois niveaux de serbilité, il est possible de faire quelque chose comme le chat pour les informations, le courrier pour la moyenne et le téléphone mobile pour le haut.

Graphs

Temps de réponse moyen

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

Graphique d'intégration du code d'état du backend

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

RequestCount

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

Temps de réponse maximum

Omis car il s'agit d'un graphique à barres ordinaire

Graphique d'intégration du code d'état ELB (4XX, 5XX uniquement)

Ry pour un graphique à barres ordinaire

How to Install

Case of Using pip

pip install blackbird-elb

Puisqu'il est enregistré dans PyPi, veuillez l'insérer rapidement avec pip.

Case of Using yum

Commençons par créer un fichier de dépôt. (Bien sûr, à la fin, j'aimerais faire quelque chose comme http://blackbird.example.com/blackbird_install.sh | sh, mais attendez un peu plus longtemps.)

[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

#Tout nom de section au format de fichier ini est correct
#Cependant, comme un fil est créé avec ce nom en interne, il est plus sûr de ne pas le porter ailleurs.
[ANYTHING_OK]
#L'intervalle d'acquisition. Vous pouvez définir 1 seconde, mais la valeur minimale est de 60 secondes car CloudWatch ne la prend pas en charge.
interval = 300

#Le nom de la région. par défaut c'est nous-east-1。
region_name = ap-northeast-1

#Crédit AWS
#Je voudrais m'authentifier avec sts du rôle IAM de l'instance EC2, veuillez donc patienter un peu. Je ne veux pas non plus écrire de justificatif ici
aws_access_key_id = ACCESS_KEY_ID
aws_secret_access_key = SECRET_ACCESS_KEY

#Nom ELB
load_balancer_name = YOUR_ELB_NAME

#Les métriques CloudWatch d'ELB peuvent prendre une valeur pour chaque AZ, donc la disponibilité_spécifier la zone(Je suis également heureux car je sais de quelle AZ cela dépend.)
availability_zone = ap-northeast-1a

# Zabbix Web(C'est l'écran Zabbix que vous utilisez habituellement)Spécifiez l'hôte ci-dessus. Je ne connais pas la destination. .. .. N'oubliez donc pas de créer d'abord un hôte côté Zabbix.
hostname = YOUR_ELB_NAME_ON_ZABBIX

#module spécifie quel plugin utiliser, mais ici est fixé à elb
module = elb

Par conséquent, sous ʻinclude_dir (blackbird peut être comme /etc/blackbird/conf.d / *. Conf` appelé Nginx), ce fichier de configuration a été défini sur defaults.cfg du corps principal de blackbird. Veuillez le mettre ou l'ajouter sous defaults.cfg.

Lançons votre merle!

Case of Install by pip

blackbird --config YOUR_DEFAULT_CONFIG

Case of Install by yum

sudo service blackbird start

Avec cela, la valeur sera entrée lorsque le temps spécifié pour l'intervalle s'écoulera! doit.

Recommended Posts

[blackbird-elb] Surveillance d'AWS ElasticLoadBalancing
[blackbird-dynamodb] Surveillance d'AWS DynamoDB
[blackbird-rds] Surveillance d'AWS RDS
[blackbird-aws-service-limits] Surveillance des limites de service AWS
[blackbird-kinesis-stream] Surveillance d'AWS KinesisStream
Surveillance active des appareils AWS IoT