Como ativar o módulo nginx-module-vts de métricas do Nginx
Esse é um tutorial de habilitar o módulo de exportação de métricas do Nginx
O objetivo é que ao ativar as métricas, seja possível exportar estas mesmas métricas para o prometheus.
De uma maneira geral, será necessário:
- clonar o projeto nginx (ele é open-source)
- clonar o módulo nginx-module-vts (que é outro projeto independente)
- compilar o nginx "linkado" com o módulo de métricas como uma dependência de compilação (ele será linkado em tempo de compilação ao core do nginx)
- o resultado da compilação será um binário do nginx (que já possui o módulo), depois basta fazer a instalação deste binário em sua máquina (via um make install)
- configurar uma rota em que serão expostas as métricas (essa configuração é feita no próprio nginx)
- configurar um scrapper do prometheus
Para ativar este módulo é necessário compilar o nginx e no momento da compilação utilizar este módulo como um dos argumentos da compilação.
Como o nginx (1.21.6) é um projeto open-source podemos baixar o código fonte e seguir as instruções para poder compilar o código fonte. Para isso eu baixei a ultima versão lançada no momento da escrita deste artigo.
Após baixar vai ser necessário extrair o arquivo tar.gz
.
tar -zxvf nginx-1.21.6.tar.gz nginx-1.21.6
Isso vai extrair estes arquivos e assim vamos ter a base para poder ligar o módulo nginx-module-vts.
Depois de baixar os fontes do nginx, é necessário clonar o repositório do módulo que desejamos adicionar. Neste caso o módulo pode ser encontrado no seguinte link.
Agora que clonamos o repositório basta fazer a configuração da instalação, já temos os pré-requisitos para que possamos fazer o build do nginx. E a partir daí ativar o módulo.
Para isso vamos entrar no diretório onde extraimos o nginx, você deve estar na pasta raiz, e executar o comando abaixo:
./configure --prefix=/var/www/html --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --with-pcre --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-http_ssl_module --with-http_image_filter_module=dynamic --modules-path=/etc/nginx/modules --with-http_v2_module --with-stream=dynamic --with-http_addition_module --with-http_mp4_module --add-module=/root/nginx-module-vts
Verifique que no final colocamos o argumento --add-module com caminho do diretório de onde foi baixado o módulo nginx-module-vts.
Após executar com sucesso este código, basta executar o comando make
e depois executar um make install
este vai gerar um executável do nginx com este módulo embutido.
Ativar o nginx para funcionar na máquina com o comando:
sudo nginx start
Após fazer a compilação basta seguir as instruções do repositório do módulo para ativar a rota que possui as estatísticas.
Para isso vai precisar editar o seu arquivo nginx.conf
sudo vim /etc/nginx/nginx.conf
http {
vhost_traffic_status_zone;
...
server {
...
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
Após isso basta para a instância e iniciar novamente.
sudo nginx stop
sudo nginx start
Ao fazer esta alteração o módulo já deve estar ativo, para testar vamos abrir um browser no endereço: http://localhost/status
Ao fazer este acesso vai ver uma tela bem parecida com esta:
Pronto, agora já possui uma instalação do nginx com um módulo para métricas funcional.
O ultimo passo é agora a gente configurar um exporter para o prometheus, para isso vamos precisar adicionar este novo scraper em nosso scraper-config. A configuração que utilizei foi a seguinte:
- job_name: nginx
honor_timestamps: true
scrape_interval: 15s
scrape_timeout: 10s
metrics_path: /status/format/prometheus
scheme: http
follow_redirects: true
static_configs:
- targets:
- localhost
Repare que no metrics_path
estou passando um valor que exporta os dados no formato do prometheus. Que também pode ser acessado via browser.
Lembrando que neste caso específico a mesma máquina que está executando a instância do nginx também está executando o prometheus. Por isso toda a configuração é feita utilizando o localhost. Por isso é necessário fazer os ajustes nos scripts caso esteja utilizando uma configuração diferente.
Após fazer esta configuração é possível ver que a instalação do prometheus está fazendo o scraping correto, via a tela de status do prometheus.
Agora basta utilizar o sua ferramenta preferida de monitoramento para criar os gráficos que deseja com os dados fornecidos pelo módulo de métricas do vts do nginx.