Nginx Amplify es una forma gratuita, flexible y potente de analizar la carga y el rendimiento de los servidores web Nginx y Nginx Plus. Es fácil de configurar y usar. Nginx Amplify también viene con complementos MySQL/MariaDB, PHP-FPM para que pueda monitorear una aplicación de pila LEMP completa. (LEMP significa Linux, Nginx, MySQL/MariaDB, PHP).
Nginx Amplify es desarrollado por Nginx, Inc, la compañía detrás del servidor web Nginx. Es una solución basada en SaaS. Instala el agente Nginx Amplify en su servidor y recopilará y enviará métricas al servicio SaaS. El agente Nginx Amplify es de código abierto y liviano. Recopila muchas métricas, que incluyen:
- Métricas del sistema (CPU, uso de RAM, tráfico de red, uso de disco, E/S de disco, latencia de disco, etc.)
- Métricas de Nginx (conexiones, solicitudes, estado HTTP, tiempo de respuesta, tráfico y más)
- Métricas de MySQL/MariaDB (conexiones, consultas de selección, consultas de inserción, consultas de actualización, consultas lentas, etc.)
- Métricas de PHP-FPM (conexiones, cola de conexiones, solicitudes lentas, etc.)
Nginx Amplify también puede
- Utilice el analizador estático para mejorar la configuración de Nginx.
- Alertarle de un comportamiento anormal
Instalación de Nginx Amplify en su servidor CentOS 8/RHEL8 Linux
El agente de Nginx Amplify es de código abierto y hay un script de instalación que puede usar para instalar Nginx Amplify en las siguientes distribuciones de Linux:
- Debian 9, Debian 10,
- Ubuntu 16.04, Ubuntu 18.04
- CentOS/RHEL 6, CentOS/RHEL 7, CentOS/RHEL 8
Primero, registre una cuenta en https://amplify.nginx.com
Verifique su dirección de correo electrónico. A continuación, deberá instalar Nginx Amplify Agent en su servidor Linux. SSH en su servidor e inicie sesión como root. El sitio web de Nginx Amplify es muy bueno para dar los comandos que necesita ejecutar para instalar Nginx Amplify, así que simplemente copie y ejecute estos comandos en su servidor.
Tenga en cuenta que debe ejecutar estos comandos como root.
Nginx Amplify requiere Python2. Instálelo desde el repositorio predeterminado de CentOS.
sudo dnf install python2
Descargue el script de instalación.
Luego ejecute el script de instalación. (Cada cuenta de Amplify tiene una clave API única).
Una vez instalado, el agente se iniciará automáticamente. Puede comprobar su estado con:
systemctl status amplify-agent
Salida de muestra:
● amplify-agent.service - NGINX Amplify Agent Loaded: loaded (/usr/lib/systemd/system/amplify-agent.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2020-06-12 02:38:09 EDT; 2min 49s ago Docs: https://amplify.nginx.com/docs/ Process: 13768 ExecStart=/etc/init.d/amplify-agent start (code=exited, status=0/SUCCESS) Main PID: 13820 (amplify-agent) Tasks: 2 (limit: 5059) Memory: 48.0M CGroup: /system.slice/amplify-agent.service └─13820 amplify-agent
Sugerencia:si el comando anterior no se cierra de inmediato, presione Q para recuperar el control de la terminal.
Para habilitar el inicio automático en el momento del arranque, ejecute
sudo systemctl enable amplify-agent
Configuración de Stub_status en Nginx
El agente de Amplify puede recopilar métricas del sistema listas para usar. Para recopilar métricas de Nginx, debe configurar Nginx stub_status. Cree un archivo de configuración.
sudo nano /etc/nginx/conf.d/stub_status.conf
Agregue el siguiente bloque de servidor en el http {...}
contexto.
server { listen 127.0.0.1:80; server_name 127.0.0.1; location /nginx_status { stub_status on; allow 127.0.0.1; deny all; } }
Guarde y cierre el archivo. Luego, vuelva a cargar Nginx para que los cambios surtan efecto.
sudo systemctl reload nginx
Ahora el agente de Amplify puede comenzar a recopilar métricas de Nginx.
Creación de un formato de registro de Nginx personalizado
El agente de Nginx Amplify también puede recopilar información de los archivos de registro de Nginx. Sin embargo, el formato de registro predeterminado nos brinda información limitada. Si realmente le importa el rendimiento de la aplicación, debe crear un formato de registro personalizado para mostrar el tiempo de solicitud, el tiempo de respuesta ascendente, las coincidencias de caché, etc.
Abra el nginx.conf
archivo.
sudo nano /etc/nginx/nginx.conf
Agregue las siguientes líneas en el http {...}
contexto, encima de include
directivas. Aquí estamos creando un formato de registro de Nginx personalizado llamado apm
(supervisión del rendimiento de la aplicación) que incluye información sobre request_time , upstream_response_time , upstream_connect_time y upstream_header_time . Todos se miden en segundos con resolución de milisegundos.
log_format apm '"$time_local" client=$remote_addr ' 'method=$request_method request="$request" ' 'request_length=$request_length ' 'status=$status bytes_sent=$bytes_sent ' 'body_bytes_sent=$body_bytes_sent ' 'referer=$http_referer ' 'user_agent="$http_user_agent" ' 'upstream_addr=$upstream_addr ' 'upstream_status=$upstream_status ' 'request_time=$request_time ' 'upstream_cache_status="$upstream_cache_status" ' 'upstream_response_time=$upstream_response_time ' 'upstream_connect_time=$upstream_connect_time ' 'upstream_header_time=$upstream_header_time';
Guardar y cerrar archivo. Luego abra su archivo de configuración de host virtual Nginx. Por ejemplo,
sudo nano /etc/nginx/conf.d/linuxbabe.com.conf
En el server {...}
context, agregue las siguientes dos líneas para habilitar el registro de acceso y el registro de errores. El registro de acceso está usando apm
el formato y el registro de errores utiliza warn
nivel de registro.
access_log /var/log/nginx/linuxbabe.com.access.log apm; error_log /var/log/nginx/linuxbabe.com.error.log warn;
Guarde y cierre el archivo. Luego recarga Nginx.
sudo systemctl reload nginx
Ahora puedo ver el tiempo de respuesta ascendente y otras métricas relacionadas con el rendimiento en los gráficos de Amplify. Un buen tiempo de respuesta ascendente es inferior a 0,5 segundos. De lo contrario, sus visitantes pueden sentir que su sitio web es lento. Si puede ajustar su servidor para obtener un tiempo de respuesta ascendente por debajo de 0,2 segundos, su sitio web será muy rápido.
Si el agente de Amplify no informa las métricas de Nginx, verifique que el agente de Amplify se ejecute como el mismo usuario que el proceso de trabajo de Nginx. También puede consultar el registro del agente de Amplify (/var/log/amplify-agent/agent.log
).
Cómo excluir su propia dirección IP en el registro de acceso de Nginx
A veces, su actividad puede sesgar las métricas de Nginx. Puede excluir su propia dirección IP en el registro de acceso para evitar eso. Primero, agregue las siguientes líneas en el http
contexto del archivo de configuración de Nginx. Reemplace 12.34.56.78 con su propia dirección IP. Si la solicitud HTTP proviene de su propia dirección IP, Nginx establecerá el valor de $log_ip
variable a 0
.
map $remote_addr $log_ip { "12.34.56.78" 0; default 1; }
Luego cambie el access_log
directiva de la siguiente manera.
access_log /var/log/nginx/linuxbabe.com.access.log apm if=$log_ip;
Guarde y cierre el archivo. Luego envíe un mensaje de texto con la configuración de nginx y vuelva a cargar.
sudo nginx -t sudo systemctl reload nginx
Cómo monitorear el servidor de base de datos MariaDB/MySQL
Primero, necesitamos crear un usuario en MariaDB/MySQL para recopilar métricas. Inicie sesión en el monitor MariaDB/MySQL.
mysql -u root -p
Cree un nuevo usuario para el agente de Amplify. Reemplace your_password
con tu contraseña preferida. (Se recomienda elegir una contraseña que sea diferente de la contraseña raíz de MariaDB/MySQL).
create user 'amplify-agent'@'localhost' identified by 'your_password';
Salga del servidor MariaDB/MySQL.
exit;
A continuación, debemos habilitar el complemento Amplify MariaDB/MySQL en el archivo de configuración de Amplify.
sudo nano /etc/amplify-agent/agent.conf
En el [extensions]
sección, puede ver que el complemento mysql está deshabilitado de forma predeterminada.
[extensions] phpfpm = True mysql = False
Cambiar False
a True
para habilitar este complemento.
[extensions] phpfpm = True mysql = True
Luego en [mysql]
sección, busque la siguiente línea.
unix_socket = /var/run/mysqld/mysqld.sock password = amplify-agent
El paquete MariaDB en CentOS escucha en /var/lib/mysql/mysql.sock
Unix socket, así que cambie el valor de unix_socket
a
unix_socket = /var/lib/mysql/mysql.sock
Luego reemplace la contraseña predeterminada con la contraseña que configuró para el amplify-agent
usuario. Guarde y cierre el archivo. Luego reinicie el agente de Amplify para que los cambios surtan efecto.
sudo systemctl restart amplify-agent
Ahora el agente de Amplify comienza a recopilar métricas de MariaDB/MySQL. (Es posible que deba esperar unos minutos).
Cómo habilitar el registro de consultas lentas de MariaDB
El registro de consultas lentas puede mostrarle qué consultas tardan más en dar una respuesta. Es una herramienta importante para optimizar el rendimiento de MariaDB. Para habilitar el registro de consultas lentas de MariaDB, edite el archivo de configuración del servidor.
sudo nano /etc/my.cnf.d/mariadb-server.cnf
Agregue las siguientes líneas en el [mysqld]
sección.
slow_query_log = 1 slow_query_log_file = /var/log/mariadb/mariadb-slow.log long_query_time = 1 log_slow_rate_limit = 1000 log_slow_verbosity = query_plan log-queries-not-using-indexes
Establecí el long_query_time
a un número bajo 1 segundo. También puede especificar un valor más pequeño como 0,5 segundos. Guarde y cierre el archivo. Reinicie MariaDB para que los cambios surtan efecto.
sudo systemctl restart mariadb
Ahora Nginx Amplify puede mostrarle consultas lentas en los gráficos.
Cómo monitorear PHP-FPM
El complemento PHP-FPM del agente Amplify está habilitado de forma predeterminada, pero debemos habilitar el estado de PHP-FPM para recopilar métricas. Edite el archivo de configuración del grupo PHP-FPM.
sudo nano /etc/php-fpm.d/www.conf
Busque la siguiente línea y elimine el punto y coma para habilitar el estado de PHP-FPM.
;pm.status_path = /status
El registro lento de PHP está habilitado de forma predeterminada, como se indica en la siguiente línea.
slowlog = /var/log/php-fpm/www-slow.log
Luego busque la siguiente línea.
;request_slowlog_timeout = 0
Elimine el punto y coma y configure los segundos de tiempo de espera como 1s.
request_slowlog_timeout = 1s
Guarde y cierre el archivo. Cree un directorio para los registros de PHP-FPM.
sudo mkdir -p /var/log/php-fpm/
Reinicie PHP-FPM para que los cambios surtan efecto.
sudo systemctl restart php-fpm
Ahora el agente de Amplify comienza a recopilar métricas de PHP-FPM, incluido el registro de solicitudes lentas.
La página de descripción general de Amplify
En la página de descripción general, puede ver el puntaje de salud general de la aplicación y 5 métricas clave para su sistema.
- Solicitudes totales
- Errores HTTP 5xx
- Tiempo de solicitud (debe crear un formato de registro personalizado como se describe anteriormente para mostrar esta métrica).
- Cuánto ancho de banda usa Nginx
- Uso de la CPU
La puntuación del estado de la aplicación se ve afectada por la cantidad de errores HTTP 5xx. Si no hay errores HTTP 5xx, la puntuación será del 100%.
Gráficos
En la página de Gráficos, puede ver las métricas predefinidas del sistema, Nginx, MariaDB/MySQL y PHP-FPM.
Paneles de control de Nginx Amplify
Los tableros de Amplify le permiten crear gráficos y cuadros personalizados y agruparlos en una página. Por ejemplo, puede ensamblar todos los gráficos relacionados con el rendimiento en una página, o tal vez quiera mostrar todas las métricas para una URL en particular.
Si configuró la memoria caché Nginx FastCGI, también puede crear gráficos para la tasa de aciertos de la memoria caché Nginx y la caducidad de la memoria caché en el tablero.
Analizador
Una de las herramientas útiles del analizador es el análisis estático. Amplify puede analizar su archivo de configuración de Nginx y hacer recomendaciones de rendimiento, seguridad y confiabilidad. Puede usarlo para identificar errores y mejorar configuraciones.
Como puede ver, hay 5 advertencias para mi servidor Nginx, así que hago clic en el enlace Abrir para ver cómo ajustar mis configuraciones Nginx.
Después de realizar los ajustes, espere unos minutos y la advertencia desaparecerá.
Alertas
De forma predeterminada, si el agente de Amplify deja de funcionar, se enviará una alerta a su dirección de correo electrónico. En la página de alertas, puede configurar varias alertas para su servidor. Por ejemplo, puedo decirle a Amplify que me envíe un correo electrónico si el tiempo de respuesta ascendente es superior a 1 segundo durante los últimos 2 minutos.
Si su servidor se queda sin RAM, entonces podría matar el proceso MySQL/MariaDB. Puede crear una regla de alerta para monitorear el tiempo de actividad de MySQL/MariaDB como se muestra a continuación. Si el tiempo de actividad es inferior a 120 segundos durante los últimos 2 minutos, envíe una notificación por correo electrónico.
Amplify Agent deja de funcionar
A menudo descubrí que el agente de Amplify deja de enviar métricas de rendimiento por razones desconocidas. Creo un trabajo Cron para reiniciar Amplify-agent una vez al día para resolver este problema.
sudo crontab -e
Agregue la siguiente línea en el archivo crontab.
@daily systemctl restart amplify-agent
Guarde y cierre el archivo.