Los usuarios intentan acceder a su sitio, ¿sabe qué ocurre? No aparece. Hay algunos errores que usted no había detectado antes. Los usuarios se frustran y abandonan su sitio. Con ello, ha perdido algunos usuarios fieles.

¿Cómo solucionar este problema? ¿Cómo puede enterarse de la caída del sitio antes de que sus usuarios la encuentren?

Hay dos formas posibles:

Si no le importa gastarse unos dólares, puede optar por una solución de monitorización como StatusCake u otras mencionadas aquí.

Sin embargo, si usted es un desarrollador o no está dispuesto a gastar mensualmente, puede aprovechar la API de Geekflare – Is Site Up?

¿Está el sitio activo? API comprueba si un sitio está arriba o abajo desde diferentes lugares.

Permítame mostrarle un código Python que le notifica inmediatamente cuando su sitio se cae a través de Gmail.

Comencemos explorando la API Is Site Up ? API.

¿Está activo el sitio? API

Antes de comprobar la API, necesitamos instalar un paquete llamado requests para trabajar con APIs en Python. Pero no es necesario utilizar sólo Python. Puede utilizar su lenguaje preferido. Pero asegúrese de que instala lo necesario para realizar una solicitud de API.

Así que, para aquellos que están usando Py thon instale el paquete requests usando el comando pip install requests

Complete la configuración para otros lenguajes (si elige otro que no sea Python) y continúe con los siguientes pasos.

Ahora, vaya a la página de la API de Geekflare.

Geekflare-API-page

Puede encontrar diferentes tipos de API, incluyendo Is Site Up? API, que es la que nos interesa para este artículo. Para utilizar las API de Geekflare, necesitamos una clave de API que podemos obtener registrándonos en la API de Geekflare.

Haga clic en el botón Registrarse gratis de la cabecera y cree una cuenta en la API de Geekflare.

Create Geekflare API Account

Una vez creada su cuenta, será redirigido al salpicadero de la API de Geekflare. En el salpicadero, encontrará la clave API y otros detalles como su correo electrónico, plan activo, etc,

Geekflare API Dashboard

Puede copiar la clave API. Ahora, vamos a comprobar la documentación de Is Site Up API. Haga clic en el icono de su perfil y en documentación.

Geekflare API Documentation

Le redirigirá a la documentación de la API de Geeflare.

Aquí encontrará la documentación de la API del estado del sitio (Is Site Up?). Vaya a ella.

Obtendrá el uso de la API en el lado derecho. Seleccione Python en la sección Fragmentos de código del lado derecho. Elija su idioma preferido si no utiliza Python.

Obtendrá el código para llamar a la API Is Site Up? API. Vamos a modificarlo un poco, lo que nos ayudará a añadir más código posteriormente con facilidad. Eche un vistazo al código modificado en Python.

importar peticiones
import json

URL_API = "https://api.geekflare.com/es/up" 

def make_api_request(): 
    headers = { 
        'x-api-key': 'YOUR-API-KEY',
        'Content-Type': 'application/json'
    }
    payload = json.dumps({"url": "https://geekflare.com/es"})
    response = requests.request("POST", API_URL, data=payload, headers=cabeceras) 
    return respuesta.json()
    
if __name__ == '__main__': 
    datos = make_api_request() 
    print(datos)

Sustituya YOUR-API-KEY por su propia clave API del panel de control de la API de Geekflare. Será diferente para cada usuario. Copie la clave API del tablero y añádala al código anterior

Multi-Localización

El código anterior comprueba si el sitio está activo o no desde una única ubicación (Nueva York, EE.UU.). Pero, podemos comprobarlo desde una ubicación diferente con proxyCountry en el cuerpo de la solicitud.

Otras ubicaciones disponibles son Inglaterra (Londres) y Singapur. Podemos pasar los datos de proxyCountry junto con la URL del sitio de la siguiente manera.

{
    "proxyCountry": "uk",
    "url": "geekflare.com/es"
}

Aquí puede pasar cualquier ubicación que prefiera de las disponibles.

Hemos completado el código para hacer una petición a la API que obtenga los datos sobre si un sitio está levantado o no. Ahora, es el momento de escribir algo más de código que envía el correo cuando el sitio está abajo. Vamos allá.

Recepción de correo electrónico cuando el sitio está caído

Puede encontrar el tutorial detallado sobre cómo enviar correos electrónicos a través de Gmail en Python O utilizar el siguiente código, que utiliza un paquete llamado yagmail especialmente diseñado para enviar correos electrónicos desde Gmail.

Antes de enviar un correo a través de su cuenta de Gmail, tenemos que activar la opción Permitir aplicaciones menos seguras . Puede activarla aquí.

Veamos el código.

def send_mail():
    gmail = yagmail.SMTP("gmail", "contraseña")

    receptor = "receiver@domain.com"
    asunto = "Asunto de prueba"
    body = "Este es un correo de prueba"

    gmail.send(
        to=receptor,
        asunto=subject,
        contenido=cuerpo,
    )

Puede encontrar el tutorial completo de yagmail aquí.

Ahora, tenemos código para las peticiones API y el envío de correo. Nuestro siguiente paso es invocar el send_mail siempre que recibamos un mal estado de la petición API.

Entonces, ¿cómo sabemos si nuestro sitio está caído o levantado? Cuando solicitemos la API Is Site Up? API, responderá con algunos datos como los siguientes.

{
  "timestamp": 1671545622213,
  "apiStatus": "success",
  "apiCode": 200,
  "message": "El sitio está activo",
  "meta": {
    "url": "https://geekflare.com/es",
    "proxyCountry": "Reino Unido",
    "followRedirect": false
    "test": {
      "id": "riah3dvi04ngaa1jw1b75smiibrus2a7"
    }
  },
  "data": {
    "statusCode": 200,
    "reasonPhrase": "OK"
  }
}

En él encontrará una clave llamada mensaje . El valor de la clave mensaje nos dice si el sitio está arriba o abajo. Por lo tanto, puede haber dos tipos de mensajes como sigue.

  • Sitio está arriba.
  • Sitio está abajo

Creo que ya lo ha entendido. Por lo tanto, enviaremos el correo cuando recibamos el mensaje «El sitio está caído«. El código final tendrá el siguiente aspecto.

importar peticiones
import json
import yagmail

URL_API = "https://api.geekflare.com/es/up"


def make_api_request():
    headers = {
        'x-api-key': 'YOUR-API-KEY',
        'Content-Type': 'application/json'
    }
    payload = json.dumps({
        "url": "https://geekflare.com/es",
        "followRedirect": True
        "proxyCountry": "uk"
    })
    response = requests.request("POST", API_URL, data=carga de pago, headers=cabeceras)
    return respuesta.json()


def send_mail(contenido):
    gmail = yagmail.SMTP("gmail", "contraseña")
    receptor = "email@domain.com"
    asunto = "Su sitio no funciona"
    gmail.send(
        to=receptor,
        asunto=subject,
        contenido=contenido,
    )


if __name__ == '__main__':
    datos = make_api_request()
    mensaje = datos['mensaje']

    ## enviar el correo
    if mensaje == 'El sitio no funciona':
        ## extraer la ubicación y el error
        ubicación = datos['meta']['proxyPaís']
        mail_content = "Su sitio está caído debido a un error inesperado. Vea a continuación los datos útiles para resolver errores.nn"
        if ubicación:
            mail_content = f"{ubicación}"
        mail_content = f"{data['data']['reasonPhrase']}nn"
        mail_content = "Compruebe el error y resuélvalo lo antes posible"
        send_mail(mail_content)

Puede actualizar el contenido del correo como prefiera. Hemos completado el envío de correo siempre que nuestro sitio está caído.

Pero sigue habiendo un problema.

Tenemos que ejecutar nuestro código para comprobar si nuestro sitio está activo o inactivo. ¿Con qué frecuencia lo ejecutamos? Sí, depende de sus preferencias. Digamos que tenemos que comprobarlo cada hora.

Podemos abrir un terminal o una línea de comandos y ejecutar nuestro código cada hora. Pero es un proceso repetitivo y aburrido. Y a veces podemos olvidarnos de comprobarlo. Así que necesitamos ejecutar el código automáticamente cada hora.

Aquí podemos usar el cron para ejecutar nuestro código cada hora automáticamente. Veamos cómo configurarlo.

Configuración de Cron

Veamos los pasos para configurar el cron en un sistema operativo basado en UNIX.

  • Abra el terminal.
  • Ejecute el comando crontab -e que abre el archivo crontab en el terminal.
  • Pulse la tecla i para entrar en el modo INSERTAR.
  • Ahora, añada el patrón cron, el directorio Python y el directorio de nuestro archivo de código. Vea el ejemplo a continuación.

0 * * * /usr/bin/python3 /home/muestra.py

Cron
Cron

Hemos establecido el patrón para ejecutar el código cada hora. Pero puede que necesite establecerlo a cada minuto en función de sus necesidades. Por lo tanto, puede utilizar el Gurú Crontab u otras herramientas cron para generar el patrón cron para la programación.

Eso es todo. Hemos completado la configuración para recibir notificaciones cuando el sitio está caído.

Conclusión

Utilice el cron para programar la secuencia de comandos para que se ejecute periódicamente en su servidor en la nube que funciona 24/7 para ser notificado a través de correo electrónico cuando el sitio está abajo. La automatización ahorra mucho tiempo y funciona para nosotros. Por lo tanto, hacer uso de ella como lo hicimos en este artículo.

Feliz monitorización 🙂