Interroger la liste d'infrastructures via l'API
Si vous êtes un utilisateur plus expérimenté de Datadog, vous avez la possibilité d’utiliser l’API pour interroger les données générales sur votre infrastructure, c’est-à-dire les données qui se trouvent dans votre liste d’infrastructures ou dans la Hostmap. Pour ce faire, effectuez une requête GET via l’endpoint api/v1/hosts.
Exemples
Si, par exemple, vous souhaitez interroger l’ensemble des données de vos hosts associés aux tags env:prod
et role:elasticsearch
, vous pouvez effectuer l’appel d’API suivant avec la bibliothèque requests
de Python :
import requests
s = requests.session()
s.params = {
'api_key': '<CLÉ_API_DATADOG>',
'application_key': '<VOTRE_CLÉ_APPLICATION>',
'filter': 'env:prod,role:elasticsearch'
}
infra_link = 'https://app.datadoghq.com/api/v1/hosts'
infra_content = s.request(
method='GET', url=infra_link, params=s.params
).json()
Pour exécuter l’itération de tous les hosts de votre infrastructure, utilisez la séquence suivante :
import requests
def iterate_all_hosts():
s = requests.session()
s.params = {
'api_key': '<CLÉ_API_DATADOG>',
'application_key': '<VOTRE_CLÉ_APPLICATION>',
'include_muted_hosts_data': False,
'include_hosts_metadata': False,
'start': 0
}
infra_link = 'https://app.datadoghq.com/api/v1/hosts?count=1000'
while True:
response = s.request(method='GET', url=infra_link, params=s.params).json()
for host in response['host_list']:
yield host
if response['total_returned'] == 0:
return
s.params['start'] += response['total_returned']
for host in iterate_all_hosts():
print(host['host_name'])