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 :
- NRDOT : Distribution New Relic d'OpenTelemetry
- OTel Collector Contrib : Collecteur OpenTelemetry standard avec des composants issus de la communauté
- Récepteur Prometheus : pour les environnements exécutant déjà un exportateur Prometheus Elasticsearch
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
monitoroumanage(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 :
$sudo cp /etc/nrdot-collector/config.yaml /etc/nrdot-collector/config.yaml.backupPour configurer le collecteur :
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.yamlSupprimez tout le contenu existant et remplacez-le par la configuration suivante pour le monitoring d'Elasticsearch :
Important
Remplacez la valeur
endpointpar le point de terminaison de votre cluster Elasticsearch et mettez à jourelasticsearch.cluster.namedans le bloc processeur avec un nom unique pour identifier votre cluster dans New Relic.receivers:elasticsearch:endpoint: "http://localhost:9200"collection_interval: 15smetrics:elasticsearch.os.cpu.usage:enabled: trueelasticsearch.cluster.data_nodes:enabled: trueelasticsearch.cluster.health:enabled: trueelasticsearch.cluster.in_flight_fetch:enabled: trueelasticsearch.cluster.nodes:enabled: trueelasticsearch.cluster.pending_tasks:enabled: trueelasticsearch.cluster.shards:enabled: trueelasticsearch.cluster.state_update.time:enabled: trueelasticsearch.index.documents:enabled: trueelasticsearch.index.operations.merge.current:enabled: trueelasticsearch.index.operations.time:enabled: trueelasticsearch.node.cache.count:enabled: trueelasticsearch.node.cache.evictions:enabled: trueelasticsearch.node.cache.memory.usage:enabled: trueelasticsearch.node.shards.size:enabled: trueelasticsearch.node.cluster.io:enabled: trueelasticsearch.node.documents:enabled: trueelasticsearch.node.disk.io.read:enabled: trueelasticsearch.node.disk.io.write:enabled: trueelasticsearch.node.fs.disk.available:enabled: trueelasticsearch.node.fs.disk.total:enabled: trueelasticsearch.node.http.connections:enabled: trueelasticsearch.node.ingest.documents.current:enabled: trueelasticsearch.node.ingest.operations.failed:enabled: trueelasticsearch.node.open_files:enabled: trueelasticsearch.node.operations.completed:enabled: trueelasticsearch.node.operations.current:enabled: trueelasticsearch.node.operations.get.completed:enabled: trueelasticsearch.node.operations.time:enabled: trueelasticsearch.node.shards.reserved.size:enabled: trueelasticsearch.index.shards.size:enabled: trueelasticsearch.os.cpu.load_avg.1m:enabled: trueelasticsearch.os.cpu.load_avg.5m:enabled: trueelasticsearch.os.cpu.load_avg.15m:enabled: trueelasticsearch.os.memory:enabled: truejvm.gc.collections.count:enabled: truejvm.gc.collections.elapsed:enabled: truejvm.memory.heap.max:enabled: truejvm.memory.heap.used:enabled: truejvm.memory.heap.utilization:enabled: truejvm.threads.count:enabled: trueelasticsearch.index.segments.count:enabled: trueelasticsearch.index.operations.completed:enabled: trueelasticsearch.node.script.cache_evictions:enabled: falseelasticsearch.node.cluster.connections:enabled: falseelasticsearch.node.pipeline.ingest.documents.preprocessed:enabled: falseelasticsearch.node.thread_pool.tasks.queued:enabled: falseelasticsearch.cluster.published_states.full:enabled: falsejvm.memory.pool.max:enabled: falseelasticsearch.node.script.compilation_limit_triggered:enabled: falseelasticsearch.node.shards.data_set.size:enabled: falseelasticsearch.node.pipeline.ingest.documents.current:enabled: falseelasticsearch.cluster.state_update.count:enabled: falseelasticsearch.node.fs.disk.free:enabled: falsejvm.memory.nonheap.used:enabled: falsejvm.memory.pool.used:enabled: falseelasticsearch.node.translog.size:enabled: falseelasticsearch.node.thread_pool.threads:enabled: falseelasticsearch.cluster.state_queue:enabled: falseelasticsearch.node.translog.operations:enabled: falseelasticsearch.memory.indexing_pressure:enabled: falseelasticsearch.node.ingest.documents:enabled: falsejvm.classes.loaded:enabled: falsejvm.memory.heap.committed:enabled: falseelasticsearch.breaker.memory.limit:enabled: falseelasticsearch.indexing_pressure.memory.total.replica_rejections:enabled: falseelasticsearch.breaker.memory.estimated:enabled: falseelasticsearch.cluster.published_states.differences:enabled: falsejvm.memory.nonheap.committed:enabled: falseelasticsearch.node.translog.uncommitted.size:enabled: falseelasticsearch.node.script.compilations:enabled: falseelasticsearch.node.pipeline.ingest.operations.failed:enabled: falseelasticsearch.indexing_pressure.memory.limit:enabled: falseelasticsearch.breaker.tripped:enabled: falseelasticsearch.indexing_pressure.memory.total.primary_rejections:enabled: falseelasticsearch.node.thread_pool.tasks.finished:enabled: falseprocessors:memory_limiter:check_interval: 60slimit_mib: ${env:NEW_RELIC_MEMORY_LIMIT_MIB:-100}cumulativetodelta: {}attributes/cluster_state_aggregate:include:match_type: strictmetric_names:- elasticsearch.cluster.state_update.timeactions:- key: typeaction: delete- key: stateaction: deletefilter/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.namevalue: "<elasticsearch-cluster-name>"action: upsertresourcedetection:detectors: [ system ]system:resource_attributes:host.name:enabled: truehost.id:enabled: trueos.type:enabled: truebatch:timeout: 30ssend_batch_size: 2048send_batch_max_size: 4096attributes/cardinality_reduction:actions:- key: process.pidaction: delete- key: process.parent_pidaction: deletetransform/metadata_nullify:metric_statements:- context: metricstatements:- set(description, "")- set(unit, "")exporters:otlphttp:endpoint: ${env:NEWRELIC_OTLP_ENDPOINT}headers:api-key: ${env:NEWRELIC_LICENSE_KEY}compression: gziptimeout: 30sretry_on_failure:enabled: trueinitial_interval: 5smax_interval: 30smax_elapsed_time: 300sservice: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](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: falsecollection_interval: 15s(Facultatif) Pour collecter les métriques de l'hôte, ajoutez le récepteur hostmetrics :
receivers:hostmetrics:collection_interval: 60sscrapers: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: trueEt ajoutez aux pipelines de service :
service:pipelines:metrics/host:receivers: [hostmetrics]processors: [memory_limiter, resourcedetection, batch]exporters: [otlphttp](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/*.logSi vous exécutez Elasticsearch dans Docker :
receivers:filelog:include:- /var/lib/docker/containers/*/*.logoperators:- type: movefrom: attributes.logto: bodyEt ajoutez aux pipelines de service :
service:pipelines:logs:receivers: [filelog]processors: [resource/cluster_name_override]exporters: [otlphttp](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: envvalue: "production"action: upsertservice: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]Enregistrez le fichier de configuration.
Définissez les variables d'environnement :
Créer un répertoire de remplacement systemd :
bash$sudo mkdir -p /etc/systemd/system/nrdot-collector.service.dCré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"$EOFMettez à jour la configuration avec vos valeurs :
- Remplacez
https://otlp.nr-data.net:4318par le point de terminaison de votre région - Remplacez
YOUR_LICENSE_KEY_HEREpar votre clé de licence New Relic - Remplacez
100par 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
- Remplacez
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 :
Vérifier le statut du service du collecteur :
bash$sudo systemctl status nrdot-collector.serviceMonitorez les logs du collecteur pour détecter d'éventuelles erreurs :
bash$sudo journalctl -u nrdot-collector.service -fRecherchez 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
monitoroumanage(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 :
$sudo cp /etc/otelcol-contrib/config.yaml /etc/otelcol-contrib/config.yaml.backupPour configurer le collecteur :
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.yamlSupprimez tout le contenu existant et remplacez-le par la configuration suivante pour le monitoring d'Elasticsearch :
Important
Remplacez la valeur
endpointpar le point de terminaison de votre cluster Elasticsearch et mettez à jourelasticsearch.cluster.namedans le bloc processeur avec un nom unique pour identifier votre cluster dans New Relic.receivers:elasticsearch:endpoint: "http://localhost:9200"collection_interval: 15smetrics:elasticsearch.os.cpu.usage:enabled: trueelasticsearch.cluster.data_nodes:enabled: trueelasticsearch.cluster.health:enabled: trueelasticsearch.cluster.in_flight_fetch:enabled: trueelasticsearch.cluster.nodes:enabled: trueelasticsearch.cluster.pending_tasks:enabled: trueelasticsearch.cluster.shards:enabled: trueelasticsearch.cluster.state_update.time:enabled: trueelasticsearch.index.documents:enabled: trueelasticsearch.index.operations.merge.current:enabled: trueelasticsearch.index.operations.time:enabled: trueelasticsearch.node.cache.count:enabled: trueelasticsearch.node.cache.evictions:enabled: trueelasticsearch.node.cache.memory.usage:enabled: trueelasticsearch.node.shards.size:enabled: trueelasticsearch.node.cluster.io:enabled: trueelasticsearch.node.documents:enabled: trueelasticsearch.node.disk.io.read:enabled: trueelasticsearch.node.disk.io.write:enabled: trueelasticsearch.node.fs.disk.available:enabled: trueelasticsearch.node.fs.disk.total:enabled: trueelasticsearch.node.http.connections:enabled: trueelasticsearch.node.ingest.documents.current:enabled: trueelasticsearch.node.ingest.operations.failed:enabled: trueelasticsearch.node.open_files:enabled: trueelasticsearch.node.operations.completed:enabled: trueelasticsearch.node.operations.current:enabled: trueelasticsearch.node.operations.get.completed:enabled: trueelasticsearch.node.operations.time:enabled: trueelasticsearch.node.shards.reserved.size:enabled: trueelasticsearch.index.shards.size:enabled: trueelasticsearch.os.cpu.load_avg.1m:enabled: trueelasticsearch.os.cpu.load_avg.5m:enabled: trueelasticsearch.os.cpu.load_avg.15m:enabled: trueelasticsearch.os.memory:enabled: truejvm.gc.collections.count:enabled: truejvm.gc.collections.elapsed:enabled: truejvm.memory.heap.max:enabled: truejvm.memory.heap.used:enabled: truejvm.memory.heap.utilization:enabled: truejvm.threads.count:enabled: trueelasticsearch.index.segments.count:enabled: trueelasticsearch.index.operations.completed:enabled: trueelasticsearch.node.script.cache_evictions:enabled: falseelasticsearch.node.cluster.connections:enabled: falseelasticsearch.node.pipeline.ingest.documents.preprocessed:enabled: falseelasticsearch.node.thread_pool.tasks.queued:enabled: falseelasticsearch.cluster.published_states.full:enabled: falsejvm.memory.pool.max:enabled: falseelasticsearch.node.script.compilation_limit_triggered:enabled: falseelasticsearch.node.shards.data_set.size:enabled: falseelasticsearch.node.pipeline.ingest.documents.current:enabled: falseelasticsearch.cluster.state_update.count:enabled: falseelasticsearch.node.fs.disk.free:enabled: falsejvm.memory.nonheap.used:enabled: falsejvm.memory.pool.used:enabled: falseelasticsearch.node.translog.size:enabled: falseelasticsearch.node.thread_pool.threads:enabled: falseelasticsearch.cluster.state_queue:enabled: falseelasticsearch.node.translog.operations:enabled: falseelasticsearch.memory.indexing_pressure:enabled: falseelasticsearch.node.ingest.documents:enabled: falsejvm.classes.loaded:enabled: falsejvm.memory.heap.committed:enabled: falseelasticsearch.breaker.memory.limit:enabled: falseelasticsearch.indexing_pressure.memory.total.replica_rejections:enabled: falseelasticsearch.breaker.memory.estimated:enabled: falseelasticsearch.cluster.published_states.differences:enabled: falsejvm.memory.nonheap.committed:enabled: falseelasticsearch.node.translog.uncommitted.size:enabled: falseelasticsearch.node.script.compilations:enabled: falseelasticsearch.node.pipeline.ingest.operations.failed:enabled: falseelasticsearch.indexing_pressure.memory.limit:enabled: falseelasticsearch.breaker.tripped:enabled: falseelasticsearch.indexing_pressure.memory.total.primary_rejections:enabled: falseelasticsearch.node.thread_pool.tasks.finished:enabled: falseprocessors:memory_limiter:check_interval: 60slimit_mib: ${env:NEW_RELIC_MEMORY_LIMIT_MIB:-100}cumulativetodelta: {}resource/cluster_name_override:attributes:- key: elasticsearch.cluster.namevalue: "<elasticsearch-cluster-name>"action: upsertresourcedetection:detectors: [ system ]system:resource_attributes:host.name:enabled: truehost.id:enabled: trueos.type:enabled: truebatch:timeout: 10ssend_batch_size: 1024attributes/cardinality_reduction:actions:- key: process.pidaction: delete- key: process.parent_pidaction: deletetransform/metadata_nullify:metric_statements:- context: metricstatements:- 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](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: falsecollection_interval: 15s(Facultatif) Pour collecter les métriques de l'hôte, ajoutez le récepteur hostmetrics :
receivers:hostmetrics:collection_interval: 60sscrapers: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: trueEt ajoutez aux pipelines de service :
service:pipelines:metrics/host:receivers: [hostmetrics]processors: [memory_limiter, resourcedetection, batch]exporters: [otlphttp](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/*.logSi vous exécutez Elasticsearch dans Docker :
receivers:filelog:include:- /var/lib/docker/containers/*/*.logoperators:- type: movefrom: attributes.logto: bodyEt ajoutez aux pipelines de service :
service:pipelines:logs:receivers: [filelog]processors: [resource/cluster_name_override]exporters: [otlphttp](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: envvalue: "production"action: upsertservice: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]Enregistrez le fichier de configuration.
Définissez les variables d'environnement :
Créer un répertoire de remplacement systemd :
bash$sudo mkdir -p /etc/systemd/system/otelcol-contrib.service.dCré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"$EOFMettez à jour la configuration avec vos valeurs :
- Remplacez
https://otlp.nr-data.net:4318par le point de terminaison de votre région - Remplacez
YOUR_LICENSE_KEY_HEREpar votre clé de licence New Relic - Remplacez
100par 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
- Remplacez
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 :
Vérifier le statut du service du collecteur :
bash$sudo systemctl status otelcol-contrib.serviceMonitorez les logs du collecteur pour détecter d'éventuelles erreurs :
bash$sudo journalctl -u otelcol-contrib.service -fRecherchez 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.
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-*Démarrez l'exportateur (pointez-le vers votre instance Elasticsearch) :
bash$./elasticsearch_exporter --es.uri=http://localhost:9200Conseil
Pour Elasticsearch sécurisé, utilisez :
--es.uri=https://username:password@localhost:9200 --es.ssl-skip-verifyVérifiez que l'exportateur est en cours d'exécution :
bash$curl http://localhost:9114/metrics | grep elasticsearch_cluster_healthVous 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.yamlCollecteur OTel Contrib :
/etc/otelcol-contrib/config.yamlSi 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 votreelasticsearch_exporteren 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) :
$sudo mkdir -p /etc/systemd/system/<collector-service>.service.dCré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) :
$sudo systemctl daemon-reload$sudo systemctl enable <collector-service>$sudo systemctl restart <collector-service>Vérifiez le statut du collecteur :
$sudo systemctl status <collector-service>$sudo journalctl -u <collector-service> -fVé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 agoConseil
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.