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網站。