• /
  • EnglishEspañolFrançais日本語한국어Português
  • Se connecterDémarrer

Cette traduction automatique est fournie pour votre commodité.

En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.

Créer un problème

Monitorer Elasticsearch auto-hébergé avec OpenTelemetry

Monitorez votre cluster Elasticsearch auto-hébergé en installant le collecteur OpenTelemetry directement sur des serveurs ou des machines virtuelles. New Relic propose des options de déploiement flexibles pour répondre à votre configuration d'infrastructure et à vos exigences de monitoring.

Vous pouvez choisir entre trois options de collecteur :

Options d'installation

Choisissez la distribution du collecteur qui correspond à vos besoins :

Avant de commencer

Avant de configurer le monitoring d'Elasticsearch avec NRDOT, assurez-vous d'avoir :

Collecteur NRDOT installé :

  • Vous devez avoir le collecteur NRDOT installé et en cours d'exécution en tant que service systemd sur votre hôte.

  • S’il n’est pas installé, suivez le guide d’installation officiel de NRDOT pour installer le collecteur à l’aide du gestionnaire de paquets (DEB/RPM) qui configure automatiquement le service systemd

    Privilèges d'accès requis :

  • Votre New Relic

  • Privilèges root ou sudo sur la machine hôte

  • Privilèges d'administration de cluster Elasticsearch avec le privilège de cluster monitor ou manage (voir la documentation sur les privilèges de sécurité Elasticsearch pour plus de détails)

    Configuration requise :

  • Elasticsearch version 7.16 ou supérieure - Cette intégration nécessite un cluster Elasticsearch moderne

  • Connectivité réseau - HTTPS sortant (port 443) vers le point de terminaison d'ingestion OTLPde New Relic

    Valeurs de configuration prêtes :

  • Point de terminaison Elasticsearch - L'URL de votre cluster Elasticsearch (par ex. http://localhost:9200)

  • Nom du cluster - Un identifiant unique pour votre cluster dans New Relic

Configurer le monitoring d'Elasticsearch

Une fois le collecteur NRDOT installé, remplacez le fichier de configuration par défaut du collecteur par la configuration du monitoring Elasticsearch. Cela activera la collecte des métriques Elasticsearch. Les métriques et les logs de l'hôte sont facultatifs et peuvent être ajoutés séparément.

Le fichier de configuration se trouve à : /etc/nrdot-collector/config.yaml

Conseil

Sauvegardez votre configuration par défaut : Avant de modifier le fichier de configuration, créez une copie de sauvegarde pour conserver les paramètres par défaut :

bash
$
sudo cp /etc/nrdot-collector/config.yaml /etc/nrdot-collector/config.yaml.backup

Pour configurer le collecteur :

  1. Ouvrez le fichier de configuration avec un éditeur de texte en utilisant les privilèges root ou sudo :

    bash
    $
    sudo nano /etc/nrdot-collector/config.yaml
  2. Supprimez tout le contenu existant et remplacez-le par la configuration suivante pour le monitoring d'Elasticsearch :

    Important

    Remplacez la valeur endpoint par le point de terminaison de votre cluster Elasticsearch et mettez à jour elasticsearch.cluster.name dans le bloc processeur avec un nom unique pour identifier votre cluster dans New Relic.

    receivers:
    elasticsearch:
    endpoint: "http://localhost:9200"
    collection_interval: 15s
    metrics:
    elasticsearch.os.cpu.usage:
    enabled: true
    elasticsearch.cluster.data_nodes:
    enabled: true
    elasticsearch.cluster.health:
    enabled: true
    elasticsearch.cluster.in_flight_fetch:
    enabled: true
    elasticsearch.cluster.nodes:
    enabled: true
    elasticsearch.cluster.pending_tasks:
    enabled: true
    elasticsearch.cluster.shards:
    enabled: true
    elasticsearch.cluster.state_update.time:
    enabled: true
    elasticsearch.index.documents:
    enabled: true
    elasticsearch.index.operations.merge.current:
    enabled: true
    elasticsearch.index.operations.time:
    enabled: true
    elasticsearch.node.cache.count:
    enabled: true
    elasticsearch.node.cache.evictions:
    enabled: true
    elasticsearch.node.cache.memory.usage:
    enabled: true
    elasticsearch.node.shards.size:
    enabled: true
    elasticsearch.node.cluster.io:
    enabled: true
    elasticsearch.node.documents:
    enabled: true
    elasticsearch.node.disk.io.read:
    enabled: true
    elasticsearch.node.disk.io.write:
    enabled: true
    elasticsearch.node.fs.disk.available:
    enabled: true
    elasticsearch.node.fs.disk.total:
    enabled: true
    elasticsearch.node.http.connections:
    enabled: true
    elasticsearch.node.ingest.documents.current:
    enabled: true
    elasticsearch.node.ingest.operations.failed:
    enabled: true
    elasticsearch.node.open_files:
    enabled: true
    elasticsearch.node.operations.completed:
    enabled: true
    elasticsearch.node.operations.current:
    enabled: true
    elasticsearch.node.operations.get.completed:
    enabled: true
    elasticsearch.node.operations.time:
    enabled: true
    elasticsearch.node.shards.reserved.size:
    enabled: true
    elasticsearch.index.shards.size:
    enabled: true
    elasticsearch.os.cpu.load_avg.1m:
    enabled: true
    elasticsearch.os.cpu.load_avg.5m:
    enabled: true
    elasticsearch.os.cpu.load_avg.15m:
    enabled: true
    elasticsearch.os.memory:
    enabled: true
    jvm.gc.collections.count:
    enabled: true
    jvm.gc.collections.elapsed:
    enabled: true
    jvm.memory.heap.max:
    enabled: true
    jvm.memory.heap.used:
    enabled: true
    jvm.memory.heap.utilization:
    enabled: true
    jvm.threads.count:
    enabled: true
    elasticsearch.index.segments.count:
    enabled: true
    elasticsearch.index.operations.completed:
    enabled: true
    elasticsearch.node.script.cache_evictions:
    enabled: false
    elasticsearch.node.cluster.connections:
    enabled: false
    elasticsearch.node.pipeline.ingest.documents.preprocessed:
    enabled: false
    elasticsearch.node.thread_pool.tasks.queued:
    enabled: false
    elasticsearch.cluster.published_states.full:
    enabled: false
    jvm.memory.pool.max:
    enabled: false
    elasticsearch.node.script.compilation_limit_triggered:
    enabled: false
    elasticsearch.node.shards.data_set.size:
    enabled: false
    elasticsearch.node.pipeline.ingest.documents.current:
    enabled: false
    elasticsearch.cluster.state_update.count:
    enabled: false
    elasticsearch.node.fs.disk.free:
    enabled: false
    jvm.memory.nonheap.used:
    enabled: false
    jvm.memory.pool.used:
    enabled: false
    elasticsearch.node.translog.size:
    enabled: false
    elasticsearch.node.thread_pool.threads:
    enabled: false
    elasticsearch.cluster.state_queue:
    enabled: false
    elasticsearch.node.translog.operations:
    enabled: false
    elasticsearch.memory.indexing_pressure:
    enabled: false
    elasticsearch.node.ingest.documents:
    enabled: false
    jvm.classes.loaded:
    enabled: false
    jvm.memory.heap.committed:
    enabled: false
    elasticsearch.breaker.memory.limit:
    enabled: false
    elasticsearch.indexing_pressure.memory.total.replica_rejections:
    enabled: false
    elasticsearch.breaker.memory.estimated:
    enabled: false
    elasticsearch.cluster.published_states.differences:
    enabled: false
    jvm.memory.nonheap.committed:
    enabled: false
    elasticsearch.node.translog.uncommitted.size:
    enabled: false
    elasticsearch.node.script.compilations:
    enabled: false
    elasticsearch.node.pipeline.ingest.operations.failed:
    enabled: false
    elasticsearch.indexing_pressure.memory.limit:
    enabled: false
    elasticsearch.breaker.tripped:
    enabled: false
    elasticsearch.indexing_pressure.memory.total.primary_rejections:
    enabled: false
    elasticsearch.node.thread_pool.tasks.finished:
    enabled: false
    processors:
    memory_limiter:
    check_interval: 60s
    limit_mib: ${env:NEW_RELIC_MEMORY_LIMIT_MIB:-100}
    cumulativetodelta: {}
    attributes/cluster_state_aggregate:
    include:
    match_type: strict
    metric_names:
    - elasticsearch.cluster.state_update.time
    actions:
    - key: type
    action: delete
    - key: state
    action: delete
    filter/critical_operations:
    metrics:
    datapoint:
    # Filters to keep only: query, index, get, merge
    # Affects only 4 metrics: *.operations.completed and *.operations.time
    # All other metrics pass through unchanged
    - 'attributes["operation"] == "query" or attributes["operation"] == "index" or attributes["operation"] == "get" or attributes["operation"] == "merge" or attributes["operation"] == nil'
    resource/cluster_name_override:
    attributes:
    - key: elasticsearch.cluster.name
    value: "<elasticsearch-cluster-name>"
    action: upsert
    resourcedetection:
    detectors: [ system ]
    system:
    resource_attributes:
    host.name:
    enabled: true
    host.id:
    enabled: true
    os.type:
    enabled: true
    batch:
    timeout: 30s
    send_batch_size: 2048
    send_batch_max_size: 4096
    attributes/cardinality_reduction:
    actions:
    - key: process.pid
    action: delete
    - key: process.parent_pid
    action: delete
    transform/metadata_nullify:
    metric_statements:
    - context: metric
    statements:
    - set(description, "")
    - set(unit, "")
    exporters:
    otlphttp:
    endpoint: ${env:NEWRELIC_OTLP_ENDPOINT}
    headers:
    api-key: ${env:NEWRELIC_LICENSE_KEY}
    compression: gzip
    timeout: 30s
    retry_on_failure:
    enabled: true
    initial_interval: 5s
    max_interval: 30s
    max_elapsed_time: 300s
    service:
    pipelines:
    metrics/elasticsearch:
    receivers: [elasticsearch]
    processors: [memory_limiter, resourcedetection, resource/cluster_name_override, attributes/cardinality_reduction, filter/critical_operations, attributes/cluster_state_aggregate, cumulativetodelta, transform/metadata_nullify, batch]
    exporters: [otlphttp]
  3. (Facultatif) Pour un Elasticsearch sécurisé avec authentification et SSL, modifiez la configuration du récepteur :

    receivers:
    elasticsearch:
    endpoint: "https://localhost:9200"
    username: "your_elasticsearch_username"
    password: "your_elasticsearch_password"
    tls:
    ca_file: "/etc/elasticsearch/certs/http_ca.crt"
    insecure_skip_verify: false
    collection_interval: 15s
  4. (Facultatif) Pour collecter les métriques de l'hôte, ajoutez le récepteur hostmetrics :

    receivers:
    hostmetrics:
    collection_interval: 60s
    scrapers:
    cpu:
    metrics:
    system.cpu.utilization: {enabled: true}
    system.cpu.time: {enabled: true}
    load:
    metrics:
    system.cpu.load_average.1m: {enabled: true}
    system.cpu.load_average.5m: {enabled: true}
    system.cpu.load_average.15m: {enabled: true}
    memory:
    metrics:
    system.memory.usage: {enabled: true}
    system.memory.utilization: {enabled: true}
    disk:
    metrics:
    system.disk.io: {enabled: true}
    system.disk.operations: {enabled: true}
    filesystem:
    metrics:
    system.filesystem.usage: {enabled: true}
    system.filesystem.utilization: {enabled: true}
    network:
    metrics:
    system.network.io: {enabled: true}
    system.network.packets: {enabled: true}
    process:
    metrics:
    process.cpu.utilization:
    enabled: true

    Et ajoutez aux pipelines de service :

    service:
    pipelines:
    metrics/host:
    receivers: [hostmetrics]
    processors: [memory_limiter, resourcedetection, batch]
    exporters: [otlphttp]
  5. (Facultatif) Pour collecter les logs Elasticsearch, ajoutez le récepteur filelog. Assurez-vous que l'utilisateur exécutant le service du collecteur (nrdot-collector) dispose d'un accès en lecture à vos fichiers de logs Elasticsearch :

    Si vous exécutez Elasticsearch sur Linux (hôte) :

    receivers:
    filelog:
    include:
    - /var/log/elasticsearch/elasticsearch.log
    - /var/log/elasticsearch/*.log

    Si vous exécutez Elasticsearch dans Docker :

    receivers:
    filelog:
    include:
    - /var/lib/docker/containers/*/*.log
    operators:
    - type: move
    from: attributes.log
    to: body

    Et ajoutez aux pipelines de service :

    service:
    pipelines:
    logs:
    receivers: [filelog]
    processors: [resource/cluster_name_override]
    exporters: [otlphttp]
  6. (Facultatif) Pour ajouter des tags de métadonnées personnalisés à vos métriques, utilisez le processeur resource/static_override :

    processors:
    resource/static_override:
    attributes:
    - key: env
    value: "production"
    action: upsert
    service:
    pipelines:
    metrics/elasticsearch:
    receivers: [elasticsearch]
    processors: [memory_limiter, resourcedetection, resource/cluster_name_override, resource/static_override, attributes/cardinality_reduction, cumulativetodelta, transform/metadata_nullify, batch]
    exporters: [otlphttp]
  7. Enregistrez le fichier de configuration.

  8. Définissez les variables d'environnement :

    Créer un répertoire de remplacement systemd :

    bash
    $
    sudo mkdir -p /etc/systemd/system/nrdot-collector.service.d

    Créez le fichier de configuration de l'environnement :

    bash
    $
    cat <<EOF | sudo tee /etc/systemd/system/nrdot-collector.service.d/environment.conf
    $
    [Service]
    $
    Environment="NEWRELIC_OTLP_ENDPOINT=https://otlp.nr-data.net:4318"
    $
    Environment="NEWRELIC_LICENSE_KEY=YOUR_LICENSE_KEY_HERE"
    $
    Environment="NEW_RELIC_MEMORY_LIMIT_MIB=100"
    $
    EOF

    Mettez à jour la configuration avec vos valeurs :

    • Remplacez https://otlp.nr-data.net:4318 par le point de terminaison de votre région
    • Remplacez YOUR_LICENSE_KEY_HERE par votre clé de licence New Relic
    • Remplacez 100 par la limite de mémoire souhaitée en MiB pour le collecteur (par défaut : 100 MiB). Ajustez en fonction des besoins de votre environnement
  9. Redémarrez le collecteur NRDOT pour appliquer les modifications :

    bash
    $
    sudo systemctl daemon-reload
    $
    sudo systemctl restart nrdot-collector.service

Vérifier la collecte de données

Vérifiez que le collecteur NRDOT est en cours d'exécution et collecte des données sans erreur :

  1. Vérifier le statut du service du collecteur :

    bash
    $
    sudo systemctl status nrdot-collector.service
  2. Monitorez les logs du collecteur pour détecter d'éventuelles erreurs :

    bash
    $
    sudo journalctl -u nrdot-collector.service -f

    Recherchez les connexions réussies à Elasticsearch et New Relic. Si vous rencontrez des erreurs, consultez le guide de dépannage.

Avant de commencer

Avant de configurer l'OTel Collector Contrib, assurez-vous d'avoir :

Privilèges d'accès requis :

  • Votre New Relic

  • Privilèges root ou sudo sur la machine hôte

  • Privilèges d'administration de cluster Elasticsearch avec le privilège de cluster monitor ou manage (voir la documentation sur les privilèges de sécurité Elasticsearch pour plus de détails)

    Configuration requise :

  • Elasticsearch version 7.16 ou supérieure - Cette intégration nécessite un cluster Elasticsearch moderne

  • Connectivité réseau - HTTPS sortant (port 443) vers le point de terminaison d'ingestion OTLPde New Relic

    Valeurs de configuration prêtes :

  • Point de terminaison Elasticsearch - L'URL de votre cluster Elasticsearch (par ex. http://localhost:9200)

  • Nom du cluster - Un identifiant unique pour votre cluster dans New Relic

    Important

    Vous devez avoir installé OpenTelemetry Collector Contrib sur votre hôte avant de continuer. Nous recommandons l'installation via les paquets officiels (.deb ou .rpm) pour garantir que l'unité de service systemd est créée correctement.

Configurer le monitoring d'Elasticsearch

Une fois l'OTel Collector Contrib installé, remplacez le fichier de configuration par défaut du collecteur par la configuration du monitoring Elasticsearch. Cela activera la collecte des métriques Elasticsearch. Les métriques et les logs de l'hôte sont facultatifs et peuvent être ajoutés séparément.

Le fichier de configuration se trouve à : /etc/otelcol-contrib/config.yaml

Conseil

Sauvegardez votre configuration par défaut : Avant de modifier le fichier de configuration, créez une copie de sauvegarde pour conserver les paramètres par défaut :

bash
$
sudo cp /etc/otelcol-contrib/config.yaml /etc/otelcol-contrib/config.yaml.backup

Pour configurer le collecteur :

  1. Ouvrez le fichier de configuration avec un éditeur de texte en utilisant les privilèges root ou sudo :

    bash
    $
    sudo nano /etc/otelcol-contrib/config.yaml
  2. Supprimez tout le contenu existant et remplacez-le par la configuration suivante pour le monitoring d'Elasticsearch :

    Important

    Remplacez la valeur endpoint par le point de terminaison de votre cluster Elasticsearch et mettez à jour elasticsearch.cluster.name dans le bloc processeur avec un nom unique pour identifier votre cluster dans New Relic.

    receivers:
    elasticsearch:
    endpoint: "http://localhost:9200"
    collection_interval: 15s
    metrics:
    elasticsearch.os.cpu.usage:
    enabled: true
    elasticsearch.cluster.data_nodes:
    enabled: true
    elasticsearch.cluster.health:
    enabled: true
    elasticsearch.cluster.in_flight_fetch:
    enabled: true
    elasticsearch.cluster.nodes:
    enabled: true
    elasticsearch.cluster.pending_tasks:
    enabled: true
    elasticsearch.cluster.shards:
    enabled: true
    elasticsearch.cluster.state_update.time:
    enabled: true
    elasticsearch.index.documents:
    enabled: true
    elasticsearch.index.operations.merge.current:
    enabled: true
    elasticsearch.index.operations.time:
    enabled: true
    elasticsearch.node.cache.count:
    enabled: true
    elasticsearch.node.cache.evictions:
    enabled: true
    elasticsearch.node.cache.memory.usage:
    enabled: true
    elasticsearch.node.shards.size:
    enabled: true
    elasticsearch.node.cluster.io:
    enabled: true
    elasticsearch.node.documents:
    enabled: true
    elasticsearch.node.disk.io.read:
    enabled: true
    elasticsearch.node.disk.io.write:
    enabled: true
    elasticsearch.node.fs.disk.available:
    enabled: true
    elasticsearch.node.fs.disk.total:
    enabled: true
    elasticsearch.node.http.connections:
    enabled: true
    elasticsearch.node.ingest.documents.current:
    enabled: true
    elasticsearch.node.ingest.operations.failed:
    enabled: true
    elasticsearch.node.open_files:
    enabled: true
    elasticsearch.node.operations.completed:
    enabled: true
    elasticsearch.node.operations.current:
    enabled: true
    elasticsearch.node.operations.get.completed:
    enabled: true
    elasticsearch.node.operations.time:
    enabled: true
    elasticsearch.node.shards.reserved.size:
    enabled: true
    elasticsearch.index.shards.size:
    enabled: true
    elasticsearch.os.cpu.load_avg.1m:
    enabled: true
    elasticsearch.os.cpu.load_avg.5m:
    enabled: true
    elasticsearch.os.cpu.load_avg.15m:
    enabled: true
    elasticsearch.os.memory:
    enabled: true
    jvm.gc.collections.count:
    enabled: true
    jvm.gc.collections.elapsed:
    enabled: true
    jvm.memory.heap.max:
    enabled: true
    jvm.memory.heap.used:
    enabled: true
    jvm.memory.heap.utilization:
    enabled: true
    jvm.threads.count:
    enabled: true
    elasticsearch.index.segments.count:
    enabled: true
    elasticsearch.index.operations.completed:
    enabled: true
    elasticsearch.node.script.cache_evictions:
    enabled: false
    elasticsearch.node.cluster.connections:
    enabled: false
    elasticsearch.node.pipeline.ingest.documents.preprocessed:
    enabled: false
    elasticsearch.node.thread_pool.tasks.queued:
    enabled: false
    elasticsearch.cluster.published_states.full:
    enabled: false
    jvm.memory.pool.max:
    enabled: false
    elasticsearch.node.script.compilation_limit_triggered:
    enabled: false
    elasticsearch.node.shards.data_set.size:
    enabled: false
    elasticsearch.node.pipeline.ingest.documents.current:
    enabled: false
    elasticsearch.cluster.state_update.count:
    enabled: false
    elasticsearch.node.fs.disk.free:
    enabled: false
    jvm.memory.nonheap.used:
    enabled: false
    jvm.memory.pool.used:
    enabled: false
    elasticsearch.node.translog.size:
    enabled: false
    elasticsearch.node.thread_pool.threads:
    enabled: false
    elasticsearch.cluster.state_queue:
    enabled: false
    elasticsearch.node.translog.operations:
    enabled: false
    elasticsearch.memory.indexing_pressure:
    enabled: false
    elasticsearch.node.ingest.documents:
    enabled: false
    jvm.classes.loaded:
    enabled: false
    jvm.memory.heap.committed:
    enabled: false
    elasticsearch.breaker.memory.limit:
    enabled: false
    elasticsearch.indexing_pressure.memory.total.replica_rejections:
    enabled: false
    elasticsearch.breaker.memory.estimated:
    enabled: false
    elasticsearch.cluster.published_states.differences:
    enabled: false
    jvm.memory.nonheap.committed:
    enabled: false
    elasticsearch.node.translog.uncommitted.size:
    enabled: false
    elasticsearch.node.script.compilations:
    enabled: false
    elasticsearch.node.pipeline.ingest.operations.failed:
    enabled: false
    elasticsearch.indexing_pressure.memory.limit:
    enabled: false
    elasticsearch.breaker.tripped:
    enabled: false
    elasticsearch.indexing_pressure.memory.total.primary_rejections:
    enabled: false
    elasticsearch.node.thread_pool.tasks.finished:
    enabled: false
    processors:
    memory_limiter:
    check_interval: 60s
    limit_mib: ${env:NEW_RELIC_MEMORY_LIMIT_MIB:-100}
    cumulativetodelta: {}
    resource/cluster_name_override:
    attributes:
    - key: elasticsearch.cluster.name
    value: "<elasticsearch-cluster-name>"
    action: upsert
    resourcedetection:
    detectors: [ system ]
    system:
    resource_attributes:
    host.name:
    enabled: true
    host.id:
    enabled: true
    os.type:
    enabled: true
    batch:
    timeout: 10s
    send_batch_size: 1024
    attributes/cardinality_reduction:
    actions:
    - key: process.pid
    action: delete
    - key: process.parent_pid
    action: delete
    transform/metadata_nullify:
    metric_statements:
    - context: metric
    statements:
    - set(description, "")
    - set(unit, "")
    exporters:
    otlphttp:
    endpoint: ${env:NEWRELIC_OTLP_ENDPOINT}
    headers:
    api-key: ${env:NEWRELIC_LICENSE_KEY}
    service:
    pipelines:
    metrics/elasticsearch:
    receivers: [elasticsearch]
    processors: [memory_limiter, resourcedetection, resource/cluster_name_override, attributes/cardinality_reduction, cumulativetodelta, transform/metadata_nullify, batch]
    exporters: [otlphttp]
  3. (Facultatif) Pour un Elasticsearch sécurisé avec authentification et SSL, modifiez la configuration du récepteur :

    receivers:
    elasticsearch:
    endpoint: "https://localhost:9200"
    username: "your_elasticsearch_username"
    password: "your_elasticsearch_password"
    tls:
    ca_file: "/etc/elasticsearch/certs/http_ca.crt"
    insecure_skip_verify: false
    collection_interval: 15s
  4. (Facultatif) Pour collecter les métriques de l'hôte, ajoutez le récepteur hostmetrics :

    receivers:
    hostmetrics:
    collection_interval: 60s
    scrapers:
    cpu:
    metrics:
    system.cpu.utilization: {enabled: true}
    system.cpu.time: {enabled: true}
    load:
    metrics:
    system.cpu.load_average.1m: {enabled: true}
    system.cpu.load_average.5m: {enabled: true}
    system.cpu.load_average.15m: {enabled: true}
    memory:
    metrics:
    system.memory.usage: {enabled: true}
    system.memory.utilization: {enabled: true}
    disk:
    metrics:
    system.disk.io: {enabled: true}
    system.disk.operations: {enabled: true}
    filesystem:
    metrics:
    system.filesystem.usage: {enabled: true}
    system.filesystem.utilization: {enabled: true}
    network:
    metrics:
    system.network.io: {enabled: true}
    system.network.packets: {enabled: true}
    process:
    metrics:
    process.cpu.utilization:
    enabled: true

    Et ajoutez aux pipelines de service :

    service:
    pipelines:
    metrics/host:
    receivers: [hostmetrics]
    processors: [memory_limiter, resourcedetection, batch]
    exporters: [otlphttp]
  5. (Facultatif) Pour collecter les logs Elasticsearch, ajoutez le récepteur filelog. Assurez-vous que l'utilisateur exécutant le service du collecteur (otelcol-contrib) dispose d'un accès en lecture à vos fichiers de logs Elasticsearch :

    Si vous exécutez Elasticsearch sur Linux (hôte) :

    receivers:
    filelog:
    include:
    - /var/log/elasticsearch/elasticsearch.log
    - /var/log/elasticsearch/*.log

    Si vous exécutez Elasticsearch dans Docker :

    receivers:
    filelog:
    include:
    - /var/lib/docker/containers/*/*.log
    operators:
    - type: move
    from: attributes.log
    to: body

    Et ajoutez aux pipelines de service :

    service:
    pipelines:
    logs:
    receivers: [filelog]
    processors: [resource/cluster_name_override]
    exporters: [otlphttp]
  6. (Facultatif) Pour ajouter des tags de métadonnées personnalisés à vos métriques, utilisez le processeur resource/static_override :

    processors:
    resource/static_override:
    attributes:
    - key: env
    value: "production"
    action: upsert
    service:
    pipelines:
    metrics/elasticsearch:
    receivers: [elasticsearch]
    processors: [memory_limiter, resourcedetection, resource/cluster_name_override, resource/static_override, attributes/cardinality_reduction, cumulativetodelta, transform/metadata_nullify, batch]
    exporters: [otlphttp]
  7. Enregistrez le fichier de configuration.

  8. Définissez les variables d'environnement :

    Créer un répertoire de remplacement systemd :

    bash
    $
    sudo mkdir -p /etc/systemd/system/otelcol-contrib.service.d

    Créez le fichier de configuration de l'environnement :

    bash
    $
    cat <<EOF | sudo tee /etc/systemd/system/otelcol-contrib.service.d/environment.conf
    $
    [Service]
    $
    Environment="NEWRELIC_OTLP_ENDPOINT=https://otlp.nr-data.net:4318"
    $
    Environment="NEWRELIC_LICENSE_KEY=YOUR_LICENSE_KEY_HERE"
    $
    Environment="NEW_RELIC_MEMORY_LIMIT_MIB=100"
    $
    EOF

    Mettez à jour la configuration avec vos valeurs :

    • Remplacez https://otlp.nr-data.net:4318 par le point de terminaison de votre région
    • Remplacez YOUR_LICENSE_KEY_HERE par votre clé de licence New Relic
    • Remplacez 100 par la limite de mémoire souhaitée en MiB pour le collecteur (par défaut : 100 MiB). Ajustez en fonction des besoins de votre environnement
  9. Redémarrez l'OTel Collector Contrib pour appliquer les modifications :

    bash
    $
    sudo systemctl daemon-reload
    $
    sudo systemctl restart otelcol-contrib.service

Vérifier la collecte de données

Vérifiez que l'OTel Collector Contrib est en cours d'exécution et collecte des données sans erreur :

  1. Vérifier le statut du service du collecteur :

    bash
    $
    sudo systemctl status otelcol-contrib.service
  2. Monitorez les logs du collecteur pour détecter d'éventuelles erreurs :

    bash
    $
    sudo journalctl -u otelcol-contrib.service -f

    Recherchez les connexions réussies à Elasticsearch et New Relic. Si vous rencontrez des erreurs, consultez le guide de dépannage.

Utilisez cette approche si vous avez déjà un exportateur Prometheus Elasticsearch en cours d’exécution dans votre environnement, ou si vous migrez depuis une stack de monitoring basée sur Prometheus.

Conseil

Recommandé : si vous n'avez pas déjà un exportateur Prometheus en cours d'exécution, utilisez plutôt les onglets NRDOT Collector ou OTel Collector Contrib. Ils se connectent directement à l'API Elasticsearch sans nécessiter de composant exportateur supplémentaire.

Installer et configurer l'exportateur Elasticsearch

L'exportateur Prometheus Elasticsearch expose les métriques Elasticsearch au format Prometheus sur le port 9114.

  1. Téléchargez la dernière sortie :

    bash
    $
    wget https://github.com/prometheus-community/elasticsearch_exporter/releases/download/v1.8.0/elasticsearch_exporter-1.8.0.linux-amd64.tar.gz
    $
    tar xzf elasticsearch_exporter-*.tar.gz
    $
    cd elasticsearch_exporter-*
  2. Démarrez l'exportateur (pointez-le vers votre instance Elasticsearch) :

    bash
    $
    ./elasticsearch_exporter --es.uri=http://localhost:9200

    Conseil

    Pour Elasticsearch sécurisé, utilisez : --es.uri=https://username:password@localhost:9200 --es.ssl-skip-verify

  3. Vérifiez que l'exportateur est en cours d'exécution :

    bash
    $
    curl http://localhost:9114/metrics | grep elasticsearch_cluster_health

    Vous devriez voir des métriques au format Prometheus comme elasticsearch_cluster_health_status, elasticsearch_cluster_health_number_of_nodes, etc.

Configurer le collecteur

Cette configuration fonctionne à la fois avec NRDOT et Collecteur Otel Contrib. Placez-le à l'emplacement de configuration approprié pour votre collecteur :

  • NRDOT : /etc/nrdot-collector/config.yaml

  • Collecteur OTel Contrib : /etc/otelcol-contrib/config.yaml

    Si vous n’avez pas encore installé de collecteur, suivez d’abord les étapes d’installation dans les onglets NRDOT Collector ou Collecteur Otel Contrib ci-dessus, puis revenez ici pour appliquer cette configuration.

    Cette configuration récupère les métriques de l’exportateur Elasticsearch et les traduit en noms de métrique compatibles avec OpenTelemetry qui alimentent le dashboard Elasticsearch de New Relic.

    Remplacez les valeurs suivantes dans la configuration :

  • <elasticsearch-cluster-name>: le nom de votre cluster Elasticsearch pour l'identification dans New Relic.

  • localhost:9114: l'adresse de votre elasticsearch_exporter en cas d'exécution sur un hôte ou un port différent.

Configurer les variables d'environnement

Créez une surcharge systemd pour injecter les variables d'environnement requises. Remplacez <collector-service> par le nom de votre service de collecteur (nrdot-collector ou otelcol-contrib) :

bash
$
sudo mkdir -p /etc/systemd/system/<collector-service>.service.d

Créez le fichier /etc/systemd/system/<collector-service>.service.d/environment.conf:

[Service]
Environment="NEWRELIC_OTLP_ENDPOINT=https://otlp.nr-data.net:4318"
Environment="NEWRELIC_LICENSE_KEY=YOUR_NEWRELIC_LICENSE_KEY"
Environment="NEW_RELIC_MEMORY_LIMIT_MIB=100"

Remplacez YOUR_NEWRELIC_LICENSE_KEY par votre .

Conseil

Pour les comptes UE, utilisez NEWRELIC_OTLP_ENDPOINT=https://otlp.eu01.nr-data.net:4318

Démarrer le collecteur

Remplacez <collector-service> par le nom de votre service de collecteur (nrdot-collector ou otelcol-contrib) :

bash
$
sudo systemctl daemon-reload
$
sudo systemctl enable <collector-service>
$
sudo systemctl restart <collector-service>

Vérifiez le statut du collecteur :

bash
$
sudo systemctl status <collector-service>
$
sudo journalctl -u <collector-service> -f

Vérifiez les données dans New Relic

Après quelques minutes, vérifiez que les données remontent vers New Relic :

FROM Metric SELECT count(*)
WHERE metricName LIKE 'elasticsearch.%'
AND elasticsearch.cluster.name = '<elasticsearch-cluster-name>'
SINCE 10 minutes ago

Conseil

Corréler APM avec Elasticsearch: pour connecter votre application APM et votre cluster Elasticsearch, incluez l'attribut de ressource es.cluster.name="your-cluster-name" dans vos métriques APM. Cela permet une visibilité inter-services et un dépannage plus rapide au sein de New Relic.

Afficher vos données Elasticsearch

Une fois que le collecteur est en cours d'exécution et envoie des données, vous pouvez explorer vos métriques Elasticsearch, créer des requêtes personnalisées et configurer des dashboards de monitoring dans New Relic.

Pour des informations détaillées sur l'accès à vos données, l'écriture de requêtes NRQL et la configuration d'alertes, consultez Rechercher et interroger les données Elasticsearch.

Dépannage

Si vous rencontrez des problèmes lors de l'installation ou si vous ne voyez pas de données dans New Relic, consultez notre guide de dépannage complet pour obtenir des solutions étape par étape aux problèmes courants.

Droits d'auteur © 2026 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.