[Résolu] Problème Audit et Alfresco 3.2 nightly-build & 3.2r

cancel
Showing results for 
Search instead for 
Did you mean: 
bertrandf
Active Member

[Résolu] Problème Audit et Alfresco 3.2 nightly-build & 3.2r

Bonjour,

Est-ce que certaines personnes ont remarqué des dysfonctionnements de l'audit avec la dernière version d'Alfresco Community 3.2?

Suite à des remarques qui m'ont été faites par deux personnes utilisant AuditSurf avec Alfresco Community 3.2 nightly-build, j'ai décidé d'effectuer quelques tests sur l'audit avec Alfresco 3.2r.
J'ai ajouté, modifié, supprimé, des documents, démarrer des workflows, … mais je n'ai aucun enregistrement d'audit dans la base de données.
J'ai pourtant bien activé l'audit en modifiant le fichier auditConfig.xml.

Y-a-t-il eu un remaniement du système d'audit récemment ?
J'ai remarqué que de nouvelles tables ont fait leur apparition : alf_audit_app, alf_audit_entry et alf_audit_model (AlfrescoPostCreate-3.2-AuditTables.sql).
Est-ce que mon problème est lié?


Alors bug ou mauvaise configuration de ma part?

Merci d'avance.
Cordialement.
7 Replies
bertrandf
Active Member

Re: [Résolu] Problème Audit et Alfresco 3.2 nightly-build & 3.2r

L'audit au sein d'Alfresco a en effet évolué ces derniers temps sur la version Community 3.2r.
Une nouvelle implémentation de l'audit a été mise en place.

Désormais pour activer l'audit (en plus de l'activation dans le fichier auditConfig.xml), il faut ajouter cette ligne :
  # Audit configuration
  audit.enabled=true
dans le fichier alfresco-global.properties.

et cette ligne si vous souhaitez utiliser la nouvelle implémentation :
audit.useNewConfig=true

Le wiki a été mis à jour (section As of 3.2r) => http://wiki.alfresco.com/wiki/Auditing_Design_and_Implementation
Pour ceux que ca peut intéresser, voici l'adresse du thread sur le forum anglais qui m'a permis de régler mon problème : http://forums.alfresco.com/en/viewtopic.php?f=9&t=21587

Donc pour les utilisateurs d'AuditSurf sous Alfresco 3.2r ou Alfresco nightly-build, vous savez ce qu'il vous reste à faire pour activer l'audit correctement :wink:

Problème résolu.
vaporisator
Member II

Re: [Résolu] Problème Audit et Alfresco 3.2 nightly-build & 3.2r

Bonjour ! Je suis de retour  :lol:  :lol:  :lol:

Alors pour moi c'est toujours pareil, statu quo, je vous donne mes configs …

alfresco.global.properties
# Audit configuration
audit.enabled=true
audit.useNewConfig=true

/opt/alfresco/tomcat/shared/classes/alfresco/extension/custom-audit-services-context.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>
   
    <!– Base audit service - non TX –>
   
    <bean id="auditService" class="org.alfresco.repo.audit.AuditServiceImpl">
        <property name="auditComponent">
            <ref bean="auditComponent"/>
        </property>
    </bean>
   
   
    <!– Audit component –>
   
    <bean id="auditComponent" class="org.alfresco.repo.audit.AuditComponentImpl">
        <property name="publicServiceIdentifier">
            <ref bean="publicServiceIdentifier"/>
        </property>
        <property name="auditDAO">
            <ref bean="auditDAO"/>
        </property>
        <property name="transactionService">
            <ref bean="transactionService"/>
        </property>
        <property name="nodeService">
            <ref bean="nodeService"/>
        </property>
      <property name="namespacePrefixResolver">
            <ref bean="namespaceService"/>
        </property>
        <property name="auditConfiguration">
            <ref bean="auditConfiguration"/>
        </property>
        <property name="auditModel">
            <ref bean="auditModel"/>
        </property>
        <!– V3.2 specific –>
        <property name="auditModelRegistry" ref="auditModel.modelRegistry"/>
        <property name="propertyValueDAO" ref="propertyValueDAO"/>
    </bean>
   
    <!– Public service idntifier –>
   
    <bean id="publicServiceIdentifier" class="org.alfresco.repo.audit.PublicServiceIdentifierImpl"/>
   
    <!– The configuration of the audit model –>
   
    <bean id="auditConfiguration" class="org.alfresco.repo.audit.AuditConfigurationImpl">
        <property name="config">
            <value>alfresco/extension/auditConfig.xml</value>
        </property>
    </bean>
   
    <!– The content store in which to store audit information –>
   
    <bean id="auditFileContentStore" class="org.alfresco.repo.content.filestore.FileContentStore">
        <constructor-arg>
            <value>${dir.auditcontentstore}</value>
        </constructor-arg>
    </bean>
   
    <!– The audit model –>
   
    <bean id="auditModel" class="org.alfresco.repo.audit.model.AuditEntry">
        <property name="auditConfiguration">
            <ref bean="auditConfiguration"/>
        </property>
        <property name="namespacePrefixResolver">
            <ref bean="namespaceService"/>
        </property>
         <property name="publicServiceIdentifier">
            <ref bean="publicServiceIdentifier"/>
        </property>
    </bean>
   
    <!–                           –>
    <!– Audit V3.2 implementation –>
    <!–                           –>
   
    <!– Data extractors –>
    <bean id="auditModel.extractorRegistry" class="org.alfresco.util.registry.NamedObjectRegistry">
        <property name="storageType" value="org.alfresco.repo.audit.extractor.DataExtractor" />
    </bean>
    <bean name="auditModel.extractor.simpleValue" class="org.alfresco.repo.audit.extractor.SimpleValueDataExtractor">
        <property name="registry" ref="auditModel.extractorRegistry" />
    </bean>
    <bean name="auditModel.extractor.nullValue" class="org.alfresco.repo.audit.extractor.NullValueDataExtractor">
        <property name="registry" ref="auditModel.extractorRegistry" />
    </bean>
    <bean name="auditModel.extractor.nodeName" class="org.alfresco.repo.audit.extractor.NodeNameDataExtractor">
        <property name="registry" ref="auditModel.extractorRegistry" />
        <property name="nodeService" ref="nodeService" />
    </bean>
    <bean name="auditModel.extractor.nodeType" class="org.alfresco.repo.audit.extractor.NodeTypeDataExtractor">
        <property name="registry" ref="auditModel.extractorRegistry" />
        <property name="nodeService" ref="nodeService" />
    </bean>
   
    <!– Data Generators –>
    <bean id="auditModel.generatorRegistry" class="org.alfresco.util.registry.NamedObjectRegistry">
        <property name="storageType" value="org.alfresco.repo.audit.generator.DataGenerator" />
    </bean>
    <bean name="auditModel.generator.time" class="org.alfresco.repo.audit.generator.SystemTimeDataGenerator">
        <property name="registry" ref="auditModel.generatorRegistry" />
    </bean>
    <bean name="auditModel.generator.user" class="org.alfresco.repo.audit.generator.AuthenticatedUserDataGenerator">
        <property name="registry" ref="auditModel.generatorRegistry" />
    </bean>
    <bean name="auditModel.generator.personFullName" class="org.alfresco.repo.audit.generator.AuthenticatedPersonDataGenerator">
        <property name="registry" ref="auditModel.generatorRegistry" />
        <property name="personService" ref="personService" />
        <property name="nodeService" ref="nodeService" />
    </bean>
   
    <!– Models –>
    <bean id="auditModel.modelRegistry" class="org.alfresco.repo.audit.model.AuditModelRegistry">
        <property name="transactionService" ref="transactionService"/>
        <property name="auditDAO" ref="auditDAO"/>
        <property name="dataExtractors" ref="auditModel.extractorRegistry"/>
        <property name="dataGenerators" ref="auditModel.generatorRegistry"/>
    </bean>
   
    <bean id="auditModel.repository" class="org.alfresco.repo.audit.model.AuditModelReader">
        <property name="auditModelUrl">
           <value>classpath:alfresco/audit/alfresco-audit-repository.xml</value>
        </property>
        <property name="auditModelRegistry" ref="auditModel.modelRegistry"/>
    </bean>
 
</beans>

/opt/alfresco/tomcat/shared/classes/alfresco/extension/auditConfig.xml
<?xml version='1.0' encoding='UTF-8'?>
<!–
* Copyright (C) 2009 Atol Conseils et Développements.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.

* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.

* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA. –>


<!– Default Audit Configuration –>

<Audit xmlns="http://www.alfresco.org/model/audit/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" enabled="true" auditInternal="false" mode="all">
   
    <!–                –>
    <!– Global options –>
    <!–                –>
   
    <!– Do not record any additional information –>
   
    <RecordOptions>
        <recordPath>false</recordPath>
        <recordFilters>false</recordFilters>
        <recordSerializedReturnValue>false</recordSerializedReturnValue>
        <recordSerializedExceptions>false</recordSerializedExceptions>
        <recordSerializedMethodArguments>false</recordSerializedMethodArguments>
        <recordSerializedKeyPropertiesBeforeInvocation>false</recordSerializedKeyPropertiesBeforeInvocation>
        <recordSerializedKeyPropertiesAferInvocation>false</recordSerializedKeyPropertiesAferInvocation>
    </RecordOptions>
   
    <!–                          –>
    <!– Specific service options –>
    <!–                          –>
   
    <Service name="ServiceRegistry" mode="none" enabled="false"/>
   
    <!– The action service –>
   
    <Service name="ActionService" mode="none">
        <Method name="executeAction" mode="none" auditInternal="true"/>
        <Method name="saveAction" mode="none"/>
        <Method name="removeAction" mode="none"/>
        <Method name="removeAllActions" mode="none"/>
    </Service>
   
    <!– The COCI Service –>
   
    <Service name="CheckoutCheckinService">
        <Method name="getWorkingCopy" mode="none"/>
    </Service>
   
    <!– The DictionaryService –>
    <!– There are no audtiable methods in the data dictionary service –>
    <Service name="DictionaryService" mode="none" enabled="false"/>
   
    <!– The Lock Service –>
   
    <Service name="LockService">
        <Method name="getLockStatus" mode="none"/>
        <Method name="getLockType" mode="none"/>
        <Method name="getLocks" mode="none"/>
    </Service>
   
    <!– The File/Folder Service –>
   
    <Service name="FileFolderService" mode="none">
        <Method name="rename" mode="none"/>
        <Method name="move" mode="none"/>
        <Method name="copy" mode="none" auditInternal="true"/>
        <Method name="create" mode="all"/>
        <Method name="delete" mode="all"/>
        <Method name="makeFolders" mode="none"/>
        <Method name="getWriter" mode="all"/>
      <Method name="getReader" mode="all"/>
    </Service>
   
    <Service name="ContentService" mode="none">
        <Method name="getWriter" mode="all"/>
      <Method name="getReader" mode="all"/>
        <Method name="transform" mode="none"/>
    </Service>
   
    <Service name="CopyService" mode="none">
        <Method name="copy" mode="none" auditInternal="true"/>
    </Service>
   
    <!– The MimetypeService –>
    <!– There are no audtiable methods in the mime type service –>
    <Service name="MimetypeService" mode="none" enabled="false"/>
   
<!– The ContentFilterLanguagesService –>
    <Service name="ContentFilterLanguagesService" mode="none" >
        <Method name="getFilterLanguages" mode="none"/>
        <Method name="getMissingLanguages" mode="none"/>
        <Method name="getDefaultLanguage" mode="none"/>
    </Service>
    <Service name="NodeService" mode="none">
        <Method name="createStore" mode="none"/>
        <Method name="createNode" mode="none"/>
        <Method name="moveNode" mode="none"/>
        <Method name="setChildAssociationIndex" mode="none"/>
        <Method name="setType" mode="none"/>
        <Method name="addAspect" mode="none"/>
        <Method name="removeAspect" mode="none"/>
        <Method name="deleteNode" mode="none"/>
        <Method name="addChild" mode="none"/>
        <Method name="removeChild" mode="none"/>
        <Method name="setProperties" mode="none"/>
        <Method name="setProperty" mode="none"/>
        <Method name="createAssociation" mode="none"/>
        <Method name="removeAssociation" mode="none"/>
        <Method name="restoreNode" mode="none"/>
    </Service>
   
    <Service name="ScriptService" auditInternal="true"/>
   
    <Service name="TemplateService" auditInternal="true">
        <Method name="getTemplateProcessor" mode="none"/>
    </Service>
   
    <Service name="RuleService" mode="none" auditInternal="true">
        <Method name="disableRules" mode="none"/>
        <Method name="enableRules" mode="none"/>
        <Method name="disableRule" mode="none"/>
        <Method name="enableRule" mode="none"/>
        <Method name="createRule" mode="none"/>
        <Method name="saveRule" mode="none"/>
        <Method name="removeRule" mode="none"/>
        <Method name="removeAllRules" mode="none"/>
    </Service>
   
    <Service name="CategoryService" mode="none">
        <Method name="createClassifiction" mode="none"/>
        <Method name="createRootCategory" mode="none"/>
        <Method name="createCategory" mode="none"/>
        <Method name="deleteClassification" mode="none"/>
        <Method name="deleteCategory" mode="none"/>
    </Service>
   
    <Service name="SearchService" mode="none" enabled="false"/>
   
    <Service name="AuthenticationService" mode="none">
        <Method name="createAuthentication" mode="none"/>
        <Method name="updateAuthentication" mode="none"/>
        <Method name="setAuthentication" mode="none"/>
        <Method name="deleteAuthentication" mode="none"/>
        <Method name="setAuthenticationEnabled" mode="none"/>
        <Method name="authenticate" mode="all"/>
        <Method name="authenticateAsGuest" mode="none"/>
        <Method name="authenticationExists" mode="none"/>
        <Method name="invalidateUserSession" mode="none"/>
        <Method name="invalidateTicket" mode="none"/>
        <Method name="validate" mode="none"/>
        <Method name="clearCurrentSecurityContext" mode="none"/>
    </Service>
   
    <Service name="AuthorityService" mode="none">
        <Method name="createAuthority" mode="none"/>
        <Method name="addAuthority" mode="none"/>
        <Method name="removeAuthority" mode="none"/>
        <Method name="deleteAuthority" mode="none"/>
    </Service>
   
    <Service name="OwnableService" mode="none">
        <Method name="setOwner" mode="none"/>
        <Method name="takeOwnership" mode="none"/>
    </Service>
   
    <Service name="PermissionService" mode="none">
        <Method name="deletePermissions" mode="none"/>
        <Method name="clearPermission" mode="none"/>
        <Method name="deletePermission" mode="none"/>
        <Method name="setPermission" mode="none"/>
        <Method name="setInheritParentPermissions" mode="none"/>
    </Service>
   
    <Service name="PersonService" mode="none">
        <Method name="setCreateMissingPeople" mode="none"/>
        <Method name="setPersonProperties" mode="none"/>
        <Method name="createPerson" mode="all"/>
        <Method name="deletePerson" mode="none"/>
    </Service>
   
    <Service name="VersionService" mode="none">
        <Method name="createVersion" mode="none"/>
        <Method name="revert" mode="none"/>
        <Method name="restore" mode="none"/>
        <Method name="deleteVersionHistory" mode="none"/>
    </Service>
   
    <Service name="ExporterService"/>
   
    <Service name="ImporterService"/>
   
    <Service name="RepositoryExporterService"/>
   
    <Service name="DescriptorService" mode="none" enabled="false"/>
   
    <Service name="LicenseService" mode="none" enabled="false"/>
   
    <Service name="NamespaceService" mode="none" enabled="false"/>
   
    <Service name="TransactionService" mode="none" enabled="false"/>
   
    <Service name="WorkflowService" auditInternal="true">
        <Method name="isDefinitionDeployed" mode="none"/>
        <Method name="getDefinitions" mode="none"/>
        <Method name="getDefinitionById" mode="none"/>
        <Method name="getDefinitionByName" mode="none"/>
        <Method name="getActiveWorkflows" mode="all"/>
        <Method name="getWorkflowPaths" mode="none"/>
        <Method name="getTasksForWorkflowPath" mode="none"/>
        <Method name="getTaskById" mode="none"/>
        <Method name="getAssignedTasks" mode="none"/>
        <Method name="getPooledTasks" mode="none"/>
      <Method name="startWorkflow" mode="all"/>
    </Service>
   
</Audit>


Merci d'avance …
vaporisator
Member II

Re: [Résolu] Problème Audit et Alfresco 3.2 nightly-build & 3.2r

bon, quand je commente comme ceci :

# Audit configuration
audit.enabled=true
#audit.useNewConfig=true

ça semble fonctionner… Je tourne sous la nightly build…
bertrandf
Active Member

Re: [Résolu] Problème Audit et Alfresco 3.2 nightly-build & 3.2r

J'ai en effet la même configuration, je n'ai pas testé avec :
audit.useNewConfig=true
vaporisator
Member II

Re: [Résolu] Problème Audit et Alfresco 3.2 nightly-build & 3.2r

Et bien il faudrait qu'une personne utilisant la 3.2r puisse nous faire un petit feedback sur l'utilisation du code :

audit.useNewConfig=true

Tout le monde serait ainsi fixé  Smiley Very Happy

Merci encore Bertrand pour le correctif.

Charles.
lay
Member II

Re: [Résolu] Problème Audit et Alfresco 3.2 nightly-build & 3.2r

Bonjour,

Quel est l'impact de l'audit en terme de consommation disque et de performance ?

Je souhaite effectuer un test pour l'activer sur la même version (3.2r2).

Merci de votre aide.
bertrandf
Active Member

Re: [Résolu] Problème Audit et Alfresco 3.2 nightly-build & 3.2r

Bonjour,

Tout dépend de la finesse des réglages de l'audit …
Si vous auditez toutes les méthodes de tous les services, le nombre d'enregistrements en base croît très vite.

Pour information (il me semble que l'on auditait tous les services), lors de la réalisation d'AuditSurf, en phase de test, avec une faible utilisation d'Alfresco (70 créations de fichiers, 320 lectures, 60 modifications et 40 créations de workflow) sur notre serveur de test, en 30 jours nous avons dépassé la barre des 27 000 enregistrements en base.

En terme de performance, je ne connais pas l'impact réel mais il est sûr que les accès à la base vont croitre (juste sur la lecture d'un PDF, il peut y avoir jusqu'à 5 enregistrements d'audit).

Après, rien ne vous empêche de purger la table d'audit régulièrement, tout dépend ce que vous voulez faire.

Cordialement.