Conexión de escritorio de Power BI a Zabbix

Un usuario Pregunto ✅

cristobalmahieu


pbiimage1 copia.jpg
El verdadero poder de Power BI continúa asombrándome. Con cada lanzamiento mensual, aprendo nuevas formas de liberar la magia de Power BI. En Spikefish Solutions tenemos una amplia gama de conjuntos de habilidades que nos encanta compartir con la comunidad de TI. ¡Con esta publicación, le mostraremos cómo conectar Power BI Desktop a Zabbix!
Nosotros recientemente configure Zabbix en nuestro laboratorio para monitorear los firewalls de Checkpoint. A pesar de lo increíble que es Zabbix, nos pareció necesario mejorar sus capacidades de informes y visualización. Como ingeniero principal de análisis de datos de Spikefish Solutions, rápidamente nos conecté con una solución de Power BI. Esta publicación asume un nivel básico de conocimiento de Power BI. ¿No tienes eso? Tenemos un experto disponible para ayudarte; comuníquese con nosotros a contact@spikefishsolutions.com.
Muy bien, ¡vamos a profundizar en los detalles!

Consigue tu ficha Zabbix

Primero, deberá generar un token de Zabbix para que Power BI se conecte a Zabbix. Sólo necesitas hacer esto una vez; el token se guardará y se utilizará para futuras actualizaciones de datos.
  • En Power BI Desktop, abra ‘Transformar datos’.
  • (opcional) Configure cuatro parámetros de texto: uno para su usuario de Zabbix, uno para su contraseña de Zabbix, uno para su URL de Zabbix y otro para almacenar su token de Zabbix:

copia pbiimage2.jpg

  • Cree una nueva fuente en blanco y cámbiele el nombre a ‘GetZabbixToken’:

pbiimagen3.gif

  • Abra el Editor avanzado para ‘GetZabbixToken’ y copie y pegue el siguiente código (este código asume que está usando parámetros, como se indica arriba como un paso opcional). Este JSON hará una llamada a su servidor Zabbix y recuperará un token único.

let
    user=User,
    password=Password,
    url=ZabbixURL,
    Body = "{
        ""jsonrpc"": ""2.0"",
        ""method"": ""user.login"",
        ""params"": {
            ""user"":""" & user & """, 
            ""password"":""" & password & """
        },
        ""auth"": null,
        ""id"": 1
    }",
    Source = Json.Document (
        Web.Contents(
            url,
            [
                Headers=[
                    #"Content-Type"="application/json"
                ],
                Content = Text.ToBinary(Body)
            ]
        )
    )
in
    Source

  • Cuando cierre el editor avanzado, su JSON se ejecutará. Si todo es correcto, debería ver resultados similares a los de la siguiente captura de pantalla, con un token en el campo de resultados. Si ve «error» en el campo de resultados, haga clic en él para expandir el error y ver qué está mal.

pbiimage4 copiar.jpg

  • Copie el token que se generó arriba y péguelo en su parámetro ZabbixToken.
  • Deshabilite la consulta GetZabbixToken.
Nota: También puede ejecutar GetZabbixToken cada vez y hacer referencia a esa consulta en lugar de usar un parámetro. Elijo el método de parámetro ya que solo necesita obtener el token una vez y no es necesario generar un nuevo token cada vez que actualiza los datos.

Obtenga sus datos de Zabbix

A continuación, usaremos el parámetro de token anterior para recuperar algunos datos de Zabbix. Para este ejemplo, obtendremos los datos del usuario. ¡También le proporcionaré un fragmento de código con el cuerpo para obtener los datos del inventario del host!
  • Cree otra consulta en blanco y cámbiele el nombre a ‘ZabbixUsers’. Abra el ‘Editor avanzado’ y copie y pegue el siguiente código. Esto usará el parámetro de token creado anteriormente y llamará al método user.get de la API de Zabbix. Luego convertirá el JSON resultante en una tabla y expandirá los datos:

let
    token = ZabbixToken,
    Body =
    "{
        ""jsonrpc"": ""2.0"",
        ""method"": ""user.get"",
        ""params"": {
            ""output"": ""extend""
        },
        ""auth"": """ & token & """,
        ""id"": 1
    }",
    Source = Json.Document(
        Web.Contents(
            ZabbixURL,
            [
                Headers=[
                    #"Content-Type"="application/json"
                ],
                Content = Text.ToBinary(Body)
            ]
        )
    ),
    result = Source[result],
    #"Converted to Table" = Table.FromList(result, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"userid", "alias", "name", "surname", "url", "autologin", "autologout", "lang", "refresh", "type", "theme", "attempt_failed", "attempt_ip", "attempt_clock", "rows_per_page"}, {"userid", "alias", "name", "surname", "url", "autologin", "autologout", "lang", "refresh", "type", "theme", "attempt_failed", "attempt_ip", "attempt_clock", "rows_per_page"})
in
    #"Expanded Column1"

Sus resultados deben ser una tabla con todos sus usuarios de Zabbix:
pbiimage5 copia.jpg
También puede obtener información sobre el inventario de hosts de Zabbix llamando a host.get y configurando el parámetro ‘selectInventory’ en ‘true’:
Captura de pantalla 2021-01-05 a las 5.06.32 PM.png
Tu resultado debería verse así:
pbiimage6 copiar.jpg
Como ejemplo de qué datos puede recuperar de Zabbix, estos son los datos que estamos usando:
copia pbiimage7.jpg

visualizaciones

Finalmente, visualizaremos los datos para ver el inventario y los problemas recientes que ocurrieron en Zabbix:
copia pbiimage8.jpg
pbiimage9 copia.jpg
pbiimage10 copia.jpg

Resumen

Puede usar los ejemplos anteriores como base para obtener cualquier dato disponible del API de Zabbix. Zabbix proporciona una excelente documentación sobre todos los métodos y parámetros de la API aquí: https://www.zabbix.com/documentation/current/manual/api/reference (asegúrese de consultar la documentación de su versión de Zabbix).
¡Gracias por leer! Avísame si tienes preguntas o ideas para futuros blogs.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *