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
Prometheuscom 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
/ etcpara 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.dchamadoprometheus.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.serviceand 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
htpasswdestá 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: 1234agora deve solicitar nome de usuário e senha.
Instalação do Grafana no Ubuntu e Debian¶
- Adicione uma chave
gpge 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 arquivosystemdpara 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
-
Clone este projeto Github: https://github.com/vegasbrianc/prometheus
-
Inicie a pilha do Prometheus usando:
` 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:
admine 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).