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 :

$ mkdir -p $SPLUNK_HOME/etc/apps/lab-all-indexes/local/
$ vi $SPLUNK_HOME/etc/apps/lab-all-indexes/local/indexes.conf 

[lab_apache]
homePath = $SPLUNK_DB/$_index_name/db
coldPath = $SPLUNK_DB/$_index_name/colddb
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.

$ mkdir -p $SPLUNK_HOME/etc/apps/lab_TA_apache/local
$ vi $SPLUNK_HOME/etc/apps/lab_TA_apache/local/props.conf

[alasta:apache]
SHOULD_LINEMERGE = false
LINE_BREAKER = ([\r\n]+)
MAX_TIMESTAMP_LOOKAHEAD = 60
TRUNCATE = 1000000000000
KV_MODE = auto
TIME_PREFIX=- - [
TIME_FORMAT=%d/%b/%Y:%H:%M:%S

##Extraction d'un champ
EXTRACT-method = "(?P<http_method>\w+)\s+

## Possibilité d'extraire plusieurs champs d'un coup
EXTRACT-plusieurs_champs = \s+(?P<path>\/.*)\s+HTTP.*"\s+(?P<http_status_code>\d*)\s+

Gestion des droits :

$ mkdir -p $SPLUNK_HOME/etc/apps/lab_TA_apache/metadata

$ vi $SPLUNK_HOME/etc/apps/lab_TA_apache/metadata/local.meta
# Application-level permissions
  
[]
access = read : [ * ], write : [ admin]
export = system

Déclaration du monitor

Ingestion de nos logs Apache.

$ mkdir -p $SPLUNK_HOME/etc/apps/lab_apache_inputs/local
$ vi $SPLUNK_HOME/etc/apps/lab_apache_inputs/local/inputs.conf
[monitor:///PATH/logs/apache.log]
disabled = 0
index = lab_apache
host_regex = \/(\w+)\.log$
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