Interroger la liste d'infrastructures via l'API

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'])