Monitorizando Fortigate con Telegraf, InfluxDB y Grafana
En este post vamos a intentar recopilar ciertas métricas de Fortigate, si disponemos de este fabuloso firewall UTM (o ahora llamados Next-Generation Firewall) podremos mediante SNMP obtener estos datos y visualizarlos en tiempo real, gracias a Telegraf, InfluxDB y Grafana, ¡es una pXta pasada!
Sabemos que por SNMP un Fortigate escupe muchísima información, a parte de los valores más comunes como puedan ser el uso de CPU, Memoria, Uptime, Sesiones, uso de disco, o los tráficos de cada interfaz de red, si no que también el estado del Antivirus por ejemplo, o si ha detectado algún virus, o si lo ha bloqueado… Pues mediante el agente de Telegraf podremos realizar estas consultas SNMP al Fortigate, y almacenarlos en nuestro querido InfluxDB, ¿para qué? para luego visualizar esos datos de una manera más atractiva con Grafana.
Por tanto, ya vimos cómo desplegar el Stack de TICK (Telegraf, InfluxDB, Chronograf y Kapacitor) aunque realmente necesitaremos sólo TIG (Telegraf, InfluxDB y Grafana), lo único que a continuación necesitamos es en un agente de Telegraf meterle la configuración necesaria para que conecte por SNMP al Fortigate (y obviamente en el Fortigate configurarle SNMP).
En el fichero de configuración de Telegraf añadimos:
[[inputs.snmp]] agents = [ "DIRECCION_IP_FORTIGATE:161" ] timeout = "5s" retries = 3 version = 2 community = "COMUNIDAD_SNMP" max_repetitions = 10 name = "FORTI" interval = "1s" [[inputs.snmp.field]] name = "Uptime" oid = "iso.3.6.1.2.1.1.3.0" [[inputs.snmp.field]] name = "Memoria" oid = "iso.3.6.1.4.1.12356.101.4.5.3.1.7.1" [[inputs.snmp.field]] name = "CPU" oid = ".1.3.6.1.4.1.12356.101.4.1.3.0" [[inputs.snmp.field]] name = "Sessions" oid = "1.3.6.1.4.1.12356.101.4.1.8.0" [[inputs.snmp.field]] name = "AV" oid = ".1.3.6.1.4.1.12356.101.8.2.1.1.1" [[inputs.snmp.field]] name = "Red" oid = "1.3.6.1.4.1.12356.101.13.2.1.1.5.1" [[inputs.snmp.field]] name = "Uso de disco" oid = "1.3.6.1.4.1.12356.101.4.1.6.0" [[inputs.snmp.field]] name = "Virus Detectado" oid = "1.3.6.1.4.1.12356.101.8.2.1.1.1" [[inputs.snmp.field]] name = "Virus Bloqueado" oid = "1.3.6.1.4.1.12356.101.8.2.1.1.2" [[inputs.snmp.field]] name = "LAN - Entrada" oid = "1.3.6.1.2.1.31.1.1.1.6.8" [[inputs.snmp.field]] name = "LAN - Salida" oid = "1.3.6.1.2.1.31.1.1.1.10.8" [[inputs.snmp.field]] name = "WAN - Entrada" oid = "1.3.6.1.2.1.31.1.1.1.6.1" [[inputs.snmp.field]] name = "WAN - Salida" oid = "1.3.6.1.2.1.31.1.1.1.10.1" ...
Como vemos, en el fichero de configuración de Telegraf estamos añadiendo un input o entrada de tipo SNMP contra Fortigate, indicamos el intervalo de los chequeos, en este caso lo tengo a 1s, esto es, cada segundo consulta y almacena los datos. Y por último añadimos los OID específicos que nos interese absorver. Os dejo los ejemplos de los hablados en la intro de este post, vamos a monitorizar su CPU, Memoria, Uso de disco, Uptime, Sesiones, Estado AV, Virus detectados, Virus bloqueados, Estado y tráfico de cada interfaz (WAN, LAN, DMZ, INVITADOS, GESTION…)
Grabamos el fichero y reiniciamos Telegraf, con esto deberíamos tenerlo listo, podemos probar que la configuración es válida también:
systemctl restart telegraf.service telegraf --test
Y tenemos dos opciones, vamos directamente a Grafana y comenzamos a dibujar el panel que nos interese, o si sois como yo, que de Flux no controláis, recordar que con Chronograf podéis rápidamente a golpe de ratón sacar las queries.
Recordar que para que Grafana pueda conectar contra vuestro InfluxDB previamente hemos tenido que crear un Datasource o conector, eso lo vimos en el primer post por si lo necesitases.
Y con un poquito de paciencia puedes ir haciendo dibujos de este estilo o mejores, donde con un refresco de 1 segundo tienes unos datos increíbles del estado. O bueno, para hacer informes o ver el uso en las últimas 24 horas o al gusto!
Bueno como siempre os animo a que controléis vuestra infraestructura, todo aparato que sirva un servicio ha de estar supervisado y qué menos que el firewall de la compañía sea perimetral, interno… Muchas gracias a todos si habéis llegado hasta aquí y desearos lo mejor! ¡Abrazos!