O SaltStack Config expõe várias métricas do sistema que podem ser usadas para monitoramento e diagnóstico. Essas métricas estão disponíveis em formato gráfico no dashboard da interface do usuário do SaltStack Config e em formato legível por máquina usando o endpoint http /metrics.

Para obter mais informações sobre como visualizar relatórios na interface do usuário do SaltStack Config usando o Dashboard, consulte Relatórios do Dashboard.

Métricas legíveis por máquina

O SaltStack Config exporta métricas do sistema no Formato OpenMetrics baseado em texto. Esse formato é diretamente consumível pelo Prometheus e outras ferramentas de monitoramento e geração de alertas.

Configuração de métricas do SaltStack Config

A configuração para a coleta de métricas do sistema consiste nas seguintes configurações no arquivo de configuração /etc/raas/raas. Os valores padrão são mostrados.

# System metrics settings
metrics:
  enabled: true                         # If True, enable the collection of system metrics
  prometheus: false                     # If True, enable the Prometheus endpoint at /metrics
  prometheus_username:                  # Static username for retrieving /metrics
  prometheus_password:                  # Static password for retrieving /metrics
  snapshot_interval: 60                 # How often to record snapshot metrics, in seconds
  max_query_timedelta: 86400            # Maximum timedelta for a single call to get_system_metrics, in seconds
  keep: 30                              # How long to retain metrics data, in days

As seguintes configurações controlam o tratamento de métricas de sistema legíveis por máquina:

  • Para desativar a coleção de métricas, defina enabled:false. Observe que isso também desativará o dashboard integrado do SaltStack Config.
  • Para ativar a exportação de métricas legíveis por máquina a partir do endpoint http /metrics, defina prometheus:true. Essa configuração não afeta o dashboard integrado do SaltStack Config.
  • O acesso ao endpoint http /metrics é controlado pela Autenticação Básica http com credenciais configuradas em prometheus_username e prometheus_password. Valores não vazios são necessários para essas configurações para ativar o endpoint /metrics. Essas credenciais são armazenadas somente no arquivo de configuração /etc/raas/raas, não são associadas a nenhuma conta do SaltStack Config e não podem ser usadas para autenticar o SaltStack Config de outra forma que não seja para acessar o endpoint http /metrics.

As outras configurações mostradas acima estão relacionadas ao dashboard integrado do SaltStack Config e não afetam a coleta ou a geração de relatórios de métricas do sistema legíveis por máquina. Em particular, a configuração snapshot_interval determina com que frequência, em segundos, as métricas são gravadas para exibição no dashboard, enquanto a configuração keep determina por quanto tempo, em dias, os dados de métricas serão mantidos no banco de dados antes de serem ajustados.

Embora o endpoint http /metrics seja a maneira recomendada de reunir dados de métricas legíveis por máquina do SaltStack Config, você pode usar a API (RaaS) para recuperar os dados apresentados no dashboard integrado. A chamada de API stats.get_system_metrics() permite consultar dados de métricas por nome de métrica, origem e intervalo de datas. O item de configuração max_query_timedelta limita a quantidade de dados que o SaltStack Config retornará de uma única chamada de API. Para obter dados de métricas de um intervalo de tempo mais longo, é possível fazer várias chamadas de API com diferentes datas de início e término.

Configuração de métricas do Salt Master

A disponibilidade de algumas métricas depende da configuração dos mestres Salt conectados ao SaltStack Config:

  • As métricas em eventos Salt e retornos de trabalho serão precisas somente se o retornador sseapi estiver configurado nos mestres Salt. A coleta de métricas não funcionará corretamente com o retornador sse_pgjsonb (direto para banco de dados).
  • O SaltStack Config coletará informações em tempo de execução de funções de baixo nível dos mestres Salt que tenham master_stats:true definido em suas configurações. Essa opção está desabilitada por padrão. Consulte master_stats na documentação do Salt para obter detalhes.
  • Métricas em estados de trabalhos Salt apenas serão precisas se o mecanismo de complementação de trabalhos estiver ativado no Salt Master Plugin:
    engines:
       -jobcompletion:{}

    Esse mecanismo está ativado na configuração padrão do Salt Master Plugin.

Configurando o Prometheus para se conectar ao SaltStack Config

Você pode habilitar um servidor Prometheus para extrair métricas do SaltStack Config adicionando um trabalho scrape_configs à configuração do Prometheus (normalmente prometheus.yml) para cada instância do servidor de API (RaaS) que você possui:

scrape_configs:
  - job_name: 'sse'

    metrics_path: '/metrics'
    scheme: 'http'

    static_configs:
        - targets: ['localhost:8080']

    basic_auth:
      username: prometheus
      password: metrics

As credenciais na configuração do Prometheus devem corresponder ao prometheus_username e ao prometheus_password especificados no arquivo de configuração /etc/raas/raas, conforme indicado acima.

Consulte a documentação do projeto Prometheus para obter mais informações sobre como configurar destinos de extração e outros tópicos de configuração do Prometheus.

Observação: Como parte da iniciativa da VMware de remover entradas de terminologia problemáticas, o termo mestre Salt será substituído por um termo melhor no SaltStack Config e em produtos e tópicos de documentação relacionados. Essa atualização de terminologia pode demorar alguns ciclos de lançamento antes de ser totalmente concluída.

Descrições de métricas

As métricas legíveis por máquina que são exportadas pelo SaltStack Config se enquadram em várias categorias:

Categoria Nome da Métrica Tipo de Métrica Rótulos Descrição
Métricas de baixo nível do mestre Salt salt_event_size_bytes Histograma master_id Tamanho do evento Salt, em bytes
salt_master_cmd_duration_seconds Histograma master_id, cmd Duração do comando do mestre Salt, em segundos. Relatada somente se master_stats estiver configurado no mestre Salt.
         
Métricas do Salt Master Plugin raas_master_commands_processed Contador master_id Comandos SSE processados
raas_master_master_grains_pushed Contador master_id Atualizações de grains de mestres Salt enviadas ao SaltStack Config
raas_master_minion_keys_pushed Contador master_id Atualizações de estados de chaves de subordinados enviadas ao SaltStack Config
raas_master_minion_cached_pushed Contador master_id Atualizações de cache de subordinados enviadas ao SaltStack Config
raas_master_masterfs_pushed Contador master_id Atualizações de MasterFS enviadas ao SaltStack Config
raas_master_sseapi_engine_iteration_seconds Histograma master_id Duração da iteração do mecanismo API (RaaS), em segundos
         
Métricas de servidor redis_commands_executed Contador redis_instance Comandos Redis executados (cache do sistema)
redis_memory_bytes Medidor redis_instance Uso da memória Redis (cache do sistema)
celery_tasks_queued Contador raas_instance, task Tarefas celery enfileiradas (trabalhos em segundo plano)
celery_tasks_executed Contador raas_instance, task Tarefas celery executadas (trabalhos em segundo plano)
celery_queue_length Medidor raas_instance Comprimento da fila celery (trabalhos em segundo plano em espera)
raas_rpc_request_duration_seconds Histograma raas_instance Duração da chamada de API RPC SSE, em segundos
         
Métricas do PostgreSQL postgres_connections Medidor postgres_instance Conexões do Postgres
postgres_transactions Contador postgres_instance Transações do Postgres confirmadas
postgres_rows_read Contador postgres_instance Linhas do Postgres lidas
postgres_rows_inserted Contador postgres_instance Linhas do Postgres inseridas
postgres_rows_updated Contador postgres_instance Linhas do Postgres atualizadas
postgres_rows_deleted Contador postgres_instance Linhas do Postgres excluídas
         
Métricas do sistema highstate_minions Medidor Nenhum Número de subordinados que executaram um trabalho de highstate
highstate_minions_changed Medidor Nenhum Número de subordinados que executaram um trabalho de highstate resultando em uma ou mais alterações
highstate_minions_succeeded Medidor Nenhum Número de subordinados que executaram um trabalho de highstate sem falhas
highstate_minion_duration_seconds Medidor Nenhum Duração média por subordinado para uma execução de highstate
highstate_states Medidor Nenhum Número de estados exclusivos aplicados em execuções de highstate
highstate_states_changed Medidor Nenhum Número de estados aplicados em execuções de highstate que resultaram em uma ou mais alterações
highstate_states_succeeded Medidor Nenhum Número de estados aplicados em execuções de highstate sem falhas
sse_jobs_in_progress Contador Nenhum Trabalhos do SaltStack Config em andamento
sse_jobs_complete_all_successful Contador Nenhum Trabalhos do SaltStack Config concluídos com todos os retornos bem-sucedidas
sse_jobs_complete_missing_returns Contador Nenhum Trabalhos do SaltStack Config concluídos com um ou mais retornos ausentes
sse_jobs_complete_with_errors Contador Nenhum Trabalhos do SaltStack Config concluídos com um ou mais erros
sse_masters Medidor Nenhum Total de mestres Salt no SaltStack Config
sse_minion_grains_deleted Contador master_id Número de grãos de subordinados excluídos
sse_minion_grains_indexing_duration_seconds Contador raas_instance Duração dos cálculos de indexação de grãos de subordinado, em segundos
sse_minion_grains_saved Contador master_id Número de grãos de subordinados salvos
sse_minion_target_match_calcs Contador raas_instace Número de subordinados versus cálculos correspondentes do grupo de destino
sse_minion_target_match_duration_seconds Contador raas_instance Durações dos cálculos de correspondência de subordinado versus grupo de destino, em segundos
sse_minions Medidor Nenhum Total de subordinados no SaltStack Config
sse_minions_present Medidor master_id Subordinados presentes no limite de tempo configurado raas_presence_expiration
sse_minions_lost Medidor master_id Subordinados não presentes no limite de tempo
sse_minions_unknown Medidor master_id Subordinados desconhecidos (nunca presentes)
sse_users_authenticated Medidor Nenhum Usuários autenticados no SaltStack Config