Essayez d'obtenir des métriques CloudWatch avec la source de données python re: dash

Bien qu'il dise que re: dash peut utiliser python comme source de données, il n'y a pas beaucoup d'informations dans la documentation, je vais donc écrire un exemple d'exécution simple.

Aperçu

Fondamentalement, dans une variable de type dictionnaire nommée "résultat" http://docs.redash.io/en/latest/dev/results_format.html Si vous entrez la valeur selon le format spécifié dans, elle sera reconnue sans autorisation.

Ajouter une source de données

Accédez à l'écran Ajouter une source de données, définissez le type sur Python et saisissez les modules qui permettent l'importation, séparés par des virgules. J'entre boto3 et datetime pour une utilisation ultérieure.

Écrire un exemple de requête

Définissez la source de données de requête sur la source de données que vous venez d'ajouter et entrez la requête suivante.

result = {}

add_result_row(result, {'name':'hoge', 'count':5, 'countf':6.3})
add_result_row(result, {'name':'bar', 'count':11, 'countf':3.14159})
add_result_row(result, {'name':'foo', 'count':0, 'countf':99.9999})

add_result_column(result, 'name', '', 'string')
add_result_column(result, 'count', '', 'integer')
add_result_column(result, 'countf', '', 'float')

Les méthodes d'aide add_result_row et add_result_column étant fournies par défaut, Ils sont utilisés pour les définitions de colonne et les définitions de ligne.

add_result_row ajoute une ligne. Si vous passez le type de dictionnaire qui est une paire de nom de colonne et de valeur au deuxième argument, il sera ajouté au résultat comme vous le souhaitez.

add_result_column ajoute une définition de colonne. Nom de colonne dans le deuxième argument (nom correspondant au type de dictionnaire à ajouter à add_result_row) Afficher le nom dans le troisième argument Tapez comme quatrième argument (correspondant à chaîne, entier, flottant, booléen, date, datetime) Spécifier.

Une fois exécutés, les résultats suivants seront obtenus. スクリーンショット 2015-12-25 17.52.46.png

Ecrire une requête faisant référence à des données externes

Dans la requête précédente, les données sont solidement écrites dans la source et ce n'est pas intéressant, alors écrivons une requête pour obtenir des données externes.

Cette fois, obtenons l'utilisation du processeur de l'instance avec Amazon CloudWatch.

Préparation

Le système d'exploitation utilise l'AMI ubuntu officiellement distribuée.

Installez boto3 à l'avance avec `` sudo pip install boto3 ''. Autorisez également l'accès à CloudWatch avec IamRole.

Créer une requête

Créez une nouvelle requête et écrivez le code suivant.

'target-instanceId'À la place de, écrivez l'ID de l'instance que vous souhaitez obtenir.



 De plus, comme le graphique re: dash ne peut pas être affiché dans des unités plus fines que la date, `` `` Period = 3600 '' 'est défini et la moyenne est prise en unités horaires.

 La valeur de retour de cloud_watch.get_metric_statistics est bouclée, ajoutant l'utilisation du processeur et la date à la ligne.

 Pour la valeur de retour détaillée de cloud_watch.get_metric_statistics, veuillez vous référer au [Blog de la méthode de classe](http://dev.classmethod.jp/cloud/aws/get_value_of_cloudwatch_using_boto3/).


```python3
import boto3
import datetime

result = {}

cloud_watch = boto3.client('cloudwatch', region_name='ap-northeast-1')

get_metric_statistics = cloud_watch.get_metric_statistics(
                            Namespace='AWS/EC2',
                            MetricName='CPUUtilization',
                            Dimensions=[
                                {
                                    'Name': 'InstanceId',
                                    'Value': 'target-instanceId'
                                }
                            ],
                           StartTime=datetime.datetime.now() - datetime.timedelta(days=1),
                           EndTime=datetime.datetime.now(),
                           Period=3600,
                           Statistics=['Average'])

for d in get_metric_statistics['Datapoints']:
    add_result_row(result, {'average':d['Average'], 'datetime':d['Timestamp']. isoformat()})

add_result_column (result, 'average', 'aaaaa', 'float')
add_result_column (result, 'datetime', '', 'datetime')

Si vous faites cela, vous obtiendrez les résultats suivants: スクリーンショット 2015-12-25 18.11.46.png

De plus, si vous créez un graphique à lignes de pliage, ce seront ces données. スクリーンショット 2015-12-25 18.12.32.png

Vous pouvez également l'utiliser comme un serveur de surveillance en obtenant les dernières données et en définissant des alertes.

Recommended Posts

Essayez d'obtenir des métriques CloudWatch avec la source de données python re: dash
J'ai essayé d'obtenir des données CloudWatch avec Python
Je souhaite utiliser une source de données python dans Re: Dash pour obtenir les résultats de la requête.
Obtenez des données Youtube avec python
Essayez d'acquérir des données lors de la redirection de port vers RDS avec anaconda.
Obtenez des données supplémentaires vers LDAP avec python (Writer et Reader)
[Introduction à Python] Comment obtenir des données avec la fonction listdir
Récupérez la source de la page à charger indéfiniment avec python.
Essayez d'exploiter Facebook avec Python
[Python] Obtenez des données économiques avec DataReader
Comment démarrer avec Python
Essayez de résoudre l'itinéraire le plus court avec les données sociales Python + NetworkX +
Obtenez des données supplémentaires vers LDAP avec python
Essayez de reproduire un film couleur avec Python
Essayez de vous connecter à qiita avec Python
[Note] Obtenir des données de PostgreSQL avec Python
Essayez de travailler avec des données binaires en Python
Convertir des données Excel en JSON avec python
Convertissez des données FX 1 minute en données 5 minutes avec Python
Essayez de convertir en données ordonnées avec les pandas
Essayez d'imaginer les données d'élévation du National Land Research Institute avec Python
Essayez d'envoyer des métriques à datadog via python, DogStatsD
Essayez d'agréger les données de musique doujin avec des pandas
Essayez de résoudre le diagramme homme-machine avec Python
Essayez de créer un code de "décryptage" en Python
Essayez de générer automatiquement des documents Python avec Sphinx
Essayez de créer un groupe de dièdre avec Python
Écrire des données CSV sur AWS-S3 avec AWS-Lambda + Python
Zubu amateur veut démarrer Python
Script Python pour obtenir des informations de note avec REAPER
Essayez de détecter les poissons avec python + OpenCV2.4 (inachevé)
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Essayez de gratter avec Python.
Analyse et partage faciles avec re: dash, un outil de visualisation de données open source Partie 2 ~ Graphique
Obtenez une grande quantité de données Twitter de Starba avec python et essayez l'analyse de données Partie 1
Comment récupérer des données d'image de Flickr avec Python
Faisons un outil de veille de commande avec python
J'ai essayé de démarrer avec le script python de blender_Part 01
Essayez de résoudre le problème d'affectation du médecin de formation avec Python
Obtenez des données financières avec python (puis un peu de bricolage)
Essayez le fonctionnement de la base de données avec Python et visualisez avec d3
Note de lecture: Introduction à l'analyse de données avec Python
J'ai essayé de démarrer avec le script python de blender_Partie 02
Comment obtenir plus de 1000 données avec SQLAlchemy + MySQLdb
Essayez d'obtenir le contenu de Word avec Golang
Comment obtenir le verdict de la molette de la souris avec des malédictions Python
Obtenez date avec python
Analyse de données avec Python
Obtenir des données de la base de données via ODBC avec Python (Access)
Lorsque j'essaye de mettre à jour les données sur DynamoDB avec Python (boto3), j'obtiens "ExpressionAttributeNames contient une clé invalide: Erreur de syntaxe; clé: <nom de clé>"
Partage d'analyse facile avec re: dash, un outil de visualisation de données open source Partie 4 ~ tableau croisé dynamique
Analyse et partage faciles avec re: dash, un outil de visualisation de données open source Partie 3 - Feuilles de calcul Google
[Python / Ruby] Comprendre le code Comment obtenir des données en ligne et les écrire au format CSV
Analyse et partage faciles avec re: dash, un outil de visualisation de données open source Partie 1-Installation
Obtenez une liste des métriques CloudWatch et une table de correspondance des unités unitaires avec Python boto
Essayez de gratter les données COVID-19 Tokyo avec Python
Je veux pouvoir analyser des données avec Python (partie 3)