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.
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() .
La aplicación también muestra el trazado en HTML mediante el uso de la biblioteca python matplotlib:
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

Generación de código QR con Python
¡Gracias!