Ubuntu 22.04에 Graylog 4를 설치하는 방법
이 튜토리얼은 다음 OS 버전에 대해 존재합니다.
- Ubuntu 22.04(Jammy Jellyfish)
- Ubuntu 20.04(Focal Fossa)
이 페이지에서
- 전제 조건
- 시작하기\n
- 자바 JDK 설치
- Elasticsearch 설치 및 구성
- MongoDB 서버 설치
- Graylog 설치 및 구성
- Nginx를 Graylog용 리버스 프록시로 구성\n
- Graylog 웹 인터페이스 액세스
- 결론
Graylog는 테라바이트 단위의 기계 데이터를 실시간으로 캡처, 저장 및 분석하는 데 사용되는 무료 오픈 소스 로그 모니터링 도구입니다. 사용자가 빠르고 쉽게 데이터의 의미를 찾고 더 빠르게 조치를 취할 수 있도록 하는 최신 로그 분석용으로 설계되었습니다. 또한 ElasticSearch를 기본 인덱스 데이터베이스로 사용하고 메타 정보를 저장하는 MongoDB를 사용하여 경고 및 로그 기록 검색 시스템을 제공합니다. 간단하고 읽기 쉬운 형식으로 많은 양의 데이터를 모니터링, 검색 및 분석하는 데 도움이 됩니다.
이 튜토리얼에서는 Ubuntu 22.04 서버에 Graylog를 설치하는 방법을 보여줍니다.
전제 조건
- 최소 4GB RAM이 장착된 Ubuntu 22.04를 실행하는 서버\n
- 루트 암호는 서버에서 구성됩니다.\n
시작하기
먼저 시스템 패키지를 최신 버전으로 업데이트해야 합니다. 다음 명령으로 모두 업데이트할 수 있습니다.
apt update -y
apt upgrade
모든 패키지를 업데이트한 후 서버에 일부 종속 항목도 설치해야 합니다. 다음 명령으로 모두 설치할 수 있습니다.
apt install apt-transport-https gnupg2 uuid-runtime pwgen curl dirmngr -y
필요한 종속성이 모두 설치되면 다음 단계로 진행할 수 있습니다.
자바 JDK 설치
Graylog를 사용하려면 서버에 Java를 설치해야 합니다. 설치되어 있지 않은 경우 다음 명령으로 설치할 수 있습니다.
apt install openjdk-11-jre-headless -y
Java가 설치되면 다음 명령을 실행하여 설치된 Java 버전을 확인할 수 있습니다.
java -version
다음 출력이 표시되어야 합니다.
openjdk version "11.0.16" 2022-07-19 OpenJDK Runtime Environment (build 11.0.16+8-post-Ubuntu-0ubuntu122.04) OpenJDK 64-Bit Server VM (build 11.0.16+8-post-Ubuntu-0ubuntu122.04, mixed mode, sharing)
완료되면 다음 단계로 진행할 수 있습니다.
Elasticsearch 설치 및 구성
Graylog는 Elasticsearch를 사용하여 외부 리소스에서 오는 로그를 저장합니다. 따라서 시스템에 Elasticsearch를 설치해야 합니다.
기본적으로 Elasticsearch 패키지는 Ubuntu 기본 리포지토리에서 사용할 수 없습니다. 따라서 시스템에 Elasticsearch 리포지토리를 추가해야 합니다.
먼저 다음 명령을 사용하여 Elasticsearch GPG 키를 다운로드하고 추가합니다.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
다음으로 다음 명령을 사용하여 Elasticsearch 리포지토리를 추가합니다.
echo "deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
다음으로 리포지토리를 업데이트하고 다음 명령을 사용하여 Elasticsearch를 설치합니다.
apt update -y
apt install elasticsearch-oss -y
Elasticsearch를 설치한 후 Elasticsearch 구성 파일을 편집하고 클러스터 이름을 정의해야 합니다. 다음 명령으로 수행할 수 있습니다.
nano /etc/elasticsearch/elasticsearch.yml
클러스터 이름을 Graylog에 정의하고 아래와 같이 다른 줄을 추가합니다.
cluster.name: graylog action.auto_create_index: false
완료되면 파일을 저장하고 닫습니다. 그런 다음 Elasticsearch 서비스를 시작하고 다음 명령을 사용하여 부팅 시 시작되도록 활성화합니다.
systemctl daemon-reload
systemctl start elasticsearch
systemctl enable elasticsearch
다음 명령을 사용하여 Elasticsearch 서비스의 상태를 확인할 수도 있습니다.
systemctl status elasticsearch
다음 출력이 표시되어야 합니다.
? elasticsearch.service - Elasticsearch Loaded: loaded (/lib/systemd/system/elasticsearch.service; disabled; vendor preset: enabled) Active: active (running) since Sun 2022-09-25 07:05:27 UTC; 21s ago Docs: https://www.elastic.co Main PID: 74226 (java) Tasks: 48 (limit: 4579) Memory: 1.2G CPU: 22.739s CGroup: /system.slice/elasticsearch.service ??74226 /usr/share/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.t> Sep 25 07:05:11 ubuntu2204 systemd[1]: Starting Elasticsearch... Sep 25 07:05:27 ubuntu2204 systemd[1]: Started Elasticsearch.
이제 다음 명령을 사용하여 Elasticcsearch 응답을 확인합니다.
curl -X GET http://localhost:9200
다음 출력이 표시되어야 합니다.
{ "name" : "ubuntu2204", "cluster_name" : "graylog", "cluster_uuid" : "6IWBEBx_THa2Gzqb7a1LTQ", "version" : { "number" : "7.10.2", "build_flavor" : "oss", "build_type" : "deb", "build_hash" : "747e1cc71def077253878a59143c1f785afa92b9", "build_date" : "2021-01-13T00:42:12.435326Z", "build_snapshot" : false, "lucene_version" : "8.7.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
몽고DB 서버 설치
Graylog는 MongoDB를 데이터베이스로 사용합니다. 따라서 서버에 MongoDB 데이터베이스를 설치해야 합니다. 기본적으로 MongoDB 패키지는 Ubuntu 기본 리포지토리에 포함되어 있지 않습니다. 따라서 시스템에 MongoDB 공식 저장소를 추가해야 합니다.
다음 명령으로 추가할 수 있습니다.
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.4.list
리포지토리가 추가되면 리포지토리 캐시를 업데이트하고 다음 명령을 사용하여 Graylog를 설치합니다.
apt update -y
apt install -y mongodb-org
MongoDB가 설치되면 MongoDB 서비스를 시작하고 다음 명령을 사용하여 시스템 재부팅 시 시작되도록 활성화합니다.
systemctl enable --now mongod
다음 명령을 사용하여 MongoDB 상태를 확인할 수도 있습니다.
systemctl status mongod
다음 출력에 MongoDB 상태가 표시되어야 합니다.
? mongod.service - MongoDB Database Server Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2022-09-25 07:20:35 UTC; 8s ago Docs: https://docs.mongodb.org/manual Main PID: 77018 (mongod) Memory: 60.0M CPU: 936ms CGroup: /system.slice/mongod.service ??77018 /usr/bin/mongod --config /etc/mongod.conf Sep 25 07:20:35 ubuntu2204 systemd[1]: Started MongoDB Database Server.
완료되면 다음 단계로 진행할 수 있습니다.
Graylog 설치 및 구성
기본적으로 Graylog 패키지는 Ubuntu 기본 리포지토리에서 사용할 수 없습니다. 따라서 서버에 Graylog 리포지토리를 설치해야 합니다.
다음 명령을 사용하여 Graylog 리포지토리 패키지를 다운로드할 수 있습니다.
wget https://packages.graylog2.org/repo/packages/graylog-4.3-repository_latest.deb
다운로드가 완료되면 다음 명령을 사용하여 다운로드한 패키지를 설치합니다.
dpkg -i graylog-4.3-repository_latest.deb
다음으로 리포지토리를 업데이트하고 다음 명령을 사용하여 Graylog 서버를 설치합니다.
apt update -y
apt install graylog-server -y
Graylog 서버를 설치한 후 사용자 암호를 보호하기 위해 암호를 생성해야 합니다. 다음 명령으로 생성할 수 있습니다.
pwgen -N 1 -s 96
다음 출력이 표시되어야 합니다.
d1fDH1NEOMgb3nxbFYY3eVpqzjOprwgPgFuGh2F0flDdZglJP2CxENV4WEeW8iqZXsjDEZgMob3oBvQYm62RXxoc33hKTPJa
다음으로 Graylog 관리 사용자를 위한 보안 암호도 생성해야 합니다. Graylog 웹 인터페이스에 로그인하려면 이 비밀번호가 필요합니다. 다음 명령으로 생성할 수 있습니다.
echo -n "Enter Password: " && head -1
다음 출력이 표시되어야 합니다.
Enter Password: yourpassword e472e1436cbe87774c1bc75d0a646d67e506bea1dff8701fd41f34bca33e1419
이제 Graylog 기본 구성 파일을 편집하고 두 암호를 모두 정의합니다.
nano /etc/graylog/server/server.conf
아래와 같이 위에서 생성한 두 암호를 모두 붙여넣습니다.
password_secret = Wv4VQWCAA9sRbL7pxPeY7tb9lSo50esEWgNXxXHypx0Og3CezMmQLdF2QzQdRSIXmNXKINjRvZpPTrvZv4k4NlJrFYTfOc3c root_password_sha2 = e472e1436cbe87774c1bc75d0a646d67e506bea1dff8701fd41f34bca33e1419
다음으로 아래와 같이 서버 바인드 주소를 정의해야 합니다.
http_bind_address = 127.0.0.1:9000
완료되면 파일을 저장하고 닫은 다음 Graylog 서비스를 시작하고 다음 명령을 사용하여 시스템 재부팅 시 시작되도록 활성화합니다.
systemctl daemon-reload
systemctl start graylog-server
systemctl enable graylog-server
다음으로 다음 명령을 사용하여 Graylog 서버의 상태를 확인할 수 있습니다.
systemctl status graylog-server
다음 출력이 표시되어야 합니다.
? graylog-server.service - Graylog server Loaded: loaded (/lib/systemd/system/graylog-server.service; disabled; vendor preset: enabled) Active: active (running) since Sun 2022-09-25 07:25:13 UTC; 10s ago Docs: http://docs.graylog.org/ Main PID: 78082 (graylog-server) Tasks: 44 (limit: 4579) Memory: 539.4M CPU: 18.488s CGroup: /system.slice/graylog-server.service ??78082 /bin/sh /usr/share/graylog-server/bin/graylog-server ??78119 /usr/bin/java -Xms1g -Xmx1g -XX:NewRatio=1 -server -XX:+ResizeTLAB -XX:-OmitStackTraceInFastThrow -Djdk.tls.acknowledgeC> Sep 25 07:25:13 ubuntu2204 systemd[1]: Started Graylog server. Sep 25 07:25:13 ubuntu2204 graylog-server[78119]: OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 a> Sep 25 07:25:14 ubuntu2204 graylog-server[78119]: WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performan> Sep 25 07:25:17 ubuntu2204 graylog-server[78119]: WARNING: An illegal reflective access operation has occurred Sep 25 07:25:17 ubuntu2204 graylog-server[78119]: WARNING: Illegal reflective access by retrofit2.Platform (file:/usr/share/graylog-server/gr> Sep 25 07:25:17 ubuntu2204 graylog-server[78119]: WARNING: Please consider reporting this to the maintainers of retrofit2.Platform Sep 25 07:25:17 ubuntu2204 graylog-server[78119]: WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access > Sep 25 07:25:17 ubuntu2204 graylog-server[78119]: WARNING: All illegal access operations will be denied in a future release
다음 명령을 사용하여 Graylog 서버 로그를 확인할 수도 있습니다.
tail -f /var/log/graylog-server/server.log
Graylog 서버가 성공적으로 시작되면 다음 출력이 표시되어야 합니다.
2022-09-25T07:25:40.117Z INFO [ServerBootstrap] Services started, startup times in ms: {FailureHandlingService [RUNNING]=73, GeoIpDbFileChangeMonitorService [RUNNING]=88, PrometheusExporter [RUNNING]=88, OutputSetupService [RUNNING]=89, JobSchedulerService [RUNNING]=89, InputSetupService [RUNNING]=90, BufferSynchronizerService [RUNNING]=91, LocalKafkaMessageQueueReader [RUNNING]=92, LocalKafkaMessageQueueWriter [RUNNING]=92, GracefulShutdownService [RUNNING]=93, MongoDBProcessingStatusRecorderService [RUNNING]=93, UserSessionTerminationService [RUNNING]=101, StreamCacheService [RUNNING]=133, LocalKafkaJournal [RUNNING]=134, UrlWhitelistService [RUNNING]=134, ConfigurationEtagService [RUNNING]=137, EtagService [RUNNING]=139, PeriodicalsService [RUNNING]=174, LookupTableService [RUNNING]=203, JerseyService [RUNNING]=4076} 2022-09-25T07:25:40.133Z INFO [ServerBootstrap] Graylog server up and running.
이 시점에서 Graylog 서버가 시작되고 포트 9000에서 수신 대기합니다. 다음 명령으로 확인할 수 있습니다.
ss -antpl | grep 9000
다음 출력이 표시되어야 합니다.
LISTEN 0 4096 [::ffff:127.0.0.1]:9000 *:* users:(("java",pid=78119,fd=56))
Nginx를 Graylog에 대한 역방향 프록시로 구성
다음으로 포트 80에서 Graylog 서버에 액세스하려면 Nginx를 리버스 프록시로 설치하고 구성해야 합니다.
먼저 다음 명령을 사용하여 Nginx 서버를 설치합니다.
apt install nginx -y
Nginx 서버를 설치한 후 다음 명령을 사용하여 새 Nginx 가상 호스트 구성 파일을 만듭니다.
nano /etc/nginx/sites-available/graylog.conf
다음 줄을 추가합니다.
server { listen 80; server_name graylog.example.org; location / { proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Graylog-Server-URL http://$server_name/; proxy_pass http://208.117.84.72:9000; } }
완료되면 파일을 저장하고 닫습니다. 그런 다음 다음 명령을 사용하여 구문 오류가 있는지 Nginx를 확인합니다.
nginx -t
다음 출력이 표시되어야 합니다.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
다음으로 다음 명령을 사용하여 Nginx 가상 호스트 구성 파일을 활성화합니다.
ln -s /etc/nginx/sites-available/graylog.conf /etc/nginx/sites-enabled/
다음으로 Nginx 기본 가상 호스트 파일을 제거합니다.
rm -rf /etc/nginx/sites-enabled/default
마지막으로 Nginx 서비스를 다시 시작하여 변경 사항을 적용합니다.
systemctl restart nginx
다음으로 다음 명령을 사용하여 Graylog의 상태를 확인합니다.
systemctl status nginx
다음 출력이 표시되어야 합니다.
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2022-09-25 07:30:45 UTC; 8s ago Docs: man:nginx(8) Process: 78980 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 78981 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 78982 (nginx) Tasks: 3 (limit: 4579) Memory: 3.3M CPU: 49ms CGroup: /system.slice/nginx.service ??78982 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;" ??78983 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ??78984 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" Sep 25 07:30:45 ubuntu2204 systemd[1]: Starting A high performance web server and a reverse proxy server... Sep 25 07:30:45 ubuntu2204 systemd[1]: Started A high performance web server and a reverse proxy server.
Graylog 웹 인터페이스에 액세스
이제 웹 브라우저를 열고 URL http://graylog.example.com을 입력합니다. 아래와 같이 Graylog 로그인 페이지로 리디렉션됩니다.

관리자 사용자 이름, 암호를 제공하고 로그인 버튼을 클릭합니다. 다음 페이지에 Graylog 대시보드가 표시되어야 합니다.

결론
축하합니다! Ubuntu 22.04에서 Nginx를 리버스 프록시로 사용하여 Graylog 서버를 성공적으로 설치하고 구성했습니다. 이제 Graylog를 탐색하고 입력을 생성하여 외부 소스에서 Rsyslog 로그를 수신할 수 있습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.