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 :

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

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

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

Création de la configuration indexes pour le lab :

1 $ mkdir -p /opt/splunk/etc/apps/my_indexes/local/
2 $ vi /opt/splunk/etc/apps/my_indexes/local/indexes.conf
3 [labindex]
4 coldPath = $SPLUNK_DB/$index_name/colddb
5 homePath = $SPLUNK_DB/$index_name/db
6 thawedPath = $SPLUNK_DB/$_index_name/thaweddb

Redémarrage du service pour prise en compte :

1 $ sudo systemctl restart Splunkd

HF - Configuration classique :

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

1 $ mkdir -p /opt/splunk/etc/apps/my_outputs/local
2 $ vi /opt/splunk/etc/apps/my_outputs/local/outputs.conf
3 [tcpout]
4 defaultGroup=my_indexers
5 
6 [tcpout:my_indexers]
7 server=192.168.139.193:9997

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

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

Création du jeu de données :

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

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

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

Redémarrage du service pour prise en compte :

1 $ 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 :

1 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 :

1 $ vi /opt/splunk/etc/apps/my_inputs/local/props.conf
2 [default]
3 TRANSFORMS-routing = syslog_null
4 
5 [apache:access]
6 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 :

 1 $ vi /opt/splunk/etc/apps/my_inputs/local/transforms.conf
 2 [syslog_null]
 3 REGEX = .
 4 DEST_KEY = _SYSLOG_ROUTING
 5 FORMAT =
 6 
 7 [tcp_routing_null]
 8 REGEX = .
 9 DEST_KEY =_TCP_ROUTING
10 FORMAT =
11 
12 [syslog_routing_rsyslog]
13 REGEX=.
14 DEST_KEY=_SYSLOG_ROUTING
15 FORMAT=syslog_rsyslog

Note : déclaration de différents transforms.

Création de configuration outputs dans notre app my_inputs :

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

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

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

Redémarrage du service pour prise en compte :

1 $ 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 :

1 index="*"

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