Instrumentação dos Módulos - Prometheus + Grafana

Instrumentação dos Módulos - Prometheus + Grafana

Monitoramento e Observability

A partir da versão 2.1, o S-Works passa a contabilizar as seguintes métricas de instrumentação, separadas por módulo do sistema.


Bibliotecas e Ferramentas

A coleta de métricas no S-Works, utiliza as seguintes ferramentas:
  1. AppMetrics: biblioteca .NET utilizada para a instrumentação, coleta, armazenamento em memória, e reporte de métricas. No nosso caso, utilizamos o reporte configurado para Prometheus, que publica endpoints de métricas em todos os módulos do sistema.
  2. Prometheus: aplicação responsável por realizar a leitura das métricas através dos endpoints publicados (essa operação se chama 'scrape') e armazená-las no seu banco de dados interno (Time Series DataBase - TSDB).
  3. Grafana: aplicação responsável pela visualização dos dados do Prometheus. Módulo Service Discovery: novo módulo do S-Works responsável por manter o registro de todos os módulos em execução do S-Works, assim como manter um arquivo de 'scrape' a ser lido pelo Prometheus, para que obtenha todos os endpoints de métricas para cada módulo.

Tipos de Métricas e Query PromQL

Para obter mais detalhes sobre os tipos de métricas e como utilizá-las no Grafana:

  1. Métricas do AppMetrics: tipos de métricas.
  2. Query PromQL: contém exemplos básicos de como realizar queries para cada tipo de métrica.

Visões Pré-Montadas de Grafana

O pacote da versão 2.1+ já contém visões pré-montadas para o Grafana. Cada arquivo JSON, incluído no pacote, representa uma visão por módulo do sistema e pode ser importada diretamente no Grafana, sendo necessário apenas a configuração do "Source" apontando para a base de dados do Prometheus instalada.


As visões ainda estão em estágio inicial, podendo ser agregadas futuramente, seja por demandas internas ou a pedido de clientes.


Métricas por Módulo

Módulo WebApp

  1. Métrica 'webapp_atividades_manuais_executadas_total'

Nome: 'webapp_atividades_manuais_executadas_total'

Tipo: Counter
Unidade: Itens
Tags: Workflow, Usuario, TipoAtividadeManual, ParecerAtividadeManual

Métrica que contabiliza a quantidade de atividades manuais executadas. A métrica é incrementada sempre que uma atividade manual é realizada.
  1. Métrica 'webapp_atividades_manuais_atribuidas_total'

Nome: 'webapp_atividades_manuais_atribuidas_total'

Tipo: Counter
Unidade: Itens
Tags: Workflow, Usuario, TipoAtividadeManual, ParecerAtividadeManual

Métrica que contabiliza a quantidade de atividades manuais atribuídas. A métrica é incrementada sempre que uma atividade manual é atribuída a um usuário executor.
  1. Métrica 'webapp_atividades_manuais_execucao_segundos'
Nome: 'webapp_atividades_manuais_execucao_segundos'
Tipo: Timer
Unidade: Segundos
Tags: Workflow, Usuario, TipoAtividadeManual, ParecerAtividadeManual

Métrica que mede o tempo de execução de uma atividade manual, a subtração entre o horário de execução e o horário de atribuição da atividade manual. O tempo calculado é classificado numa distribuição na forma de histograma.

Módulo Worker

  1. Métrica 'worker_processos_finalizados_total'

Nome: 'worker_processos_finalizados_total'

Tipo: Counter
Unidade: Itens
Tags: Workflow, StatusProcesso

Métrica que contabiliza a quantidade de processos finalizados, ou seja, que chegaram no fim do ciclo de execução e possuem um status terminal (Aprovado, Reprovado ou Cancelado).
  1. Métrica 'worker_tarefas_falhas_total'

Nome: 'worker_tarefas_falhas_total'
Tipo: Counter
Unidade: Itens
Tags: Workflow, API, Metodo, MensagemErro

Métrica que contabiliza a quantidade de tarefas que, após execução, ficaram com status de 'Falha'.
  1. Métrica 'worker_quantidade_processos_em_execucao_total'

Nome: 'worker_quantidade_processos_em_execucao_total'
Tipo: Counter
Unidade: Itens
Tags: Workflow, Host

Métrica que contabiliza a quantidade de processos que foram recuperados por um worker e entraram em estado de execução.
  1. Métrica 'worker_tempo_processamento_processo_segundos'

Nome: 'worker_tempo_processamento_processo_segundos'

Tipo: Timer
Unidade: Milisegundos
Tags: Workflow, StatusProcesso

Métrica que mede o tempo de execução de uma atividade manual, a subtração entre o horário de início de processamento do processo até a sua data de finalização.
  1. Métrica 'worker_tempo_processamento_tarefa_segundos'
Nome: 'worker_tempo_processamento_tarefa_segundos'
Tipo: Timer
Unidade: Milisegundos
Tags: Workflow, API, Metodo, TipoExecucao, StatusTarefa

Métrica que mede o tempo de execução de uma tarefa, a subtração entre o início de processamento da tarefa até finalização.
  1. Métrica 'worker_tarefas_mecanismo_resiliencia_total'

Nome: 'worker_tarefas_mecanismo_resiliencia_total'

Tipo: Counter
Unidade: Workflow, API, Método, MensagemErro, StatusTarefa
Tags: Workflow, Host

Métrica que contabiliza a quantidade de tarefas que caíram no mecanismo de resiliência. Esse mecanismo é acionado geralmente para erros transientes que possam ocorrer em integrações com serviços externos ou tarefas que usam WebAPIs.
  1. Métrica 'worker_tarefas_falhadas_mecanismo_resiliencia_total'
Nome: 'worker_tarefas_falhadas_mecanismo_resiliencia_total'
Tipo: Counter
Unidade: Itens
Tags: Workflow, Host

Métrica que contabiliza a quantidade de tarefas que fizeram sua última tentativa de processamento usando mecanismo de resiliência e ficaram com status de 'Falha'.
  1. Métrica 'worker_servico_externo_requisicao_segundos'
Nome: 'worker_servico_externo_requisicao_segundos'
Tipo: Timer
Unidade: Milisegundos
Tags: Workflow, API, Metodo, BaseUrl, Path

Métrica que mede o tempo de resposta de um serviço externo, seja invocado por uma API que realiza integração ou por WebAPIs. O tempo medido compreende apenas a invocação da requisição até obtenção da resposta.

Essa métrica ajuda a detectar gargalos em serviços externos.

Módulo Producer (MQDispatcher)

  1. Métrica 'producer_quantidade_de_processos_na_fila'
Nome: 'producer_quantidade_de_processos_na_fila'
Tipo: Gauge
Unidade: Items
Tags: -

Métrica que contabiliza a quantidade de processos enfileirados no mecanismo de filas para distribuição de trabalho.

Módulo Activity Dispatcher

As métricas abaixo são aplicáveis apenas para ambientes onde a distribuição de atividades manuais acontece pelo módulo 'Activity Dispatcher'.

  1. Métrica 'activityDispatcher_quantidade_de_cache_hit'
Nome: 'activityDispatcher_quantidade_de_cache_hit'
Tipo: Counter
Unidade: Itens
Tags: -

Métrica que contabiliza a quantidade de cache hit, ou seja, quantas vezes uma atividade manual foi solicitada e esta foi encontrada no cache do 'Activity Dispatcher'.
  1. Métrica 'activityDispatcher_quantidade_de_cache_miss'
Nome: 'activityDispatcher_quantidade_de_cache_miss'
Tipo: Counter
Unidade: Itens
Tags: -

Métrica que contabiliza a quantidade de cache miss, ou seja, quantas vezes uma atividade manual foi solicitada e esta foi não encontrada no cache do 'Activity Dispatcher'. Um excesso de cache miss pode indicar um problema no 'Activity Dispatcher'.
  1. Métrica 'activityDispatcher_tempo_de_sincronizacao_de_atividades_manuais'
Nome: 'activityDispatcher_tempo_de_sincronizacao_de_atividades_manuais'
Tipo: Timer
Unidade: Segundos
Tags: -

Métrica que mede o tempo de sincronização do cache do 'Activity Dispatcher'. A sincronização é uma tarefa computacionalmente pesada e, portanto, é candidata a gerar gargalos no banco de dados e/ou impactos na distribuição de atividades manuais. Essa métrica geralmente deve estar entre 0s e 10s.
  1. Métrica 'activityDispatcher_quantidade_de_itens_no_cache'
Nome: 'activityDispatcher_quantidade_de_itens_no_cache'
Tipo: Gauge
Unidade: Items
Tags: -

Métrica que contabiliza a quantidade de atividades manuais no cache do 'Activity Dispatcher'. Se houver atividades manuais pendentes e essa métrica não mostrar um número equivalente de itens, pode indicar um problema na sincronização de atividades manuais.
  1. Métricas Genéricas

As métricas abaixo podem ser medidas por um ou mais módulos.

  1. Métrica 'conversao_pdf_segundos'
Nome: 'conversao_pdf_segundos'
Tipo: Timer
Unidade: Segundos
Tags: -

Métrica que mede o tempo de conversão de um documento PDF em imagens. Essa métrica pode ser observada nos módulos: WebApp, WebApi, Worker.

Dicionário de Tags

  1. Workflow: nome do workflow
  2. Usuário: nome do usuário responsável (login)
  3. TipoAtividadeManual: tipo de atividade manual executada.
  4. Tipificação Manual
  5. Comparação de Campos o Imagem Preenchida
  6. Comparação de Imagem
  7. Comparação de Documentos o Alteração de Campos
  8. Aprovação Manual
  9. Aprovação Link Fraude o Regra de Formulário
  10. Tipificação Obrigatória Manual o Reprodução de Áudio
  11. Criar/Atualizar Objetos com Doc o Reprodução de Vídeo
  12. Validação Externa
  13. ValidacaoExternaManual
ParecerAtividadeManual: a resposta dada pelo executor da atividade manual.
  1. Reprovada
  2. Aprovada
  3. Indeterminada
  4. Suspensa
StatusProcesso: o status do processo que é objeto da métrica
  1. Novo
  2. Pendente
  3. Em andamento
  4. Aprovado
  5. Reprovado
  6. Suspenso
  7. Pendente Manual
  8. Pendente Falha
  9. Cancelado

API: a API envolvida no processamento da tarefa

Método: o método envolvido no processamento da tarefa

MensagemErro: a mensagem de erro no topo do stacktrace obtido

Host: nome da máquina worker que realizou o processamento

TipoExecucao: tipo de execução da tarefa.
  1. Automática
  2. Manual
StatusTarefa: status da tarefa processada
  1. Pendente
  2. Pendente Manual
  3. Em execução
  4. Aprovada
  5. Reprovada
  6. Não executada
  7. AguardandoFalha
  8. Suspensa

BaseUrl: a URL base do serviço de integração invocado
Path: a URL relativa do serviço de integração invocado


    • Related Articles

    • S-Works - Manual de Instalação da Versão 2.2

        Versionamento   Versão  Data  Comentários    1.0  23/09/2020  Versão inicial do documento.   2.0  20/01/2021  Atualização do manual para conter etapas de instalação manual do sistema e seus módulos, assim como configuração dos mesmos.   2.1  ...
    • Novidades da versão S-Works 2.1.1

      S-Works versão 2.1.1 Objetivo Informar melhorias e novas funcionalidades implementadas na versão 2.1.1. Copyright © 2020 SIMPLY. – Todos os direitos reservados. 1. Módulo Grafana - CÓDIGO: 49881 Novas ferramentas foram disponibilizadas, com a ...
    • Instalação do Serviço AcitivityDispacther

      Objetivo Este artigo tem como objetivo detalhar o processo de instalação do Activity Dispatcher. Cópia da pasta do Activity Dispatcher 1. Navegue até a pasta Aplicação dentro do pacote da instalação da sua versão e copie a pasta ...
    • Novidades da Versão S-Works 2.3

      Objetivo Este documento, tem como objetivo, apresentar melhorias e as novas funcionalidades implementadas na Versão S-Works 2.3.  Resumo das novidades Criação de perfil personalizado: Agora você poderá criar perfis e configurá-los de acordo com a sua ...
    • S-Works - Manual de Instalação da Versão - v2 4

      ATENÇÃO,  ARQUIVO ORIGINAL EM PDF ANEXO Sumário Versionamento    3 1.    Objetivo    4 2.    Dependências    4 3.    Preparação do Ambiente e Backup    4 Download de Release, Backup e Licenciamento    4 Limpeza de Instalação Anterior    5 4.    Os ...