Saludos amigos, llego a la décimo sexta entrada sobre InfluxDB, Telegraf y Grafana, podéis encontrar todas las entradas sobre InfluxDB, Telegraf y Grafana aquí. Hoy os traigo una nueva entrada, en este caso se trata de un Dashboard enfocado en la seguridad avanzada cuando usamos Veeam Backup for Microsoft Office 365 .
Veeam Backup for Microsoft Office 365 se encarga de proteger nuestros elementos en Office 365, bien sea todos os buzones que tenemos en Exchange Online, o SharePoint Online e incluso OneDrive for Business, os dejo también la categoría entera sobre este producto (recordar que hay una Community Edition con hasta 10 usuarios gratis, sin pagar nada).
Veeam Backup for Microsoft Office 365 Dashboard
Al terminar la entrada tendréis algo similar a ese Dashboard que os permitirá visualizar:

Sección de descripción general
- MB total restaurados con Veeam Explorer for Exchange
- Número de veces que se ha abierto el Veeam Explorer for Exchange
- Número de veces que se ha abierto el Veeam Explorer for OneDrive for Business
- Número de veces que se ha abierto Veeam Explorer para SharePoint Online
- Número de claves RESTFulAPI que se han creado o actualizado
- Número de consultas completadas de RESTFulAPI
Sección de Rendimiento de Servidores
- Tiempo de actividad de los servidores VBO
- Tiempo de actividad, conectividad, a outlook.office365.com desde servidores VBO
- Uso de la CPU de los servidores VBO
- Uso de RAM de los servidores VBO
- Uso del disco de los servidores VBO
- Uso en red de los servidores VBO
- Latencia en ms a outlook.office365.com desde servidores VBO
Registros de seguridad
- Elementos restaurados utilizando Veeam Explorer para Exchange Online, de qué usuario a qué usuario
- Elementos restaurados utilizando Veeam Explorer para OneDrive para empresas, sólo el nombre del elemento
- Elementos restaurados utilizando Veeam Explorer para SharePoint Online, URL por ahora y si se restauró a Ubicación original o si se restauró a Cloud
Topología con todos los componentes lógicos
Esta entrada es un poco diferente de las anteriores, ya que en este caso usaremos telegraf para Microsoft Windows para recoger logs y métricas de los servidores de Veeam Backup for Microsoft Office 365. El diseño sería algo similar a esto:
Como podemos ver, el agente de telegraf recogerá todos los logs, los parseara, además de los contadores con métricas, y los manda a InfluxDB, desde donde podemos visualizarlos cómodamente con Grafana.
Descargar e instalar como servicio telegraf para Microsoft Windows
Aunque ya os conté los pasos hace unos años, vamos a ver los pasos actualizados, lo primero será descargar la última versión de Telegraf para Windows desde GitHub:
Crearemos una carpeta en C:/Program Files/Telegraf y extraeremos los ficheros dentro:
Desde una consola PowerShell o CMD, como administrador, lanzaremos lo siguiente:
C:\"Program Files"\Telegraf\telegraf.exe --service install
Y ya con esto tendríamos telegraf instalado, para arrancarlo, podríamos lanzarlo probando la config con el siguiente comando:
C:\"Program Files"\Telegraf\telegraf.exe --config C:\"Program Files"\Telegraf\telegraf.conf --test
O un simple:
net start telegraf
Ya que tenemos todo listo, vamos al siguiente paso para ver lo que tenemos que añadir adicional al fichero de configuración.
Configuración de telegraf.conf para Veeam Backup for Microsoft Office 365
El fichero de configuración de telegraf es bastante denso, lo primero que tendremos que editar como siempre es el output, donde tendremos que configurar la ruta del InfluxDB donde estamos mandando los datos, en mi caso:
[[outputs.influxdb]] urls = ["http://192.168.1.3:8086"] database = "telegraf" username = "myuser" password = "mypass"
Además de esto básico, esta es la configuración recomendada para poder parsear los logs necesarios de Veeam Backup for Microsoft Office 365, aparte del input de ping:
# # Read and parse Logs from Veeam Explorer for Exchange Online
# Operator who opened the VEX
[[inputs.logparser]]
files = ["C:/ProgramData/Veeam/Backup/ExchangeExplorer/Logs/*.log"]
from_beginning = true
name_override = "veeam_office365_audit_vex"
watch_method = "poll"
[inputs.logparser.grok]
patterns = ['%{DATESTAMP_AMPM:timestamp:ts-"1/2/2006 3:04:05 PM"} %{SPACE} %{NUMBER} \(%{NUMBER}\) Account:%{GREEDYDATA:operator}']
custom_patterns = "DATESTAMP_AMPM %{DATESTAMP} (AM|PM)"
# Items to restore
[[inputs.logparser]]
files = ["C:/ProgramData/Veeam/Backup/ExchangeExplorer/Logs/*.log"]
from_beginning = true
name_override = "veeam_office365_audit_vex"
watch_method = "poll"
[inputs.logparser.grok]
patterns = ['%{DATESTAMP_AMPM:timestamp:ts-"1/2/2006 3:04:05 PM"} %{SPACE} %{NUMBER} \(%{NUMBER}\) Restoring message:%{GREEDYDATA:exchangeobject}']
custom_patterns = "DATESTAMP_AMPM %{DATESTAMP} (AM|PM)"
# Restore From:
[[inputs.logparser]]
files = ["C:/ProgramData/Veeam/Backup/ExchangeExplorer/Logs/*.log"]
from_beginning = true
name_override = "veeam_office365_audit_vex"
watch_method = "poll"
[inputs.logparser.grok]
patterns = ['%{DATESTAMP_AMPM:timestamp:ts-"1/2/2006 3:04:05 PM"} %{SPACE} %{NUMBER} \(%{NUMBER}\) %{SPACE} From:%{GREEDYDATA:restorefrom}']
custom_patterns = "DATESTAMP_AMPM %{DATESTAMP} (AM|PM)"
# Restore To:
[[inputs.logparser]]
files = ["C:/ProgramData/Veeam/Backup/ExchangeExplorer/Logs/*.log"]
from_beginning = true
name_override = "veeam_office365_audit_vex"
watch_method = "poll"
[inputs.logparser.grok]
patterns = ['%{DATESTAMP_AMPM:timestamp:ts-"1/2/2006 3:04:05 PM"} %{SPACE} %{NUMBER} \(%{NUMBER}\) %{SPACE} To:%{GREEDYDATA:restoreto}']
custom_patterns = "DATESTAMP_AMPM %{DATESTAMP} (AM|PM)"
# Bytes Restored
[[inputs.logparser]]
files = ["C:/ProgramData/Veeam/Backup/ExchangeExplorer/Logs/*.log"]
from_beginning = true
name_override = "veeam_office365_audit_vex"
watch_method = "poll"
[inputs.logparser.grok]
patterns = ['%{DATESTAMP_AMPM:timestamp:ts-"1/2/2006 3:04:05 PM"} %{SPACE} %{NUMBER} \(%{NUMBER}\) Creating %{GREEDYDATA} %{NUMBER:bytesrestored:int}']
custom_patterns = "DATESTAMP_AMPM %{DATESTAMP} (AM|PM)"
# # Read and parse Logs from Veeam Backup for Microsoft Office 365 RESTFulAPI
# REST KEY ID
[[inputs.logparser]]
files = ["C:/ProgramData/Veeam/Backup365/Logs/Veeam.Archiver.REST*.log"]
from_beginning = true
name_override = "veeam_office365_audit_rest"
watch_method = "poll"
[inputs.logparser.grok]
patterns = ['%{DATESTAMP_AMPM:timestamp:ts-"1/2/2006 3:04:05 PM"} %{SPACE} %{NUMBER} \(%{NUMBER}\) Adding new backup server session%{GREEDYDATA} %{GREEDYDATA:restkey}']
custom_patterns = "DATESTAMP_AMPM %{DATESTAMP} (AM|PM)"
# REST REFRESH KEY ID
[[inputs.logparser]]
files = ["C:/ProgramData/Veeam/Backup365/Logs/Veeam.Archiver.REST*.log"]
from_beginning = true
name_override = "veeam_office365_audit_rest"
watch_method = "poll"
[inputs.logparser.grok]
patterns = ['%{DATESTAMP_AMPM:timestamp:ts-"1/2/2006 3:04:05 PM"} %{SPACE} %{NUMBER} \(%{NUMBER}\) Credentials refreshed%{GREEDYDATA} \(key=%{GREEDYDATA:restkey}\)']
custom_patterns = "DATESTAMP_AMPM %{DATESTAMP} (AM|PM)"
# REST ACTIONS
[[inputs.logparser]]
files = ["C:/ProgramData/Veeam/Backup365/Logs/Veeam.Archiver.REST*.log"]
from_beginning = true
name_override = "veeam_office365_audit_rest"
watch_method = "poll"
[inputs.logparser.grok]
patterns = ['%{DATESTAMP_AMPM:timestamp:ts-"1/2/2006 3:04:05 PM"} %{SPACE} %{NUMBER} \(%{NUMBER}\) Action started:%{GREEDYDATA:restaction}']
custom_patterns = "DATESTAMP_AMPM %{DATESTAMP} (AM|PM)"
# # Read and parse Logs from Veeam Explorer for OneDrive for Business
# Operator who opened the VXONE
[[inputs.logparser]]
files = ["C:/ProgramData/Veeam/Backup/OneDriveExplorer/Logs/*.log"]
from_beginning = true
name_override = "veeam_office365_audit_vone"
watch_method = "poll"
[inputs.logparser.grok]
patterns = ['%{DATESTAMP_AMPM:timestamp:ts-"1/2/2006 3:04:05 PM"} %{SPACE} %{NUMBER} \(%{NUMBER}\) Account:%{GREEDYDATA:operator}']
custom_patterns = "DATESTAMP_AMPM %{DATESTAMP} (AM|PM)"
# Global monitoring for VXONE
[[inputs.logparser]]
files = ["C:/ProgramData/Veeam/Backup/OneDriveExplorer/Logs/*.log"]
from_beginning = true
name_override = "veeam_office365_audit_vone"
watch_method = "poll"
[inputs.logparser.grok]
patterns = ['%{DATESTAMP_AMPM:timestamp:ts-"1/2/2006 3:04:05 PM"} %{SPACE} %{NUMBER} \(%{NUMBER}\) %{GREEDYDATA:message}']
custom_patterns = "DATESTAMP_AMPM %{DATESTAMP} (AM|PM)"
# # Read and parse Logs from Veeam Explorer for SharePoint Online
# Operator who opened the VXSPO
[[inputs.logparser]]
files = ["C:/ProgramData/Veeam/Backup/SharePointExplorer/Logs/*.log"]
from_beginning = true
name_override = "veeam_office365_audit_vspo"
watch_method = "poll"
[inputs.logparser.grok]
patterns = ['%{DATESTAMP_AMPM:timestamp:ts-"1/2/2006 3:04:05 PM"} %{SPACE} %{NUMBER} \(%{NUMBER}\) Account:%{GREEDYDATA:operator}']
custom_patterns = "DATESTAMP_AMPM %{DATESTAMP} (AM|PM)"
# Global monitoring for VXSPO
[[inputs.logparser]]
files = ["C:/ProgramData/Veeam/Backup/SharePointExplorer/Logs/*.log"]
from_beginning = true
name_override = "veeam_office365_audit_vspo"
watch_method = "poll"
[inputs.logparser.grok]
patterns = ['%{DATESTAMP_AMPM:timestamp:ts-"1/2/2006 3:04:05 PM"} %{SPACE} %{NUMBER} \(%{NUMBER}\) %{GREEDYDATA:message}']
custom_patterns = "DATESTAMP_AMPM %{DATESTAMP} (AM|PM)"
# # Ping and latency between the Veeam Backup for Microsoft Office 365 Server and Exchange Online on Office 365
# Ping input
[[inputs.ping]]
interval = "60s"
urls = ["outlook.office365.com"]
count = 4
timeout = 2.0
Con este fichero de telegraf.conf listo, editar por favor si tenéis los logs en otra ubicación o algo, ya podremos arrancar el servicio:
net start telegraf
Podemos hacer un more del telegraf.log para ver si hay algún error.
Nota: En caso de que tengáis Logs de mucha antigüedad, esto hará que envéis cientos de miles de métricas, con lo que os recomiendo aumentar el máximo de output para poder ingerir todo:
## Maximum number of unwritten metrics per output. metric_buffer_limit = 1000000
Ya tenemos todo, vamos al siguiente paso.
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 nuevo script de Veeam para VBO se guardan en veeam_office365_audit_* con lo que es realmente sencillo encontrarlas.
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, podéis usar los menús desplegables superiores para seleccionar entre organizaciones, backups, repositories y proxies,:
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: 10349, que es la ID únicas del Dashboard, o la URL:

Con los menús de arriba podréis desplegar y ajustar el Dashboard a vuestra organización, VBO Server, discos, etc:
Por favor dejar vuestro feedback en los comentarios, o en GitHub.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)


[…] En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XVI – Rendimiento y seguri… […]