티스토리 뷰



1. Gray Log 소개와 주요 구성요소

Graylog는 MongoDB와 Elasticsearch를 기반으로 동작하며 사실상 로깅 수집과 분석을 타겟으로 제공되는 오픈소스기반이다.
설치가 간단하면서 다양한 인덱싱과 필터링 기반의 검색을 통해 값들을 그래프화 시킬 수 있다는 큰 장점이 있다.
여러부분에서 ELK(Elasticsearch, Logstash, Kibana)등과 유사하여 비교를 하곤 한다.
리눅스 기반의 설치가 가능하며, 로그가 많은 경우 시스템의 메모리 및 Disk IO를 적절히 지원한다면 매우 유용한 로그 분석 솔루션이다.

장점
  • 쉽고 빠른 설치
  • 오픈소스 기반 - 엔터프라이즈 라이센스를 플러그인 할 수 있음.
  • 강력한 파싱, Alerting, 그래프 기능
  • 대쉬보드 기능

단점
  • 파워풀한 그래프 기능이 약함.
  • 강력한 파싱으로 인해 , 해당 부분에 대한 학습 필요.
  • 플러그인의 부재 (Logstash , Kibana에 비해서…)

ELK vs Graylog 비교

ELK StackGraylog
Alerting별도지원
파싱고급기능지원고급기능지원
그래프고급기능지원기본 수준
플러그인풍부함약함
사전학습필요도높음중간
설치중간쉽고 빠름.
활용도다양함로그분석


Graylog Architecture 소개


주요 구성요소
  • MongoDB - 구성정보, 메타정보 저장용으로 사용되는 DB
  • Elasticsearch - Log 원격지에서 받은 로그 메세지를 저장하고 필요할 때 마다 검색할 수 있는 기능 제공. 용량이 많아지고 데이터 인덱싱을 위한 부하가 발생할 경우 고용량 메모리 및 High IOPS를 제공하는 저장 공간을 권고.
  • Graylog server - 다양한 Input에서 발생하는 로그를 구문 분석하며, 해당 로그들을 처리할 수 있는 웹 인터페이스를 제공하는 서버



2. 설치를 위한 사전 작업

Graylog설치에 필요한 패키지 설치한다.

[root@centrepo whchoi]# yum -y install wget pwgen

Elasticsearch 사용하기 위해 Java설치한다.

[root@centrepo whchoi]# yum install -y java-1.8.0-openjdk-headless

Java Version 확인

[root@centrepo whchoi]# java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)


3. Elasticsearch 설치

GPG Signing Key 설치한다.
[root@centrepo whchoi]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Repository에 Elasticsearch 최신 패키지 버전을 설치 및 업데이트하기 위해 Elastic Repo등록한다.
[root@centrepo whchoi]# vi /etc/yum.repos.d/elasticsearch.repo

[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Elasticsearch 패키지를 설치하고 ,활성화시킨다.
[root@centrepo whchoi]# yum install -y elasticsearch
[root@centrepo whchoi]# systemctl daemon-reload
[root@centrepo whchoi]# systemctl enable elasticsearch

Elasticsearch.yml 에 Cluster Name을 등록하고 elasticsearch를 재구동한다.

[root@centrepo whchoi]# vi /etc/elasticsearch/elasticsearch.yml

cluster.name: graylog

# 주석해제 후 사용자 클러스터명을 사용자 정의 처리한다.

# systemctl restart elasticsearch

ElasticSearch 정상동작 유무를 점검한다.

[root@centrepo whchoi]# curl -X GET http://localhost:9200
{
  "name" : "IH4Hm0T",
  "cluster_name" : "graylog",
  "cluster_uuid" : "E4huz-WtSimB3jKTGpV1_g",
  "version" : {
    "number" : "6.7.2",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "56c6e48",
    "build_date" : "2019-04-29T09:05:50.290371Z",
    "build_snapshot" : false,
    "lucene_version" : "7.7.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

# curl을 통해 ElasticSearch 9200번 포트가 정상 동작하는지를 확인한다.
# 앞서등록한 Cluster_name이 정상적으로 선언되었는지 확인한다.

ElasticSearch Cluster이상 유무를 점검한다.

[root@centrepo whchoi]# curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
{
  "cluster_name" : "graylog",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

# “status” 상태가 반드시 “green”으로 동작해야 한다.


4. MongoDB설치

ElasticSearch와 마찬가지로 MongoDB Repo를 yum repo에 등록하여, 설치한다.
또한 MongoDB를 활성화하고 시스템 등록한다.

[root@centrepo whchoi]# vi /etc/yum.repos.d/mongodb-org-4.0.repo

[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

[root@centrepo whchoi]# yum install -y mongodb-org
[root@centrepo whchoi]# systemctl start mongod
[root@centrepo whchoi]# systemctl enable mongod



5. Graylog 기본 설치 

사용자 UI를 위해, 이제 Graylog 서버를 설치한다.
Graylog 3.x 버전의 repo를 다운로드하고 설치한다.

[root@centrepo whchoi]# rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-3.0-repository_latest.rpm
[root@centrepo whchoi]# yum -y install graylog-server

Graylog 구성을 위해 server.conf파일을 수정한다.
server.conf파일 내부에는 password_secret정보를 포함하고 있다.
pwgen util을 통해서 암호를 생성하고, server.conf에 패스워드 정보를 입력한다.

[root@centrepo whchoi]# pwgen -N 1 -s 96
8GQp7XjghrToKTGTxxzowqpL3TQhzqkfKBj2c8X887euB0IQepVbzfM2mvDX7rd51yKGmKLZBpKdbgjAfu3ua9vcy5EFF3pm

[root@centrepo whchoi]# vi /etc/graylog/server/server.conf
password_secret = 8GQp7XjghrToKTGTxxzowqpL3TQhzqkfKBj2c8X887euB0IQepVbzfM2mvDX7rd51yKGmKLZBpKdbgjAfu3ua9vcy5EFF3pm

추가로 Graylog server admin에 대한 암호를 생성한다.
해당 암호를 통해서 웹에 로그인을 하게 되며 , 기본 User ID는 admin 이다.

[root@centrepo whchoi]# echo -n 1234Qwer | sha256sum
e7330cded8758d96bfa2445025f21768e2550fc71cd7f2814c0028aaad53812d

[root@centrepo whchoi]# vi /etc/graylog/server/server.conf
root_password_sha2 = e7330cded8758d96bfa2445025f21768e2550fc71cd7f2814c0028aaad53812d

Graylog server 구동을 위해 추가적으로 필요한 환경 설정을 한다.

root_timezone = Asia/Seoul 
#한국 시간대를 설정
elasticsearch_shards = 1
# 샤드 설정을 한다. 클러스터 노드가 1개만 있다면 수정한다. Default는 4개이다.
#  나머지 대부분은 기본 설정으로 구성하면 된다.


6. Graylog 웹 인터페이스 설치 구성

Graylog 웹 인터페이스 활성화를 위해 server.conf파일을 편집하고, Graylog server를 재구동하고, 시스템 활성화 시킨다.

[root@centrepo whchoi]# vi /etc/graylog/server/server.conf
http_bind_address = 10.72.78.253:9000
[root@centrepo whchoi]# systemctl daemon-reload
[root@centrepo whchoi]# systemctl restart graylog-server
[root@centrepo whchoi]# systemctl enable graylog-server

Graylog server가 정상적인지 로그를 통해서 확인한다.

[root@centrepo whchoi]# tailf /var/log/graylog-server/server.log | grep Graylog
2019-05-14T22:04:43.792+09:00 INFO  [ServerBootstrap] Graylog server up and running.
# 정상적으로 동작하게 되면 Gray server up and running message를 출력하게 된다.

외부 서비스를 위해 firewalld에서 tcp 9000 포트를 허용해 준다.

[root@centrepo whchoi]# firewall-cmd --permanent --add-port=9000/tcp
success
[root@centrepo whchoi]# firewall-cmd --reload
success
root@centrepo whchoi]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources:
  services: 9000/tcp

실제 서비스를 확인하고, 정상적으로 접속 및 로그인이 되는지를 점검한다.



공지사항