Monitore seu cluster Elasticsearch auto-hospedado instalando o OpenTelemetry Collector diretamente em servidores ou máquinas virtuais. O New Relic oferece opções de implantação flexíveis para atender à configuração da sua infraestrutura e aos requisitos de monitoramento.
Você pode escolher entre três opções de coletor:
- NRDOT: Distribuição New Relic do OpenTelemetry
- OTel Collector Contrib: Coletor OpenTelemetry padrão com componentes contribuídos pela comunidade
- Receptor do Prometheus: para ambientes que já executam um exportador do Prometheus para Elasticsearch
Opções de instalação
Escolha a distribuição do coletor que atenda às suas necessidades:
Antes de você começar
Antes de configurar o monitoramento do Elasticsearch com o NRDOT, certifique-se de ter:
Coletor NRDOT instalado:
Você deve ter o coletor NRDOT instalado e em execução como um serviço systemd no seu host
Se não estiver instalado, siga o guia oficial de instalação do NRDOT para instalar o coletor usando o gerenciador de pacote (DEB/RPM) que configura o serviço systemd automaticamente
Privilégios de acesso necessários:
Seu New Relic
Privilégios de root ou sudo na máquina host
Privilégios de administrador de cluster do Elasticsearch com privilégio de cluster
monitoroumanage(consulte a documentação de privilégios de segurança do Elasticsearch para obter detalhes)Requisitos do sistema:
Elasticsearch versão 7.16 ou superior - Esta integração requer um cluster Elasticsearch moderno
Conectividade de rede - HTTPS de saída (porta 443) para o endpoint de ingestão OTLPda New Relic
Valores de configuração prontos:
Endpoint do Elasticsearch - Sua URL do cluster Elasticsearch (por exemplo,
http://localhost:9200)Nome do cluster - Um identificador exclusivo para seu cluster no New Relic
Configurar o monitoramento do Elasticsearch
Assim que o coletor NRDOT estiver instalado, substitua o arquivo de configuração padrão do coletor pela configuração de monitoramento do Elasticsearch. Isso habilitará a coleta de métricas do Elasticsearch. Métricas de host e logs são opcionais e podem ser adicionados separadamente.
O arquivo de configuração está localizado em: /etc/nrdot-collector/config.yaml
Dica
Faça backup da sua configuração padrão: Antes de modificar o arquivo de configuração, crie uma cópia de backup para preservar as configurações padrão:
$sudo cp /etc/nrdot-collector/config.yaml /etc/nrdot-collector/config.yaml.backupPara configurar o coletor:
Abra o arquivo de configuração com um editor de texto usando privilégios de root ou sudo:
bash$sudo nano /etc/nrdot-collector/config.yamlExclua todo o conteúdo existente e substitua-o pela seguinte configuração para monitoramento do Elasticsearch:
Importante
Substitua o valor
endpointpelo endpoint do seu cluster Elasticsearch e atualizeelasticsearch.cluster.nameno bloco do processador com um nome exclusivo para identificar seu cluster no 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](Opcional) Para Elasticsearch seguro com autenticação e SSL, modifique a configuração do receiver:
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(Opcional) Para coletar métricas do host, adicione o receptor 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: trueE adicione aos pipelines de serviço:
service:pipelines:metrics/host:receivers: [hostmetrics]processors: [memory_limiter, resourcedetection, batch]exporters: [otlphttp](Opcional) Para coletar logs do Elasticsearch, adicione o receiver filelog. Certifique-se de que o usuário que executa o serviço do coletor (nrdot-collector) tenha acesso de leitura aos seus arquivos de log do Elasticsearch:
Se estiver executando o Elasticsearch no Linux (Host):
receivers:filelog:include:- /var/log/elasticsearch/elasticsearch.log- /var/log/elasticsearch/*.logSe estiver executando o Elasticsearch no Docker:
receivers:filelog:include:- /var/lib/docker/containers/*/*.logoperators:- type: movefrom: attributes.logto: bodyE adicione aos pipelines de serviço:
service:pipelines:logs:receivers: [filelog]processors: [resource/cluster_name_override]exporters: [otlphttp](Opcional) Para adicionar tags de metadados personalizadas às suas métricas, use o processador
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]Salve o arquivo de configuração.
Defina as variáveis de ambiente:
Crie um diretório de substituição do systemd:
bash$sudo mkdir -p /etc/systemd/system/nrdot-collector.service.dCrie o arquivo de configuração do ambiente:
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"$EOFAtualize a configuração com seus valores:
- Substitua
https://otlp.nr-data.net:4318pelo endpoint da sua região - Substitua
YOUR_LICENSE_KEY_HEREpela sua chave de licença da New Relic - Substitua
100pelo limite de memória desejado em MiB para o coletor (padrão: 100 MiB). Ajuste com base nas necessidades do seu ambiente
- Substitua
Reinicie o coletor NRDOT para aplicar as alterações:
bash$sudo systemctl daemon-reload$sudo systemctl restart nrdot-collector.service
Verificar coleta de dados
Verifique se o coletor NRDOT está em execução e coletando dados sem erros:
Verifique o status do serviço do coletor:
bash$sudo systemctl status nrdot-collector.serviceMonitore os logs do coletor em busca de erros:
bash$sudo journalctl -u nrdot-collector.service -fProcure por conexões bem-sucedidas com o Elasticsearch e o New Relic. Se você encontrar erros, consulte o guia de solução de problemas.
Antes de você começar
Antes de configurar o OTel Collector Contrib, certifique-se de ter:
Privilégios de acesso necessários:
Seu New Relic
Privilégios de root ou sudo na máquina host
Privilégios de administrador de cluster do Elasticsearch com privilégio de cluster
monitoroumanage(consulte a documentação de privilégios de segurança do Elasticsearch para obter detalhes)Requisitos do sistema:
Elasticsearch versão 7.16 ou superior - Esta integração requer um cluster Elasticsearch moderno
Conectividade de rede - HTTPS de saída (porta 443) para o endpoint de ingestão OTLPda New Relic
Valores de configuração prontos:
Endpoint do Elasticsearch - Sua URL do cluster Elasticsearch (por exemplo,
http://localhost:9200)Nome do cluster - Um identificador exclusivo para seu cluster no New Relic
Importante
Você deve ter o OpenTelemetry Collector Contrib instalado em seu host antes de prosseguir. Recomendamos a instalação via pacotes oficiais (.deb ou .rpm) para garantir que a unidade de serviço systemd seja criada corretamente.
Configurar o monitoramento do Elasticsearch
Assim que o OTel Collector Contrib estiver instalado, substitua o arquivo de configuração padrão do coletor pela configuração de monitoramento do Elasticsearch. Isso habilitará a coleta de métricas do Elasticsearch. Métricas de host e logs são opcionais e podem ser adicionados separadamente.
O arquivo de configuração está localizado em: /etc/otelcol-contrib/config.yaml
Dica
Faça backup da sua configuração padrão: Antes de modificar o arquivo de configuração, crie uma cópia de backup para preservar as configurações padrão:
$sudo cp /etc/otelcol-contrib/config.yaml /etc/otelcol-contrib/config.yaml.backupPara configurar o coletor:
Abra o arquivo de configuração com um editor de texto usando privilégios de root ou sudo:
bash$sudo nano /etc/otelcol-contrib/config.yamlExclua todo o conteúdo existente e substitua-o pela seguinte configuração para monitoramento do Elasticsearch:
Importante
Substitua o valor
endpointpelo endpoint do seu cluster Elasticsearch e atualizeelasticsearch.cluster.nameno bloco do processador com um nome exclusivo para identificar seu cluster no 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](Opcional) Para Elasticsearch seguro com autenticação e SSL, modifique a configuração do receiver:
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(Opcional) Para coletar métricas do host, adicione o receptor 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: trueE adicione aos pipelines de serviço:
service:pipelines:metrics/host:receivers: [hostmetrics]processors: [memory_limiter, resourcedetection, batch]exporters: [otlphttp](Opcional) Para coletar logs do Elasticsearch, adicione o receiver filelog. Certifique-se de que o usuário que executa o serviço do coletor (otelcol-contrib) tenha acesso de leitura aos seus arquivos de log do Elasticsearch:
Se estiver executando o Elasticsearch no Linux (Host):
receivers:filelog:include:- /var/log/elasticsearch/elasticsearch.log- /var/log/elasticsearch/*.logSe estiver executando o Elasticsearch no Docker:
receivers:filelog:include:- /var/lib/docker/containers/*/*.logoperators:- type: movefrom: attributes.logto: bodyE adicione aos pipelines de serviço:
service:pipelines:logs:receivers: [filelog]processors: [resource/cluster_name_override]exporters: [otlphttp](Opcional) Para adicionar tags de metadados personalizadas às suas métricas, use o processador
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]Salve o arquivo de configuração.
Defina as variáveis de ambiente:
Crie um diretório de substituição do systemd:
bash$sudo mkdir -p /etc/systemd/system/otelcol-contrib.service.dCrie o arquivo de configuração do ambiente:
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"$EOFAtualize a configuração com seus valores:
- Substitua
https://otlp.nr-data.net:4318pelo endpoint da sua região - Substitua
YOUR_LICENSE_KEY_HEREpela sua chave de licença da New Relic - Substitua
100pelo limite de memória desejado em MiB para o coletor (padrão: 100 MiB). Ajuste com base nas necessidades do seu ambiente
- Substitua
Reinicie o OTel Collector Contrib para aplicar as alterações:
bash$sudo systemctl daemon-reload$sudo systemctl restart otelcol-contrib.service
Verificar coleta de dados
Verifique se o OTel Collector Contrib está em execução e coletando dados sem erros:
Verifique o status do serviço do coletor:
bash$sudo systemctl status otelcol-contrib.serviceMonitore os logs do coletor em busca de erros:
bash$sudo journalctl -u otelcol-contrib.service -fProcure por conexões bem-sucedidas com o Elasticsearch e o New Relic. Se você encontrar erros, consulte o guia de solução de problemas.
Use esta abordagem se você já tiver um Prometheus Elasticsearch exporter em execução no seu ambiente, ou se estiver migrando de uma stack de monitoramento baseada no Prometheus.
Dica
Recomendado: se você ainda não tiver um exportador do Prometheus em execução, use as guias NRDOT Collector ou OTel Collector Contrib em vez disso. Eles se conectam diretamente à API do Elasticsearch sem precisar de um componente exportador adicional.
Instale e configure o exportador do Elasticsearch
O exportador do Elasticsearch para Prometheus expõe métricas do Elasticsearch no formato Prometheus na porta 9114.
Baixe a versão mais recente:
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-*Inicie o exporter (aponte-o para sua instância Elasticsearch):
bash$./elasticsearch_exporter --es.uri=http://localhost:9200Dica
Para Elasticsearch seguro, use:
--es.uri=https://username:password@localhost:9200 --es.ssl-skip-verifyVerifique se o exportador está em execução:
bash$curl http://localhost:9114/metrics | grep elasticsearch_cluster_healthVocê deve ver métricas no formato Prometheus como
elasticsearch_cluster_health_status,elasticsearch_cluster_health_number_of_nodes, etc.
Configurar o coletor
Esta configuração funciona tanto com o NRDOT quanto com o OTel Collector Contrib. Coloque-o no local de configuração apropriado para o seu coletor:
NRDOT:
/etc/nrdot-collector/config.yamlOTel Collector Contrib:
/etc/otelcol-contrib/config.yamlSe você ainda não tem um coletor instalado, siga primeiro as etapas de instalação nas abas NRDOT Collector ou OTel Collector Contrib acima e depois retorne aqui para aplicar esta configuração.
Esta configuração coleta métricas do exportador do Elasticsearch e as traduz para nomes de métricas compatíveis com o OpenTelemetry que alimentam o dashboard do Elasticsearch da New Relic.
Substitua os seguintes valores na configuração:
<elasticsearch-cluster-name>: o nome do seu cluster do Elasticsearch para identificação no New Relic.localhost:9114: O endereço do seuelasticsearch_exporterse estiver sendo executado em um host ou porta diferente.
Configurar variáveis de ambiente
Crie um override do systemd para injetar as variáveis de ambiente necessárias. Substitua <collector-service> pelo nome do seu serviço de coletor (nrdot-collector ou otelcol-contrib):
$sudo mkdir -p /etc/systemd/system/<collector-service>.service.dCrie o arquivo /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"Substitua YOUR_NEWRELIC_LICENSE_KEY pelo seu .
Dica
Para contas da UE, use NEWRELIC_OTLP_ENDPOINT=https://otlp.eu01.nr-data.net:4318
Inicie o coletor
Substitua <collector-service> pelo nome do seu serviço de coletor (nrdot-collector ou otelcol-contrib):
$sudo systemctl daemon-reload$sudo systemctl enable <collector-service>$sudo systemctl restart <collector-service>Verifique o status do coletor:
$sudo systemctl status <collector-service>$sudo journalctl -u <collector-service> -fVerifique os dados no New Relic
Após alguns minutos, verifique se os dados estão fluindo para o New Relic:
FROM Metric SELECT count(*)WHERE metricName LIKE 'elasticsearch.%'AND elasticsearch.cluster.name = '<elasticsearch-cluster-name>'SINCE 10 minutes agoDica
Correlacione APM com Elasticsearch: Para conectar seu aplicativo APM e o cluster Elasticsearch, inclua o atributo de recurso es.cluster.name="your-cluster-name" em suas métricas APM. Isso permite a visibilidade entre serviços e uma solução de problemas mais rápida no New Relic.
Visualize seus dados do Elasticsearch
Assim que o coletor estiver em execução e enviando dados, você pode explorar suas métricas do Elasticsearch, criar consultas personalizadas e configurar dashboards de monitoramento no New Relic.
Para informações detalhadas sobre como acessar seus dados, escrever consultas NRQL e configurar alertas, consulte Encontrar e consultar dados do Elasticsearch.
Resolução de problemas
Se você encontrar problemas durante a instalação ou não vir dados na New Relic, consulte nosso guia de solução de problemas abrangente para obter soluções passo a passo para problemas comuns.