Você precisa armazenar 48 horas de dados compactados em 80% da sua RAM.
Você deseja hyper-threads/vCPUs suficientes (cada um fornecendo pesquisa de 1 GB/s) para poder pesquisar 24 horas de dados em menos de 10 segundos.
Você precisa de espaço em disco para armazenar seus dados compactados. Nunca preencha seu disco mais de 80%.
Falcon Logscale recomenda pelo menos 16 núcleos de CPU, 32 GB de memória e uma placa de rede de 1 GBit para configuração de servidor único em ambiente de produção. O espaço em disco dependerá da quantidade de dados ingeridos por dia e do número de dias de retenção. Isto é calculado da seguinte forma: Dias de Retenção x GB Injetados / Fator de Compressão. Isso determinará o espaço em disco necessário para um único servidor.
Configuração usada neste documento:
Dados: partição de 200 GB na partição /data
RAM: 32 GB
CPU: 4 núcleos
Versão Kafka: 2.13-3.3.2
Versão do tratador do zoológico: 3.7.1
Versão do Falcão Humio: 1.136.1
Aumente o limite de arquivos abertos:
Para uso em produção, o Humio precisa ser capaz de manter muitos arquivos abertos para soquetes e arquivos reais do sistema de arquivos.
Você pode verificar os limites reais do processo usando:
PID=`ps -ef | grep java | grep humio-assembly | head -n 1 | awk '{print $2}'` cat /proc/$PID/limits | grep 'Max open files'
As configurações mínimas necessárias dependem do número de conexões de rede e fontes de dados abertas. Não há mal nenhum em estabelecer esses limites elevados para o processo Falcon. Recomenda-se um valor de pelo menos 8192 .
Você pode fazer isso usando um editor de texto simples para criar um arquivo chamado 99-falcon-limits.conf no subdiretório /etc/security/limits.d/ . Copie estas linhas para esse arquivo:
#Raise limits for files: falcon soft nofile 250000 falcon hard nofile 250000
Crie outro arquivo com um editor de texto, desta vez no subdiretório /etc/pam.d/ , e nomeie-o common-session . Copie estas linhas nele:
#Apply limits: session required pam_limits.so
Verifique noexec no diretório /tmp
Verifique as opções do sistema de arquivos em /tmp. Falcon Logscale faz uso do algoritmo de compactação em tempo real padrão Z do Facebook, que requer a capacidade de executar arquivos diretamente do diretório temporário configurado.
As opções do sistema de arquivos podem ser verificadas 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)
Você pode remover temporariamente o noexec usando mount para 'remontar' o diretório:
mount -oremount,exec /tmp
Para remover permanentemente o sinalizador noexec, atualize /etc/fstab para remover o sinalizador das opções:
tmpfs /tmp tmpfs mode=1777,nosuid,nodev 0 0
O Humio requer uma JVM Java versão 17 ou posterior para funcionar corretamente. (Doc atualizado para usar JDK 21, pois o Logscale abandonará o suporte para a versão JDK abaixo de 17 em breve)
Baixe o arquivo compactado JDK 21 x64 mais recente aqui: https://download.oracle.com/java/21/archive/jdk-21.0.2_linux-x64_bin.tar.gz
Instalando JDK21 Extraindo o arquivo compactado: Extraia o arquivo jdk tar para o diretório /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
Primeiro, adicione o usuário do sistema Kafka como o seguinte
$ sudo adduser kafka --shell=/bin/false --no-create-home --system --group
Baixe o 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
Crie os seguintes diretórios
$ mkdir /data /usr/local/falcon
Descompacte o kafka no diretório /usr/local/falcon
$ sudo tar -zxf kafka_2.13-3.3.2.tgz /usr/local/falcon/
Crie o seguinte diretório
$ 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 até /usr/local/falcon/kafka/config
e edite os seguintes detalhes do arquivo server.properties
.
broker.id=1 log.dirs=/data/kafka/log delete.topic.enable = true
Agora crie um arquivo chamado kafka.service
no diretório /etc/systemd/system
e cole os seguintes detalhes dentro desse arquivo.
[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
Se olharmos a seção [Unidade], veremos que ela requer serviço de zookeeper. Portanto, temos que instalar o zookeeper antes de iniciarmos o serviço kafka.
Baixar 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
Criando usuário do sistema zookeeper
$ sudo adduser zookeeper --shell=/bin/false --no-create-home --system --group
Descompacte o Zookeeper no diretório /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
Crie um arquivo chamado zoo.cfg
dentro do diretório /usr/local/falcon/zookeeper/conf
$ sudo vi /usr/local/falcon/zookeeper/conf/zoo.cfg
Cole as seguintes linhas dentro desse arquivo
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
Crie um arquivo myid
no subdiretório data
com apenas o número 1
como conteúdo.
$ sudo bash -c 'echo 1 > /data/zookeeper/data/myid'
Mencionando a variável de caminho jdk para que o zookeeper use isso
Crie um arquivo chamado java.env
dentro do diretório /usr/local/falcon/zookeeper/conf
e adicione a seguinte linha.
## Adding Custom JAVA_HOME JAVA_HOME="/usr/local/jdk"
Então você pode iniciar o Zookeeper para verificar se a configuração está funcionando
Dê permissões adequadas ao diretório zookeeper
$ sudo chown -R zookeeper:zookeeper /usr/local/falcon/apache-zookeeper-3.7.1-bin/
Por fim, teste se está tudo bem ou não iniciando o servidor. (Você tem que fazer isso como usuário root)
$ ./bin/zkServer.sh start
Se o servidor iniciar com sucesso, ele mostrará a seguinte mensagem
/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
Agora temos que criar um serviço para arquivar para iniciar o zookeeper como um serviço. Crie um arquivo zookeeper.service
dentro do diretório /etc/systemd/system/
e cole as seguintes linhas
[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
Depois que tudo for feito corretamente, inicie o zookeeper executando o comando abaixo. Mas antes dessa verificação, se existe algum log criado pelo usuário root dentro do diretório /usr/local/falcon/zookeeper/logs
. Se houver algum registro, remova-o.
Agora comece o zookeeper.
$ sudo systemctl start zookeeper $ systemctl status zookeeper $ sudo systemctl enable zookeeper
Depois de iniciar o zookeeper, podemos agora iniciar o Kafka.
$ sudo systemctl enable kafka $ sudo systemctl start kafka $ systemctl status kafka
Criar usuário falcão
$ sudo adduser falcon --shell=/bin/false --no-create-home --system --group
Criando diretórios Falcon
$ sudo mkdir -p /data/falcon/log/ /data/falcon/data /usr/local/falcon/falcon_app $ sudo chown -R falcon:falcon /etc/falcon/ /data/falcon
Agora estamos prontos para baixar e instalar o software Falcon Logscale. Baixe a versão estável mais recente do falcon logscale aqui:
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 um editor de texto simples, crie o arquivo de configuração falcon logscale, server.conf
no diretório /etc/falcon
. Você precisará inserir algumas variáveis de ambiente neste arquivo de configuração para executar o Humio em um único servidor ou instância. Abaixo estão essas configurações 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=:9092 EXTERNAL_URL=http:// :8080 PUBLIC_URL=http:// HUMIO_SOCKET_BIND=0.0.0.0 HUMIO_HTTP_BIND=0.0.0.0
Por último, crie o arquivo falcon.service
dentro do diretório /etc/systemd/system/
e cole o conteúdo abaixo
[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 o servidor falcon logscale executando o seguinte comando:
$ sudo systemctl start falcon
Verifique se há algum erro no final do falcão:
$ journalctl -fu falcon
Também podemos verificar se há erros nos logs da escala logarítmica aqui: /data/falcon/log
Se não houver erro, você pode acessar o site falcon logscale visitando http://
em seu navegador.