Contenu d'un index :

Un index contient :

  • Les données en raw compressées (rawdata)
  • Des données indéxées qui pointent vers les rawdata (tsidx)
  • D'autres fichiers de metadata

Contenu bucket

Rappel des PATHs par défaut d'un index :

Splunk bucket paths

Arborescence d'un index :

Voici le contenu d'un index, ici j'ai pris _introstection.

 1 _introspection
 2 ├── colddb
 3 ├── datamodel_summary
 4 │   ├── 47_7685E1F6-8087-46DF-A6AF-17FF3DCE7E12
 5 │   │   └── 7685E1F6-8087-46DF-A6AF-17FF3DCE7E12
 6 │   │       └── DM_SplunkAppForFortinet_ftnt_fos
 7 │   │           ├── done
 8 │   │           ├── metadata.csv
 9 │   │           └── metadata_checksum
10 │   ├── 48_7685E1F6-8087-46DF-A6AF-17FF3DCE7E12
11 │   │   └── 7685E1F6-8087-46DF-A6AF-17FF3DCE7E12
12 │   │       └── DM_SplunkAppForFortinet_ftnt_fos
13 │   │           ├── done
14 │   │           ├── metadata.csv
15 │   │           └── metadata_checksum
16 │   ├── 49_7685E1F6-8087-46DF-A6AF-17FF3DCE7E12
17 │   │   └── 7685E1F6-8087-46DF-A6AF-17FF3DCE7E12
18 │   │       └── DM_SplunkAppForFortinet_ftnt_fos
19 │   │           ├── hot_done
20 │   │           └── metadata.csv
21 │   ├── manifest.csv
22 │   ├── manifest.csv.changed
23 │   └── notify
24 ├── db
25 │   ├── .bucketManifest
26 │   ├── .db_1506763187_1506761294_1.rbsentinel
27 │   ├── .db_1511100934_1511095411_9.rbsentinel
28 │   ├── .db_1515841831_1515841153_17.rbsentinel
29 │   ├── CreationTime
30 │   ├── GlobalMetaData
31 │   ├── db_1569666163_1569665619_30.rbsentinel
32 │   ├── db_1574113908_1574113735_47
33 │   │   ├── .rawSize
34 │   │   ├── 1574113908-1574113735-17669199871922402432.tsidx
35 │   │   ├── Hosts.data
36 │   │   ├── SourceTypes.data
37 │   │   ├── Sources.data
38 │   │   ├── Strings.data
39 │   │   ├── bloomfilter
40 │   │   ├── bucket_info.csv
41 │   │   ├── optimize.result
42 │   │   ├── rawdata
43 │   │   │   ├── journal.gz
44 │   │   │   ├── slicemin.dat
45 │   │   │   └── slicesv2.dat
46 │   │   └── splunk-autogen-params.dat
47 │   ├── db_1574114930_1574113909_48
48 │   │   ├── .rawSize
49 │   │   ├── 1574114930-1574113909-6381335608178854672.tsidx
50 │   │   ├── Hosts.data
51 │   │   ├── SourceTypes.data
52 │   │   ├── Sources.data
53 │   │   ├── Strings.data
54 │   │   ├── bloomfilter
55 │   │   ├── bucket_info.csv
56 │   │   ├── optimize.result
57 │   │   ├── rawdata
58 │   │   │   ├── journal.gz
59 │   │   │   ├── slicemin.dat
60 │   │   │   └── slicesv2.dat
61 │   │   └── splunk-autogen-params.dat
62 │   └── hot_v1_49
63 │       ├── .rawSize
64 │       ├── 1574506477-1574506433-6604304948416566232.tsidx
65 │       ├── 1574506487-1574506487-6625743269070971518.tsidx
66 │       ├── 1574506493-1574506493-6651501210147316447.tsidx
67 │       ├── 1574506504-1574506504-6712552602596921944.tsidx
68 │       ├── Hosts.data
69 │       ├── SourceTypes.data
70 │       ├── Sources.data
71 │       ├── Strings.data
72 │       ├── bucket_info.csv
73 │       ├── rawdata
74 │       │   ├── journal.gz
75 │       │   ├── slicemin.dat
76 │       │   └── slicesv2.dat
77 │       ├── splunk-autogen-params.dat
78 │       └── splunk-need-optimize.dat
79 └── thaweddb
80 
81 21 directories, 57 files

Description des fichiers principaux :

.bucketManifest : fichier de metadata, contenant la liste de tous les buckets de l'index, event_count, host_count ....
.db_1506763187_1506761294_1.rbsentinel
.db_1511100934_1511095411_9.rbsentinel
.db_1515841831_1515841153_17.rbsentinel
.rawSize : A VALIDER : The volume in bytes of the raw data files in each bucket. This value represents the volume before compression and the addition of index files.
CreationTime : Fichier contenant le timestamp de la création de d'index.
Hosts.data : fichier de metadata, contenant les hosts du bucket.
SourceTypes.data : fichier de metadata, contenant les Sourcetypes du bucket.
Sources.data : fichier de metadata, contenant les Sources de données du bucket.
Strings.data : fichier de metadata, contenant
bloomfilter :
bucket_info.csv : a l'ait d'indiquer le timestamp de début et fin du bucket et si le bucket et frozen.
db_1569666163_1569665619_30.rbsentinel
journal.gz : lot d'événements (slice) raw compréssés optimize.result : resultat optimisation index ??
slicemin.dat : les slices.dat mappent les tsidx avec le slice (journal.gz) slicesv2.dat
splunk-autogen-params.dat
splunk-need-optimize.dat
1574113908-1574113735-17669199871922402432.tsidx : fichier TimeSeries index
1574114930-1574113909-6381335608178854672.tsidx
1574506477-1574506433-6604304948416566232.tsidx
1574506487-1574506487-6625743269070971518.tsidx
1574506493-1574506493-6651501210147316447.tsidx
1574506504-1574506504-6712552602596921944.tsidx

Nommage des buckets :

Le nom dépend :

  • de l'état du bucket : hot, warm cold ou thawed
  • le type de bucket : non-clustered,clustered originating ou clustered replicated

Buckets naming conventions

  • et sont des timestamps indiquant l'age des données dans le bucket. Le timestamps est exprimé en UTC epoch time (en secondes).
  • est l'ID du bucket. Pour un clustered bucket, l'original et le répliqué ont le même localid.
  • est le guid de la source du peer node. Le guid est localisé dans le fichier $SPLUNK_HOME/etc/instance.cfg de chaque instance.

Exemple db_1223658000_1223654401_2835 :
Bucket warm, non-clustered, entre le 10/10/2008 à 17:00:00 et 10/10/2008 à 16:00:01 avec le localid 2835.

Note :
Dans un cluster, le bucket original et le replicat ont le même nom excepté le préfix (db et rb).
Dans un cluster, lorsque le bucket est en cours de tranfert (replicat), les données sont envoyées dans un dossier temporaire sur le peer cible, ce hot bucket est identifié par _, c'est aussi valable pour les warm/cold bucket lors de bucket fix-up. Quand la réplication est effectuée, le dossier _ est renommé dans un warm bucket (préfixé par rb_).

Récapitilatif sous forme de tableau :

Récap splunk bucket

Annexes :

Doc officiel - Managing Indexers and Clusters of Indexers
Understanding how "buckets" work