Instalación de SC4S (podman)
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 podman 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
Instalación de Podman
sudo apt-get install \
btrfs-progs \
crun \
git \
golang-go \
go-md2man \
iptables \
libassuan-dev \
libbtrfs-dev \
libc6-dev \
libdevmapper-dev \
libglib2.0-dev \
libgpgme-dev \
libgpg-error-dev \
libprotobuf-dev \
libprotobuf-c-dev \
libseccomp-dev \
libselinux1-dev \
libsystemd-dev \
netavark \
pkg-config \
uidmap
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.
SC4S_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/podman-systemd-general/ para obtener una versión más actualizada.
[Unit]
Description=SC4S Container
Wants=NetworkManager.service network-online.target
After=NetworkManager.service network-online.target
[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/podman 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/podman 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 \
--health-cmd="/healthcheck.sh" \
--health-interval=10s --health-retries=6 --health-timeout=6s \
--network host \
--name SC4S \
--rm $SC4S_IMAGE
Restart=on-abnormal
Guarde los cambios en el fichero. A continuación cree el volúmen
sudo podman volume create splunk-sc4s-var
sudo systemctl daemon-reload
sudo systemctl enable sc4s
sudo systemctl start sc4s
Es normal que la primera vez tarde un poco, puesto que se ha de descargar la imagen de podman de sc4s. Confirme que el servicio ha levantado correctamente con
systemctl status sc4s.service