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 duas distribuições do coletor:
- NRDOT: Distribuição New Relic do OpenTelemetry
- OTel Collector Contrib: Coletor OpenTelemetry padrão com componentes contribuídos pela comunidade
Opções de instalação
Escolha a distribuição do coletor que atenda às suas necessidades:
Importante
O suporte do NRDOT para monitoramento do Elasticsearch chegará em breve! Fique atento às atualizações!
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.
Dica
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.