Artículo
Muhammad Waseem · Mar 10 Lectura de 5 min

Creación de un cuadro de mando responsive de IRIS con Python Flask Web Framework

¡Hola Comunidad!

Esta publicación es una introducción a mi aplicación iris-python-apps, disponible en Open Exchange y creada usando Embedded Python y Python Flask Web Framework. La aplicación muestra algunas de las funcionalidades de Python, como la ciencia de datos, el trazado de datos, la visualización de datos y la generación de códigos QR.

image

Características

  •  Cuadro de mando de IRIS de arranque responsive

  •  Vista de los detalles del cuadro de mando junto con el registro de eventos de interoperabilidad y los mensajes

  •  Uso del trazado de Python desde IRIS

  •  Uso de Jupyter Notebook

  •  Introducción a la ciencia de datos, trazado de datos y visualización de datos

  • Generación de código QR desde Python

Cuadro de mando de IRIS de arranque responsive, usando Python embebido

A continuación se muestra el código de la función definida por el usuario get_dashboard_stats() para obtener datos desde la clase SYS.Stats.Dashboard IRIS usando Python embebido :

   import iris   
   // make sure to connect with %SYS namespace by using custom object script function
    iris.cls("Embedded.Utils").SetNameSpace("%SYS")
    ref = iris.cls("SYS.Stats.Dashboard").Sample()
    last_backup = ref.LastBackup
    #check if variable is empty
    if not last_backup:
        last_backup = "Never"
    #content data dictionary to store data to be used in HTML page
    content = {
        'ApplicationErrors':ref.ApplicationErrors,
        'CSPSessions':ref.CSPSessions,
        'CacheEfficiency':ref.CacheEfficiency,
        'DatabaseSpace' : ref.DatabaseSpace,
        'DiskReads' : ref.DiskReads,
        'DiskWrites' : ref.DiskWrites,
        'ECPAppServer' : ref.ECPAppServer,
        'ECPAppSrvRate' : ref.ECPAppSrvRate,
        'ECPDataServer' : ref.ECPDataServer,
        'ECPDataSrvRate' : ref.ECPDataSrvRate,
        'GloRefs' : ref.GloRefs,
        'GloRefsPerSec' : ref.GloRefsPerSec,
        'GloSets' : ref.GloSets,
        'JournalEntries' : ref.JournalEntries,
        'JournalSpace' : ref.JournalSpace,
        'JournalStatus' : ref.JournalStatus,
        'LastBackup' : last_backup,
        'LicenseCurrent' : ref.LicenseCurrent,
        'LicenseCurrentPct' : ref.LicenseCurrentPct,
        'LicenseHigh' : ref.LicenseHigh,
        'LicenseHighPct' : ref.LicenseHighPct,
        'LicenseLimit' : ref.LicenseLimit,
        'LicenseType' : ref.LicenseType,
        'LockTable' : ref.LockTable,
        'LogicalReads' : ref.LogicalReads,
        'Processes' : ref.Processes,
        'RouRefs' : ref.RouRefs,
        'SeriousAlerts' : ref.SeriousAlerts,
        'ShadowServer' : ref.ShadowServer,
        'ShadowSource' : ref.ShadowSource,
        'SystemUpTime' : ref.SystemUpTime,
        'WriteDaemon' :  ref.WriteDaemon,
        'tot_pro'   : tot_pro,
        'tot_msg'   : tot_msg,
        'tot_usr'   : tot_usr,
        'tot_apps'  : tot_apps,
        'tot_ev' : tot_ev,
        'tot_ev_assert' : tot_ev_assert,
        'tot_ev_error' : tot_ev_error,
        'tot_ev_warning' : tot_ev_warning,
        'tot_ev_info' : tot_ev_info,
        'tot_ev_trace' : tot_ev_trace,
        'tot_ev_alert' : tot_ev_alert
        }
    return content


A continuación se muestra el código principal de Python (app.py) para llamar a la función definida por el usuario get_dashboard_stats() para obtener detalles, representar la página index.html y pasarle datos de contenido:

@app.route("/")
 def index():
    #get dashboard data in dictionary variable
    content = util.get_dashboard_stats()
    return render_template('index.html', content = content)

index.html usa la variable del diccionario de contenido para mostrar datos relacionados. Por ejemplo, {{ content.CSPSessions }} se utiliza para mostrar las sesiones CSP:

<div class="row">
          <div class="col-lg-2 col-6">
            <!-- small box -->
            <div class="small-box bg-info">
              <div class="inner">
                <h3>{{ content.CSPSessions }}</h3>
                <p>CSP Sessions</p>
              </div>
              <div class="icon">
                <i class="ion ion-ios-photos"></i>
              </div>
              <a href="/processes" class="small-box-footer">View Details <i class="fas fa-arrow-circle-right"></i></a>
            </div>
 </div>

 

Desde el cuadro de mando también podemos ver los detalles de los procesos en ejecución, los mensajes, los usuarios de seguridad, las aplicaciones y los registros de eventos, mediante el uso de la funcionalidad iris.sql.exec() .

image

La aplicación también muestra el trazado en HTML mediante el uso de la biblioteca python matplotlib:

image


A continuación se muestra el código de Python para mostrar el trazado en html:

app.route("/matplot")
def matplot():
    #Returns html with the img tag for your plot.
    content = util.get_sidebar_stats()
    num_x_points = int(request.args.get("num_x_points", 50))
    return render_template('matplot.html', content = content, num_x_points = num_x_points)  
@app.route("/matplot-as-image-<int:num_x_points>.png")
def plot_png(num_x_points=50):
    # renders the plot on the fly.
    fig = Figure()
    axis = fig.add_subplot(1, 1, 1)
    x_points = range(num_x_points)
    axis.plot(x_points, [random.randint(1, 30) for x in x_points])
    output = io.BytesIO()
    FigureCanvasAgg(fig).print_png(output)
    return Response(output.getvalue(), mimetype="image/png")

Introducción a la ciencia de datos, trazado de datos, visualización de datos y generación de QR mediante el uso de Jupyter Notebook


image



image

Generación de código QR con Python

¡Gracias!
 

1
1 87
Debate (0)1
Inicie sesión o regístrese para continuar