4.2.4. Paramétrages supplémentaires¶
4.2.4.1. Tuning JVM¶
Note
Cette section est en cours de développement.
Prudence
en cas de colocalisation, bien prendre en compte la taille JVM de chaque composant (VITAM : -Xmx512m par défaut) pour éviter de swapper.
Un tuning fin des paramètres JVM de chaque composant VITAM est possible.
Pour cela, il faut modifier le fichier group_vars/all/jvm_opts.yml
Pour chaque composant, il est possible de modifier ces 3 variables:
- memory: paramètres Xms et Xmx
- gc: parmètres gc
- java: autres paramètres java
4.2.4.2. Paramétrage de l’antivirus (ingest-externe)¶
L’antivirus utilisé par ingest-externe est modifiable (par défaut, ClamAV) ; pour cela :
Modifier le fichier
environments/group_vars/all/vitam_vars.yml
pour indiquer le nom de l’antivirus qui sera utilisé (norme : scan-<nom indiqué dans vitam-vars.yml>.sh)Créer un shell (dont l’extension doit être
.sh
) sousenvironments/antivirus/
(norme : scan-<nom indiqué dans vitam-vars.yml>.sh) ; prendre comme modèle le fichierscan-clamav.sh
. Ce script shell doit respecter le contrat suivant :Argument : chemin absolu du fichier à analyser
- Sémantique des codes de retour
- 0 : Analyse OK - pas de virus
- 1 : Analyse OK - virus trouvé et corrigé
- 2 : Analyse OK - virus trouvé mais non corrigé
- 3 : Analyse NOK
- Contenu à écrire dans stdout / stderr
- stdout : Nom des virus trouvés, un par ligne ; Si échec (code 3) : raison de l’échec
- stderr : Log « brut » de l’antivirus
Prudence
En cas de remplacement de clamAV par un autre antivirus, l’installation de celui-ci devient dès lors un prérequis de l’installation et le script doit être testé.
Avertissement
Sur plate-forme Debian, ClamAV est installé sans base de données. Pour que l’antivirus soit fonctionnel, il est nécessaire, durant l’installation, de la télécharger ; il est donc nécessaire de renseigner dans l’inventaire la directive http_proxy_environnement
.
4.2.4.3. Paramétrage des certificats externes (*-externe)¶
Se reporter au chapitre dédié à la gestion des certificats: Gestion des certificats
4.2.4.4. Paramétrage de la centralisation des logs Vitam¶
2 cas sont possibles :
- Utiliser le sous-système de gestion des logs fournis par la solution logicielle VITAM ;
- Utiliser un SIEM tiers.
4.2.4.4.1. Gestion par Vitam¶
- Pour une gestion des logs par Vitam, il est nécessaire de déclarer les serveurs ad-hoc dans le fichier d’inventaire pour les 3 groupes suivants:
- hosts-logstash
- hosts-kibana-log
- hosts-elasticsearch-log
4.2.4.4.2. Redirection des logs sur un SIEM tiers¶
En configuration par défaut, les logs Vitam sont tout d’abord routés vers un serveur rsyslog installé sur chaque machine. Il est possible d’en modifier le routage, qui par défaut redirige vers le serveur logstash via le protocole syslog en TCP.
Pour cela, il est nécessaire de placer un fichier de configuration dédié dans le dossier /etc/rsyslog.d/
; ce fichier sera automatiquement pris en compte par rsyslog. Pour la syntaxe de ce fichier de configuration rsyslog, se référer à la documentation rsyslog.
Astuce
Pour cela, il peut être utile de s’inspirer du fichier de référence VITAM deployment/ansible-vitam/roles/rsyslog/templates/vitam_transport.conf.j2
(attention, il s’agit d’un fichier template ansible, non directement convertible en fichier de configuration sans en ôter les directives jinja2).
4.2.4.5. Fichiers complémentaires¶
A titre informatif, le positionnement des variables ainsi que des dérivations des déclarations de variables sont effectuées dans les fichiers suivants :
environments
/group_vars/all/vitam_vars.yml
, comme suit :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
--- ### global ### # TODO MAYBE : permettre la surcharge avec une syntax du genre vitamopts.folder_root | default(vitam_default.folder_root) dans les templates ? vitam_defaults: folder: root_path: /vitam folder_permission: "0750" conf_permission: "0640" folder_upload_permission: "0770" script_permission: "0750" users: vitam: "vitam" vitamdb: "vitamdb" group: "vitam" services: log_level: WARN start_timeout: 150 stop_timeout: 3600 port_service_timeout: 86400 # Filter for the vitam package version to install # FIXME : commented as has to be removed becuase doesn't work under Debain #package_version: "*" ### Trust X-SSL-CLIENT-CERT header for external api auth ? (true | false) ### vitam_ssl_user_header: true # syslog_facility syslog_facility: local0 ### consul ### # FIXME: Consul à la racine pour le moment à cause de problèmes de récursivité dans le parsing yaml # TODO : consul_domain should be in inventory as choosable by customer consul_domain: consul consul_component: consul consul_folder_conf: "{{ vitam_defaults.folder.root_path }}/conf/{{ consul_component }}" # Workspace should be useless but storage have a dependency to it... vitam_secondary_site_components: [ "consul" , "logbook" , "metadata" , "functional-administration" , "storage" , "storageofferdefault" , "offer" , "elasticsearch-log" , "elasticsearch-data" , "logstash" , "kibana" , "mongoc" , "mongod" , "mongos" , "vitam-metadata-reconstruction.timer" , "vitam-logbook-reconstruction.timer" , "vitam-functional-administration-reconstruction.timer" , "library" , "cerebro" ] ### Composants Vitam ### vitam: accessexternal: vitam_component: access-external host: "access-external.service.{{ consul_domain }}" port_admin: 28102 port_service: 8444 baseuri: "access-external" https_enabled: true secret_platform: "false" accessinternal: vitam_component: access-internal host: "access-internal.service.{{ consul_domain }}" port_service: 8101 port_admin: 28101 baseuri: "access-internal" https_enabled: false secret_platform: "true" functional_administration: vitam_component: functional-administration host: "functional-administration.service.{{ consul_domain }}" port_service: 8004 port_admin: 18004 baseuri: "functional-administration" https_enabled: false secret_platform: "true" cluster_name: "{{ elasticsearch.data.cluster_name }}" ingestexternal: vitam_component: ingest-external host: "ingest-external.service.{{ consul_domain }}" port_admin: 28001 port_service: 8443 baseuri: "ingest-external" https_enabled: true secret_platform: "false" antivirus: "clamav" # Directory where files should be placed for local ingest upload_dir: "/vitam/data/ingest-external/upload" # Directory where successful ingested files will be moved to success_dir: "/vitam/data/ingest-external/upload/success" # Directory where failed ingested files will be moved to fail_dir: "/vitam/data/ingest-external/upload/failure" # Action done to file after local ingest (see below for further information) upload_final_action: "MOVE" ingestinternal: vitam_component: ingest-internal host: "ingest-internal.service.{{ consul_domain }}" port_service: 8100 port_admin: 28100 baseuri: "ingest-internal" https_enabled: false secret_platform: "true" ihm_demo: vitam_component: "ihm-demo" host: "ihm-demo.service.{{ consul_domain }}" port_service: 8002 port_admin: 28002 baseurl: "/ihm-demo" static_content: "{{ vitam_defaults.folder.root_path }}/app/ihm-demo/v2" baseuri: "ihm-demo" https_enabled: false secret_platform: "false" # User session timeout in milliseconds (for shiro) session_timeout: 1800000 secure_cookie: false # Specify here the realms you want to use for authentication in ihm-demo # You can set multiple realms, one per line # With multiple realms, the user will be able to choose between the allowed realms # Example: authentication_realms: # - x509Realm # - ldapRealm # Authorized values: # x509Realm: certificate # iniRealm: ini file # ldapRealm: ldap authentication_realms: # - x509Realm - iniRealm # - ldapRealm logbook: vitam_component: logbook host: "logbook.service.{{ consul_domain }}" port_service: 9002 port_admin: 29002 baseuri: "logbook" https_enabled: false secret_platform: "true" cluster_name: "{{ elasticsearch.data.cluster_name }}" # Overlap delay (in seconds) for logbook operation & lifecycle traceability events. # Set it to a reasonable delay to cover max clock difference across servers operationTraceabilityOverlapDelay: 300 lifecycleTraceabilityOverlapDelay: 300 disablePurgeForTempLFC: false metadata: vitam_component: metadata host: "metadata.service.{{ consul_domain }}" port_service: 8200 port_admin: 28200 baseuri: "metadata" https_enabled: false secret_platform: "true" cluster_name: "{{ elasticsearch.data.cluster_name }}" processing: vitam_component: processing host: "processing.service.{{ consul_domain }}" port_service: 8203 port_admin: 28203 baseuri: "processing" https_enabled: false secret_platform: "true" security_internal: vitam_component: security-internal host: "security-internal.service.{{ consul_domain }}" port_service: 8005 port_admin: 28005 baseuri: "security-internal" https_enabled: false secret_platform: "true" storageengine: vitam_component: storage host: "storage.service.{{ consul_domain }}" port_service: 9102 port_admin: 29102 baseuri: "storage-engine" https_enabled: false secret_platform: "true" storageTraceabilityOverlapDelay: 300 storageofferdefault: vitam_component: "offer" port_service: 9900 port_admin: 29900 baseuri: "storage-offer-default" https_enabled: false secret_platform: "true" worker: vitam_component: worker port_service: 9104 port_admin: 29104 baseuri: "worker" https_enabled: false secret_platform: "true" workspace: vitam_component: workspace host: "workspace.service.{{ consul_domain }}" port_service: 8201 port_admin: 28201 baseuri: "workspace" https_enabled: false secret_platform: "true" # ingestexternal: # upload_final_action can be set to three different values (lower or upper case does not matter) # MOVE : After upload, the local file will be moved to either success_dir or fail_dir depending on the status of the ingest towards ingest-internal # DELETE : After upload, the local file will be deleted if the upload succeeded # NONE : After upload, nothing will be done to the local file (default option set if the value entered for upload_final_action does not exist)
environments
/group_vars/all/cots_vars.yml
, comme suit :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
--- consul_remote_sites: # - dc2: # domain_name: "dc2" # wan: ["10.10.10.10","1.1.1.1"] # - dc3: # domain_name: "site3" # wan: ["10.10.10.11","1.1.1.1"] elasticsearch: log: host: "elasticsearch-log.service.{{ consul_domain }}" port_http: "9201" port_tcp: "9301" groupe: "log" baseuri: "elasticsearch-log" cluster_name: "elasticsearch-log" https_enabled: false data: host: "elasticsearch-data.service.{{ consul_domain }}" port_http: "9200" port_tcp: "9300" groupe: "data" baseuri: "elasticsearch-data" cluster_name: "elasticsearch-data" https_enabled: false mongodb: mongos_port: 27017 mongoc_port: 27018 mongod_port: 27019 mongo_authentication: "true" host: "mongos.service.{{ consul_domain }}" logstash: host: "logstash.service.{{ consul_domain }}" user: logstash port: 10514 rest_port: 20514 curator: log: metrics: close: 5 delete: 30 logstash: close: 5 delete: 30 metricbeat: close: 5 delete: 30 packetbeat: close: 5 delete: 30 kibana: log: baseuri: "kibana_log" groupe: "log" port: 5601 # pour index logstash-* metrics: shards: 5 replica: 1 # pour index metrics-vitam-* logs: shards: 5 replica: 1 # KWA FIXME : changing port doesn't work, yet (not taken into account in kibana configuration) data: baseuri: "kibana_data" groupe: "data" port: 5601 shards: 10 replica: 2 cerebro: baseuri: "cerebro" port: 9000 siegfried: port: 19000 clamav: port: 3310 # frequency freshclam for database update per day (from 0 to 24 - 24 meaning hourly check) db_update_periodicity: 1 mongo_express: baseuri: "mongo-express" ldap_authentification: ldap_server: "{% if groups['ldap']|length > 0 %}{{ groups['ldap']|first }}{% endif %}" ldap_port: "389" ldap_base: "dc=programmevitam,dc=fr" ldap_login: "cn=Manager,dc=programmevitam,dc=fr" uid_field: "uid" ldap_userDn_Template: "uid={0},ou=people,dc=programmevitam,dc=fr" ldap_group_request: "(&(objectClass=groupOfNames)(member={0}))" ldap_admin_group: "cn=admin,ou=groups,dc=programmevitam, dc=fr" ldap_user_group: "cn=user,ou=groups,dc=programmevitam, dc=fr" ldap_guest_group: "cn=guest,ou=groups,dc=programmevitam, dc=fr"
Note
installation multi-sites. Déclarer dans consul_remote_sites
les datacenters Consul des autres site ; se référer à l’exemple fourni pour renseigner les informations.
environments
/group_vars/all/jvm_vars.yml
, comme suit :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
--- vitam: accessinternal: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" accessexternal: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" ingestinternal: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" ingestexternal: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" metadata: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" ihm_demo: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" ihm_recette: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" logbook: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" workspace: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" processing: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" worker: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" storageengine: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" storageofferdefault: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" functional_administration: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" security_internal: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" library: jvm_opts: memory: "-Xms32m -Xmx128m" # gc: "" # java: ""
Note
Cette configuration est appliquée à la solution logicielle VITAM ; il est possible de créer un tuning par “groupe” défini dans ansible.