Ir para o conteúdo
For the complete DHIS2 documentation index, see llms.txt.

Monitoramento

Introdução

DHIS2 pode exportar [Prometheus] (https://prometheus.io/) métricas compatíveis para monitorar nós DHIS2.

Esta seção descreve as etapas necessárias para instalar o Prometheus e o [Grafana] (https://grafana.com/) usando um procedimento de instalação padrão (apt-get) e o Docker e configurar o Grafana para mostrar as métricas DHIS2.

Para obter uma lista das métricas expostas por uma instância DHIS2, consulte o guia de monitoramento no [GitHub] (https://github.com/dhis2/wow-backend/blob/master/guides/monitoring.md).

Configurar

As próximas seções descrevem como configurar o Prometheus e o Grafana e como configurar o Prometheus para extrair dados de uma ou mais instâncias DHIS2.

Instalando Prometheus + Grafana no Ubuntu e Debian

  • Baixe o Prometheus da página oficial de [download] (https://prometheus.io/download/).

  • Certifique-se de filtrar por seu sistema operacional e arquitetura de CPU (Linux e amd64).

  • Certifique-se de selecionar a versão estável mais recente, e não a “rc”, pois ela não é considerada estável o suficiente por enquanto.

  • Baixe o arquivo, clicando no link ou usando wget.

` wget https://github.com/prometheus/prometheus/releases/download/v2.15.2/prometheus-2.15.2.linux-amd64.tar.gz `

  • Descompacte o zip

` tar xvzf prometheus-2.15.2.linux-amd64.tar.gz `

O arquivo contém muitos arquivos importantes, mas aqui estão os principais que você precisa saber.

  • prometheus.yml: o arquivo de configuração do Prometheus. Este é o arquivo que você vai modificar para ajustar seu servidor Prometheus, por exemplo, para alterar o intervalo de coleta ou para configurar alertas personalizados;
  • prometheus: o binário para seu servidor Prometheus. Este é o comando que você executará para iniciar uma instância do Prometheus em sua máquina Linux;
  • promtool: este é um comando que você pode executar para verificar a configuração do Prometheus.

Configurando o Prometheus como um serviço

  • Crie um usuário Prometheus com um grupoPrometheus.

` useradd -rs / bin / false prometheus `

  • Mova os binários do Prometheus para o diretório bin local

` cd prometheus-2.15.2.linux-amd64 / cp prometheus promtool / usr / local / bin chown prometheus: prometheus / usr / local / bin / prometheus `

  • Crie uma pasta na pasta / etc para o Prometheus e mova os arquivos do console, as bibliotecas do console e o arquivo de configuração do prometheus para esta pasta recém-criada.

` mkdir / etc / prometheus cp -R consoles / console_libraries / prometheus.yml / etc / prometheus `

Crie uma pasta de dados no diretório raiz, com uma pasta prometheus dentro.

mkdir -p /data/prometheus
chown -R prometheus:prometheus /data/prometheus /etc/prometheus/*

Crie um serviço Prometheus

Para criar um serviço Prometheus systemd, vá para a pasta / lib / systemd / system e crie um novo arquivo systemd chamadoprometheus.service.

` cd / lib / systemd / system toque em prometheus.service `

  • Edite o arquivo recém-criado e cole o seguinte conteúdo dentro:

`propriedades [Unidade] Descrição = Prometheus Want = network-online.target Depois de = network-online.target

[Serviço] Tipo = simples Usuário = prometheus Grupo = prometheus ExecStart = / usr / local / bin / prometheus \ --config.file = / etc / prometheus / prometheus.yml \ --storage.tsdb.path = "/ data / prometheus" \ --web.console.templates = / etc / prometheus / consoles \ --web.console.libraries = / etc / prometheus / console_libraries \ --web.listen-address = 0.0.0.0: 9090 \ --web.enable-admin-api

Reiniciar = sempre

[Instalar] WantedBy = multi-user.target `

  • Salve o arquivo e ative o serviço Prometheus na inicialização

` systemctl enable prometheus systemctl start prometheus `

  • Teste se o serviço está funcionando

` systemctl status prometheus

... Ativo: ativo (em execução) `

  • Agora deve ser possível acessar a IU do Prometheus acessando http: // localhost: 9090.

Configurar proxy reverso Nginx

O Prometheus não oferece suporte nativo à autenticação ou criptografia TLS. Se o Prometheus tiver que ser exposto fora dos limites da rede local, é importante habilitar a autenticação e a criptografia TLS. As etapas a seguir mostram como usar o Nginx como proxy reverso.

  • Instale o Nginx, se ainda não estiver instalado

` atualização apt apt-get install nginx `

Por padrão, o Nginx começará a escutar as solicitações HTTP na porta http padrão, que é80.

Se já houver uma instância do Nginx em execução na máquina e você não souber em qual porta ela está escutando, execute o seguinte comando:

`

lsof | grep LISTEN | grep nginx

nginx 15792 root 8u IPv4 1140223421 0t0 TCP *: http (LISTEN) `

A última coluna mostra a porta usada pelo Nginx (http ->80).

Por padrão, a configuração do Nginx está localizada em / etc / nginx / nginx.conf

Certifique-se de que nginx.conf contém a seçãoVirtual Host Config

`

Virtual Host Configs

inclua /etc/nginx/conf.d/*.conf; incluir / etc / nginx / sites-enabled / *;

`

  • Crie um novo arquivo em / etc / nginx / conf.d chamadoprometheus.conf

` toque em /etc/nginx/conf.d/prometheus.conf `

  • Edite o arquivo recém-criado e cole o seguinte conteúdo dentro:

` servidor { listen 1234;

localização / { proxy_pass http: // localhost: 9090 /; } } `

  • Reinicie o Nginx e navegue até http: // localhost: 1234

` systemctl restart nginx

em caso de erros de inicialização

journalctl -f -u nginx.service `

  • Configure Prometheus for reverse proxying, by editing /lib/systemd/system/prometheus.service and add the following argument to the list of arguments passed to the Prometheus executable.

` --web.external-url = https: // localhost: 1234 `

  • Reinicie o serviço

` systemctl daemon-reload systemctl restart prometheus

em caso de erros

journalctl -f -u prometheus.service `

Habilitar autenticação de proxy reverso

Esta seção mostra como configurar a autenticação básica por meio do proxy reverso. Se você precisar de um mecanismo de autenticação diferente (SSO, etc.), verifique a documentação relevante.

  • Certifique-se de que htpasswd está instalado no sistema

` apt-get install apache2-utils `

  • Crie um arquivo de autenticação

` cd / etc / prometheus htpasswd -c .credentials admin `

Escolha uma senha forte e certifique-se de que o arquivo de passe foi criado corretamente.

  • Edite o arquivo de configuração Nginx criado anteriormente (/ etc / nginx / conf.d / prometheus.conf) e adicione as informações de autenticação.

` servidor { listen 1234;

localização / { auth_basic "Prometheus"; auth_basic_user_file /etc/prometheus/.credentials; proxy_pass http: // localhost: 9090 /; } } `

  • Reinicie o Nginx

` systemctl restart nginx

em caso de erros

journalctl -f -u nginx.service `

  • http: // localhost: 1234 agora deve solicitar nome de usuário e senha.

Instalação do Grafana no Ubuntu e Debian

  • Adicione uma chave gpg e instale o pacote OSS Grafana do repositório APT

`sh apt-get install -y apt-transport-https

wget -q -O - "https://packages.grafana.com/gpg.key" | sudo apt-key add -

add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"

apt-get update

apt-get install grafana `

  • Se o sistema estiver usando systemd, um novografana-service é criado automaticamente. Verifique o arquivo systemd para obter algumas dicas sobre a instalação do Grafana

` cat /usr/lib/systemd/system/grafana-server.service `

Este arquivo é muito importante porque oferece informações sobre a instância Grafana recém-instalada.

O arquivo mostra:

The Grafana server binary is located at /usr/sbin/grafana-server. The file that defines all the environment variables is located at /etc/default/grafana-server The configuration file is given via the CONF_FILE environment variable. The PID of the file is also determined by the PID_FILE_DIR environment variable. Logging, data, plugins and provisioning paths are given by environment variables.

  • Inicie o servidor

` systemctl start grafana-server `

  • Acesse o console da web Grafana: http: // localhost: 3000

The default login for Grafana is admin and the default password is also admin. You will be prompted to change the password on first access.

  • Configure o Prometheus como uma fonte de dados Grafana

Acesse o painel de fontes de dados clicando em Configuração>Fontes de dados através do menu à esquerda.

Clique em Adicionar uma fonte de dados

Selecione uma fonte de dados Prometheus na próxima janela.

Configure a fonte de dados de acordo com a configuração do Prometheus (use autenticação, TSL, etc.)

Instalando Prometheus + Grafana usando Docker

Esta seção descreve como iniciar uma pilha de Prometheus contendo Prometheus e Grafana.

A configuração é baseada neste projeto: https://github.com/vegasbrianc/prometheus

` docker stack deploy -c docker-stack.yml prom `

O comando acima pode resultar no seguinte erro:

This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again

Se isso acontecer, você precisa iniciar o Swarm. Você pode usar a seguinte linha de comando:

` docker swarm init --advertise-addr <YOUR_IP> `

Depois que esse comando for executado com êxito, você poderá executar o comando anterior sem problemas.

A pilha também contém um exportador de nó para monitoramento do Docker. Se você não estiver interessado no monitoramento do Docker, pode comentar as seções relevantes no arquivo docker-stack.yml:

  • node-exporter
  • cadvisor

  • Para interromper a pilha do Prometheus:

` docker stack rm baile `

O arquivo de configuração do Prometheus (prometheus.yml) está localizado na pastaprometheus.

  • Acesse o console da web Grafana em: http: // localhost: 3000 com nome de usuário: admin e senha:foobar

Configure o Prometheus para extrair métricas de uma ou mais instâncias DHIS2

Antes de usar o Prometheus, ele precisa de configuração básica. Portanto, precisamos criar um arquivo de configuração chamado prometheus.yml

** Nota **

O arquivo de configuração do Prometheus é escrito em YAML, o que proíbe estritamente o uso de guias. Se o seu arquivo estiver formatado incorretamente, o Prometheus não iniciará. Tenha cuidado ao editá-lo.

O arquivo de configuração do Prometheus é dividido em três partes: global,rule_files e scrape_configs.

Na parte global, podemos encontrar a configuração geral do Prometheus: scrape_interval define a frequência com que o Prometheus raspa os alvos,Evaluation_interval controla a frequência com que o software avalia as regras. As regras são usadas para criar novas séries temporais e para a geração de alertas.

O bloco rule_files contém informações da localização de quaisquer regras que desejamos que o servidor Prometheus carregue.

O último bloco do arquivo de configuração é denominado scape_configs e contém as informações monitoradas pelo Prometheus.

Um arquivo de monitoramento DHIS2 Prometheus simples se parece com este exemplo:

global:
  scrape_interval:     15s
  evaluation_interval: 15s 

scrape_configs:
  - job_name: 'dhis2'
    metrics_path: '/api/metrics'
    basic_auth:
      username: admin
      password: district
    static_configs:
      - targets: ['localhost:80']

O scrape_interval global é definido para 15 segundos, o que é suficiente para a maioria dos casos de uso.

In the scrape_configs part we have defined the DHIS2 exporter. The basic_auth blocks contains the credentials required to access the metrics API: consider creating an ad-hoc user only for accessing the metrics endpoint.

O Prometheus pode ou não ser executado no mesmo servidor que o DHIS2: na configuração acima, presume-se que o Prometheus monitora apenas uma instância do DHIS2, rodando no mesmo servidor que o Prometheus, então usamos localhost.

Configure o exportador DHIS2

O subsistema de monitoramento é desabilitado por padrão no DHIS2.

Cada cluster de métricas deve ser explicitamente ativado para que as métricas sejam exportadas. Para configurar o DHIS2 para exportar uma ou mais métricas, verifique este [documento] (https://github.com/dhis2/wow-backend/blob/master/guides/monitoring.md#dhis2-monitoring-configuration).