티스토리 뷰
개요
- CentOS 7에서 Graylog 3 Server를 설치하는 방법을 소개한다.
사전조건
- Grarylog 3 Server를 설치할 각 노드에 MongoDB가 먼저 설치되어야 한다. 설치 방법은 이 글을 참고한다. (MongoDB은 Graylog의 모든 환경설정을 저장하는 데이터베이스로 사용된다.)
- Grarylog 3 Server 설치 전 별개의 노드에 Elasticsearch 6가 설치되어야 한다. 설치 방법은 이 글을 참고한다. (Elasticsearch는 Graylog로 전송되는 모든 로그의 저장소로 사용된다.)
Graylog 3 Server 설치
- 아래는 CentOS 7에 Graylog 3 Server를 설치하는 방법이다.
### 운영체제 업데이트
$ sudo yum -y update
### Zulu OpenJDK 8 설치
$ sudo rpm --import http://repos.azulsystems.com/RPM-GPG-KEY-azulsystems
$ sudo curl -o /etc/yum.repos.d/zulu.repo http://repos.azulsystems.com/rhel/zulu.repo
$ sudo yum -y install zulu-8
$ sudo bash -c 'echo "export JAVA_HOME=/usr/lib/jvm/zulu-8" >> /etc/environment'
$ sudo bash -c 'echo "export JRE_HOME=/usr/lib/jvm/zulu-8/jre" >> /etc/environment'
### Graylog 3 설치
$ sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-3.1-repository_latest.rpm
$ sudo yum -y install graylog-server
### Graylog 3 비밀번호 해시 생성
$ sudo pwgen -N 1 -s 96
9Dz0g8s6YvGkZHdfm1YHVNX7RfEjyJGdawXHwpFIAaGM802dPpJouksI06t2A8Pj2QIDIMXLK01qkbAmgXPdmoI7bzlZr2Lk
$ echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
Enter Password: admin
8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
### Graylog 3 설정
$ sudo vi /etc/graylog/server/server.conf
password_secret = 9Dz0g8s6YvGkZHdfm1YHVNX7RfEjyJGdawXHwpFIAaGM802dPpJouksI06t2A8Pj2QIDIMXLK01qkbAmgXPdmoI7bzlZr2Lk
root_password_sha2 = 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
root_email = "jsonobject@gmail.com"
root_timezone = Asia/Seoul
is_master = true
# 외부에서 HTTP 인터페이스로 접속이 가능하게 하려면 0.0.0.0:9000 으로 설정, 보안상 비추천
# 운영 환경에서는 로드 밸런서와 연결된 사설 IP 주소를 입력할 것
http_bind_address = 0.0.0.0:9000
# Graylog 내부 인스턴스 간 통신에 사용되는 현재 인스턴스의 URI, 사설 IP 주소 사용을 권장
http_publish_uri = http://{사설 IP}:9000/
# Graylog 외부에서 호출할 현재 인스턴스의 URI, 공인 IP 주소 사용을 권장
http_external_uri = http://{공인 IP}:9000/
elasticsearch_max_docs_per_index = 20000000
elasticsearch_max_number_of_indices = 20
elasticsearch_shards = 1
elasticsearch_replicas = 0
### Graylog 3 방화벽 개방
$ sudo firewall-cmd --permanent --add-port=9000/tcp
$ sudo firewall-cmd --reload
### Graylog 3 Server 실행
$ sudo systemctl daemon-reload
$ sudo systemctl enable graylog-server.service
$ sudo systemctl start graylog-server.service
$ sudo tail -f /var/log/graylog-server/server.log
2019-08-10T15:58:52.676Z INFO [ServerBootstrap] Graylog server up and running.
http_publish_uri
,http_external_uri
을 옵션을 올바르게 설정하지 않으면 아래와 같은 오류가 발생할 수 있다.
2019-10-03T23:23:02.363+09:00 WARN [ProxiedResource] Unable to call http://117.52.74.73:9000/api/system/jobs on node <dc1e9946-0307-45af-9a98-eb0ebec6d66f>: connect timed out
Graylog 3 Server 실행 확인
$ curl -X GET http://127.0.0.1:9000
HTTP/1.1 200 OK
X-UA-Compatible: IE=edge
X-Graylog-Node-ID: 327adb40-6e1f-48df-909f-8bcd35210324
Content-Type: text/html
Date: Sat, 10 Aug 2019 16:06:20 GMT
Content-Length: 1314
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="robots" content="noindex, nofollow">
<meta charset="UTF-8">
<title>Graylog Web Interface</title>
<link rel="shortcut icon" href="http://127.0.0.1:9000/assets/favicon.png">
</head>
<body>
<script src="http://127.0.0.1:9000/config.js"></script>
<script src="http://127.0.0.1:9000/assets/vendor.4024e2a8db732781a971.js"></script>
<script src="http://127.0.0.1:9000/assets/polyfill.a5e2fb591e8fd54ee4ef.js"></script>
<script src="http://127.0.0.1:9000/assets/builtins.a5e2fb591e8fd54ee4ef.js"></script>
<script src="http://127.0.0.1:9000/assets/plugin/org.graylog.plugins.threatintel.ThreatIntelPlugin/plugin.org.graylog.plugins.threatintel.ThreatIntelPlugin.b864ba54b438ac0bdc48.js"></script>
<script src="http://127.0.0.1:9000/assets/plugin/org.graylog.plugins.collector.CollectorPlugin/plugin.org.graylog.plugins.collector.CollectorPlugin.bcc87290018e859a8a9e.js"></script>
<script src="http://127.0.0.1:9000/assets/plugin/org.graylog.aws.AWSPlugin/plugin.org.graylog.aws.AWSPlugin.8ae7cb13983ce33eeb5b.js"></script>
<script src="http://127.0.0.1:9000/assets/app.a5e2fb591e8fd54ee4ef.js"></script>
</body>
</html>
$ curl -i -H 'Accept: application/json' http://127.0.0.1:9000/api
HTTP/1.1 200 OK
X-Graylog-Node-ID: 327adb40-6e1f-48df-909f-8bcd35210324
X-Runtime-Microseconds: 34388
Content-Type: application/json
Date: Sat, 10 Aug 2019 16:07:45 GMT
Content-Length: 232
{
"cluster_id":"20ed5de4-4686-450e-8f12-a9abf225b17b",
"node_id":"327adb40-6e1f-48df-909f-8bcd35210324",
"version":"3.0.2+1686930",
"tagline":"Manage your logs in the dark and have lasers going and make it look like you're from space!"
}
Graylog 3 Server 버전 업그레이드
- Graylog 3 Server의 버전 업그레이드 방법은 설치 방법과 동일하다. 아래는 현재 최신 버전인 3.3.x 버전으로 업그레이드하는 예이다.
$ sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-3.3-repository_latest.rpm
$ sudo yum clean all
$ sudo yum install graylog-server
$ sudo systemctl restart graylog-server.service
Slack 알림 플러그인 설치
# Graylog 기본 플러그인 디렉토리로 이동
$ cd /usr/share/graylog-server/plugin
# Slack 플러그인 다운로드
$ sudo wget https://github.com/sportalliance/graylog-plugin-slack-notification/releases/download/1.0.5/graylog-plugin-slack-notification-1.0.5.jar
# 플러그인 적용을 위해 Graylog 재시작
$ sudo systemctl restart graylog-server.service
Graylog 3 Server, Docker 이미지로 설치
- Graylog 3 Server는 Docker 이미지로도 설치가 가능하다. 아래는 Docker Compose를 이용하여 MongoDB, Elasticsearch, Graylog를 한꺼번에 설치하고 실행하는 예이다.
# EPEL 저장소 설치
$ sudo yum install epel-release
# Amazon EC2일 경우 아래 방법으로 설치
$ sudo amazon-linux-extras install epel
# 앞서 설치한 EPEL 저장소에서 pwgen 패키지 설치
$ sudo yum install pwgen
# Graylog 3 비밀번호 해시 생성
$ sudo pwgen -N 1 -s 96
HPqJl4jE3EoLR0Kq0tHfJufjh9RY1dfFtTHPbAlyimvy0eQYk8PpGo50Zau5EOcu7RL9v2NCcg1OpvspgRh3AVPib6xB9YXe
$ echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
Enter Password: admin
8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
$ mkdir graylog
$ cd graylog
$ nano docker-compose.yml
version: '3'
services:
# MongoDB: https://hub.docker.com/_/mongo/
mongo:
image: mongo:3
networks:
- graylog
# Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/6.x/docker.html
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.8.10
environment:
- http.host=0.0.0.0
- transport.host=localhost
- network.host=0.0.0.0
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
deploy:
resources:
limits:
memory: 1g
networks:
- graylog
# Graylog: https://hub.docker.com/r/graylog/graylog/
graylog:
image: graylog/graylog:3.3
environment:
# CHANGE ME (must be at least 16 characters)!
- GRAYLOG_PASSWORD_SECRET=HPqJl4jE3EoLR0Kq0tHfJufjh9RY1dfFtTHPbAlyimvy0eQYk8PpGo50Zau5EOcu7RL9v2NCcg1OpvspgRh3AVPib6xB9YXe
# Password: admin
- GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
- GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/
- GRAYLOG_ROOT_TIMEZONE=Asia/Seoul
networks:
- graylog
depends_on:
- mongo
- elasticsearch
ports:
# Graylog web interface and REST API
- 9000:9000
# Syslog TCP
- 1514:1514
# Syslog UDP
- 1514:1514/udp
# GELF TCP
- 12201:12201
# GELF UDP
- 12201:12201/udp
networks:
graylog:
driver: bridge
# MongoDB 3, Elasticsearch 6, Graylog 3 컨테이너 다운로드
$ docker-compose pull
Pulling mongo ... done
Pulling elasticsearch ... done
Pulling graylog ... done
# MongoDB 3, Elasticsearch 6, Graylog 3 컨테이너 시작
$ docker-compose up -d
Creating network "graylog_graylog" with driver "bridge"
Creating graylog_mongo_1 ... done
Creating graylog_elasticsearch_1 ... done
Creating graylog_graylog_1 ... done
# MongoDB 3, Elasticsearch 6, Graylog 3 컨테이너 프로세스 확인
$ docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
graylog_elasticsearch_1 /usr/local/bin/docker-entr ... Up 9200/tcp, 9300/tcp
graylog_graylog_1 tini -- /docker-entrypoint ... Up (health: starting) 0.0.0.0:12201->12201/tcp, 0.0.0.0:12201->12201/udp, 0.0.0.0:1514->1514/tcp, 0.0.0.0:1514->1514/udp, 0.0.0.0:9000->9000/tcp
graylog_mongo_1 docker-entrypoint.sh mongod Up
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 태그를 입력해 주세요.
- Docker
- kotlin
- Kendo UI
- bootstrap
- Spring MVC 3
- Eclipse
- maven
- 자전거
- jstl
- graylog
- jpa
- Spring Boot
- Tomcat
- 알뜰폰
- JavaScript
- DynamoDB
- 평속
- 로드바이크
- 구동계
- chrome
- 로드 바이크
- spring
- Kendo UI Web Grid
- JHipster
- java
- node.js
- CentOS
- jsp
- MySQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함