Saludos amigos, llevo ya desde 2016 mostrando cómo obtener el Dashboard Perfecto usando Grafana, InfluxDB, y Telegraf, hemos recorrido mucho camino juntos, y hemos visto cómo monitorizar un sin fin de componentes críticos, tales como SSL, respuestas de páginas web, VMware vSphere, Veeam, y muchísimo más.
El otro día os contaba cómo extraer las métricas desde Cloudflare, que allí podemos tener una web professional, blog, etc. Pero si bien es cierto que muchas veces no tenemos algo tan sofisticado, y tenemos un blog en WordPress con Jetpack instalado.
Con lo que hoy, veremos cómo extraer información (sin límites ni restricciones) desde la API de WordPress.com Jetpack.
Una vez hayáis terminado este tutorial, tendréis algo similar a esto, es mejor darle varios días o semanas para ver el potencial entero:
Topología de Telegraf, InfluxDB y Grafana monitorizando WordPress Jetpack
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 la API de WordPress Jetpack:
WordPress.com y WordPress RESTful API
Lo primero es comprender que hay dos diferentes API, la de WordPress de nuestro sitio web, que se puede acceder, en caso de que no lo tengais restringido, atraves de http://tusitio.com/wp-json y el API de WordPress.com que permite OAuth2, y que tiene entre otras, todo nuestro Jetpack.
En este tutorial vamos a usar el API de WordPress.com, y por supuesto, doy por hecho que ya tenéis Jetpack instalado y configurado.
Requisitos que necesitaremos para hacer funcionar todo
Para conseguir hacer funcionar todo vamos a necesitar varios componentes, dejo la lista aquí con el link a la subsección:
- Aplicación en WordPress.com
- OAuth2 Server Code
- OAuth2 Access – Bearer
Aplicación en WordPress.com
Para conseguir acceder a nuestro OAuth2 de manera sencilla, vamos a necesitar crear una aplicación en wordpress.com, tan sencillo como irnos a la siguiente URL y loguearnos con nuestras credenciales de wordpress.com (donde tenemos Jetpack configurado)
Crearemos una aplicación:
Introduciremos un nombre, una imagen, una descripción y en el resto de campos pondremos la URL de nuestro sitio:
Os quedará algo similar a esto, y veréis un Client ID y un Client Secret, apuntar esto, lo necesitaremos en breve.
OAuth2 Server Code
Para conseguir el Server Code, que en nuestro caso usaremos uno permanente, en vez de usar un Token, que tiene un periodo de vida más corto, pero lo dejo a vuestro gusto, tendremos que irnos la siguiente URL, cambiar por favor el Client ID con el vuestro de antes, y la URL del Blog con la vuestra:
- https://public-api.wordpress.com/oauth2/authorize?client_id=TUCLIENTID&redirect_uri=TUURLDETUBLOG&response_type=code
Cuando vamos a este sitio, nos pide aprovar que esta nueva aplicación de wordpress.com quiere acceder a nuestro sitio:
Y nos pide autenticarnos dentro de nuestro sitio con credenciales de admin:
Esto os lleva de vuelta a vuestro Blog, PERO en la URL tenéis un código único que usaremos en el siguiente paso:
- https://TUURLDETUBLOG/?code=TUCODIGO&state
OAuth2 Access – Bearer
Ya tenemos todo lo necesario para lanzar el siguiente comando, que debe hacerse desde una consola Linux, o un programa que permita hacer CURL, la llamada es la siguiente:
curl --request POST \ --url 'https://public-api.wordpress.com/oauth2/token' \ --header 'content-type: application/x-www-form-urlencoded' \ --data 'grant_type=authorization_code' \ --data 'client_id=TUCLIENTID' \ --data 'client_secret=TUCLIENTSECRET' \ --data 'code=TUCLIENTCODE' \ --data 'redirect_uri=https://TUURLDETUBLOG'
Este comando nos devolverá lo siguiente:
{
"access_token": "TUACCESSTOKENBEARER",
"token_type": "bearer",
"blog_id": "TUBLOGID",
"blog_url": "https:\/\/TUURLDETUBLOGs",
"scope": ""
}
Fantástico, recapitulando, con esto ya tendremos nuestro Bearer, listo para ser añadido en el siguiente paso.
Descargar y configurar el script wordpress_grafana.sh
Vamos a descargar el script que hará que todo esto funcione, nos descargaremos la última versión desde el repositorio de Github:
Este script shell, puede descargarse y ejecutarse desde el servidor de telegraf, o influxDB, o cualquier otro Linux. Tendremos que editar los parámetros de configuración:
# Endpoint URL for InfluxDB InfluxDBURL="YOURINFLUXSERVERIP" #Your InfluxDB Server, http://FQDN or https://FQDN if using SSL InfluxDBPort="8086" #Default Port InfluxDB="telegraf" #Default Database InfluxDBUser="USER" #User for Database InfluxDBPassword="PASSWORD" #Password for Database # Endpoint URL for login action WPSiteURL="YOURSITE" WPAuthBearer="YOURBEARERCODE"
Necesitamos dos datos de que ya hemos creado anteriormente.
Haremos ejecutable el script con este simple paso:
chmod +x wordpress_grafana.sh
Nos aseguraremos que tenemos jq instalado, un apt-get install jq o yum install jq si usamos CentOS:
sudo apt-get install jq
Y ya al lanzarlo si todo ha ido bien, veremos lo siguiente:
HTTP/1.1 204 No Content Content-Type: application/json Request-Id: 9ba3716e-8868-11ea-ad9d-0050569002da X-Influxdb-Build: OSS X-Influxdb-Version: 1.7.10 X-Request-Id: 9ba3716e-8868-11ea-ad9d-0050569002da Date: Mon, 27 Apr 2020 09:22:25 GMT
Además, estaría bien meterlo al cron para que se ejecute cada 30 minutos:
crontab -e */30 * * * * /home/oper/wordpress_grafana.sh >> /var/log/wordpress-stats.log 2>&1
Ya está todo, vamos al siguiente paso.
Grafana Worldmap Panel
Necesitaremos tener instalado el magnífico Worldmap Panel, tan sencillo como desde el server de Grafana lanzar:
grafana-cli plugins install grafana-worldmap-panel
Y reiniciar el servicio de Grafana:
service grafana-server restart
Y ya está todo listo.
Dashboards 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,ya podréis ver todas las gráficas:
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: 12193, que es la ID únicas del Dashboard, o la URL:

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)



Hola jorge
Para woocomerce tambien sirve o solo monitoriza los posts,visitas etc
Saludos Jose Vicente,
Si woocommerce manda algo a JetPack, entonces te serviría, de todas formas ojea las consultas API y mira a ver que puedes chequear de woocomerce, no tengo ninguno a mano. Que te interesaría monitorizar?
Buenas tardes, lo primero darte la enhorabuena por este trabajo tan estupendo, me abriste un mundo con telegraf y grafana muy divertido. Estoy teniendo un erro que no logro dar con el, cuando lanzo la consulta curl me devuelve un error y no paso de ese punto. Este es el error que me manda {“error”:”invalid_grant”,”error_description”:”Invalid authorization_code.”}% . Borre y cree de nuevo la app pongo los datos según tu indicas pero nada. La duda que tengo es si en esta parte –data ‘code=TUCLIENTCODE’ \ tenemos que poner solo el codigo o esto CODIGO&state con el state. Muchas gracias por tus artículos y mis mas sinceras felicitaciones
Hola! Tengo que ojear a ver que sucede, durante el finde me pongo, quiza hayan cambiado algo.