Menu Docs
Página inicial do Docs
/
MongoDB Atlas
/ /

Integrar com Prometeus

Nesta página

  • Limitações
  • Pré-requisitos
  • Procedimento
  • Configurações de exemplo
  • Métricas de desempenho disponíveis para Prometeus
  • Rótulos de métrica do MongoDB
  • Métricas de informação do MongoDB
  • Métricas de hardware
  • Rótulos de métrica de hardware

Prometheus coleta métricas de destinos configurados em determinados intervalos, avalia expressões de regras, exibe os resultados e pode acionar alertas quando observa condições específicas.

Nossa integração permite que você configure o Atlas para enviar dados métricos sobre seu sistema para o Prometeus instância.

O Atlas for Government não suporta o Prometeus integração.

  • A integração do Prometheus está disponível somente em clusters do M10+.

  • Tenha uma instância funcional do Prometheus. Para configurar uma instância de trabalho, consulte o Guia de Instalação.

  • Adicione o IP do dispositivo que hospeda sua instância do Prometheus àlista de acesso IPdo .

    Observação

    Se você adicionar 0.0.0.0/0 à Lista de acesso IP, que permite o acesso ao cluster de qualquer lugar na Internet pública, o Atlas desativará a integração com o Prometheus.

    Se o 0.0.0.0/0 já estiver na lista de acesso de IP, o Atlas impedirá você de configurar a integração Prometheus.

  • (Opcional) Usar Grafana para visualizar suas métricas de Prometeus.

Para configurar uma integração do Atlas com Prometheus:

1
  1. Se ainda não estiver exibido, selecione a organização que contém o projeto desejado no Menu Organizations na barra de navegação.

  2. Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.

  3. Ao lado do menu Projects, expanda o menu Options e clique em Integrations.

    A página Integrações de projeto é exibida.

2
3

As credenciais de autenticação Prometheus são projetadas especificamente para uso com a integração Prometheus no MongoDB Atlas. O Atlas usa essas credenciais apenas para acessar o endpoint de descoberta do Prometheus e raspar as métricas do Prometheus dos nós do Atlas. Eles são estritamente limitados a essas funções e não têm permissões ou recursos adicionais além de acessar e coletar dados de monitoramento.

Importante

Copie seu nome de usuário e senha em um local seguro. Você não pode acessar a senha depois de sair dessa tela.

4
Método de descoberta
Descrição

Este método requer Prometheus v2.28 e posteriores. Ele gera automaticamente o scrape_config que é parte do seu arquivo de configuração para descobrir alvos em um endpoint HTTP.

  1. Adicione o IP do dispositivo que hospeda sua instância do Prometheus à lista de acesso IP. Isso concede ao Prometheus o acesso à rede para raspar métricas de seus clusters do Atlas. Certifique-se de que 0.0.0.0/0 não esteja na lista. A presença dessa entrada desativa a integração.

  2. Na etapa Choose Discovery API Target Type da IU do Atlas, faça uma das seguintes tarefas:

    • Selecione Public Internet Targets.

    • Selecione Private IP for Peering Targets.

    O Atlas não oferece suporte a pontos de extremidade privados para a integração com o Prometheus.

  3. Insira o seguinte trecho na seção scrape_configs do arquivo Prometheus.yml e atualize-o com valores para a integração com o Prometheus.

    - job_name: "<insert-job-name>"
    scrape_interval: 10s
    metrics_path: /metrics
    scheme: https
    basic_auth:
    username: <insert-prometheus-user-id>
    password: <insert-password>
    http_sd_configs:
    - url: <url-of-the-service-discovery-configuration>
    refresh_interval: 60s
    basic_auth:
    username: <insert-prometheus-user-id>
    password: <insert-password>

Este método permite que o Prometheus leia documentos YAML ou JSON para configurar os destinos dos quais extrair. Você é responsável por fornecer os alvos fazendo uma solicitação à API de descoberta e armazenando seus resultados em um arquivo targets.json.

Para fazer a solicitação, substitua o texto do placeholder em uma das abas a seguir ou crie seu próprio script em outro idioma.

curl --header 'Accept: application/json'
# Sets the `Authorization` header on every scrape request with the
# username and password from the previous step.
--user <username>:<password>
# The URL that Prometheus fetches the targets from.
# Replace the <group-id> with the project ID of your Atlas instance.
--request GET "https://cloud.mongodb.com/prometheus/v1.0/groups/<group_id>/discovery"

Se você precisar instalar a requests biblioteca , consulte o Guia de Instalação.

import time, json, requests
# This script sets the `Authorization` header on every
# scrape request with the configured username and
# password. Then it tells Prometheus to fetch targets
# from the specified URL.
#
# Note: Replace the <username> and <password> with the
# values in the previous step, and <group-id> with the
# project ID of your Atlas instance.
basic_auth_user="<username>"
basic_auth_password="<password>"
discovery_api_url="https://cloud.mongodb.com/prometheus/v1.0/groups/<group_id>/discovery"
# The script updates your targets.json file every
# minute, if it successfully retrieves targets.
#
# Note: Replace the <path-to-targets.json> with the
# path to your targets.json file.
starttime = time.time()
while True:
r = requests.get(discovery_api_url, auth=(basic_auth_user, basic_auth_password))
if r.status_code == 200:
with open('<path-to-targets.json>', 'w') as f:
json.dump(r.json(), f)
time.sleep(60.0 - ((time.time() - starttime) % 60.0))

Para saber mais sobre a API de descoberta, consulte Retornar as últimas segmentações para Prometeus.

5
6
  1. Copie o trecho gerado no scrape_configs seção do seu arquivo de configuração e substitua o texto do espaço reservado.

    Para obter um exemplo do arquivo de configuração em qualquer um dos métodos, consulte Configurações de exemplo.

  2. Reinicie sua instância Prometheus.

  3. Na sua instância do Prometheus, clique em Status na barra de navegação superior e clique em Targets para ver as métricas de sua implantação.

A seguir, mostramos exemplos do arquivo de configuração quando você usa o método HTTP SD ou Descoberta de serviço de arquivo .

O arquivo de configuração em ambos os métodos contém os seguintes campos:

Campo
Descrição
scrape_interval
Tempo que indica a frequência de raspagem dos alvos. Esta configuração suporta um tempo mínimo de 10s.
job_name
Etiqueta legível por humanos atribuída a métricas raspadas.
metrics_path
Caminho do recurso HTTP que indica onde buscar métricas dos destinos.
scheme
Esquema de protocolo que você deseja configurar para solicitações.
basic_auth
Cabeçalho de autorização para usar em cada solicitação de raspagem.

O método de descoberta de HTTP Service também contém o campo http_sd_configs com os seguintes subcampos:

Campo
Descrição
url
URL a partir da qual Prometheus obtém os alvos.
refresh_interval
Hora que indica quando fazer query novamente do endpoint.
basic_auth
Credenciais a serem usadas para autenticação no servidor API.
global:
scrape_interval: 15s
scrape_configs:
- job_name: "Cloud-Testing-mongo-metrics"
scrape_interval: 10s
metrics_path: /metrics
scheme : https
basic_auth:
username: prom_user_618d48e05277a606ed2496fe
password: fSIMUngfTmOTVEB4
http_sd_configs:
- url: https://cloud.mongodb.com/prometheus/v1.0/groups/618d48e05277a606ed2496fe/discovery
refresh_interval: 60s
basic_auth:
username: prom_user_618d48e05277a606ed2496fe
password: fSIMUngfTmOTVEB4

O método Descoberta de Serviço de Arquivo também contém o campo file_sd_configs com o seguinte subcampo:

Campo
Descrição
files
Lista que contém os arquivos dos quais extrair os alvos de raspagem de métricas.
global:
scrape_interval: 15s
scrape_configs:
- job_name: "Cloud-Testing-mongo-metrics"
scrape_interval: 10s
metrics_path: /metrics
scheme : https
basic_auth:
username: prom_user_618d48e05277a606ed2496fe
password: fSIMUngfTmOTVEB4
file_sd_configs:
- files:
- /usr/local/etc/targets.json

As seguintes métricas estão disponíveis quando você utiliza a integração Prometheus com seu cluster Atlas:

Cada métrica MongoDB contém os seguintes rótulos:

etiqueta
Descrição
group_id
Sequência única de dígitos hexadecimais que identifica o projeto.
org_id
Sequência única de dígitos hexadecimais que identifica a organização.
cl_role
Rótulo legível por humanos que define a função do cluster.
cl_name
Etiqueta legível por humanos que identifica o cluster.
rs_nm
Etiqueta legível por humanos que identifica o conjunto de réplicas.
rs_state
process_port
Porta na qual o processo é executado.

mongodb_info é um medidor que sempre tem o valor de 1. Essa métrica contém todos os rótulos de métrica do MongoDB e também os seguintes rótulos:

etiqueta
Descrição
mongodb_version
String que representa as versões principais, secundárias e de patch.
replica_state_name
process_type
String que indica o processo em execução. Seus valores podem ser mongod, mongos ou config.

Observação

Você também pode visualizar descrições de cada métrica de hardware no navegador de expressão Prometheus.

Nome
Tipo
Descrição
hardware_disk_metrics_disk_space_free_bytes
Medidor
Espaço em disco disponível no sistema de arquivos montado.
hardware_disk_metrics_disk_space_used_bytes
Medidor
Espaço em disco usado no sistema de arquivos montado.
hardware_disk_metrics_read_count
Contador
Número de E/S lidas processadas.
hardware_disk_metrics_read_time_milliseconds
Contador
Tempo total de espera para solicitações de leitura.
hardware_disk_metrics_sectors_read
Contador
Número de setores lidos.
hardware_disk_metrics_sectors_written
Contador
Número de setores escritos.
hardware_disk_metrics_total_time_milliseconds
Contador
Total de vezes que este dispositivo de bloqueio estiver ativo.
hardware_disk_metrics_weighted_time_io_milliseconds
Contador
Tempo ponderado gasto fazendo E/S.
hardware_disk_metrics_write_count
Contador
Número de E/S de gravação processadas.
hardware_disk_metrics_write_time_milliseconds
Contador
Tempo total de espera para solicitações de gravação.
hardware_platform_num_logical_cpus
Medidor
Número de CPUs lógicas utilizáveis pelo processo atual.
hardware_process_cpu_children_kernel_milliseconds
Contador
Período agendado no modo kernel para que esse processo aguarde pelos filhos.
hardware_process_cpu_children_user_milliseconds
Contador
Período programado no modo de usuário para que esse processo aguarde as crianças.
hardware_process_cpu_kernel_milliseconds
Contador
Período programado no modo kernel para esse processo.
hardware_process_cpu_user_milliseconds
Contador
Período agendado no modo de usuário para esse processo.
hardware_system_cpu_guest_milliseconds
Contador
Tempo gasto executando uma CPU virtual para os sistemas operacionais convidados sob o controle do kernel Linux.
hardware_system_cpu_guest_nice_milliseconds
Contador
Tempo gasto administrando um convidado com uma gentileza ajustada.
hardware_system_cpu_idle_milliseconds
Contador
Tempo gasto na tarefa ociosa.
hardware_system_cpu_io_wait_milliseconds
Contador
Tempo aguardando a conclusão da E/S.
hardware_system_cpu_irq_milliseconds
Contador
O tempo gasto na manutenção interrompe.
hardware_system_cpu_kernel_milliseconds
Contador
Tempo gasto no modo de sistema.
hardware_system_cpu_nice_milliseconds
Contador
Tempo gasto no modo de usuário com baixa prioridade (legal).
hardware_system_cpu_soft_irq_milliseconds
Contador
Tempo gasto de manutenção softirqs.
hardware_system_cpu_steal_milliseconds
Contador
Tempo gasto em outros sistemas operacionais ao executar em um ambiente virtual.
hardware_system_cpu_user_milliseconds
Contador
Tempo gasto no modo de usuário.
hardware_system_memory_buffers_kilobytes
Medidor
Armazenamento temporário para blocos de disco brutos que não devem ser tremendamente grandes.
hardware_system_memory_cached_kilobytes
Medidor
Cache na memória para arquivos lidos do disco. Isso não inclui SwapCached.
hardware_system_memory_mem_available_kilobytes
Medidor
Uma estimativa de quanta memória está disponível para iniciar novos aplicativos, sem troca.
hardware_system_memory_mem_free_kilobytes
Medidor
Soma de LowFree + HighFree.
hardware_system_memory_mem_total_kilobytes
Medidor
RAM utilizável total (RAM física menos alguns bits reservados e o código binário do kernel).
hardware_system_memory_shared_mem_kilobytes
Medidor
Quantidade de memória consumida em sistemas de arquivos cujo conteúdo reside na memória virtual.
hardware_system_memory_swap_free_kilobytes
Medidor
Quantidade total de espaço de troca não utilizado.
hardware_system_memory_swap_total_kilobytes
Medidor
Quantidade total de espaço disponível para troca.
hardware_system_network_eth0_bytes_in_bytes
Contador
Número de bytes de dados recebidos pela interface.
hardware_system_network_eth0_bytes_out_bytes
Contador
Número de bytes de dados transmitidos pela interface.
hardware_system_network_lo_bytes_in_bytes
Contador
Número de bytes de dados recebidos pela interface.
hardware_system_network_lo_bytes_out_bytes
Contador
Número de bytes de dados transmitidos pela interface.
hardware_system_vm_page_swap_in
Contador
Número de páginas que o sistema trocou do disco.
hardware_system_vm_page_swap_out
Contador
Número de páginas que o sistema trocou para o disco.

Cada métrica de hardware contém os seguintes rótulos:

etiqueta
Descrição
group_id
Sequência única de dígitos hexadecimais que identifica o projeto.
org_id
Sequência única de dígitos hexadecimais que identifica a organização.
process_port
Porta na qual o processo é executado.
disk_name
Etiqueta legível para humanos que identifica o disco.

Voltar

PagerDuty