Contexte :

Envoyer des logs en syslog à un serveur distant sans envoyer à un indexer.
Nous aurons besoin d’un HF et d’un Indexer/Search Head (SplunkCore) avec une licence valide.
Les 2 serveurs sont en CentOS 7, avoir le firewall des serveurs avec les bons ports ouverts ou désactivé.
Avoir le SplunkCore avec un syslog qui accepte les messages/connexions sur le port TCP 514.

Configuration initiale :

SplunkCore - Préparation de collecte :

Création de la configuration inputs pour le port d’écoute :

$ mkdir -p /opt/splunk/etc/apps/my_inputs/local/
$ vi /opt/splunk/etc/apps/my_inputs/local/inputs.conf
[splunktcp://9997]
disable = 0

Création de la configuration servers pour les machines de lab :

$ mkdir -p /opt/splunk/etc/apps/my_server/local/
$ vi /opt/splunk/etc/apps/my_server/local/server.conf 
[diskUsage]
minFreeSpace = 50

Création de la configuration indexes pour le lab :

$ mkdir -p /opt/splunk/etc/apps/my_indexes/local/
$ vi /opt/splunk/etc/apps/my_indexes/local/indexes.conf
[labindex]
coldPath = $SPLUNK_DB/$_index_name/colddb
homePath = $SPLUNK_DB/$_index_name/db
thawedPath = $SPLUNK_DB/$_index_name/thaweddb

Redémarrage du service pour prise en compte :

$ sudo systemctl restart Splunkd

HF - Configuration classique :

Création de la configuration outputs vers l’IDX :

$ mkdir -p /opt/splunk/etc/apps/my_outputs/local
$ vi /opt/splunk/etc/apps/my_outputs/local/outputs.conf
[tcpout]
defaultGroup=my_indexers

[tcpout:my_indexers]
server=192.168.139.193:9997

Création de la configuration servers pour les machines de lab :

$ mkdir -p /opt/splunk/etc/apps/my_server/local/
$ vi /opt/splunk/etc/apps/my_server/local/server.conf 
[diskUsage]
minFreeSpace = 50

Création du jeu de données :

$ mkdir -p /tmp/splunkhfcollecte/
$ tail /var/log/messages > /tmp/splunkhfcollecte/fichier01

Création de la configuration inputs pour collecter et envoyer les données :

$ mkdir -p /opt/splunk/etc/apps/my_inputs/local/
$ vi /opt/splunk/etc/apps/my_inputs/local/inputs.conf
[monitor:///tmp/splunkhfcollecte/fichier01]
sourcetype =  syslog
index = labindex

Redémarrage du service pour prise en compte :

$ sudo systemctl restart Splunkd

SplunkCore - Vérification :

Sur la WebUI du SplunkCore, vérifier la bonne reception des logs avec la requête search suivante :

index="labindex"

Configuration avec envoi Syslog :

HF - Configuration spécifique :

Le but de notre configuration est d’envoyer des logs avec le sourcetype apache:access qu’à un serveur syslog.

Création de configuration props dans notre app my_inputs :

$ vi /opt/splunk/etc/apps/my_inputs/local/props.conf
[default]
TRANSFORMS-routing = syslog_null

[apache:access]
TRANSFORMS-routing = syslog_routing_rsyslog, tcp_routing_null

Note : l’envoi en syslog est désactivé par défaut, on fera appellera un transforms qui enverra en syslog et desactiverra l’envoi à Splunk pour le sourcetype apache:access.

Création de configuration transforms dans notre app my_inputs :

$ vi /opt/splunk/etc/apps/my_inputs/local/transforms.conf
[syslog_null]
REGEX = .
DEST_KEY = \_SYSLOG_ROUTING
FORMAT =

[tcp_routing_null]
REGEX = .
DEST_KEY =\_TCP_ROUTING
FORMAT =

[syslog_routing_rsyslog]
REGEX=.
DEST_KEY=_SYSLOG_ROUTING
FORMAT=syslog_rsyslog

Note : déclaration de différents transforms.

Création de configuration outputs dans notre app my_inputs :

$ vi opt/splunk/etc/apps/my_inputs/local/outputs.conf
[syslog:syslog_rsyslog]
server = 192.168.139.193:514
type = tcp
syslogSourceType=sourcetype::apache:access

Création du jeu de données pour Syslog avec des logs apaches :

$ tail /opt/splunk/var/log/splunk/splunkd_ui_access.log > /tmp/splunkhfcollecte/fichier02

Redémarrage du service pour prise en compte :

$ sudo systemctl restart Splunkd

SplunkCore - Vérification :

Sur la WebUI du SplunkCore, vérifier que l’on ne reçoit pas des logs avec la requête search suivante :

index="*"

Vérifier (en fonction de la configuration) dans le Syslog que l’on reçoit bien les logs.