pres:gerti:servico_de_desenvolvimento_de_sistemas_de_informacao:projetos:observabilidade

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Próxima revisão
Revisão anterior
pres:gerti:servico_de_desenvolvimento_de_sistemas_de_informacao:projetos:observabilidade [30/05/2025 14:02] – criada mfaquinopres:gerti:servico_de_desenvolvimento_de_sistemas_de_informacao:projetos:observabilidade [03/06/2025 14:34] (atual) mfaquino
Linha 2: Linha 2:
  
 **Observabilidade de software** é a capacidade de entender o que está acontecendo internamente em um sistema a partir das informações que ele expõe externamente, como **logs**, **métricas** e **traces**. O objetivo é permitir que engenheiros diagnostiquem problemas, entendam comportamentos e tomem decisões informadas sobre a saúde e o desempenho da aplicação. **Observabilidade de software** é a capacidade de entender o que está acontecendo internamente em um sistema a partir das informações que ele expõe externamente, como **logs**, **métricas** e **traces**. O objetivo é permitir que engenheiros diagnostiquem problemas, entendam comportamentos e tomem decisões informadas sobre a saúde e o desempenho da aplicação.
- 
 ==== Ferramentas Utilizadas ==== ==== Ferramentas Utilizadas ====
  
Linha 12: Linha 11:
  
 Métricas: (Sonnar) [[http://sonnar.tce.go.gov.br/projects|http://sonnar.tce.go.gov.br/projects]] Métricas: (Sonnar) [[http://sonnar.tce.go.gov.br/projects|http://sonnar.tce.go.gov.br/projects]]
 +
 +==== Monitoramento ====
 +
 +Uma vez que uma aplicação é desenvolvida, é fundamental aplicarmos o monitoramento para garantir que a aplicação está disponivel e sermos notificados quando algo está indisponivel.
 +
 +Para criar um monitoramento, devemos criar uma rota na aplicação chamada **/health **nessa rota o sistema pode verificar a disponibilidade das partes criticas como:
 +
 +   * Banco de Dados
 +  * Acesso a APIs Externas
 +
 +Caso alguma das partes importantes da aplicação não responda corretamente, a rota deve retornar um erro 500. Esse erro será capturado pelo monitoramento e enviado uma mensagem para o teams do TCE.
 +
 +Uma vez configurada a rota **/health**  basta criar o monitoramento no uptime:{{https://projetos.tce.go.gov.br/attachments/download/20623/clipboard-202506031100-fw5hv.png?nolink&1867x938}}
 +
 +Quando uma verificação de /health falhar, um alerta é enviado no Teams: \\  \\ {{https://projetos.tce.go.gov.br/attachments/download/20624/clipboard-202506031102-brhud.png?nolink&1449x902}}
 +
 +==== Logs ====
 +
 +Os logs das aplicações devem ser enviados para a stack ELK (Elasticsearch, Logstash e Kibana). Inicialmente durante o desenvolvimento é importante utilizar uma bilbioteca de logs gere os arquivos application.log de forma estruturada, um exemplo é o [[https://logging.apache.org/log4net/index.html|Log4Net]] para .NET \\
 + \\
 +Uma vez que os logs estão sendo gerados, é necessário criar um agente no servidor que enviará os logs ao logstash para processamento e ingestão no elasticsearch.
 +
 +Um exemplo dessa configuração em um sistema que usa docker é configurar o gelf no docker-compose:
 +<code>
 +
 +logging:
 +   driver: "gelf"
 +      options:
 +        gelf-address: "udp://172.17.110.11:12201"
 +        tag: "DOCKER-JSON-LOGS"
 +
 +</code>
 +
 +Para aplicações .NET podemos configurar o filebeat no IIS seguindo a documentação do elasticsearch [[https://kibana.tce.go.gov.br/app/home#/tutorial/iisLogs|https://kibana.tce.go.gov.br/app/home#/tutorial/iisLogs]]
 +
 +**OBS: Os servidores IIS do TCE já estão configurados com o agente do filebeat, portanto basta salvar os logs da aplicação em um arquivo application.log para que os mesmos sejam enviados do IIS para o ELK**
 +
 +O resultado são os logs enviados para o ELK e possíveis de visualização no Kibana:
 +
 +[[https://kibana.tce.go.gov.br/app/discover#/view/80ba9850-7bc9-11ef-8471-bdbdc5553695|https://kibana.tce.go.gov.br/app/discover#/view/80ba9850-7bc9-11ef-8471-bdbdc5553695]]
 +
 +{{https://projetos.tce.go.gov.br/attachments/download/20510/clipboard-202505301155-m2b9a.png?nolink&2802x1657}}
 +
 +**Métricas**
 +
 +As métricas de código são geradas pelo Sonar, ele é responsável por analisar o código e gerar alertas de possíveis problemas e códigos que precisam de melhorias.
 +
 +A adição do sonar no projeto é feita usando a pipelinde de CI/CD do gitlab e se necessário o docker. \\  \\ No projeto primeiro adicione a pipeline de CI/CD com o arquivo **.gitlab-ci.yml**
 +<code>
 +image:
 +  name: docker/compose:latest
 +
 +stages:
 +  - sonar
 +  - test
 +  - deploy
 +
 +tcego-iago:sonar:
 +  image: sonarsource/sonar-scanner-cli:4.8
 +  stage: sonar
 +  script:
 +    - sonar-scanner -Dsonar.projectKey=TCE.Iago.AI -Dsonar.sources=source/API_IAGO -Dsonar.projectName="TCE.Iago.AI" -Dsonar.host.url="http://sonnar.tce.go.gov.br" -Dsonar.login="df0c036593cc15f4decb0538447e35382b72df44"
 +  only:
 +    refs:
 +   - main
 +      - merge_requests
 +      - develop
 +  tags:
 +    - docker-pipes-runner
 +
 +</code>
 +
 +Usando a imagem do docker do sonar: **sonarsource/sonar-scanner-cli:4.8 **o mesmo se encarregará de enviar o código para o sonar do TCE [[http://sonnar.tce.go.gov.br|http://sonnar.tce.go.gov.br]] onde será feito a análise de código.
 +
 +O seguintes parametros são necessários no sonar scanner:
 +
 +  * sonar.projectKey: Identificação do Projeto
 +  * sonar.sources: Pasta do projeto
 +  * sonar.projectName: Nome do Projeto
 +  * sonar.host.url: URL do Sonar
 +  * sonar.login: Token do Sonar
 +
 +Ao rodar a pipeline uma dashboard de métricas será gerada no sonar com o sonar.projectKey especificado:
 +
 +[[http://sonnar.tce.go.gov.br/dashboard?id=TCE.Iago.API|http://sonnar.tce.go.gov.br/dashboard?id=TCE.Iago.API]]
 +
 +{{https://projetos.tce.go.gov.br/attachments/download/20626/clipboard-202506031133-pvbqv.png?nolink&1870x942}}
  
  
  • pres/gerti/servico_de_desenvolvimento_de_sistemas_de_informacao/projetos/observabilidade.1748613759.txt.gz
  • Última modificação: 30/05/2025 14:02
  • por mfaquino