Simply

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:

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.

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).

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:


Métricas do AppMetrics: tipos de métricas.
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


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.



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.



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

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).

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'.

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.



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.



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.



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.



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'.



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)


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'.



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'.



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'.



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.



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.



Métricas Genéricas


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


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


Workflow: nome do workflow
Usuário: nome do usuário responsável (login)
TipoAtividadeManual: tipo de atividade manual executada.

  1. Tipificação Manual
  2. Comparação de Campos o Imagem Preenchida
  1. Comparação de Imagem
  1. Comparação de Documentos o Alteração de Campos
  2. Aprovação Manual
  1. Aprovação Link Fraude o Regra de Formulário
  2. Tipificação Obrigatória Manual o Reprodução de Áudio
  3. Criar/Atualizar Objetos com Doc o Reprodução de Vídeo
  1. Validação Externa
  1. ValidacaoExternaManual

ParecerAtividadeManual: a resposta dada pelo executor da atividade manual.

  1. Reprovada
  1. Aprovada
  2. Indeterminada
  3. Suspensa

StatusProcesso: o status do processo que é objeto da métrica

  1. Novo
  1. Pendente
  1. Em andamento
  1. Aprovado
  1. Reprovado
  1. Suspenso
  1. Pendente Manual
  1. Pendente Falha
  1. 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
  1. Manual

StatusTarefa: status da tarefa processada
  1. Pendente
  1. Pendente manual
  1. Em execução
  1. Aprovada
  1. Reprovada
  1. Não executada
  1. Aguardando
  1. Falha
  1. 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

    • Instalação Métricas - ServiceDiscovery, Prometheus e Grafana

      Este artigo visa cobrir a instalação de três ferramentas que compõem a coleta e exibição das métricas do sistema. Service Discovery 1) Realize a cópia da pasta SWorks.ServiceDiscovery que está presente dentro do pacote de instalação enviado para um ...
    • 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 ...
    • Mudança no Licenciamento - S-Works v1.42.8.11+

      Este artigo destina-se aos clientes que utilizam o sistema instalado fora da cloud da Simply (On premise). A partir da versão 1.42.8.11, houve alteração na forma de realizar o licenciamento do sistema. O  ponto importante dessa mudança é que, em ...
    • Activity Dispatcher - Distribuição de atividades manuais otimizada

      Motivação Diminuir o tempo de obtenção de atividades manuais pelo usuário. Existia uma situação no qual ocorriam problemas de lentidão com o mecanismo de lock¹ utilizado na implementação padrão. No mecanismo padrão, quando um usuário solicita uma ...
    • Dashboard - Monitoramento e Simulação

        S-WORKS Escopo dos serviços Permite a visualização gerencial dos resultados e informações geradas através de dashboards, indicadores de performance de métricas que você elege como essenciais para avaliar um processo de sua gestão e consultas padrão ...