Saludos amigos, llevamos ya varios años viendo cómo monitorizar todo tipo de aplicaciones, elementos de nuestro Datacenter, etc. Hoy toca el turno a un caso de uso que seguro necesitaremos más de una vez, se trata de monitorizar la respuesta HTTP que nos da uno o más sitios web.
Una vez hayáis terminado este tutorial, tendréis algo similar a esto:
Disección de una HTTP/HTTPS Response
Cuando nuestros navegadores, servidores, móviles, cualquier dispositivo se conectan a una página web, lo que está sucediendo por debajo es una conexión desde nuestro terminal hasta un servidor web, CDN, etc. Dependiendo de la respuesta que nos dé, tendremos un resultado u otro.
Por ejemplo, esta HTTP response nos enseña que la versión del protocolo es HTTP/1.1, el resultad en código es 200 y en message es OK. Esto es lo que nos gustaría ver en cada página web.
Además nos da otra información como es el servidor web que se usa, Apache, así cómo cuando se ha realizado la consulta, y el tamaño de la misma:
Los resultados de un HTTP Response pueden ser varios, os dejo una imagen creada por Suso Banderas que nos explica muy bien los diferentes resultados:
Todo esto está muy bien, pero en caso de que estemos prestando servicio de Hosting a Clientes, o simplemente tengamos varias páginas web que queremos conocer el estado de las mismas, ¿cómo monitorizamos de manera global y sencilla muchas webs sin tener que entrar en ellas?
Topología de Telegraf, InfluxDB y Grafana monitorizando SSL
Aunque ya os he mostrado en algunas ocasiones el diagrama de cómo sería la monitorización usando Telegraf, Grafana e InfluxDB, os dejo de nuevo el diagrama, esta vez monitorizando páginas web:
Cómo activar el input nativo de Telegraf para monitorizar HTTP/HTTPS Responses
Por suerte para nosotros, telegraf ya trae de forma nativa un input (plugin) para monitorizar el estado HTTP/HTTPS response, podremos monitorizar lo siguiente, que es sin duda más que completo para nuestro objetivo:
http_response
- tags:
- server (target URL)
- method (request method)
- status_code (response status code)
- result
- fields:
- response_time (float, seconds)
- content_length (int, response body length)
- response_string_match (int, 0 = mismatch / body read error, 1 = match)
- http_response_code (int, response status code)
- result_type (string, deprecated in 1.6: use
resulttag andresult_codefield) - result_code (int)
Para activarlo, será tan sencillo como editar el telegraf.conf, o mejor, crear un nuevo fichero en /etc/telegraf/telegraf.d/http_response.conf, y dentro introduciremos lo siguiente (os he dejado algunos ejemplos):
[[inputs.http_response]]
urls = ["https://www.jorgedelacruz.es","https://jorgedelacruz.uk","https://www.vmware.com/","https://www.veeam.com/","https://github.com/","https://www.microsoft.com/en-gb/"]
response_timeout = "10s"
method = "GET"
follow_redirects = false
Una vez tengamos todas las URL añadidas, haremos un renicio del servicio de telegraf:
service telegraf restart
Comprobando que estamos ingiriendo información con Chronograf
Lo normal a estas alturas, si hemos realizado bien todos los pasos, es que ya estemos mandando información recopilada por el script hacía InfluxDB, si realizamos una búsqueda usando el maravilloso Chronograf, podremos comprobar que tenemos información:
Todas las variables de este input para monitorizar SSL se guardan en http_response con lo que es realmente sencillo encontrarlas.
Dashboard de Grafana
He creado un Dashboard desde cero seleccionando las mejores peticiones a la base de datos, rematando colores, pensando que gráfica y cómo mostrarla, y además todo está automatizado de manera que encaja con nuestro entorno sin ningún problema y sin tener que editar nada de forma manual. El Dashboard lo podéis encontrar aquí, una vez importado, podéis usar los menús desplegables superiores para seleccionar entre vuestras URL:
Importar los Dashboard de Grafana de manera sencilla
Para que no tengáis que perder horas configurando un nuevo Dashboard, e ingerir y depurar queries, os he creado ya cuatro maravillosos Dashboards con todo lo necesario para monitorizar nuestro entorno de manera muy sencilla, os quedará como la imagen que os mostré más arriba.
Desde nuestro Grafana, haremos Create – Import
Seleccionaremos el nombre que queramos e introduciremos el ID: 11777, que es la ID única del Dashboard, o la URL:Si queréis verlos funcionando sin necesidad de instalar nada, aquí el link a mi entorno.
Espero que os guste, y me gustaría dejaros la serie completa aquí, para que empecéis a jugar con los plugins que os he ido contando todos estos años:
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte I (Instalando InfluxDB, Telegraf y Grafana)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte II (Instalar agente Telegraf en Nodos remotos Linux)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte III Integración con PRTG
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte IV (Instalar agente Telegraf en Nodos remotos Windows)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte V (Activar inputs específicos, Red, MySQL/MariaDB, Nginx)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte VI (Monitorizando Veeam)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte VII (Monitorizar vSphere)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte VIII (Monitorizando Veeam con Enterprise Manager)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte IX (Monitorizando Zimbra Collaboration)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte X (Grafana Plugins)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XI
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XII – Plugin nativo de Telegraf para vSphere
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XIII – Veeam Backup for Microsoft Office 365
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XIV – Veeam Availability Console
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XV – Monitorización IPMI de nuestros Hosts ESXi
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XVI – Rendimiento y seguridad avanzada de Veeam Backup for Microsoft Office 365
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XVII – Mostrando los Dashboards en dos monitores usando Raspberry Pi 4
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XVIII – Monitorizar temperatura y estado de Raspberry Pi 4
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XIX (Monitorizando Veeam con Enterprise Manager) Shell Script
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XX (Monitorizando Certificados SSL x.509)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXI (Monitorizando HTTP Responses)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXII (Monitorizando Cloudflare con Mapa)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXIII (Monitorizando WordPress con Jetpack RESTful API)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXIV (Monitorizando de Veeam for Microsoft Azure)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXV (Monitorizando Consumo Eléctrico)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXVI (Monitorizando Veeam Backup for Nutanix)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXVII (Monitorizando ReFS y XFS (block-cloning y reflink)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXVIII (Monitorizando HPE StoreOnce)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXIX (Monitorizando PiHole)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXX (Monitorizando Veeam Backup for AWS)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXXI (Monitorizando Unifi Protect)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXXII (Monitorizando Veeam ONE – experimental)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXXIII (Monitorizando NetApp ONTAP)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXXIV (Monitorizando Goldshell Miners – JSONv2)


Una pregunta, veo que hay un tiempo de respuesta de 0.024ms para alguna de las URLs que muestreas, en mi mente es un valor extremadamente bajo, puede ser o me estoy rallando XD
Ah pues tienes razon, que lo que devuelve son seconds: https://github.com/influxdata/telegraf/blob/master/plugins/inputs/http_response/README.md#result–result_code
Ya he cambiado todo, descarga la nueva version 🙂
https://grafana.com/grafana/dashboards/11777-http-response-monitoring/?tab=revisions
Saludos