Utilisation d'un fichier JSON décrivant les paramètres du moniteur Datadog Générez un script bash pour ajouter les paramètres du moniteur.
En fait, au lieu de régler depuis l'interface graphique comme le pissenlit sashimi Les paramètres du moniteur avec un contenu similaire peuvent être appliqués en une seule fois en réécrivant simplement une partie du texte.
Peut-être que si vous utilisez pleinement l'art Shell, il sera complété par un shell. Je n'ai pas la puissance du shell et le sentiment de maintenir autant, alors je le fais avec python.
Structure du répertoire
./
├ module/
│ └ monitoring_script_builder.py (Script pour rendre le modèle)
├ template/
│ └ create_monitor.j2
├ script/ (Répertoire de destination de sortie du script)
├ json/ (Paramètres du moniteur Datadog Emplacement de stockage des fichiers JSON)
└ builder.py (Script principal)
create_monitor.j2
#!/bin/bash
api_key={{api_key}}
app_key={{app_key}}
curl -X POST -H "Content-type: application/json" \
-d '{{json}}' "https://app.datadoghq.com/api/v1/monitor?api_key=${api_key}&application_key=${app_key}"
Ce modèle lui-même est un modèle créé en modifiant partiellement exemple officiel de Datadog.
Clé d'application et clé API Datadog, Après cela, lisez les informations (fichier JSON) à intégrer dans le script et Rend et renvoie le modèle (create_monitor.j2).
monitoring_script_builder.py
from jinja2 import Template, Environment, FileSystemLoader
class MonitoringScriptBuilder():
def __init__(self, **kwargs):
env = Environment(loader=FileSystemLoader('./template/'))
self.template = env.get_template('create_monitor.j2')
def render(self, data, app_key, api_key):
"""
"""
data['app_key'] = app_key
data['api_key'] = api_key
rendered = self.template.render(data)
return rendered
Lors de la lecture du fichier json dans le répertoire json Lisez la clé API Datadog et la clé APP Datadog à partir des variables d'environnement.
builder.py
from module.monitoring_script_builder import MonitoringScriptBuilder
import os
import glob
import re
builder = MonitoringScriptBuilder()
#Lecture d'une partie du fichier JSON
file_list = glob.glob(os.path.join("json", "*.json"))
#Lire les informations clés
api_key = os.getenv('DD_API_KEY')
app_key = os.getenv('DD_APP_KEY')
#Générer un fichier à partir d'un modèle
for file in file_list:
f = open(file)
json = f.read()
data = {
'json': json,
}
rendered = builder.render(data, app_key, api_key)
print(rendered)
f.close()
file_out = file.replace("json", "")
#Ouvrez le fichier pour l'écriture
fout = open("script/" + file_out +"sh",'w')
fout.write(rendered)
fout.close()
Cette fois, nous utiliserons l'exemple suivant.
json/sample.json
{
"name": "{{host.name}}Cron est arrêté à.",
"type": "service check",
"query": "\"process.up\".over(\"process:cron\").by(\"host\",\"process\").last(2).count_by_status()",
"message": "{{host.name}}de{{process.name}}Est arrêté.@Destination de notification",
"options": {
"notify_audit": false,
"locked": false,
"timeout_h": 0,
"no_data_timeframe": 2,
"new_host_delay": 300,
"notify_no_data": false,
"renotify_interval": 10,
"escalation_message": "@Destination de notification\n\n10 minutes se sont écoulées,{{host.name}}de{{process.name}} \n est arrêté.",
"thresholds": {
"warning": 1,
"ok": 1,
"critical": 1
}
}
Définir comme ceci (les informations clés sont bien sûr factices)
Échantillon d'exécution
$ export APP_KEY="piyopiyo"
$ export API_KEY="hogehoge"
$ python ./builder.py
Si l'exécution réussit, sous le `répertoire de script
`
sample.sh devrait être sorti.
#### **`sample.Confirmation de sh`**
```bash
#!/bin/bash
api_key=hogehoge
app_key=piyopiyo
curl -X POST -H "Content-type: application/json" \
-d '{
"name": "{{host.name}}Cron est arrêté à.",
"type": "service check",
"query": "\"process.up\".over(\"process:cron\").by(\"host\",\"process\").last(2).count_by_status()",
"message": "{{host.name}}de{{process.name}}Est arrêté.@Destination de notification",
"options": {
"notify_audit": false,
"locked": false,
"timeout_h": 0,
"no_data_timeframe": 2,
"new_host_delay": 300,
"notify_no_data": false,
"renotify_interval": 10,
"escalation_message": "@Destination de notification\n\n10 minutes se sont écoulées,{{host.name}}de{{process.name}} \n est arrêté.",
"thresholds": {
"warning": 1,
"ok": 1,
"critical": 1
}
}' "https://app.datadoghq.com/api/v1/monitor?api_key=${api_key}&application_key=${app_key}"
--Grande quantité de paramètres du moniteur de pissenlit sashimi
Il est utilisé lorsque vous souhaitez saisir un grand nombre de paramètres de moniteur légèrement différents dans presque les mêmes conditions.
Lorsque le paramètre du moniteur est stocké dans json et que le paramètre du moniteur de Datadog est interrompu Utilisé pour la récupération. Ce point est différent car un script est généré pour chaque paramètre de moniteur unique. Il peut être utilisé.
--Diversion des paramètres du moniteur d'autres comptes
Lors de la migration des paramètres du moniteur utilisés par d'autres comptes Disponible via l'exportation json.
Dadadog API Reference Utilisation de base de Jinja2
Recommended Posts