La monitorització de NGINX és essencial per assegurar que el servidor web funcioni de manera òptima i per detectar i resoldre problemes abans que afectin els usuaris finals. En aquesta secció, aprendrem com monitoritzar NGINX utilitzant diverses eines i tècniques.
Objectius d'Aprenentatge
- Entendre la importància de la monitorització de NGINX.
- Aprendre a utilitzar les eines de monitorització integrades de NGINX.
- Configurar i interpretar els registres d'accés i d'error.
- Utilitzar eines externes per a la monitorització avançada.
- Importància de la Monitorització
Monitoritzar NGINX és crucial per:
- Detectar problemes de rendiment: Identificar colls d'ampolla i optimitzar el rendiment.
- Assegurar la disponibilitat: Garantir que el servidor estigui operatiu i accessible.
- Analitzar el trànsit: Comprendre els patrons de trànsit i ajustar la configuració segons sigui necessari.
- Seguretat: Detectar intents d'intrusió i altres activitats malicioses.
- Eines de Monitorització Integrades
2.1. Registres d'Accés i d'Error
NGINX proporciona dos tipus principals de registres:
- Registres d'accés: Contenen informació sobre cada sol·licitud HTTP que NGINX processa.
- Registres d'error: Contenen informació sobre errors que es produeixen durant el funcionament de NGINX.
Configuració dels Registres
Per configurar els registres, edita el fitxer de configuració de NGINX (nginx.conf
):
http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; error_log /var/log/nginx/error.log warn; }
- log_format: Defineix el format dels registres d'accés.
- access_log: Especifica la ubicació del fitxer de registre d'accés.
- error_log: Especifica la ubicació del fitxer de registre d'error i el nivell de registre (per exemple,
warn
,error
,crit
).
2.2. Estat de NGINX
NGINX té un mòdul integrat per mostrar l'estat del servidor en temps real. Per habilitar-lo, afegeix la següent configuració al fitxer nginx.conf
:
http { server { listen 8080; server_name localhost; location /nginx_status { stub_status on; allow 127.0.0.1; # Permet només les sol·licituds des de localhost deny all; # Denega totes les altres sol·licituds } } }
Després de reiniciar NGINX, pots accedir a l'estat del servidor visitant http://localhost:8080/nginx_status
. La sortida serà similar a:
Active connections: 291 server accepts handled requests 1042 1042 821 Reading: 0 Writing: 1 Waiting: 290
- Active connections: Nombre de connexions actives.
- accepts: Nombre total de connexions acceptades.
- handled: Nombre total de connexions gestionades.
- requests: Nombre total de sol·licituds processades.
- Reading: Nombre de connexions llegint la sol·licitud del client.
- Writing: Nombre de connexions enviant la resposta al client.
- Waiting: Nombre de connexions mantenint-se en espera.
- Eines de Monitorització Externes
3.1. Grafana i Prometheus
Grafana i Prometheus són eines populars per a la monitorització i visualització de dades. Per utilitzar-les amb NGINX, necessitaràs el mòdul nginx-vts-exporter
per exportar les mètriques de NGINX a Prometheus.
Instal·lació de nginx-vts-exporter
-
Instal·la el mòdul
nginx-module-vts
:sudo apt-get install nginx-module-vts
-
Configura el mòdul en
nginx.conf
:http { vhost_traffic_status_zone; server { listen 8080; server_name localhost; location /status { vhost_traffic_status_display; vhost_traffic_status_display_format html; } } }
-
Instal·la
nginx-vts-exporter
:wget https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz tar -xzf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz ./nginx-vts-exporter
-
Configura Prometheus per recollir les mètriques:
scrape_configs: - job_name: 'nginx' static_configs: - targets: ['localhost:9913']
-
Configura Grafana per visualitzar les mètriques: Afegeix Prometheus com a font de dades i crea panells per visualitzar les mètriques de NGINX.
3.2. ELK Stack (Elasticsearch, Logstash, Kibana)
L'ELK Stack és una altra solució popular per a la monitorització i anàlisi de registres.
Configuració bàsica de l'ELK Stack
-
Instal·la Elasticsearch, Logstash i Kibana:
sudo apt-get install elasticsearch logstash kibana
-
Configura Logstash per processar els registres de NGINX:
input { file { path => "/var/log/nginx/access.log" start_position => "beginning" } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } } output { elasticsearch { hosts => ["localhost:9200"] } }
-
Inicia Elasticsearch, Logstash i Kibana:
sudo systemctl start elasticsearch sudo systemctl start logstash sudo systemctl start kibana
-
Accedeix a Kibana: Visita
http://localhost:5601
per començar a visualitzar els registres de NGINX.
- Exercicis Pràctics
Exercici 1: Configurar els Registres de NGINX
- Edita el fitxer
nginx.conf
per configurar els registres d'accés i d'error. - Reinicia NGINX i genera algunes sol·licituds HTTP.
- Revisa els fitxers de registre per assegurar-te que les sol·licituds es registren correctament.
Exercici 2: Habilitar l'Estat de NGINX
- Afegeix la configuració necessària per habilitar l'estat de NGINX.
- Accedeix a la pàgina d'estat i interpreta la informació mostrada.
Exercici 3: Configurar Prometheus i Grafana
- Instal·la i configura
nginx-vts-exporter
. - Configura Prometheus per recollir les mètriques de NGINX.
- Configura Grafana per visualitzar les mètriques recollides per Prometheus.
- Resum
En aquesta secció, hem après la importància de monitoritzar NGINX i hem explorat diverses eines i tècniques per fer-ho. Hem configurat els registres d'accés i d'error, hem habilitat l'estat de NGINX i hem utilitzat eines externes com Prometheus, Grafana i l'ELK Stack per a la monitorització avançada. La monitorització efectiva de NGINX ens permet detectar i resoldre problemes de manera proactiva, assegurant un rendiment òptim i una alta disponibilitat del servidor web.
Curs de NGINX
Mòdul 1: Introducció a NGINX
Mòdul 2: NGINX com a servidor web
- Servint contingut estàtic
- Llistats de directoris
- Pàgines d'error personalitzades
- Registre i formats de registre