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를 가져오는 방법에 대해서 포스팅하겠습니다.~~
■ 참고
'Open Source 툴' 카테고리의 다른 글
Zabbix Agent 배포 ( Use. Ansible ) (0) | 2021.12.28 |
---|---|
Zabbix-agent Auto Registeration ( 자동 등록 ) (0) | 2021.12.23 |
Maria Replication 모니터링 ( feat. Zabbix ) (0) | 2021.12.13 |
오픈소스 모니터링 Zabbix 5.0 설치 (0) | 2021.11.22 |
Graylog를 이용한 Syslog 수집 ( 수집 설정 편 ) (0) | 2021.10.25 |
소중한 공감 감사합니다