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 deux distributions de collecteur :
- NRDOT : Distribution New Relic d'OpenTelemetry
- OTel Collector Contrib : Collecteur OpenTelemetry standard avec des composants issus de la communauté
Options d'installation
Choisissez la distribution du collecteur qui correspond à vos besoins :
Important
La prise en charge du monitoring Elasticsearch par NRDOT arrive bientôt ! Restez à l'écoute pour les mises à jour !
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.
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.