您需要能够在 80% 的 RAM 中保存 48 小时的压缩数据。
您需要足够的超线程/vCPU(每个超线程/vCPU 的搜索速度为 1GB/s),以便能够在 10 秒内搜索 24 小时的数据。
您需要磁盘空间来保存压缩数据。磁盘占用率切勿超过 80%。
Falcon Logscale 建议在生产环境中设置的单台服务器至少有 16 个 CPU 核心、32 GB 内存和 1 GBit 网卡。磁盘空间将取决于每天摄取的数据量和保留天数。计算公式如下:保留天数 x 注入 GB/压缩因子。这将确定单个服务器所需的磁盘空间。
本文档中使用的设置:
数据: /data 分区 200GB 分区
内存: 32GB
CPU: 4核
卡夫卡版本: 2.13-3.3.2
动物园管理员版本: 3.7.1
Humio 猎鹰版本: 1.136.1
增加打开文件限制:
对于生产使用,Humio 需要能够为套接字和文件系统中的实际文件保持打开状态。
您可以使用以下方法验证该过程的实际限制:
PID=`ps -ef | grep java | grep humio-assembly | head -n 1 | awk '{print $2}'` cat /proc/$PID/limits | grep 'Max open files'
所需的最低设置取决于开放网络连接和数据源的数量。为猎鹰进程设置较高的限制并没有什么坏处。建议值至少为 8192 。
您可以使用简单的文本编辑器在/etc/security/limits.d/子目录中创建一个名为99-falcon-limits.conf的文件。将这些行复制到该文件中:
#Raise limits for files: falcon soft nofile 250000 falcon hard nofile 250000
使用文本编辑器创建另一个文件,这次在/etc/pam.d/子目录中,并将其命名为common-session 。将这些行复制到其中:
#Apply limits: session required pam_limits.so
检查 /tmp 目录上的 noexec
检查 /tmp 上的文件系统选项。 Falcon Logscale 使用 Facebook Zstandard 实时压缩算法,该算法需要能够直接从配置的临时目录执行文件。
可以使用 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)
您可以使用mount来临时删除 noexec 以“重新挂载”目录:
mount -oremount,exec /tmp
要永久删除 noexec 标志,请更新/etc/fstab以从选项中删除该标志:
tmpfs /tmp tmpfs mode=1777,nosuid,nodev 0 0
Humio 需要 Java 版本 17 或更高版本的 JVM 才能正常运行。 (文档已更新为使用 JDK 21,因为 Logscale 很快就会放弃对低于 17 的 JDK 版本的支持)
从此处下载最新的 JDK 21 x64 压缩存档:https://download.oracle.com/java/21/archive/jdk-21.0.2_linux-x64_bin.tar.gz
安装 JDK21 通过解压压缩包:将 jdk tar 包解压到 /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
首先添加Kafka系统用户如下
$ sudo adduser kafka --shell=/bin/false --no-create-home --system --group
下载卡夫卡:
$ curl -o kafka_2.13-3.3.2.tgz https://dlcdn.apache.org/kafka/3.3.2/kafka_2.13-3.3.2.tgz
创建以下目录
$ mkdir /data /usr/local/falcon
将kafka解压到/usr/local/falcon目录
$ sudo tar -zxf kafka_2.13-3.3.2.tgz /usr/local/falcon/
创建以下目录
$ 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
导航到/usr/local/falcon/kafka/config
,然后编辑server.properties
文件的以下详细信息。
broker.id=1 log.dirs=/data/kafka/log delete.topic.enable = true
现在在/etc/systemd/system
目录下创建一个名为kafka.service
的文件,并将以下详细信息粘贴到该文件中。
[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
如果我们查看 [Unit] 部分,我们会看到它需要 Zookeeper 服务。所以我们必须先安装zookeeper才能启动kafka服务。
下载动物园管理员:
$ 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
创建zookeeper系统用户
$ sudo adduser zookeeper --shell=/bin/false --no-create-home --system --group
将 Zookeeper 解压到/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
在/usr/local/falcon/zookeeper/conf
目录中创建一个名为zoo.cfg
的文件
$ sudo vi /usr/local/falcon/zookeeper/conf/zoo.cfg
将以下行粘贴到该文件中
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
在data
子目录下创建一个myid
文件,内容只包含数字1
。
$ sudo bash -c 'echo 1 > /data/zookeeper/data/myid'
提及jdk路径变量以便zookeeper使用它
在/usr/local/falcon/zookeeper/conf
目录中创建一个名为java.env
的文件并添加以下行。
## Adding Custom JAVA_HOME JAVA_HOME="/usr/local/jdk"
然后您可以启动Zookeeper来验证配置是否正常工作
给zookeeper目录适当的权限
$ sudo chown -R zookeeper:zookeeper /usr/local/falcon/apache-zookeeper-3.7.1-bin/
最后通过启动服务器来测试一切是否正常。 (您必须以 root 用户身份执行此操作)
$ ./bin/zkServer.sh start
如果服务器启动成功,将会显示以下消息
/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
现在我们必须创建一个文件服务来将zookeeper作为服务启动。在/etc/systemd/system/
目录中创建一个zookeeper.service
文件并粘贴以下行
[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
所有事情都正确完成后,通过执行以下命令启动zookeeper。但在此之前检查/usr/local/falcon/zookeeper/logs
目录中是否有 root 用户创建的任何日志。如果有任何日志,请将其删除。
现在启动动物园管理员。
$ sudo systemctl start zookeeper $ systemctl status zookeeper $ sudo systemctl enable zookeeper
启动zookeeper后我们现在可以启动Kafka了。
$ sudo systemctl enable kafka $ sudo systemctl start kafka $ systemctl status kafka
创建猎鹰用户
$ sudo adduser falcon --shell=/bin/false --no-create-home --system --group
创建 falcon 目录
$ sudo mkdir -p /data/falcon/log/ /data/falcon/data /usr/local/falcon/falcon_app $ sudo chown -R falcon:falcon /etc/falcon/ /data/falcon
我们现在准备下载并安装 Falcon Logscale 的软件。从这里下载最新的 falcon logscale 稳定版本:
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
使用简单的文本编辑器,在/etc/falcon
目录中创建 falcon logscale 配置文件server.conf
。您需要在此配置文件中输入一些环境变量才能在单个服务器或实例上运行 Humio。以下是这些基本设置:
$ 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
最后在/etc/systemd/system/
目录中创建falcon.service
文件并粘贴以下内容
[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
通过执行以下命令启动 falcon logscale 服务器:
$ sudo systemctl start falcon
检查 falcon end 中是否有任何错误:
$ journalctl -fu falcon
我们还可以在此处检查 logscale 日志是否有错误: /data/falcon/log
如果没有错误,您可以通过浏览器访问http://
来访问falcon logscale站点。