Tutorial Básico de Site24x7
¿Qué es Site24x7?
Site24x7 es una plataforma de monitoreo integral que te permite supervisar el rendimiento y disponibilidad de tus aplicaciones web, servidores, APIs y servicios en la nube. Funciona como un "vigilante" que verifica constantemente que tus aplicaciones estén funcionando correctamente y te alerta cuando algo va mal.
Principales características:
- Monitoreo de uptime (tiempo de actividad) de sitios web
- Seguimiento del rendimiento de APIs REST y transacciones
- APM (Application Performance Monitoring) para aplicaciones
- Monitoreo de servidores y recursos
- Alertas en tiempo real
- Métricas personalizadas y trazas de rendimiento
¿Por qué usarlo?
Imagina que tienes una aplicación en producción y se cae a las 3 AM. Sin Site24x7, no te enterarías hasta que los usuarios comiencen a reportar problemas. Con Site24x7, recibes una notificación inmediata y puedes actuar antes de que afecte a muchos usuarios.
Uso con Node.js
Site24x7 ofrece un agente APM específico para Node.js que monitorea automáticamente el rendimiento de tu aplicación backend.
Instalación del agente APM Node.js (Versión 4.x+)
Paso 1: Instalar el paquete
npm install apminsight --save
Paso 2: Configuración
Tienes dos opciones de configuración:
Opción A: Archivo de configuración (Recomendado)
Crea un archivo apminsightnode.json en el directorio raíz de tu aplicación:
{
"licenseKey": "TU_LICENSE_KEY_DE_SITE24X7",
"appName": "Mi-App-Node",
"port": 3000
}
Opción B: Variables de entorno
export APMINSIGHT_LICENSE_KEY="TU_LICENSE_KEY"
export APMINSIGHT_APP_NAME="Mi-App-Node"
export APMINSIGHT_PORT=3000
Paso 3: Inicializar el agente
Añade esta línea al inicio de tu archivo principal (antes de cualquier otro require):
// Para CommonJS
require('apminsight');
// O para ES Modules
import apminsight from 'apminsight';
apminsight.config();
const express = require('express');
const app = express();
// Tu aplicación normal
app.get('/', (req, res) => {
res.send('Mi aplicación Node.js');
});
app.get('/api/orders', async (req, res) => {
// El agente rastreará automáticamente esto
const orders = await getOrders();
res.json(orders);
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Servidor corriendo en puerto ${PORT}`);
});
Método alternativo con NODE_OPTIONS:
# Usando variable de entorno
export NODE_OPTIONS="-r apminsight"
node app.js
# O directamente en el comando
node -r apminsight app.js
Endpoint de Health Check adicional
Además del APM, puedes crear un endpoint de health check simple:
app.get('/health', (req, res) => {
res.status(200).json({
status: 'healthy',
uptime: process.uptime(),
timestamp: Date.now(),
environment: process.env.NODE_ENV
});
});
Características monitoreadas automáticamente:
- ✅ Tiempo de respuesta HTTP
- ✅ Throughput (peticiones por minuto)
- ✅ Operaciones de base de datos (MySQL, PostgreSQL, MongoDB, Redis, etc.)
- ✅ Llamadas HTTP externas
- ✅ Errores y excepciones
- ✅ Frameworks soportados: Express, Koa, Hapi
Uso con Next.js
Next.js tiene soporte oficial desde 2024 con un paquete específico.
Instalación para Next.js
Paso 1: Instalar los paquetes necesarios
npm install apminsight --save
npm install @apminsight/next --save
Paso 2: Configuración
Crea el archivo apminsightnode.json en la raíz:
{
"licenseKey": "TU_LICENSE_KEY_DE_SITE24X7",
"appName": "Mi-App-NextJS",
"port": 3000
}
Paso 3: Modificar package.json
Actualiza tus scripts en package.json:
{
"scripts": {
"dev": "NODE_OPTIONS='-r @apminsight/next' next dev",
"build": "next build",
"start": "NODE_OPTIONS='-r @apminsight/next' next start"
}
}
API Routes con Next.js App Router
Para Next.js 13+ con App Router:
// app/api/health/route.js
export async function GET() {
const healthData = {
status: 'ok',
timestamp: new Date().toISOString(),
version: process.env.APP_VERSION || '1.0.0',
uptime: process.uptime()
};
return Response.json(healthData, { status: 200 });
}
Monitoreo avanzado de servicios
// app/api/monitor/route.js
export async function GET() {
try {
// Verificar servicios críticos
const checks = await Promise.all([
checkDatabase(),
checkExternalAPI(),
checkCache()
]);
const allHealthy = checks.every(check => check.healthy);
return Response.json({
status: allHealthy ? 'healthy' : 'degraded',
services: {
database: checks[0],
externalAPI: checks[1],
cache: checks[2]
},
timestamp: new Date().toISOString()
}, { status: allHealthy ? 200 : 503 });
} catch (error) {
return Response.json({
status: 'error',
message: error.message
}, { status: 500 });
}
}
async function checkDatabase() {
try {
// Lógica para verificar conexión a BD
return { healthy: true, responseTime: 50 };
} catch (error) {
return { healthy: false, error: error.message };
}
}
async function checkExternalAPI() {
try {
// Verificar API externa
return { healthy: true, responseTime: 120 };
} catch (error) {
return { healthy: false, error: error.message };
}
}
async function checkCache() {
try {
// Verificar Redis/cache
return { healthy: true, responseTime: 10 };
} catch (error) {
return { healthy: false, error: error.message };
}
}
Configuración en Site24x7
1. Obtener la License Key
- Inicia sesión en tu cuenta de Site24x7
- Ve a Admin → Developer → API
- Copia tu License Key para usarla en la configuración
2. Crear Monitor de Website
- Ve a Monitors → Add Monitor → Website Monitor
- Configura:
- Display Name: Nombre descriptivo
- Website URL:
https://tuapp.com/health - Check Frequency: Cada 1, 5 o 10 minutos
- HTTP Method: GET
- Haz clic en Save
3. Crear Monitor de REST API
- Ve a Monitors → Add Monitor → REST API
- Configura:
- Display Name: API Monitor
- Endpoint URL: Tu endpoint de API
- Check Frequency: Según necesites
- Authentication: Si es necesario (Basic, OAuth 2.0, etc.)
4. Configurar Alertas
- Ve a Admin → Configuration Profiles → Threshold and Availability
- Define umbrales:
- Tiempo de respuesta > 3000ms
- Código de estado HTTP ≠ 200
- Tiempo de inactividad > 2 minutos
- Configura notificaciones:
- Email, SMS, Slack, webhooks
- Define grupos de usuarios
Métricas monitoreadas por el agente APM
Node.js y Next.js:
- Apdex Score: Índice de satisfacción del usuario (0-1)
- Tiempo de respuesta promedio: Latencia de tus endpoints
- Throughput: Peticiones por minuto
- Tasa de errores: Porcentaje de peticiones fallidas
- Operaciones de base de datos: Queries SQL con tiempo de ejecución
- Llamadas HTTP externas: APIs de terceros
- Traces detallados: Stack traces completos de errores
- Componentes externos: Redis, MongoDB, Elasticsearch, etc.
Soporte de bases de datos (2025):
- MySQL, MySQL2, PostgreSQL, MongoDB
- Redis, ioredis, Memcached
- Elasticsearch, Cassandra
- MSSQL, Oracle Database
Mejores prácticas
Health Checks inteligentes: No solo retornes un 200 OK, verifica realmente que los servicios críticos funcionen
Monitoreo dual: Usa tanto el Website Monitor (para disponibilidad externa) como el APM (para rendimiento interno)
Alertas graduales:
- TROUBLE: Tiempo de respuesta lento
- DOWN: Servicio no responde
Monitoreo de transacciones completas: Usa REST API Transaction para probar flujos completos (login → checkout → payment)
Variables de entorno: Nunca hardcodees las License Keys, usa variables de entorno
Diferentes ambientes: Configura monitores separados para desarrollo, staging y producción
Integración con RUM: Para Next.js, combina el monitoreo backend con Real User Monitoring para métricas del frontend
Ejemplo completo: Docker con Node.js
FROM node:18-alpine
WORKDIR /app
# Copiar package.json
COPY package*.json ./
# Instalar dependencias incluyendo apminsight
RUN npm install
# Copiar código
COPY . .
# Copiar configuración de APM
COPY apminsightnode.json ./
# Exponer puerto
EXPOSE 3000
# Iniciar con APM
CMD ["node", "-r", "apminsight", "app.js"]
Con variables de entorno:
docker run -e APMINSIGHT_LICENSE_KEY="tu-key" \
-e APMINSIGHT_APP_NAME="mi-app" \
-e APMINSIGHT_PORT=3000 \
-p 3000:3000 \
mi-app-node
Diferencias importantes con OAuth 2.0 (Actualización 2025)
Site24x7 migró completamente a OAuth 2.0. Si usas la API REST directamente:
const axios = require('axios');
const getAccessToken = async () => {
const response = await axios.post('https://accounts.zoho.com/oauth/v2/token', {
refresh_token: 'TU_REFRESH_TOKEN',
client_id: 'TU_CLIENT_ID',
client_secret: 'TU_CLIENT_SECRET',
grant_type: 'refresh_token'
});
return response.data.access_token;
};
const getMonitors = async () => {
const token = await getAccessToken();
const response = await axios.get('https://www.site24x7.com/api/monitors', {
headers: {
'Authorization': `Zoho-oauthtoken ${token}`,
'Accept': 'application/json; version=2.0'
}
});
return response.data;
};
Conclusión
Con esta configuración actualizada, tendrás visibilidad completa sobre el estado y rendimiento de tus aplicaciones Node.js y Next.js en Site24x7. El agente APM se encargará automáticamente de recopilar métricas importantes sin que tengas que instrumentar manualmente tu código.
Recursos adicionales:
¡Feliz monitoreo! 🚀