Instalación de SC4S
El sistema SC4S es un syslog-ng pero potenciado por Splunk, de forma que reconoce ciertos logs automáticamente e identifica la herramienta origen. Desde Splunk se ha creado una versión Docker del SC4S de forma que se pueda configurar en entornos cloud, kubernetes... etc
Requisitos de hardware
Los requisitos oficiales indicados por Splunk para una máquina SC4S dependen de la capacidad de ingesta de logs (por lo tanto de los logs enviados a dicha máquina).
CPU | RAM | Logs |
---|---|---|
2 | 8GB | 21109.66 msg/sec |
4 | 16GB | 34820.94 msg/sec |
8 | 32GB | 71929.91 msg/sec |
12 | 48GB | 85419.09 msg/sec |
Instalación de dependencias
En una máquina Linux (Debian en este caso) instale Docker.
Instalación de SC4S
Edite el fichero de configuración sysctl
nano /etc/sysctl.conf
Añada el siguiente contenido.
net.core.rmem_default = 17039360
net.core.rmem_max = 17039360
Guarde los cambios y ejecute
sysctl -p
Cree los siguientes directorios y ficheros
mkdir /opt/sc4s/{local,archive,tls} -p
touch /opt/sc4s/env_file
Dentro del fichero env_file introducir el siguiente contenido cambiando los valores por los generados en su servidor Splunk.
TO-DOSC4S_DEST_SPLUNK_HEC_DEFAULT_URL=https://yourSplunkTenant.splunkcloud.com/services/collector
SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN=uuid-token-string
#SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY=no
Cree el fichero de servicio para Linux
nano /lib/systemd/system/sc4s.service
Copie el template para la creación del servicio o bien acceda a https://splunk.github.io/splunk-connect-for-syslog/main/gettingstarted/docker-systemd-general/ para obtener una versión más actualizada.
[Unit]
Description=SC4S Container
Wants=NetworkManager.service network-online.target docker.service
After=NetworkManager.service network-online.target docker.service
Requires=docker.service
[Install]
WantedBy=multi-user.target
[Service]
Environment="SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container3:latest"
# Required mount point for syslog-ng persist data (including disk buffer)
Environment="SC4S_PERSIST_MOUNT=splunk-sc4s-var:/var/lib/syslog-ng"
# Optional mount point for local overrides and configurations; see notes in docs
Environment="SC4S_LOCAL_MOUNT=/opt/sc4s/local:/etc/syslog-ng/conf.d/local:z"
# Optional mount point for local disk archive (EWMM output) files
Environment="SC4S_ARCHIVE_MOUNT=/opt/sc4s/archive:/var/lib/syslog-ng/archive:z"
# Map location of TLS custom TLS
Environment="SC4S_TLS_MOUNT=/opt/sc4s/tls:/etc/syslog-ng/tls:z"
TimeoutStartSec=0
ExecStartPre=/usr/bin/docker pull $SC4S_IMAGE
# Note: /usr/bin/bash will not be valid path for all OS
# when startup fails on running bash check if the path is correct
ExecStartPre=/usr/bin/bash -c "/usr/bin/systemctl set-environment SC4SHOST=$(hostname -s)"
ExecStart=/usr/bin/docker run \
-e "SC4S_CONTAINER_HOST=${SC4SHOST}" \
-v "$SC4S_PERSIST_MOUNT" \
-v "$SC4S_LOCAL_MOUNT" \
-v "$SC4S_ARCHIVE_MOUNT" \
-v "$SC4S_TLS_MOUNT" \
--env-file=/opt/sc4s/env_file \
--network host \
--name SC4S \
--rm $SC4S_IMAGE
Restart=on-abnormal
Guarde los cambios en el ficherofichero. A continuación cree el volúmen
docker volume create splunk-sc4s-var
Inicie el servicio
sudo systemctl daemon-reload
sudo systemctl enable sc4s
sudo systemctl start sc4s