Debe poder almacenar 48 horas de datos comprimidos en el 80% de su RAM.
Quiere suficientes hiperprocesos/vCPU (cada uno de los cuales le proporciona una búsqueda de 1 GB/s) para poder buscar 24 horas de datos en menos de 10 segundos.
Necesita espacio en disco para guardar sus datos comprimidos. Nunca llenes tu disco más del 80%.
Falcon Logscale recomienda al menos 16 núcleos de CPU, 32 GB de memoria y una tarjeta de red de 1 GB para un único servidor configurado en un entorno de producción. El espacio en disco dependerá de la cantidad de datos ingeridos por día y del número de días de retención. Esto se calcula de la siguiente manera: Días de retención x GB inyectados / Factor de compresión. Eso determinará el espacio en disco necesario para un solo servidor.
Configuración utilizada en este documento:
Datos: partición de 200 GB en la partición /data
RAM: 32GB
CPU: 4 núcleos
Versión de Kafka: 2.13-3.3.2
Versión del cuidador del zoológico: 3.7.1
Versión Humio Falcon: 1.136.1
Aumentar el límite de archivos abiertos:
Para uso en producción, Humio necesita poder mantener muchos archivos abiertos para sockets y archivos reales del sistema de archivos.
Puede verificar los límites reales del proceso usando:
PID=`ps -ef | grep java | grep humio-assembly | head -n 1 | awk '{print $2}'` cat /proc/$PID/limits | grep 'Max open files'
La configuración mínima requerida depende de la cantidad de conexiones de red abiertas y fuentes de datos. No hay nada de malo en establecer estos límites elevados para el proceso Falcon. Se recomienda un valor de al menos 8192 .
Puede hacerlo utilizando un editor de texto simple para crear un archivo llamado 99-falcon-limits.conf en el subdirectorio /etc/security/limits.d/ . Copie estas líneas en ese archivo:
#Raise limits for files: falcon soft nofile 250000 falcon hard nofile 250000
Cree otro archivo con un editor de texto, esta vez en el subdirectorio /etc/pam.d/ , y asígnele el nombre common-session . Copie estas líneas en él:
#Apply limits: session required pam_limits.so
Verifique noexec en el directorio /tmp
Verifique las opciones del sistema de archivos en /tmp. Falcon Logscale utiliza el algoritmo de compresión en tiempo real estándar Z de Facebook, que requiere la capacidad de ejecutar archivos directamente desde el directorio temporal configurado.
Las opciones para el sistema de archivos se pueden verificar usando mount:
$ mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) udev on /dev type devtmpfs (rw,nosuid,noexec,relatime,size=1967912k,nr_inodes=491978,mode=755,inode64) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,nodev,noexec,relatime,size=399508k,mode=755,inode64) /dev/sda5 on / type ext4 (rw,relatime,errors=remount-ro) tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noexec,seclabel)
Puede eliminar temporalmente noexec usando mount para 'remontar' el directorio:
mount -oremount,exec /tmp
Para eliminar permanentemente el indicador noexec, actualice /etc/fstab para eliminar el indicador de las opciones:
tmpfs /tmp tmpfs mode=1777,nosuid,nodev 0 0
Humio requiere una JVM Java versión 17 o posterior para funcionar correctamente. (Documento actualizado para usar JDK 21, ya que Logscale dejará de admitir la versión JDK inferior a 17 pronto)
Descargue el último archivo comprimido JDK 21 x64 desde aquí: https://download.oracle.com/java/21/archive/jdk-21.0.2_linux-x64_bin.tar.gz
Instalación de JDK21 Desextrayendo el archivo comprimido: Extraiga el archivo tar jdk al directorio /usr/local/jdk
tar -xf jdk-21.0.2_linux-x64_bin.tar.gz -C /usr/local/jdk cd /usr/local/jdk mv jdk-21.0.2/* . chmod -R o+rx /usr/local/jdk
Al principio agregue un usuario del sistema Kafka como el siguiente
$ sudo adduser kafka --shell=/bin/false --no-create-home --system --group
Descargar kafka:
$ curl -o kafka_2.13-3.3.2.tgz https://dlcdn.apache.org/kafka/3.3.2/kafka_2.13-3.3.2.tgz
Crea los siguientes directorios
$ mkdir /data /usr/local/falcon
Descomprimir Kafka en el directorio /usr/local/falcon
$ sudo tar -zxf kafka_2.13-3.3.2.tgz /usr/local/falcon/
Crea el siguiente directorio
$ sudo mkdir -p /data/kafka/log /data/kafka/kafka-data $ sudo chown -R kafka:kafka /data/kafka $ sudo chown -R kafka:kafka /usr/local/falcon/kafka_2.13-3.3.2
Navegue hasta /usr/local/falcon/kafka/config
y luego edite los siguientes detalles del archivo server.properties
.
broker.id=1 log.dirs=/data/kafka/log delete.topic.enable = true
Ahora cree un archivo llamado kafka.service
en el directorio /etc/systemd/system
y pegue los siguientes detalles dentro de ese archivo.
[Unit] Requires=zookeeper.service After=zookeeper.service [Service] Type=simple User=kafka LimitNOFILE=800000 Environment="JAVA_HOME=/usr/local/jdk" Environment="LOG_DIR=/data/kafka/log/kafka" Environment="GC_LOG_ENABLED=true" Environment="KAFKA_HEAP_OPTS=-Xms512M -Xmx4G" ExecStart=/usr/local/falcon/kafka/bin/kafka-server-start.sh /usr/local/falcon/kafka/config/server.properties Restart=on-failure [Install] WantedBy=multi-user.target
Si miramos la sección [Unidad], veremos que requiere el servicio de cuidador del zoológico. Entonces tenemos que instalar zookeeper antes de poder iniciar el servicio Kafka.
Descargar Guardián del Zoológico:
$ curl -o zookeeper-3.7.1-bin.tar.gz https://dlcdn.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
Creando usuario del sistema zookeeper
$ sudo adduser zookeeper --shell=/bin/false --no-create-home --system --group
Descomprimir Zookeeper en el directorio /usr/local/falcon
$ sudo tar -zxf zookeeper-3.7.1-bin.tar.gz /usr/local/falcon/ $ sudo mkdir -p /data/zookeeper/data $ sudo ln -s /usr/local/falcon/apache-zookeeper-3.7.1-bin /usr/local/falcon/zookeeper $ sudo chown -R zookeeper:zookeeper /data/zookeeper
Cree un archivo llamado zoo.cfg
dentro del directorio /usr/local/falcon/zookeeper/conf
$ sudo vi /usr/local/falcon/zookeeper/conf/zoo.cfg
Pegue las siguientes líneas dentro de ese archivo.
tickTime = 2000 dataDir = /data/zookeeper/data clientPort = 2181 initLimit = 5 syncLimit = 2 maxClientCnxns=60 autopurge.purgeInterval=1 admin.enableServer=false 4lw.commands.whitelist=* admin.enableServer=false
Cree un archivo myid
en el subdirectorio data
con solo el número 1
como contenido.
$ sudo bash -c 'echo 1 > /data/zookeeper/data/myid'
Mencionar la variable de ruta jdk para que el cuidador del zoológico la use
Cree un archivo llamado java.env
dentro del directorio /usr/local/falcon/zookeeper/conf
y agregue la siguiente línea.
## Adding Custom JAVA_HOME JAVA_HOME="/usr/local/jdk"
Luego puede iniciar Zookeeper para verificar que la configuración esté funcionando.
Dar los permisos adecuados al directorio del cuidador del zoológico.
$ sudo chown -R zookeeper:zookeeper /usr/local/falcon/apache-zookeeper-3.7.1-bin/
Finalmente prueba si todo está bien o no iniciando el servidor. (Tienes que hacerlo como usuario root)
$ ./bin/zkServer.sh start
Si el servidor se inicia exitosamente mostrará el siguiente mensaje
/usr/local/java/bin/java ZooKeeper JMX enabled by default Using config: /usr/local/falcon/apache-zookeeper-3.7.1-bin/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
Ahora tenemos que crear un servicio para archivar para iniciar zookeeper como servicio. Cree un archivo zookeeper.service
dentro del directorio /etc/systemd/system/
y pegue las siguientes líneas
[Unit] Description=Zookeeper Daemon Documentation=http://zookeeper.apache.org Requires=network.target After=network.target [Service] Type=forking WorkingDirectory=/usr/local/falcon/zookeeper User=zookeeper Group=zookeeper ExecStart=/usr/local/falcon/zookeeper/bin/zkServer.sh start /usr/local/falcon/zookeeper/conf/zoo.cfg ExecStop=/usr/local/falcon/zookeeper/bin/zkServer.sh stop /usr/local/falcon/zookeeper/conf/zoo.cfg ExecReload=/usr/local/falcon/zookeeper/bin/zkServer.sh restart /usr/local/falcon/zookeeper/conf/zoo.cfg TimeoutSec=30 Restart=on-failure [Install] WantedBy=default.target
Una vez hecho todo correctamente, inicie zookeeper ejecutando el siguiente comando. Pero antes de eso, verifique si hay algún registro creado por el usuario root dentro del directorio /usr/local/falcon/zookeeper/logs
. Si hay algún registro, elimínelo.
Ahora comienza con el cuidador del zoológico.
$ sudo systemctl start zookeeper $ systemctl status zookeeper $ sudo systemctl enable zookeeper
Después de iniciar zookeeper ahora podemos iniciar Kafka.
$ sudo systemctl enable kafka $ sudo systemctl start kafka $ systemctl status kafka
Crear usuario halcón
$ sudo adduser falcon --shell=/bin/false --no-create-home --system --group
Creando directorios de halcones
$ sudo mkdir -p /data/falcon/log/ /data/falcon/data /usr/local/falcon/falcon_app $ sudo chown -R falcon:falcon /etc/falcon/ /data/falcon
Ahora estamos listos para descargar e instalar el software de Falcon Logscale. Descargue la última versión estable de Falcon Logscale desde aquí:
https://repo.humio.com/service/rest/repository/browse/maven-releases/com/humio/server/
$ curl -o server-1.136.1.tar.gz https://repo.humio.com/repository/maven-releases/com/humio/server/1.136.1/server-1.136.1.tar.gz $ tar -xzf server-1.136.1.tar.gz $ cd humio $ mv * /usr/local/falcon/falcon_app $ sudo chown -R falcon:falcon /usr/local/falcon/falcon_app
Usando un editor de texto simple, cree el archivo de configuración de Falcon Logscale, server.conf
en el directorio /etc/falcon
. Deberá ingresar algunas variables de entorno en este archivo de configuración para ejecutar Humio en un único servidor o instancia. A continuación se muestran esas configuraciones básicas:
$ sudo vim /etc/falcon/server.conf
BOOTSTRAP_HOST_ID=1 DIRECTORY=/data/falcon/data JAVA_HOME=/usr/local/jdk HUMIO_AUDITLOG_DIR=/data/falcon/log HUMIO_DEBUGLOG_DIR=/data/falcon/log JVM_LOG_DIR=/data/falcon/log HUMIO_PORT=8080 KAFKA_SERVERS=<hostip>:9092 EXTERNAL_URL=http://<hostip or domain>:8080 PUBLIC_URL=http://<hostip or domain> HUMIO_SOCKET_BIND=0.0.0.0 HUMIO_HTTP_BIND=0.0.0.0
Por último, cree el archivo falcon.service
dentro del directorio /etc/systemd/system/
y pegue el siguiente contenido
[Unit] Description=Falcon Logscale service After=network.service [Service] Type=notify Restart=on-abnormal User=humio Group=humio LimitNOFILE=250000:250000 EnvironmentFile=/etc/falcon/server.conf WorkingDirectory=/data/falcon ExecStart=/usr/local/falcon/falcon_app/bin/humio-server-start.sh [Install] WantedBy=default.target
Inicie el servidor Falcon Logscale ejecutando el siguiente comando:
$ sudo systemctl start falcon
Compruebe si hay errores en Falcon End:
$ journalctl -fu falcon
También podemos verificar los registros de logscale en busca de errores aquí: /data/falcon/log
Si no hay ningún error, puede acceder al sitio de Falcon Logscale visitando http://<serverip>:8080
en su navegador.