Contexte :

Même s'il existe des TA dans la SplunkBase, il peut être necessaire d'ajouter des extractions en fonction de notre contexte ou si nous avons une application maison qui n'a pas de TA.

Dans cet exemple nous allons créer un index, ingérer un sample de logs Apache provenant d'un repos sur Github : https://github.com/greymd/sample_apache_log/blob/master/log/201712/access.log.20171201

Chose importante, il y a des champs qui sont extraits à "l'indexation time" et d'autres au "search-time".
A l'indexation, ces champs ne sont plus modifiables une fois indéxés, il y a les champs (par défaut) :

  • host
  • source
  • sourcetype
  • timestamp

Les champs extrait au "search-time" sont modifiables une fois l'indexation effectuée, car ils sont extrait à chaque recherche.
C'est ce type d'extraction que nous allons voir.

Configuration

Création de l'index :

1 $ mkdir -p $SPLUNK_HOME/etc/apps/lab-all-indexes/local/
2 $ vi $SPLUNK_HOME/etc/apps/lab-all-indexes/local/indexes.conf
3 
4 [lab_apache]
5 homePath = $SPLUNK_DB/$index_name/db
6 coldPath = $SPLUNK_DB/$index_name/colddb
7 thawedPath = $SPLUNK_DB/$_index_name/thaweddb

Redémarrer Splunk pour la prise en compte.

Crétion du TA custom Apache :

Il existe un sourcetype pour cela, le but ici est juste de comprendre l'extraction.

 1 $ mkdir -p $SPLUNK_HOME/etc/apps/lab_TA_apache/local
 2 $ vi $SPLUNK_HOME/etc/apps/lab_TA_apache/local/props.conf
 3 
 4 [alasta:apache]
 5 SHOULD_LINEMERGE = false
 6 LINE_BREAKER = ([\r\n]+)
 7 MAX_TIMESTAMP_LOOKAHEAD = 60
 8 TRUNCATE = 1000000000000
 9 KV_MODE = auto
10 TIME_PREFIX=- - [
11 TIME_FORMAT=%d/%b/%Y:%H:%M:%S
12 
13 ##Extraction d'un champ
14 EXTRACT-method = "(?P<http_method>\w+)\s+
15 
16 ## Possibilité d'extraire plusieurs champs d'un coup
17 EXTRACT-plusieurs_champs = \s+(?P<path>\/.)\s+HTTP."\s+(?P<http_status_code>\d*)\s+

Gestion des droits :

1 $ mkdir -p $SPLUNK_HOME/etc/apps/lab_TA_apache/metadata
2 
3 $ vi $SPLUNK_HOME/etc/apps/lab_TA_apache/metadata/local.meta
4 # Application-level permissions
5 
6 [] 7 access = read : [ * ], write : [ admin] 8 export = system

Déclaration du monitor

Ingestion de nos logs Apache.

1 $ mkdir -p $SPLUNK_HOME/etc/apps/lab_apache_inputs/local
2 $ vi $SPLUNK_HOME/etc/apps/lab_apache_inputs/local/inputs.conf
3 [monitor:///PATH/logs/apache.log]
4 disabled = 0
5 index = lab_apache
6 host_regex = \/(\w+).log$
7 sourcetype = alasta:apache

Redémarrer Splunk puis aller intérroger vos données (contrairement à la production), mettez "all time" dans le timepicker car les logs ne sont pas récentes.

Champs extrait

Annexe :

Doc Officielle exemple d'extractions