Falcon Logscale은 프로덕션 환경에서 단일 서버 설정을 위해 최소 16개의 CPU 코어, 32GB 메모리 및 1GBit 네트워크 카드를 권장합니다. 디스크 공간은 하루에 수집된 데이터의 양과 보존 일수에 따라 달라집니다. 이는 보존 일수 x 주입된 GB / 압축 비율로 계산됩니다. 그러면 단일 서버에 필요한 디스크 공간이 결정됩니다.
이 문서에 사용된 설정:
데이터: /data 파티션의 200GB 파티션
램: 32GB
CPU: 코어 4개
카프카 버전: 2.13-3.3.2
사육사 버전: 3.7.1
휴미오 팔콘 버전: 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'
최소 필수 설정은 개방형 네트워크 연결 및 데이터 소스 수에 따라 다릅니다. Falcon 프로세스에 대해 이러한 제한을 높게 설정해도 아무런 해가 없습니다. 최소한 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 Z표준 실시간 압축 알고리즘을 사용하며, 이를 위해서는 구성된 임시 디렉터리에서 직접 파일을 실행하는 기능이 필요합니다.
파일 시스템 옵션은 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이 필요합니다. (Logscale이 JDK 17 미만 버전에 대한 지원을 곧 중단하므로 JDK 21을 사용하도록 문서가 업데이트되었습니다.)
여기에서 최신 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
/usr/local/falcon 디렉터리에 kafka를 압축 해제합니다.
$ 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] 섹션을 보면 사육사 서비스가 필요한 것을 알 수 있습니다. 따라서 Kafka 서비스를 시작하기 전에 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
사육사 시스템 사용자 생성
$ 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
내용이 숫자 1
인 myid
파일을 data
하위 디렉터리에 만듭니다.
$ sudo bash -c 'echo 1 > /data/zookeeper/data/myid'
사육사가 사용하도록 jdk 경로 변수를 언급합니다.
/usr/local/falcon/zookeeper/conf
디렉토리에 java.env
라는 파일을 만들고 다음 줄을 추가합니다.
## Adding Custom JAVA_HOME
JAVA_HOME="/usr/local/jdk"
그런 다음 Zookeeper를 시작하여 구성이 작동하는지 확인할 수 있습니다.
사육사 디렉터리에 적절한 권한을 부여하세요.
$ sudo chown -R zookeeper:zookeeper /usr/local/falcon/apache-zookeeper-3.7.1-bin/
마지막으로 서버를 시작하여 모든 것이 괜찮은지 테스트합니다. (루트 사용자로 하셔야 합니다)
$ ./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
이제 사육사를 서비스로 시작하기 위해 제출할 서비스를 만들어야 합니다. /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
모든 작업이 올바르게 완료되면 아래 명령을 실행하여 사육사를 시작하십시오. 그러나 그 전에 /usr/local/falcon/zookeeper/logs
디렉토리에 루트 사용자가 생성한 로그가 있는지 확인하십시오. 로그가 있으면 제거하십시오.
이제 사육사를 시작하십시오.
$ sudo systemctl start zookeeper
$ systemctl status zookeeper
$ sudo systemctl enable zookeeper
사육사를 시작한 후 이제 Kafka를 시작할 수 있습니다.
$ sudo systemctl enable kafka
$ sudo systemctl start kafka
$ systemctl status kafka
팔콘 사용자 생성
$ sudo adduser falcon --shell=/bin/false --no-create-home --system --group
팔콘 디렉터리 생성
$ 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
/data/falcon/log
에서 오류에 대한 로그 스케일 로그를 확인할 수도 있습니다.
오류가 없으면 브라우저에서 http://
에 접속하여 falcon logscale 사이트에 접속할 수 있습니다.