Logstash
Rapport de recherche Datadog : Bilan sur l'adoption de l'informatique sans serveur Rapport : Bilan sur l'adoption de l'informatique sans serveur

Logstash

Agent Check Check de l'Agent

Supported OS: Linux Mac OS Windows

Présentation

Recueillez des métriques du service Logstash en temps réel pour :

  • Visualiser et surveiller les états de Logstash
  • Être informé des événements Logstash

Implémentation

Le check Logstash n’est PAS inclus avec le paquet de l’Agent Datadog.

Installation

Si vous utilisez la version 6.8 ou ultérieure de l’Agent, suivez les instructions ci-dessous pour installer le check Logstash sur votre host. Consultez notre guide relatif à l’installation d’intégrations développées par la communauté pour installer des checks avec une version < 6.8 de l’Agent ou avec l’Agent Docker :

  1. Installez le kit de développement.

  2. Clonez le dépôt integrations-extras :

    git clone https://github.com/DataDog/integrations-extras.git.
    
  3. Mettez à jour votre configuration ddev avec le chemin integrations-extras/ :

    ddev config set extras ./integrations-extras
    
  4. Pour générer le paquet logstash, exécutez :

    ddev -e release build logstash
    
  5. Téléchargez et lancez l’Agent Datadog.

  6. Exécutez la commande suivante pour installer le wheel de l’intégration à l’aide de l’Agent :

    datadog-agent integration install -w <PATH_OF_LOGSTASH_ARTIFACT_>/<LOGSTASH_ARTIFACT_NAME>.whl
    
  7. Configurez votre intégration comme n’importe quelle autre intégration du paquet.

Configuration

  1. Modifiez le fichier logstash.d/conf.yaml dans le dossier conf.d/ à la racine du répertoire de configuration de votre Agent pour commencer à recueillir vos métriques et vos logs Logstash. Consultez le fichier d’exemple logstash.d/conf.yaml pour découvrir toutes les options disponibles.

  2. Redémarrez l’Agent.

Collecte de métriques

Ajoutez cette configuration à votre fichier conf.yaml pour commencer à recueillir vos métriques Logstash :

init_config:

instances:
  # L'URL sur laquelle Logstash fournit son API de surveillance.
  # Celle-ci sera utilisée pour récupérer diverses métriques runtime concernant Logstash.
  #
  - url: http://localhost:9600

Configurez-la de façon à spécifier votre serveur et votre port.

Consultez le fichier d’exemple conf.yaml pour découvrir toutes les options de configuration disponibles.

Enfin, redémarrez l’Agent pour commencer à envoyer vos métriques Logstash à Datadog.

Collecte de logs

Datadog possède un plug-in de sortie pour Logstash qui s’occupe d’envoyer vos logs à votre plateforme Datadog.

Pour installer ce plugin, exécutez la commande suivante :

  • logstash-plugin install logstash-output-datadog_logs

Configurez ensuite le plug-in datadog_logs avec votre clé d’API Datadog :

output {
    datadog_logs {
        api_key => "<CLÉ_API_DATADOG>"
    }
}

Par défaut, le plug-in est configuré de façon à envoyer des logs via HTTPS (port 443) l’aide de la compression gzip. Vous pouvez modifier ce comportement à l’aide des paramètres suivants :

  • use_http : définissez ce paramètre sur false pour utiliser la connexion TCP. Vous devez modifier les paramètres host et port en conséquence. Valeur par défaut : true.
  • use_compression : la compression est uniquement disponible pour les transmissions HTTP. Définissez ce paramètre sur false pour la désactiver. Valeur par défaut : true.
  • compression_level : définissez le niveau de compression via HTTP. Choisissez une valeur entre 1 (ratio le plus faible) et 9 (ratio le plus élevé). Valeur par défaut : 6.

Il est possible d’utiliser des paramètres supplémentaires pour changer l’endpoint utilisé afin de passer par un proxy :

  • host : le endpoint proxy pour les logs qui ne sont pas directement transmis à Datadog. Valeur par défaut : http-intake.logs.datadoghq.com.
  • port : le port proxy pour les logs qui ne sont pas directement transmis à Datadog. Valeur par défaut : 80.
  • ssl_port : le port utilisé pour les logs transmis via une connexion TCP/SSL sécurisée à Datadog. Valeur par défaut : 443.
  • use_ssl : indique à l’Agent d’initialiser une connexion TCP/SSL sécurisée vers Datadog. Valeur par défaut : true.
  • no_ssl_validation : désactive la validation du hostname SSL. Valeur par défaut : false.

Il peut également être utilisé pour l’envoi de logs au site européen de Datadog en définissant :

output {
   datadog_logs {
       api_key => "<CLÉ_API_DATADOG>"
       host => "http-intake.logs.datadoghq.eu"
   }
}
Ajouter des métadonnées à vos logs

Pour tirer pleinement parti de vos logs dans Datadog, il est important de leur associer les métadonnées appropriées, y compris le hostname et la source. Par défaut, le hostname et le timestamp sont normalement remappés comme il se doit grâce au processus de remappage pour les attributs réservés de Datadog. Pour vous assurer que le service est correctement remappé, ajoutez la valeur de son attribut à la liste de remappage du service.

Source

Configurez un filtre Logstash pour définir la source (nom d’intégration Datadog) sur vos logs.

filter {
  mutate {
    add_field => {
 "ddsource" => "<MA_VALEUR_SOURCE>"
       }
    }
 }

Cela déclenche la configuration automatique de l’intégration dans Datadog.

Custom tags

Les tags de host sont automatiquement appliqués à vos logs s’il existe un hostname correspondant dans votre liste d’infrastructures. Utilisez l’attribut ddtags pour ajouter des tags personnalisés à vos logs :

filter {
  mutate {
    add_field => {
        "ddtags" => "env:test,<KEY:VALUE>"
       }
    }
 }

Validation

Lancez la sous-commande status de l’Agent et cherchez logstash dans la section Checks.

Compatibilité

Le check Logstash est compatible avec les versions 5.x, 6.x et 7.x de Logstash. Il prend également en charge les nouvelles métriques multipipeline ajoutées dans la version 6.0. Ce check a été testé avec les versions 5.6.15, 6.3.0 et 7.0.0 de Logstash.

Données collectées

Métriques

logstash.process.open_file_descriptors
(gauge)
The number of open file descriptors used by this process.
logstash.process.peak_open_file_descriptors
(gauge)
The peak number of open file descriptors used by this process.
logstash.process.max_file_descriptors
(gauge)
The maximum number of file descriptors used by this process.
logstash.process.mem.total_virtual_in_bytes
(gauge)
Total virtual memory allocated to this process.
Shown as byte
logstash.process.cpu.total_in_millis
(gauge)
The CPU time in milliseconds.
Shown as millisecond
logstash.process.cpu.percent
(gauge)
CPU utilization in percentage.
Shown as percent
logstash.process.cpu.load_average.1m
(gauge)
The average CPU load over one minute.
logstash.process.cpu.load_average.5m
(gauge)
The average CPU load over five minutes
logstash.process.cpu.load_average.15m
(gauge)
The average CPU load over fifteen minutes.
logstash.jvm.threads.count
(gauge)
Number of threads used by the JVM.
Shown as thread
logstash.jvm.threads.peak_count
(gauge)
The peak number of threads used by JVM.
Shown as thread
logstash.jvm.mem.heap_used_percent
(gauge)
Total Java heap memory used.
Shown as percent
logstash.jvm.mem.heap_committed_in_bytes
(gauge)
Total Java heap memory commited.
Shown as byte
logstash.jvm.mem.heap_max_in_bytes
(gauge)
Maximum Java heap memory size.
Shown as byte
logstash.jvm.mem.heap_used_in_bytes
(gauge)
Total Java heap memory used.
Shown as byte
logstash.jvm.mem.non_heap_used_in_bytes
(gauge)
Total Java non-heap memory used.
Shown as byte
logstash.jvm.mem.non_heap_committed_in_bytes
(gauge)
Total Java non-heap memory committed.
Shown as byte
logstash.jvm.mem.pools.survivor.peak_used_in_bytes
(gauge)
The Java memory used in the Survivor space.
Shown as byte
logstash.jvm.mem.pools.survivor.used_in_bytes
(gauge)
The peak Java memory used in the Survivor space.
Shown as byte
logstash.jvm.mem.pools.survivor.peak_max_in_bytes
(gauge)
The peak maximum Java memory used in the Survivor space.
Shown as byte
logstash.jvm.mem.pools.survivor.max_in_bytes
(gauge)
The maximum Java memory used in the Survivor space.
Shown as byte
logstash.jvm.mem.pools.survivor.committed_in_bytes
(gauge)
The commited Java memory used in the Survivor space.
Shown as byte
logstash.jvm.mem.pools.old.peak_used_in_bytes
(gauge)
The peak Java memory used in the Old generation.
Shown as byte
logstash.jvm.mem.pools.old.used_in_bytes
(gauge)
The Java memory used in the Old generation.
Shown as byte
logstash.jvm.mem.pools.old.peak_max_in_bytes
(gauge)
The peak maximum Java memory used in the Old generation.
Shown as byte
logstash.jvm.mem.pools.old.max_in_bytes
(gauge)
The maximum Java memory used in the Old generation.
Shown as byte
logstash.jvm.mem.pools.old.committed_in_bytes
(gauge)
The commited Java memory used in the Old generation.
Shown as byte
logstash.jvm.mem.pools.young.peak_used_in_bytes
(gauge)
The peak Java memory used in the Young space.
Shown as byte
logstash.jvm.mem.pools.young.used_in_bytes
(gauge)
The Java memory used in the Young generation.
Shown as byte
logstash.jvm.mem.pools.young.peak_max_in_bytes
(gauge)
The peak maximum Java memory used in the Young generation.
Shown as byte
logstash.jvm.mem.pools.young.max_in_bytes
(gauge)
The maximum Java memory used in the Young generation.
Shown as byte
logstash.jvm.mem.pools.young.committed_in_bytes
(gauge)
The commited Java memory used in the Young generation.
Shown as byte
logstash.jvm.gc.collectors.old.collection_time_in_millis
(gauge)
Garbage collection time spent in the Old generation.
Shown as millisecond
logstash.jvm.gc.collectors.old.collection_count
(gauge)
Garbage collection count in the Old generation.
logstash.jvm.gc.collectors.young.collection_time_in_millis
(gauge)
Garbage collection time spent in the Young generation.
Shown as millisecond
logstash.jvm.gc.collectors.young.collection_count
(gauge)
Garbage collection time spent in the Young generation.
logstash.reloads.successes
(gauge)
Number of successful configuration reloads.
logstash.reloads.failures
(gauge)
Number of failed configuration reloads.
logstash.pipeline.events.duration_in_millis
(gauge)
Events duration in the pipeline.
Shown as millisecond
logstash.pipeline.events.in
(gauge)
Number of events into the pipeline.
logstash.pipeline.events.out
(gauge)
Number of events out from the pipeline.
logstash.pipeline.events.filtered
(gauge)
Number of events filtered.
logstash.pipeline.reloads.successes
(gauge)
Number of successful pipeline reloads.
logstash.pipeline.reloads.failures
(gauge)
Number of failed pipeline reloads.
logstash.pipeline.plugins.inputs.events.out
(gauge)
Number of events out from the input plugin.
logstash.pipeline.plugins.inputs.events.queue_push_duration_in_millis
(gauge)
Duration of queue push in the input plugin.
Shown as millisecond
logstash.pipeline.plugins.outputs.events.in
(gauge)
Number of events into the output plugin.
logstash.pipeline.plugins.outputs.events.out
(gauge)
Number of events out from the output plugin.
logstash.pipeline.plugins.outputs.events.duration_in_millis
(gauge)
Duration of events in the output plugin.
Shown as millisecond
logstash.pipeline.plugins.filters.events.in
(gauge)
Number of events into the filter plugin.
logstash.pipeline.plugins.filters.events.out
(gauge)
Number of events out from the filter plugin.
logstash.pipeline.plugins.filters.events.duration_in_millis
(gauge)
Duration of events in the filter plugin.
Shown as millisecond

Événements

Le check Logstash n’inclut aucun événement.

Checks de service

logstash.can_connect :

Renvoie Critical si l’Agent ne parvient pas à se connecter à Logstash pour recueillir des métriques. Si ce n’est pas le cas, renvoie OK.

Dépannage

Connexion impossible de l’Agent

    logstash
    -------
      - instance #0 [ERROR]: "('Connection aborted.', error(111, 'Connection refused'))"
      - Collected 0 metrics, 0 events & 1 service check

Vérifiez que le paramètre url dans conf.yaml est correctement configuré.

Besoin d’aide ? Contactez l’assistance Datadog.