웹사이트 검색

Graylog 모니터링 서버 Ubuntu 20.04 설치 및 구성


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • Ubuntu 22.04(Jammy Jellyfish)
  • Ubuntu 20.04(Focal Fossa)

이 페이지에서

  1. 전제 조건
  2. 시작하기\n
  3. 자바 설치
  4. Elasticsearch 설치 및 구성
  5. MongoDB 서버 설치
  6. Graylog 설치 및 구성
  7. Nginx를 Graylog용 리버스 프록시로 구성\n
  8. Graylog 웹 인터페이스 액세스
  9. 결론

Graylog는 중앙 서버에서 네트워크 시스템의 로그를 모니터링하는 데 사용할 수 있는 무료 오픈 소스 로그 관리 소프트웨어 도구입니다. Elasticsearch를 사용하여 로그 데이터를 저장하고 검색 기능을 제공하고 MongoDB를 사용하여 메타 정보를 저장합니다. 많은 양의 데이터를 간단하게 읽을 수 있는 형식으로 모니터링, 검색 및 분석하는 데 도움이 됩니다.

이 튜토리얼에서는 Ubuntu 20.04 서버에 Graylog를 설치하는 방법을 보여줍니다.

전제 조건

  • 최소 4GB RAM이 있는 Ubuntu 20.04를 실행하는 서버\n
  • 루트 암호가 구성됩니다.\n

시작하기

먼저 시스템 패키지를 최신 버전으로 업데이트해야 합니다. 다음 명령으로 모두 업데이트할 수 있습니다.

apt-get update -y

모든 패키지를 업데이트한 후 서버에 일부 종속 항목도 설치해야 합니다. 다음 명령으로 모두 설치할 수 있습니다.

apt-get install apt-transport-https gnupg2 uuid-runtime pwgen curl dirmngr -y

필요한 종속성이 모두 설치되면 다음 단계로 진행할 수 있습니다.

자바 설치

Graylog를 사용하려면 서버에 Java를 설치해야 합니다. 설치되어 있지 않은 경우 다음 명령으로 설치할 수 있습니다.

apt-get install openjdk-11-jre-headless -y

Java가 설치되면 다음 명령을 실행하여 설치된 Java 버전을 확인할 수 있습니다.

java -version

다음 출력이 표시되어야 합니다.

openjdk version "11.0.8" 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.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-6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

다음으로 리포지토리를 업데이트하고 다음 명령을 사용하여 Elasticsearch를 설치합니다.

apt-get update -y
apt-get 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 Sat 2020-09-05 08:41:18 UTC; 9s ago
       Docs: http://www.elastic.co
   Main PID: 7085 (java)
      Tasks: 17 (limit: 2353)
     Memory: 1.1G
     CGroup: /system.slice/elasticsearch.service
             ??7085 /bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly ->

Sep 05 08:41:18 ubunt4 systemd[1]: Started Elasticsearch.

이제 다음 명령을 사용하여 Elasticcsearch 응답을 확인합니다.

curl -X GET http://localhost:9200

다음과 같은 결과가 표시되어야 합니다.

{
  "name" : "vzg8H4j",
  "cluster_name" : "graylog",
  "cluster_uuid" : "6R9SlXxNSUGe6aclcJa9VQ",
  "version" : {
    "number" : "6.8.12",
    "build_flavor" : "oss",
    "build_type" : "deb",
    "build_hash" : "7a15d2a",
    "build_date" : "2020-08-12T07:27:20.804867Z",
    "build_snapshot" : false,
    "lucene_version" : "7.7.3",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

몽고DB 서버 설치

Graylog는 MongoDB를 데이터베이스로 사용합니다. 따라서 서버에 MongoDB 데이터베이스를 설치해야 합니다. 다음 명령으로 설치할 수 있습니다.

apt-get install mongodb-server -y

MongoDB가 설치되면 MongoDB 서비스를 시작하고 다음 명령을 사용하여 시스템 재부팅 시 시작되도록 활성화합니다.

systemctl start mongodb
systemctl enable mongodb

완료되면 다음 단계로 진행할 수 있습니다.

Graylog 설치 및 구성

기본적으로 Graylog 패키지는 Ubuntu 기본 리포지토리에서 사용할 수 없습니다. 따라서 서버에 graylog 리포지토리를 설치해야 합니다.

다음 명령을 사용하여 Graylog 리포지토리 패키지를 다운로드할 수 있습니다.

wget https://packages.graylog2.org/repo/packages/graylog-3.3-repository_latest.deb

다운로드가 완료되면 다음 명령을 사용하여 다운로드한 패키지를 설치합니다.

dpkg -i graylog-3.3-repository_latest.deb

다음으로 리포지토리를 업데이트하고 다음 명령을 사용하여 Graylog 서버를 설치합니다.

apt-get update -y
apt-get install graylog-server -y

Graylog 서버를 설치한 후 사용자 암호를 보호하기 위해 암호를 생성해야 합니다. 다음 명령으로 생성할 수 있습니다.

pwgen -N 1 -s 96

다음 출력이 표시되어야 합니다.

Wv4VQWCAA9sRbL7pxPeY7tb9lSo50esEWgNXxXHypx0Og3CezMmQLdF2QzQdRSIXmNXKINjRvZpPTrvZv4k4NlJrFYTfOc3c

다음으로 Graylog 관리 사용자를 위한 보안 암호도 생성해야 합니다. Graylog 웹 인터페이스에 로그인하려면 이 비밀번호가 필요합니다. 다음 명령으로 생성할 수 있습니다.

echo -n password | sha256sum

다음 출력이 표시되어야 합니다.

5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8  -

이제 Graylog 기본 구성 파일을 편집하고 두 암호를 모두 정의합니다.

nano /etc/graylog/server/server.conf

위에서 생성한 두 암호를 아래와 같이 붙여넣습니다.

password_secret = Wv4VQWCAA9sRbL7pxPeY7tb9lSo50esEWgNXxXHypx0Og3CezMmQLdF2QzQdRSIXmNXKINjRvZpPTrvZv4k4NlJrFYTfOc3c
root_password_sha2 = 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8   

다음으로 아래와 같이 서버 바인드 주소를 정의해야 합니다.

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 Sat 2020-09-05 08:50:16 UTC; 15min ago
       Docs: http://docs.graylog.org/
   Main PID: 8693 (graylog-server)
      Tasks: 156 (limit: 2353)
     Memory: 865.0M
     CGroup: /system.slice/graylog-server.service
             ??8693 /bin/sh /usr/share/graylog-server/bin/graylog-server
             ??8726 /usr/bin/java -Xms1g -Xmx1g -XX:NewRatio=1 -server -XX:+ResizeTLAB -XX:+UseConcMarkSweepGC -XX:+CMSConcurrentMTEnabled -XX>

Sep 05 08:50:16 ubunt4 systemd[1]: Started Graylog server.

다음 명령을 사용하여 Graylog 서버 로그를 확인할 수도 있습니다.

tail -f /var/log/graylog-server/server.log

Graylog 서버가 성공적으로 시작되면 다음 출력이 표시되어야 합니다.

2020-09-05T08:51:36.473Z INFO  [ServerBootstrap] Services started, startup times in ms: {InputSetupService [RUNNING]=59, JobSchedulerService [RUNNING]=105, GracefulShutdownService [RUNNING]=106, OutputSetupService [RUNNING]=110, BufferSynchronizerService [RUNNING]=111, UrlWhitelistService [RUNNING]=153, JournalReader [RUNNING]=166, KafkaJournal [RUNNING]=222, MongoDBProcessingStatusRecorderService [RUNNING]=240, ConfigurationEtagService [RUNNING]=259, EtagService [RUNNING]=302, StreamCacheService [RUNNING]=306, LookupTableService [RUNNING]=376, PeriodicalsService [RUNNING]=655, JerseyService [RUNNING]=58701}
2020-09-05T08:51:36.477Z INFO  [ServerBootstrap] Graylog server up and running.

이 시점에서 Graylog 서버가 시작되고 포트 9000에서 수신 대기합니다.

Nginx를 Graylog용 리버스 프록시로 구성

다음으로 Graylog 서버에 액세스하려면 Nginx를 리버스 프록시로 설치 및 구성해야 합니다.

먼저 다음 명령을 사용하여 Nginx 서버를 설치합니다.

apt-get 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://127.0.0.1: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 서비스를 다시 시작하여 변경 사항을 적용합니다.

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 Sat 2020-09-05 09:07:50 UTC; 20s ago
       Docs: man:nginx(8)
    Process: 9408 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 9419 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 9423 (nginx)
      Tasks: 3 (limit: 2353)
     Memory: 10.2M
     CGroup: /system.slice/nginx.service
             ??9423 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??9424 nginx: worker process
             ??9425 nginx: worker process

Sep 05 09:07:50 ubunt4 systemd[1]: Starting A high performance web server and a reverse proxy server...
Sep 05 09:07:50 ubunt4 systemd[1]: Started A high performance web server and a reverse proxy server.

Graylog 웹 인터페이스에 액세스

이제 웹 브라우저를 열고 URL http://graylog.example.com을 입력합니다. 아래와 같이 Graylog 로그인 페이지로 리디렉션됩니다.

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

이제 시스템 >> 개요를 클릭하십시오. 다음 페이지에서 Graylog 서버의 상태를 확인해야 합니다.

결론

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