어느 날 갑자기 일 200GB 이상의 로그를 수집해야 할 일이 생겼다.
ELK 스택을 테스트 용도로 사용하고 있었지만, 실제 로그를 검색해야 할 사용자에게 그 복잡한 Kibana를 설명해줄 시간적 여유도 없었고, 그 당시에는 Kibana가 계정권한 관리가 잘 안 되어 있어 아래와 같은 이유로 Graylog를 선택하게 되었다.
OS : Centos 7.9 (Esxi VM)
CPU :16 Core
Memory : 32 GB
Disk : 1.5TB
Graylog 5 버전 설치는 아래 링크 참조
2023.04.05 - [분류 전체보기] - Graylog 5 설치 (with Opensearch 2.x)
Graylog 5 설치 (with Opensearch 2.x)
Graylog 5.0 Install (with Opensearch 2.x) Graylog 5.0 에서 달라진점 Opensearch 2.x를 지원함 > Elasticsearch가 7.10.2 이후 버전부터 License 정책을 변경하여 더이상 Elasticsearch를 이용한 유료 상품을 판매하기가 어렵
comarts.tistory.com
> yum install epel-release
> yum install pwgen
기본 파일 위치는 이렇게 기록해 두는게 나중에 유지보수 시 용이함
Configuration : /etc/graylog/server/server.conf
Logging : configuration /etc/graylog/server/log4j2.xml
Plugins : /usr/share/graylog-server/plugin
Binaries : /usr/share/graylog-server/bin
Scripts : /usr/share/graylog-server/scripts
JVM settings : /etc/sysconfig/graylog-server
Message journal files : /var/lib/graylog-server/journal
Log Files : /var/log/graylog-server/
> vi /etc/yum.repos.d/mongodb-org.repo
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
> yum install mongodb-org
> systemctl daemon-reload
> systemctl enable mongod.service
> systemctl start mongod.service
> systemctl status mongod.service
> rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
> vi /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
> yum install elasticsearch-oss
> vi /etc/elasticsearch/elasticsearch.yml
# 파일 끝에 추가
cluster.name: graylog
action.auto_create_index: false
> systemctl daemon-reload
> systemctl enable elasticsearch.service
> systemctl start elasticsearch.service
> systemctl status elasticsearch.service
> rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-4.0-repository_latest.rpm
> yum install graylog-server
> pwgen -N 1 -s 96 (password_secret)
> echo -n yourpassword | shasum -a 256 (root_password_sha2)
root_timezone = Asia/Seoul
http_bind_address = 0.0.0.0:9000
> systemctl daemon-reload
> systemctl enable graylog-server.service
> systemctl start graylog-server.service
> systemctl status graylog-server.service
> sestatus -v # selinux 상태확인
> setenforce 0 # selinux disable
> sestatus -v # selinux 상태확인
> vi /etc/selinux/config
SELINUX=disabled # 다음 부팅시에도 적용되도록 설정파일 수정
firewall-cmd --permanent --zone=public --add-port=9000/tcp
firewall-cmd --permanent --zone=public --add-port=5044/tcp
firewall-cmd --permanent --add-forward-port=port=514:proto=udp:toport=1514
systemctl reload firewalld.service
System -> Input -> Beats 선택 -> Launch new input 클릭
Title : Filebeat
Port : 5044
System → Input → Syslog UDP → Launch new input 클릭
Title : Syslog_UDP
Port : 1514
> rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-sidecar-repository-1-2.noarch.rpm
> yum install graylog-sidecar
token은 System -> Sidecars -> Overview 화면에서 생성
> vi /etc/graylog/sidecar/sidecar.yml
server_url: "http://10.10.10.47:9000/api/"
server_api_token: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
> graylog-sidecar -service install
> systemctl start graylog-sidecar
elasticsearch 사이트에서 filebeat.rpm download 후 설치
> yum install filebeat-7.11.1-x86_64.rpm
System -> Sidecars -> Configuration -> Create Configuration 클릭
# Needed for Graylog
fields_under_root: true
fields.collector_node_id: ${sidecar.nodeName}
fields.gl2_source_collector: ${sidecar.nodeId}
filebeat.inputs:
- type: log
enable: true
paths:
- /var/log/messages
- /원하는/로그파일/등록
#- type: log
# enable: true
# paths:
# - /xxx/xxx/xxxx
# tail_files: true
# ingnore_older: 10m
output.logstash:
hosts: ["10.10.10.47:5044"]
path:
data: /var/lib/graylog-sidecar/collectors/filebeat/data
logs: /var/lib/graylog-sidecar/collectors/filebeat/log
위와 같이 기본 구성으로 설치할 경우 Heap Size는 아래와 같다
기본 설정 상태로 사용하면 로그 수집량이 일 100GB 이상 수준이 되면 서버가 엄청 느려지게 된다.
필자는 시스템 메모리를 32GB로 늘리고 Heap Size는 아래와 같이 시스템 메모리의 50%를 할당했다.
나머지 50%는 Java에서 Cache로 사용해야 하기 때문에...
> vi /etc/elasticsearch/jvm.options
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms12g
-Xmx12g
> vi /etc/sysconfig/graylog-server
# Default Java options for heap and garbage collection.
GRAYLOG_SERVER_JAVA_OPTS="-Xms4g -Xmx4g -XX:NewRatio=1 -server -XX:+ResizeTLAB -XX:-OmitStackTraceInFastThrow"
참고 : Graylog 5 버전 설치 방법은 아래 포스팅을 참고하시기 바랍니다.
2023.04.05 - [분류 전체보기] - Graylog 5 설치 (with Opensearch 2.x)
댓글 영역