새소식

Open Source 툴

Graylog를 이용한 Syslog 수집 ( 설치 편 )

  • -
반응형

Log 모니터링을 하다보면 5개 정도의 서버의 Log를 보는 거라면 빠르게 볼수있다. 하지만 10대이상가는 서버의 Log를 매일 모니터링을 하다보면 이 시간또한 많은 시간을 들게된다. 현재 맡고있는 서비스는 40대가 넘는 서버의 일일 Log 모니터링을 하고있는데 이런 시간을 줄이기 위해 Graylog를 공부해보고 적용까지 해보려고한다. 

 

Graylog

- Graylog는 로그메세지의 적재와 조회, 시각화등의 기능외 많은 기능을 제공하는 오픈 소스 로그 관제 솔루션이다.

- Graylog Server / Elasticsearch / MongoDB로 구성된다. 이를 통해 애플리케이션으로 부터 전송되는 로그를 거의 실시간으로 구조화하여 적재 할 수 있다.

 

구조화된 로그가 필요한 이유

- 왜 구조화된 로그가 필요한가????? 

=> AI의 등장과 함께 이제 애플리케이션 로그는 사람이 보는 정보이기보다 기계가 분석하는 정보가 되었다. 기계가 로그를 분석하려면 기존의 전통적인 라인 단위의 텍스트 로그로는 부족하다. 잘 설계된 구조화된 로그를 전송하면 기계에 의해 분석되어 유의미한 정보로 가공할 수 있다. Graylog가 개발한 구조화된 GELF 로그 포맷은 그러한 목적으로 탄생하였다.

 

Graylog 기능요약

- Graylog는 원하는 데이터를 찾아볼 수 있는 로그 검색

- 미리 설정된 방식으로 로그 현황을 보여주는 대시보드

- 특이사항 발생 시 사용자에게 자동으로 알려주는 통보

-  사용자가 원하는 로그를 수집할 수 있도록 입력구성

- 입력구성을 자동화된 방식으로 분석/분류/처리하는 "스트림"

 

■ Graylog Architecture

-MongoDB = 구성정보, 메타정보 저장용으로 사용되는 DB

-Elasticsearch = Log 원격지에서 받은 로그 메세지를 저장하고 필요할 때 마다 검색할 수 있는 기능 제공, 용량이 많아지고 데이터 인덱싱을 위한 부하가 발생할경우 고용량 메모리 및 High IOPS를 제공하는 저장 공간을 권고

-Graylog Server = 다양한 Input에서 발생하는 로그를 구문 분석하며, 해당 로그들을 처리할 수 있는 웹 인터페이스를 제공하는 서버

 

 

 

1. 설치를 위한 사전작업

- Grylog 설치에 필요한 패키지 / Elasticsearch 사용을 위한 Java 설치

[root:LEE:/root > yum install epel-release
[root:LEE:/root > yum -y install wget pwgen
[root@log-server ~]# yum -y install java-1.8.0*

 

2.Elasticsearch 설치

- GPG Signing Key 설치

- Repository에 Elasticsearch Repo 등록

- 설치 이후 Elasticsearch Cluster_name 파라미터 변경 

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo touch /etc/yum.repos.d/elasticsearc-6.repo
sudo bash -c 'echo "[elasticsearch-6.x]" >> /etc/yum.repos.d/elasticsearc-6.repo'
sudo bash -c 'echo "name=Elasticsearch repository for 6.x packages" >> /etc/yum.repos.d/elasticsearc-6.repo'
sudo bash -c 'echo "baseurl=https://artifacts.elastic.co/packages/6.x/yum" >> /etc/yum.repos.d/elasticsearc-6.repo'
sudo bash -c 'echo "gpgcheck=1" >> /etc/yum.repos.d/elasticsearc-6.repo'
sudo bash -c 'echo "gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch" >> /etc/yum.repos.d/elasticsearc-6.repo'
sudo bash -c 'echo "enabled=1" >> /etc/yum.repos.d/elasticsearc-6.repo'
sudo bash -c 'echo "autorefresh=1" >> /etc/yum.repos.d/elasticsearc-6.repo'
sudo bash -c 'echo "type=rpm-md" >> /etc/yum.repos.d/elasticsearc-6.repo'
sudo yum -y install elasticsearch


[root@log-server yum.repos.d > systemctl daemon-reload
[root@log-server yum.repos.d > systemctl start elasticsearch
[root@log-server yum.repos.d > vi /etc/elasticsearch/elasticsearch.yml
-> cluster.name : graylog-lee ( 자기가 원하는 Cluster name 사용 )
[root@log-server yum.repos.d > systemctl restart elasticsearch


** 9200Port로 정상작동하는지 & Cluster name이 잘 변경되었는지 확인
[root:LEE:/root > curl -X GET http://localhost:9200
{
  "name" : "gDVwuLY",
  "cluster_name" : "graylog-lee",
  "cluster_uuid" : "uboiFM0TQMytyPR5MU8aTQ",
  "version" : {
    "number" : "6.8.20",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "c859302",
    "build_date" : "2021-10-07T22:00:24.085009Z",
    "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"
}


** Elasticsearch Cluster 이상 유무 > status 가 green이어야 정상작동
[root:LEE:/root > curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
{
  "cluster_name" : "graylog-lee",
  "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
}

 

3. MongoDB 설치

- MongoDB Repo를 등록한 이후 설치 진행

[root:LEE:/root > vi /etc/yum.repos.d/mongodb-org-4.4.repo

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

[root:LEE:/root > yum -y install mongodb-org
[root:LEE:/root > systemctl start mongod

 

4.Graylog 설치

- Graylog 설치

[root:LEE:/root > rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-3.0-repository_latest.rpm
[root:LEE:/root > yum -y install graylog-server

- Graylog server.conf 환경파일 수정

- password_secret 수정 ( 비밀번호 암호화 및 솔팅에 사용되는 비밀을 설정해야 합니다(MUST). 서버는 설정되지 않은 경우 시작을 거부합니다. )

- pwgen util을 통해서 암호를 생성하고, server.conf에 패스워드 정보를 입력

1.password_secret 설정 변경
[root:LEE:/root > pwgen -N 1 -s 96
iCJhdRLT6MVxtOgP82cFg7wzVbupoLTb3JZT7b1d9yHFT6E1UpG0t9bDOdsb5LA59g9noyp3uwWdbnjHY2mMViNe2wLzp7u3

[root:LEE:/root > vi /etc/graylog/server/server.conf
# Generate one by using for example: pwgen -N 1 -s 96
password_secret = iCJhdRLT6MVxtOgP82cFg7wzVbupoLTb3JZT7b1d9yHFT6E1UpG0t9bDOdsb5LA59g9noyp3uwWdbnjHY2mMViNe2wLzp7u3

2.graylog admin User 패스워드 설정
[root:LEE:/root > echo -n admin | sha256sum
8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918  -

[root:LEE:/root > vi /etc/graylog/server/server.conf
# and put the resulting hash value into the following line
root_password_sha2 = 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918

root_timezone = Asia/Seoul ## timezone 아시아로 변경
elasticsearch_shards = 1  ##현재 elasticsearch는 1개로 되어있어 1로 수정 Default 4

# Default: 127.0.0.1:9000
http_bind_address = 10.70.101.63:9000 ## Graylog 인터페이스 IP:Port 변경

3.Graylog 재시작
[root:LEE:/root > systemctl daemon-reload
[root:LEE:/root > systemctl restart graylog-server

4.Graylog 실행 확인
[root:LEE:/root > tail -200f /var/log/graylog-server/server.log | grep Graylog
2021-10-23T19:36:58.005+09:00 INFO  [ServerBootstrap] Graylog server 3.0.2+1686930 starting up
2021-10-23T19:37:13.676+09:00 INFO  [ServerBootstrap] Graylog server up and running.

5.Graylog 9000 Port 방화벽 설정
[root:LEE:/root > firewall-cmd --permanent --add-port=9000/tcp
success
[root:LEE:/root > firewall-cmd --reload
success
[root:LEE:/root > firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources: 
  services: dhcpv6-client ssh
  ports: 9000/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

 

5.Graylog 인터페이스

- 인터넷에 http://10.70.101.63:9000 

이번 포스팅은 설치까지만 하며 다음 포스팅에서는 외부 서버에서 Syslog를 가져오는 방법에 대해서 포스팅하겠습니다.~~

 

 

 

 

 

■ 참고  

https://youngmind.tistory.com/entry/Graylog-%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%84%B1-1%ED%8E%B8-%EC%84%A4%EC%B9%98?category=783968 

 

Graylog 서버 구성 1편 - 설치

1. Gray Log 소개와 주요 구성요소 Graylog는 MongoDB와 Elasticsearch를 기반으로 동작하며 사실상 로깅 수집과 분석을 타겟으로 제공되는 오픈소스기반이다. 설치가 간단하면서 다양한 인덱싱과 필터링

youngmind.tistory.com

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.