Skip to main content

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