Salvo indicação em contrário, as opções de configuração para a integração do Prometheus OpenMetrics com New Relic se aplicam aos ambientes Docker e Kubernetes . No mínimo, os seguintes valores de configuração são required:
Recomendação: Configure sua chave de licença do New Relic como uma variável de ambiente chamada LICENSE_KEY. Isso fornece um ambiente mais seguro, pois o New Relic pode carregar sua variável de ambiente a partir de um segredo de autenticação TLS mútuo.
Configurar nri-prometheus-latest.yaml
O arquivo de manifesto nri-prometheus-latest.yaml inclui o mapa nri-prometheus-cfg mostrando um exemplo de configuração. Use o arquivo de manifesto para configurar o parâmetro a seguir.
A seguir está um exemplo de arquivo de configuração que você pode salvar e modificar para atender às suas necessidades. Para obter mais informações, consulte a documentação sobre autenticação TLS mútua e conversão de PromQL em NRQL.
# The name of your cluster. It's important to match other New Relic products to relate the data.
cluster_name:"YOUR_CLUSTER_NAME"
# When standalone is set to false nri-prometheus requires an infrastructure agent to work and send data. Defaults to true
# standalone: true
# How often the integration should run. Defaults to 30s.
# scrape_duration: "30s"
# The HTTP client timeout when fetching data from targets. Defaults to 5s.
# scrape_timeout: "5s"
# How old must the entries used for calculating the counters delta be
# before the telemetry emitter expires them. Defaults to 5m.
# telemetry_emitter_delta_expiration_age: "5m"
# How often must the telemetry emitter check for expired delta entries.
Aqui estão alguns nomes e definições principais para o arquivo de configuração do Prometheus OpenMetrics.
Nome da chave
Descrição
cluster_name
Required.
O nome do cluster. Este valor será incluído como atributo clusterName para todas as métricas.
verbose
Booleano stringificado.
true (padrão): registra informações de depuração.
false: Registra apenas mensagem de erro.
targets
Configuração do endpoint estático a ser raspado pela integração. Ele contém uma lista de objetos. Para obter mais informações sobre essa estrutura, consulte a documentação sobre configuração de destino.
scrape_enabled_label
Kubernetes
Corda. A integração verificará se o pod e o serviço do Kubernetes estão anotados ou possuem um rótulo com esse valor para decidir se deve ser copiado.
Isto é particularmente útil quando você deseja limitar a quantidade de dados ignorando métricas ou incluindo métricas específicas que são enviadas para o New Relic. Como por padrão usamos o mesmo rótulo que o Prometheus usa para descobrir destinos que podem ser copiados, a maioria dos exportadores que você instala define esse rótulo automaticamente.
Para manter um controle refinado sobre o destino que você deseja que a integração extraia, você pode definir esta opção para algum outro valor (como newrelic/scrape) e, em seguida, adicionar a anotação ou rótulo newrelic/scrape: "true" aos seus objetos Kubernetes . Se ambos estiverem definidos, as anotações terão precedência sobre os rótulos.
Padrão: "prometheus.io/scrape"
scrape_duration
Com que frequência o raspador deve ser executado.
Para diminuir o uso de memória, aumente esse valor.
Para aumentar o uso de memória, diminua esse valor.
O impacto no uso da memória se deve à distribuição da busca de destino durante o intervalo de coleta para evitar consultar (e armazenar em buffer) todos os dados de uma vez.
O padrão é 30s. Os valores válidos incluem 1s, 15s, 30s, 1m, 5m, etc.
scrape_timeout
O tempo limite do cliente HTTP ao buscar dados do endpoint.
Padrão: 5s. Os valores válidos incluem 1s, 15s, 30s, 1m, 5m, etc.
worker_threads
Número de threads de trabalho usados para extrair destino. Pode ser aumentado em ambientes com alto número de destino ou destino com alta latência, mas pode aumentar o consumo de memória.
Padrão: 4. Não é recomendado usar mais de 10.
require_scrape_enabled_label_for_nodes
Kubernetes
Se os nós do Kubernetes precisam ou não de rótulos para serem copiados.
Para melhor auxiliar na visualização desses dados, são calculados percentuais com base no histograma métrico e enviados para New Relic. Os valores válidos incluem 50, 95 e 99.
emitter_proxy
Proxy utilizada pela integração no envio de métricas:
[scheme]://[domain]:[port]
Este proxy não será utilizado na busca de métrica do destino.
Por padrão, está vazio e nenhum proxy será usado.
emitter_ca_file
Certificado a ser adicionado à CA raiz que o emissor usará ao verificar os certificados do servidor. Se deixado em branco, o TLS usará o conjunto de CA raiz do host.
emitter_insecure_skip_verify
Se o emissor deve ignorar a verificação TLS ao enviar dados. Padrão: false.
disable_autodiscovery
Defina como verdadeiro para desabilitar a descoberta automática no cluster k8s. Pode ser útil ao executar o pod com uma conta de serviço com privilégios limitados. Padrão: false.
Configurar objetos na chave de destino
Se desejar que a chave de destino no arquivo de configuração contenha um ou mais objetos, use a seguinte estrutura na lista YAML:
Nome da chave
Descrição
description
Uma descrição para os URLs neste destino.
urls
Uma lista de strings com os URLs a serem copiados.
tls_config
Configuração de autenticação utilizada para envio de solicitações. Suporta TLS e TLS mútuo. Para obter mais informações, consulte a documentação sobre autenticação TLS mútua.
A integração Prometheus OpenMetrics da New Relic descobre automaticamente qual destino extrair. Para especificar a porta e o caminho endpoint a serem usados ao construir o destino, você pode usar as anotações ou rótulo prometheus.io/port e prometheus.io/path em seu pod e serviços Kubernetes . As anotações têm precedência sobre os rótulos.
Se prometheus.io/port não estiver presente, a integração tentará extrair cada port ou ContainerPort definido para o serviço.
Se prometheus.io/path não estiver presente, a integração será padronizada como /metrics.
Se um serviço não estiver em execução no caminho /my-metrics-path padrão, adicione um rótulo ao pod prometheus.io/path=my-metrics-path. Se o caminho para o endpoint da métrica for mais complexo e não puder ser um valor de rótulo válido (por exemplo, foo/bar), use anotações.
Neste exemplo você tem uma implantação no seu cluster, e o pod expõe a métrica do Prometheus na porta 8080 e no caminho my-metrics.
Nos metadados PodSpec do manifesto de implantação, defina os rótulos prometheus.io/port: "8080" e prometheus.io/path: "my-metrics". Quando a integração tentar recuperar a métrica do seu pod, ela enviará uma solicitação para http://<pod-ip>:8080/my-metrics.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas:2
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
prometheus.io/scrape:"true"
prometheus.io/port:"8080"
prometheus.io/path:"my-metrics"
Comportamento de serviços e raspagem de endpoint
Por padrão, os serviços são copiados diretamente em vez do endpoint subjacente, já que scrape_services está definido como true e scrape_endpoints como false.
Para alterar esse comportamento, defina scrape_endpoints como true configurando Prometheus OpenMetrics integrations para extrair o endpoint subjacente, como o servidor Prometheus faz nativamente, em vez de diretamente os serviços.
Observe que dependendo do número de endpoints por trás dos serviços no cluster a carga e os dados ingeridos podem aumentar consideravelmente, monitor e, se necessário, aumentar os requisitos de recursos.
Além disso, mesmo que seja possível definir scrape_services e scrape_endpoints como verdadeiros para garantir a retrocompatibilidade, isso levaria à duplicação de dados.
Recarregue a configuração
A integração do Prometheus OpenMetrics does not recarrega automaticamente a configuração quando você faz alterações no arquivo de configuração.
Docker
Para recarregar a configuração, reinicie o contêiner que executa a integração:
bash
$
docker restart nri-prometheus
Kubernetes
Para recarregar a configuração, reinicie a integração. Recomendação: Reduza a implantação para zero réplicas e, em seguida, reduza-a para uma réplica: