From 4a68bc671d0b630ac43b07cf263bf3d162bd4fc4 Mon Sep 17 00:00:00 2001 From: Muriki <mgy20@inf.ufpr.br> Date: Fri, 28 Feb 2025 15:31:41 -0300 Subject: [PATCH] Adicionado Grafana.md --- docs/source/pages/Monitoramento/Grafana.md | 116 ++++++++++++++++++ docs/source/pages/Monitoramento/Prometheus.md | 78 ------------ 2 files changed, 116 insertions(+), 78 deletions(-) create mode 100644 docs/source/pages/Monitoramento/Grafana.md diff --git a/docs/source/pages/Monitoramento/Grafana.md b/docs/source/pages/Monitoramento/Grafana.md new file mode 100644 index 0000000..8d3f06a --- /dev/null +++ b/docs/source/pages/Monitoramento/Grafana.md @@ -0,0 +1,116 @@ +# Grafana + +## Objetivo +Documentar funcionalidades do Grafana + + +## Links +1. [Instalação](https://grafana.com/docs/grafana/latest/setup-grafana/installation/) + + +## Dependências +1. Grafana, 11.5.2, Dashboards + + +## Instalação +Instale de acordo com sua distribuição na [documentação](https://grafana.com/docs/grafana/latest/setup-grafana/installation/) + +Exemplo com Debian +```bash +# Dependencies +sudo apt-get install -y apt-transport-https software-properties-common wget + +# GPG keys +sudo mkdir -p /etc/apt/keyrings/ +wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null + +# APT sources +echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list +sudo apt-get update + +# Installs the latest OSS release: +sudo apt-get install grafana +``` + + +## Dashboards +Para criar dashboards e visualizar dados: + +- Em `Data source` adicione a fonte dos dados +- Em `Dashboards` adicione dentro de um folder `new -> new dashboard` para criar um novo dashboard ou `new -> import` para importar um template pronto. +- Para importar, adicione a ID da biblioteca de templates do grafana (ou o JSON correspondente), os sources necessários e clique em load. Finalmente salve o dashboard. + + + +## Alertas +É possÃvel configurar o grafana para enviar alertas a um canal de comunicação como email, telegram ou discord. + +- Alto uso de CPU +- Alto uso de memória +- Alto tempo de consulta +- Alto uso de arquivos abertos +- Número de conexões + +#### Contact points +Primeiro é necessario adicionar o discord como um dos pontos de notificação. + +Acessando a aba `Alerting->Contact points` clique em `Add contact point`. + +De um nome, selecione Discord como integração, adicione a URL do Webhook do canal de destino do Discord e clique em `Teste`. + +Se uma notificação de teste for enviada ao Discord, clique em salvar. + +#### Notification policies +Politicas de notificação determinam como os alertas interagem com contact points. + +#### Alert rules +Para criar alertas acesse `Alerting->Alert Rules` e clique em `create alert rules`. + +Coloque um nome no alerta, selecione o Data source (prometheus para este caso). + +Perceba que a confuguração é baseada em blocos de entrada e saÃda, inicialmente há 3 blocos de nome `A`, `B` e `C` das quais é possÃvel renomear. + +Para o bloco A selecione a métrica a ser testada como `pg_up` para determinar se um banco postgres está rodando e selecione os filter labels de acordo. + +Para o bloco B selecione uma função com base na métrica de saÃda do bloco A. Um exemplo é `Last` que representa o último valor lido. + +Para o bloco C selecione o gatilho o alerta, ou seja, se o valor de saÃda de B for maior ou menor que alguma condição. + +Configure o folder e o intervalo de tempo dos testes. Adicione também em `Description` e `Summary` informações adicionais que vão ser enviadas como parte da notificação do alerta e clique em salvar. + +#### Templates + +Para alterar o template padrão de notificação do grafana, acesse `Contact points` e clique em `Add template`. Adicione um nome e preencha o campo `Content` com o seguinte template: + +```go +{{ define "alert_severity_prefix_emoji" -}} + {{- if ne .Status "firing" -}} + :white_check_mark: + {{- else if eq .CommonLabels.severity "critical" -}} + :red_circle: + {{- else if eq .CommonLabels.severity "warning" -}} + :warning: + {{- end -}} +{{- end -}} + + +{{ define "slack.title" -}} + {{ template "alert_severity_prefix_emoji" . }} + [{{- .Status | toUpper -}}{{- if eq .Status "firing" }} x {{ .Alerts.Firing | len -}}{{- end }} | {{ .CommonLabels.env | toUpper -}} ] || {{ .CommonLabels.alertname -}} +{{- end -}} + +{{- define "slack.text" -}} +{{- range .Alerts -}} +{{ if gt (len .Annotations) 0 }} +*Summary*: {{ .Annotations.summary}} +*Description*: {{ .Annotations.description }} +Labels: +{{ range .Labels.SortedPairs }}{{ if or (eq .Name "env") (eq .Name "instance") }}• {{ .Name }}: `{{ .Value }}` +{{ end }}{{ end }} +{{ end }} +{{ end }} +{{ end }} +``` + +Por fim, os templates são configurados aos contact points, portanto edite o contact point do discord e no campo `Optional Discord settings` adicione em Title `{{ template "slack.title" . }}` e para Message content adicione `{{ template "slack.text" . }}` + diff --git a/docs/source/pages/Monitoramento/Prometheus.md b/docs/source/pages/Monitoramento/Prometheus.md index c8702ff..b1fb4dc 100644 --- a/docs/source/pages/Monitoramento/Prometheus.md +++ b/docs/source/pages/Monitoramento/Prometheus.md @@ -222,81 +222,3 @@ scrape_configs: Finalmente reinicie o serviço do prometheus. -## Alertas -É possÃvel configurar o grafana para enviar alertas a um canal de comunicação como email, telegram ou discord. - -- Alto uso de CPU -- Alto uso de memória -- Alto tempo de consulta -- Alto uso de arquivos abertos -- Número de conexões - -#### Contact points -Primeiro é necessario adicionar o discord como um dos pontos de notificação. - -Acessando a aba `Alerting->Contact points` clique em `Add contact point`. - -De um nome, selecione Discord como integração, adicione a URL do Webhook do canal de destino do Discord e clique em `Teste`. - -Se uma notificação de teste for enviada ao Discord, clique em salvar. - -#### Notification policies -Politicas de notificação determinam como os alertas interagem com contact points. - -#### Alert rules -Para criar alertas acesse `Alerting->Alert Rules` e clique em `create alert rules`. - -Coloque um nome no alerta, selecione o Data source (prometheus para este caso). - -Perceba que a confuguração é baseada em blocos de entrada e saÃda, inicialmente há 3 blocos de nome `A`, `B` e `C` das quais é possÃvel renomear. - -Para o bloco A selecione a métrica a ser testada como `pg_up` para determinar se um banco postgres está rodando e selecione os filter labels de acordo. - -Para o bloco B selecione uma função com base na métrica de saÃda do bloco A. Um exemplo é `Last` que representa o último valor lido. - -Para o bloco C selecione o gatilho o alerta, ou seja, se o valor de saÃda de B for maior ou menor que alguma condição. - -Configure o folder e o intervalo de tempo dos testes. Adicione também em `Description` e `Summary` informações adicionais que vão ser enviadas como parte da notificação do alerta e clique em salvar. - -#### Templates - -Para alterar o template padrão de notificação do grafana, acesse `Contact points` e clique em `Add template`. Adicione um nome e preencha o campo `Content` com o seguinte template: - -```go -{{ define "alert_severity_prefix_emoji" -}} - {{- if ne .Status "firing" -}} - :white_check_mark: - {{- else if eq .CommonLabels.severity "critical" -}} - :red_circle: - {{- else if eq .CommonLabels.severity "warning" -}} - :warning: - {{- end -}} -{{- end -}} - - -{{ define "slack.title" -}} - {{ template "alert_severity_prefix_emoji" . }} - [{{- .Status | toUpper -}}{{- if eq .Status "firing" }} x {{ .Alerts.Firing | len -}}{{- end }} | {{ .CommonLabels.env | toUpper -}} ] || {{ .CommonLabels.alertname -}} -{{- end -}} - -{{- define "slack.text" -}} -{{- range .Alerts -}} -{{ if gt (len .Annotations) 0 }} -*Summary*: {{ .Annotations.summary}} -*Description*: {{ .Annotations.description }} -Labels: -{{ range .Labels.SortedPairs }}{{ if or (eq .Name "env") (eq .Name "instance") }}• {{ .Name }}: `{{ .Value }}` -{{ end }}{{ end }} -{{ end }} -{{ end }} -{{ end }} -``` - -Por fim, os templates são configurados aos contact points, portanto edite o contact point do discord e no campo `Optional Discord settings` adicione em Title `{{ template "slack.title" . }}` e para Message content adicione `{{ template "slack.text" . }}` - -## Dashboards - Grafana -Para criar dashboards e visualizar dados: - -- Em `Data source` adicione a fonte dos dados -- Em `Dashboards` adicione dentro de um folder `new -> new dashboard` para criar um novo dashboard ou `new -> import` para importar um template pronto. -- Para importar, adicione a ID da biblioteca de templates do grafana (ou o JSON correspondente), os sources necessários e clique em load. Finalmente salve o dashboard. -- GitLab