
Saludos amigos, sigo con esta interesante serie sobre InfluxDB, Telegraf y Grafana, en este caso hoy vamos a hablar sobre cómo activar outputs específicos sobre Linux, tales como pueden ser Networking, MySQL/MariaDB o Nginx, que creo que son lo más comunes que siempre tenemos sobre estas máquinas.
Activar input de Networking
Por defecto, la configuración de Telegraf no viene con el plugin de networking habilitado, pero es tan sencillo como buscar por inputs.net y descomentar la línea, no hay que descomentar nada más, a no ser que queramos monitorizar una interfaz de red específica, entonces tendremos que descomentar la parte de interfaces y poner el nombre apropiado para la interfaz que queremos monitorizar:
# # Read metrics about network interface usage [[inputs.net]] # ## By default, telegraf gathers stats from any up interface (excluding loopback) # ## Setting interfaces will tell it to gather these explicit interfaces, # ## regardless of status. # ## # # interfaces = ["eth0"]
Después de esto un típico restart para Debian/CentOS:
# En Debian service telegraf restart # En RHEL systemctl start telegraf
Vamos a configurar ahora la parte de red de manera que podemos ver lo importante de la interfaz, en la imagen a continuación vemos mucha información, no temáis os lo explico paso a paso:
- Consulta A: seleccionaremos default, luego el tipo net, en host, seleccionaremos el host que queramos monitorizar.
- En Select seleccionaremos bytes_recv, de tipo mean(), con derivative10s, y alias bytes_recv
- Consulta B: seleccionaremos default, luego el tipo net, en host, seleccionaremos el host que queramos monitorizar.
- En Select seleccionaremos bytes_recv, de tipo mean(), con derivative-10s, y alias bytes_recv
Al seleccionar un valor negativo crearemos la visualización que parte desde 0 hacía arriba con un valor y hacía abajo con otro valor, que queda bastante bien para en este caso, paquetes enviados y recibidos, si queréis cambiar los colores, os dejo aquí cómo hacerlo:
Eso es todo para Networking, podéis cambiar y jugar con los derivative y el mean si queréis para conseguir resultados algo diferentes.
Activar input de MySQL/MariaDB
Es el momento de monitorizar un MySQL o MariaDB, servicio crítico en cualquier entorno donde se ejecutan. Es cierto que el plugin, que ya viene como siempre dentro de Telegraf, es bastante amplio os dejo todo lo que podemos hacer, para que lo configuréis a vuestro gusto:
- Global statuses
- Global variables
- Slave statuses
- Binlog size
- Process list
- User Statistics
- Info schema auto increment columns
- InnoDB metrics
- Table I/O waits
- Index I/O waits
- Perf Schema table lock waits
- Perf Schema event waits
- Perf Schema events statements
- File events statistics
- Table schema statistics
En este caso voy a describir solamente algunos de todo estos campos, vamos a empezar con la configuración del Plugin, dentro del fichero telegraf.conf como siempre nos iremos hasta el inputs.mysql y configuraremos la autenticación, como telegraf es un servicio local, lo normal es que el host sea localhost:
[[inputs.mysql]] # ## [username[:password]@][protocol[(address)]]/[?tls=[true|false|skip-verify]] servers = ["user:mys3curepass0rd@tcp(localhost:7306)/"]
Y descomentaremos también el resto de funcionalidades, o las que tengamos pensado usar:
perf_events_statements_digest_text_limit = 120 perf_events_statements_limit = 250 perf_events_statements_time_limit = 86400 # # # ## if the list is empty, then metrics are gathered from all databasee tables table_schema_databases = [] # # # ## gather metrics from INFORMATION_SCHEMA.TABLES for databases provided above list gather_table_schema = false
etc. Y realizaremos ahora un reinicio del servicio de Telegraf como siempre
# en Debian service telegraf restart # en RHEL systemctl start telegraf
MySQL/MariaDB bytes recibidos y enviados
Vamos a comenzar con algo sencillo, ya que es muy parecido a lo anterior, en este caso he decidido aglutinar la consulta en una sola:
- Consulta A: seleccionaremos default, luego el tipo mysql, en host, seleccionaremos el host que queramos monitorizar.
- En Select seleccionaremos bytes_received, de tipo mean(), con derivative1s, y alias bytes_received
- En Select seleccionaremos bytes_sent, de tipo mean(), con derivative1s, y alias bytes_sent
Y ahora para cambiar uno de los valores y pasarlo a negativo, para que nos de el resultado de arriba y abajo, podemos usar el Display:
El resultado es exactamente igual que antes, pero haciéndolo de otra manera 🙂
MySQL/MariaDB bytes recibidos y enviados
Vamos ahora a calcular las conexiones cada minuto, para ello configuraremos la gráfica de la siguiente manera:
- Consulta A: seleccionaremos default, luego el tipo mysql, en host, seleccionaremos el host que queramos monitorizar.
- En Select seleccionaremos connections, de tipo mean(), con derivative1m
Es bastante básica esta gráfica, pero es un ejemplo 🙂
MySQL/MariaDB Query Performance
Vamos a monitorizar ahora el performance de MySQL y para ello monitorizaremos tres diferentes parámetros, queries, slow queries y emtpy queries:
- Consulta A: seleccionaremos default, luego el tipo mysql, en host, seleccionaremos el host que queramos monitorizar.
- En Select seleccionaremos queries, de tipo mean(), con derivative1m
- Consulta B: seleccionaremos default, luego el tipo mysql, en host, seleccionaremos el host que queramos monitorizar.
- En Select seleccionaremos slow_queries, de tipo mean(), con derivative1m
- Consulta C: seleccionaremos default, luego el tipo mysql, en host, seleccionaremos el host que queramos monitorizar.
- En Select seleccionaremos emtpy_queries, de tipo mean(), con derivative1m
Nos quedará algo similar a lo siguiente, espero que en vuestro entorno de manera más irregular y llena de datos 🙂
MySQL/MariaDB Conexiones
Vamos a monitorizar las conexiones a la base de datos, y para ello vamos a monitorizar diferentes valores: threads connected, threads running, connection errors internal, aborted connections y connection errors max connections
Activar input de NGINX
Por último y no menos importante, vamos a ver cómo monitorizar un nginx, para ello nos ayudaremos del nginx status, el módulo de nginx de stub status, es muy sencillo comprobar si lo tenemos habilitado, lo normal es que sí, si nos devuelve el siguiente resultado es que sí lo tenemos habilitado:
nginx -V 2>&1 | grep -o with-http_stub_status_module with-http_stub_status_module
Tendremos ahora que añadir lo siguiente a nuextro nginx.conf, o uno de los ficheros ya configurados para mostrar nuestro sitio:
server {
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
Haremos un nginx -t para comprobar si la sintaxis del ficheor está correcta y reiniciaremos el servicio de nginx:
nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful nginx -s reload
Como hemos introducido una regla de seguridad para que solo nuestro server puede acceder a esta página de status, recomendado, podremos acceder por curl desde este propio servidor:
curl https://tuserver.tudominio.es/nginx_status/ Active connections: 1 server accepts handled requests 16453 16453 79588 Reading: 0 Writing: 1 Waiting: 0
¡Bien! Es tiempo de configurar ahora el fichero de telegraf.conf como hicimos anteriormente, y buscar el input_nginx y lo configuraremos de la siguiente manera:
[[inputs.nginx]] # ## An array of Nginx stub_status URI to gather stats. urls = ["https://tuserver.tudominio.es/nginx_status/"]
Y ahora reiniciaremos el servicio de telegraf:
# en Debian service telegraf restart # en RHEL systemctl start telegraf
Podemos lanzar un test directamente desde CLI antes de irnos a la parte gráfica, de la siguiente manera:
telegraf -config /etc/telegraf/telegraf.conf -input-filter nginx -test * Plugin: inputs.nginx, Collection 1 > nginx,server=tuserver.tudominio.es,port=443,host=tuserver.tudominio.es waiting=1i,active=2i,accepts=16505i,handled=16505i,requests=79617i,reading=0i,writing=1i 1487527080000000000
Ya nos podemos ir a Grafana para configurar nuestra configuración de NGINX, que una vez terminada quedará de la siguiente manera:
- Consulta A: seleccionaremos default, luego el tipo nginx, en host, seleccionaremos el host que queramos monitorizar.
- En Select seleccionaremos requests, de tipo mean(), con derivative10s y alias requests, añadiremos un nuevo field y
- En Select seleccionaremos accepts, de tipo mean(), con derivative10s y alias accepts, añadiremos un nuevo field y
- En Select seleccionaremos active, de tipo mean(), con derivative10s y alias active, añadiremos un nuevo field y
- En Select seleccionaremos handled, de tipo mean(), con derivative10s y alias handled, añadiremos un nuevo field y
- En Select seleccionaremos waiting, de tipo mean(), con derivative10s y alias waiting
En Legend marcaremos las opciones como las siguientes, si lo queremos mostrar de esta manera claro:
En Display, si marcamos las siguientes opciones, obtendremos el resultado como el mostrado en la imagen.
Eso es todo, si habéis seguido todos los pasos, y con un poco de tiempo, tendréis ahora un Dashboard parecido al siguiente, o espero que mejor:
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 puedes compartir tu dashboard? Es decir exportarlo grafana y subirlo a sitio donde se pueda importar a mi grafana?
Gracias.
Saludos Tomás, este especialmente de MariaDB no es que me quedará tampoco nada del otro mundo, es muy sencillo de conseguir 🙂
Un saludo
Se puede monitorizae tambien los logs de squid? ips, macs, aginas visitdas, apps utilizadas, tiempo de conexion, cuentas veces por dia o semana se conecta ese usuario?
Saludos Victor, claro, ademas tenemos un post para ello: