Contexte :

Sur une plateforme Splunk, il peut y avoir plusieurs copies du même fichier de configuration, ces copies fichiers sont généralement regroupées dans des répertoires qui affectent les utilisateurs, les apps ou le système.
On pourrait les voir un peu comme des calques. Les settings sont mergés, il est donc important de comprendre la precedence (priorité) des attributs en cas de conflit.

Comment Splunk détermine la precedence :

Généralité :

Il y a 2 types de prcedence :

  • Global context : Index time : indépendant de l’utilisateur, tâches en background comme les inputs, parsing, indexing …
  • App/User context : Search time : relatif à l’activité de l’utilisateur comme le search.

Default VS local configuration :

  • Splunk récupère ses fichiers de configuration dans le dossier default
  • Les modifications de configurations doivent être dans le dossier local

  • Gérer ses configurations dans l’app appriée ($HOME_SPLUNK/etc/apps/<AppName>/local/)
  • S’il n’y a pas d’app, en créer une

Note :
local à toujours la precedence par rapport à default.

Precedence Index time :

  1. System local : $SPLUNK_HOME/etc/system/local/
  2. App local : $SPLUNK_HOME/etc/apps/<AppName>/local/
  3. App default : $SPLUNK_HOME/etc/apps/<AppName>/default/
  4. System default : $SPLUNK_HOME/etc/system/default/
Index time precedence 1. etc/system/local/
2. etc/apps/linux/local/
3. etc/apps/search/local/
4. etc/apps/linux/default/
5. etc/apps/search/default/
6. etc/system/default/

Note :
Attention lors de l’ajout d’Apps, la gestion des confilts/precedence est faite sur le nom du dossier des Apps de manière lexicographique.

Exemple :

Index time precedence exemple

Precedence Index time dans un cluster d’indexer :

  1. Slave-app local : $SPLUNK_HOME/etc/slave-apps/local/
  2. System local : $SPLUNK_HOME/etc/system/local/
  3. App local : $SPLUNK_HOME/etc/apps//local/
  4. Slave-app default : $SPLUNK_HOME/etc/slave-apps/default/
  5. App default : $SPLUNK_HOME/etc/apps//default/
  6. System default : $SPLUNK_HOME/etc/system/default/
Index time precedence cluster indexer 1. etc/slave-apps/app01/local/
2. etc/slave-apps/firewall/local/
3. etc/system/local/
4. etc/apps/linux/local/
5. etc/apps/search/local/
6. etc/slave-apps/app01/default/
7. etc/slave-apps/firewall/default/
8. etc/apps/linux/default/
9. etc/apps/search/default/
10. etc/system/default/

Precedence Search time :

  1. User app local : $SPLUNK_HOME/etc///local/
  2. App local current app : $SPLUNK_HOME/etc/apps//local/
  3. App default current app : $SPLUNK_HOME/etc/apps//default/
  4. Others app local : $SPLUNK_HOME/etc/apps//local/
  5. Others app default : $SPLUNK_HOME/etc/apps//default/
  6. System local : $SPLUNK_HOME/etc/system/local/
  7. System default : $SPLUNK_HOME/etc/system/default/
Search time precedence Pour l'utilisateur bob dans l'app Linux :
1. etc/users/bob/linux/local/
2. etc/apps/linux/local/
3. etc/apps/linux/default/
4. etc/apps/search/local/
5. etc/apps/search/default/
6. etc/system/local/
7. etc/system/default/

Représentation du classement lexicographique :

fonctionnement lexicographique

Annexes :

Doc officielle - Configuration file precedence Doc officielle - Attribute precedence within a single props.conf file Doc officielle - https://docs.splunk.com/Documentation/CoE/ssf/Handbook/Naming