Ya he hablado de este tema con anterioridad aquí , y no estoy descubriendo el fuego... es un tema bastante manido pero no por ello menos útil.
De lo que se trata aquí es de redirigir el log de auditoria de Pentaho a una tabla de base de datos que nos permita posteriormente analizarla con un informe cómo se hacía en la anterior entrada o con un cubo de accesos y tiempos de ejecución... :D
Para ello debemos:
por
<bean id="IAuditEntry" class="org.pentaho.platform.engine.services.audit.AuditSQLEntry" scope="singleton" />
Una vez tenemos esto... podemos hacer un cubo para analizar los datos de uso... yo he hecho uno muy sencillo, basado en la siguiente consulta (si... con el wizard...) :
SELECT ACTOR, CASE OBJ_ID WHEN 'render' THEN FILE ELSE OBJ_ID END AS RESOURCE, DURATION, DATE_FORMAT( AUDIT_TIME, '%Y' ) as YEAR
, DATE_FORMAT( AUDIT_TIME, '%Y-%m' ) as MONTH
, DATE_FORMAT( AUDIT_TIME, '%Y-%m-%d' ) as DAY
, DATE_FORMAT( AUDIT_TIME, '%H' ) as HOUR
, DATE_FORMAT( AUDIT_TIME, '%H:%i' ) as MINUTE
FROM (
SELECT ACTOR, OBJ_ID, MESSAGE_TYPE, ( select MESSAGE_TEXT_VALUE
from PRO_AUDIT PS
where PA.ACTOR = PS.ACTOR
AND PA.INST_ID = PS.INST_ID
AND PA.MESSAGE_NAME = PS.MESSAGE_NAME
AND PS.MESSAGE_TYPE = 'instance_start'
) AS FILE, DURATION, AUDIT_TIME
FROM PRO_AUDIT PA
WHERE MESSAGE_TYPE IN ( 'instance_end' , 'session_start')
AND OBJ_ID != 'doQuery'
) as a
Esto me da un cubo de auditoría por usuario, recurso y tiempo... Suficiente para mi!
audit.mondrian.xml
Y se ve tal que así:
Nota Bene: Notese que estoy trabajando con Pentaho CE 4.8 y MySql aunque debería funcionar con cualquier versión...
De lo que se trata aquí es de redirigir el log de auditoria de Pentaho a una tabla de base de datos que nos permita posteriormente analizarla con un informe cómo se hacía en la anterior entrada o con un cubo de accesos y tiempos de ejecución... :D
Para ello debemos:
- Crear la tabla en hibernate que contendrá el log...
- Redirigir el log a base de datos editando el archivo pentaho-solutions/system/pentahoObjects.spring.xml y substituyendo:
por
<bean id="IAuditEntry" class="org.pentaho.platform.engine.services.audit.AuditSQLEntry" scope="singleton" />
- Finalmente, reiniciamos nuestro BI server y comprobamos que el log de auditoría se va a la tabla PRO_AUDIT de hibernate...
Una vez tenemos esto... podemos hacer un cubo para analizar los datos de uso... yo he hecho uno muy sencillo, basado en la siguiente consulta (si... con el wizard...) :
SELECT ACTOR, CASE OBJ_ID WHEN 'render' THEN FILE ELSE OBJ_ID END AS RESOURCE, DURATION, DATE_FORMAT( AUDIT_TIME, '%Y' ) as YEAR
, DATE_FORMAT( AUDIT_TIME, '%Y-%m' ) as MONTH
, DATE_FORMAT( AUDIT_TIME, '%Y-%m-%d' ) as DAY
, DATE_FORMAT( AUDIT_TIME, '%H' ) as HOUR
, DATE_FORMAT( AUDIT_TIME, '%H:%i' ) as MINUTE
FROM (
SELECT ACTOR, OBJ_ID, MESSAGE_TYPE, ( select MESSAGE_TEXT_VALUE
from PRO_AUDIT PS
where PA.ACTOR = PS.ACTOR
AND PA.INST_ID = PS.INST_ID
AND PA.MESSAGE_NAME = PS.MESSAGE_NAME
AND PS.MESSAGE_TYPE = 'instance_start'
) AS FILE, DURATION, AUDIT_TIME
FROM PRO_AUDIT PA
WHERE MESSAGE_TYPE IN ( 'instance_end' , 'session_start')
AND OBJ_ID != 'doQuery'
) as a
Esto me da un cubo de auditoría por usuario, recurso y tiempo... Suficiente para mi!
audit.mondrian.xml
Y se ve tal que así:
Nota Bene: Notese que estoy trabajando con Pentaho CE 4.8 y MySql aunque debería funcionar con cualquier versión...