cancel
Showing results for 
Search instead for 
Did you mean: 

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

bertrandf
Champ on-the-rise
Champ on-the-rise
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 7

bertrandf
Champ on-the-rise
Champ on-the-rise
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
Champ in-the-making
Champ in-the-making
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
Champ in-the-making
Champ in-the-making
bon, quand je commente comme ceci :

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

ça semble fonctionner… Je tourne sous la nightly build…

bertrandf
Champ on-the-rise
Champ on-the-rise
J'ai en effet la même configuration, je n'ai pas testé avec :
audit.useNewConfig=true

vaporisator
Champ in-the-making
Champ in-the-making
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
Champ in-the-making
Champ in-the-making
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
Champ on-the-rise
Champ on-the-rise
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.
Getting started

Tags


Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.