Grafana¶
Objetivo¶
Documentar funcionalidades do Grafana
Links¶
Dependências¶
Grafana, 11.5.2, Dashboards
Instalação¶
Instale de acordo com sua distribuição na documentação
Exemplo com Debian
# 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 dadosEm
Dashboards
adicione dentro de um foldernew -> new dashboard
para criar um novo dashboard ounew -> 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:
{{ 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" . }}