Falcon Logscale recommande au moins 16 cœurs de processeur, 32 Go de mémoire et une carte réseau de 1 Go pour une configuration de serveur unique dans un environnement de production. L'espace disque dépendra de la quantité de données ingérées par jour et du nombre de jours de conservation. Celui-ci est calculé comme suit : Jours de rétention x Go injectés / Facteur de compression. Cela déterminera l'espace disque nécessaire pour un seul serveur.
Configuration utilisée dans ce document :
Données : partition de 200 Go sur la partition /data
RAM : 32 Go
Processeur : 4 cœurs
Version Kafka : 2.13-3.3.2
Version du gardien de zoo : 3.7.1
Version Humio Falcon : 1.136.1
Augmenter la limite de fichiers ouverts :
Pour une utilisation en production, Humio doit être capable de conserver un grand nombre de fichiers ouverts pour les sockets et les fichiers réels du système de fichiers.
Vous pouvez vérifier les limites réelles du processus en utilisant :
PID=`ps -ef | grep java | grep humio-assembly | head -n 1 | awk '{print $2}'`
cat /proc/$PID/limits | grep 'Max open files'
Les paramètres minimum requis dépendent du nombre de connexions réseau ouvertes et de sources de données. Il n'y a aucun mal à fixer des limites élevées pour le processus Falcon. Une valeur d'au moins 8192 est recommandée .
Vous pouvez le faire en utilisant un simple éditeur de texte pour créer un fichier nommé 99-falcon-limits.conf dans le sous-répertoire /etc/security/limits.d/ . Copiez ces lignes dans ce fichier :
#Raise limits for files:
falcon soft nofile 250000
falcon hard nofile 250000
Créez un autre fichier avec un éditeur de texte, cette fois dans le sous-répertoire /etc/pam.d/ , et nommez- le common-session . Copiez-y ces lignes :
#Apply limits:
session required pam_limits.so
Vérifiez noexec dans le répertoire /tmp
Vérifiez les options du système de fichiers sur /tmp. Falcon Logscale utilise l'algorithme de compression en temps réel Facebook Zstandard, qui nécessite la possibilité d'exécuter des fichiers directement à partir du répertoire temporaire configuré.
Les options du système de fichiers peuvent être vérifiées en utilisant 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)
Vous pouvez supprimer temporairement noexec en utilisant mount pour « remonter » le répertoire :
mount -oremount,exec /tmp
Pour supprimer définitivement l'indicateur noexec, mettez à jour /etc/fstab pour supprimer l'indicateur des options :
tmpfs /tmp tmpfs mode=1777,nosuid,nodev 0 0
Humio nécessite une JVM Java version 17 ou ultérieure pour fonctionner correctement. (Doc mis à jour pour utiliser JDK 21 car Logscale abandonnera bientôt la prise en charge de la version JDK inférieure à 17)
Téléchargez la dernière archive compressée JDK 21 x64 à partir d'ici : https://download.oracle.com/java/21/archive/jdk-21.0.2_linux-x64_bin.tar.gz
Installation de JDK21 En désextrayant l'archive compressée : Extrayez l'archive tar jdk dans le répertoire /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
Ajoutez d’abord l’utilisateur du système Kafka comme suit
$ sudo adduser kafka --shell=/bin/false --no-create-home --system --group
Télécharger 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
Créez les répertoires suivants
$ mkdir /data /usr/local/falcon
Décompressez kafka dans le répertoire /usr/local/falcon
$ sudo tar -zxf kafka_2.13-3.3.2.tgz /usr/local/falcon/
Créez le répertoire suivant
$ 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
Accédez à /usr/local/falcon/kafka/config
, puis modifiez les détails suivants du fichier server.properties
.
broker.id=1
log.dirs=/data/kafka/log
delete.topic.enable = true
Créez maintenant un fichier nommé kafka.service
dans le répertoire /etc/systemd/system
et collez les détails suivants dans ce fichier.
[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 nous regardons la section [Unité], nous verrons qu'elle nécessite le service de gardien de zoo. Nous devons donc installer zookeeper avant de pouvoir démarrer le service kafka.
Téléchargez Zookeeper :
$ 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
Création d'un utilisateur du système Zookeeper
$ sudo adduser zookeeper --shell=/bin/false --no-create-home --system --group
Décompressez Zookeeper dans le répertoire /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
Créez un fichier nommé zoo.cfg
dans le répertoire /usr/local/falcon/zookeeper/conf
$ sudo vi /usr/local/falcon/zookeeper/conf/zoo.cfg
Collez les lignes suivantes dans ce fichier
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
Créez un fichier myid
dans le sous-répertoire data
avec uniquement le numéro 1
comme contenu.
$ sudo bash -c 'echo 1 > /data/zookeeper/data/myid'
Mentionner la variable de chemin jdk pour que zookeeper l'utilise
Créez un fichier nommé java.env
dans le répertoire /usr/local/falcon/zookeeper/conf
et ajoutez la ligne suivante.
## Adding Custom JAVA_HOME
JAVA_HOME="/usr/local/jdk"
Ensuite vous pouvez démarrer Zookeeper pour vérifier que la configuration fonctionne
Accordez les autorisations appropriées au répertoire zookeeper
$ sudo chown -R zookeeper:zookeeper /usr/local/falcon/apache-zookeeper-3.7.1-bin/
Testez enfin si tout va bien ou non en démarrant le serveur. (Vous devez le faire en tant qu'utilisateur root)
$ ./bin/zkServer.sh start
Si le serveur démarre avec succès, il affichera le message suivant
/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
Nous devons maintenant créer un service à archiver pour démarrer zookeeper en tant que service. Créez un fichier zookeeper.service
dans le répertoire /etc/systemd/system/
et collez les lignes suivantes
[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
Une fois que tout est fait correctement, démarrez zookeeper en exécutant la commande ci-dessous. Mais avant cette vérification, s'il existe un journal créé par l'utilisateur root dans le répertoire /usr/local/falcon/zookeeper/logs
. S'il y a des journaux, supprimez-les.
Maintenant, démarrez Zookeeper.
$ sudo systemctl start zookeeper
$ systemctl status zookeeper
$ sudo systemctl enable zookeeper
Après avoir démarré Zookeeper, nous pouvons maintenant démarrer Kafka.
$ sudo systemctl enable kafka
$ sudo systemctl start kafka
$ systemctl status kafka
Créer un utilisateur Falcon
$ sudo adduser falcon --shell=/bin/false --no-create-home --system --group
Création de répertoires Falcon
$ sudo mkdir -p /data/falcon/log/ /data/falcon/data /usr/local/falcon/falcon_app
$ sudo chown -R falcon:falcon /etc/falcon/ /data/falcon
Nous sommes maintenant prêts à télécharger et installer le logiciel Falcon Logscale. Téléchargez la dernière version stable de Falcon Logscale à partir d'ici :
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
À l'aide d'un simple éditeur de texte, créez le fichier de configuration Falcon Logscale, server.conf
dans le répertoire /etc/falcon
. Vous devrez saisir quelques variables d'environnement dans ce fichier de configuration pour exécuter Humio sur un seul serveur ou instance. Vous trouverez ci-dessous ces paramètres de base :
$ 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=:9092
EXTERNAL_URL=http://:8080
PUBLIC_URL=http://
HUMIO_SOCKET_BIND=0.0.0.0
HUMIO_HTTP_BIND=0.0.0.0
Dans le dernier, créez le fichier falcon.service
dans le répertoire /etc/systemd/system/
et collez le contenu ci-dessous
[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
Démarrez le serveur Falcon Logscale en exécutant la commande suivante :
$ sudo systemctl start falcon
Vérifiez s'il y a des erreurs dans Falcon End :
$ journalctl -fu falcon
Nous pouvons également vérifier les erreurs dans les journaux logscale ici : /data/falcon/log
S'il n'y a pas d'erreur, vous pouvez accéder au site Falcon Logscale en visitant http://
sur votre navigateur.