안녕하세요. 여러대의 서버들에 하나하나 접속해서 log를 확인하기 힘들고 귀찮기때문에 graylog를 이용해 로그 수집서버를 구성해서 받아 볼 생각입니다.
Graylog란,
MongoDB와 Elasticsearch 기반으로 동작하며 로깅 수집과 분석을 타겟으로 제공하는 오픈소스 솔루션입니다. 리눅스 기반 설치가 가능하며, 로그가 많은 경우 시스템의 메모리 및 Disk IO를 적절히 지원한다면 매우 유용합니다.
Graylog 장점
- 설치가 쉽고 빠르며 오픈소스 기반이다.
-
얼롯팅 가능, 대쉬보드를 통해그래프 기능 지원
Graylog 단점
-
그래프 기능이 약간 부족하다..
-
플러그인 부재
graylog 아키텍쳐
-MongoDB = 구성정보, 메타정보 저장용으로 사용되는 DB
-Elasticsearch = Log 원격지에서 받은 로그 메세지를 저장하고 필요할 때 마다 검색할 수 있는 기능 제공, 용량이 많아지고 데이터 인덱싱을 위한 부하가 발생할경우 고용량 메모리 및 High IOPS를 제공하는 저장 공간을 권고
-Graylog Server = 다양한 Input에서 발생하는 로그를 구문 분석하며, 해당 로그들을 처리할 수 있는 웹 인터페이스를 제공하는 서버
테스트 환경
hostname
|
IP
|
version
|
db version
|
jh-node001
|
115.85.182.24
|
centos7.8
|
mysql5.7
|
jh-node002
|
49.50.164.159
|
centos7.8
|
mysql5.7
|
graylog server
|
118.67.132.167
|
centos7.8
|
|
사전 작업 (graylog server)
■ graylog설치에 필요한 패키지 설치
[root@localhost ~]# yum install epel-release
[root@localhost ~]# yum -y install wget pwgen
■ Elasticsearch 사용을 위한 Java설치
[root@localhost ~]# yum -y install java-1.8.0-openjdk-headless
Elasticsearch 설치 (graylog server)
■ GPG Signing Key 설치
[root@localhost ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
■ Repository에 Elasticsearch repo 등록
[root@localhost ~]# touch /etc/yum.repos.d/elasticsearc-6.repo
bash -c 'echo "[elasticsearch-6.x]" >> /etc/yum.repos.d/elasticsearc-6.repo'
bash -c 'echo "name=Elasticsearch repository for 6.x packages" >> /etc/yum.repos.d/elasticsearc-6.repo'
bash -c 'echo "baseurl=https://artifacts.elastic.co/packages/6.x/yum" >> /etc/yum.repos.d/elasticsearc-6.repo'
bash -c 'echo "gpgcheck=1" >> /etc/yum.repos.d/elasticsearc-6.repo'
bash -c 'echo "gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch" >> /etc/yum.repos.d/elasticsearc-6.repo'
bash -c 'echo "enabled=1" >> /etc/yum.repos.d/elasticsearc-6.repo'
bash -c 'echo "autorefresh=1" >> /etc/yum.repos.d/elasticsearc-6.repo'
bash -c 'echo "type=rpm-md" >> /etc/yum.repos.d/elasticsearc-6.repo'
■ Yum설치
[root@localhost ~]# yum -y install elasticsearch
■ Daemon 활성화
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl enable elasticsearch.service
■ Cluster name 등록 및 재구동 (cluster name 임의지정)
주석해제 후 cluster.name 입력
[root@localhost ~]# vi /etc/elasticsearch/elasticsearch.yml
cluster.name: graylog-jh
[root@localhost ~]# systemctl restart elasticsearch.service
■ 9200포트로 정상작동 및 Cluster name 변경 확인
[root@localhost ~]# curl -X GET http://localhost:9200
{
"name" : "385c3IO",
"cluster_name" : "graylog-jh",
"cluster_uuid" : "oN0A9uP7RG6ElvD6ClDORA",
"version" : {
"number" : "6.8.22",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "71fcb50",
"build_date" : "2021-12-19T01:10:56.497443Z",
"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 이상 유무 확인
[root@localhost ~]# curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
{
"cluster_name" : "graylog-jh",
"status" : "green", //해당 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
}
■ MongoDB 설치 ( graylog server)
## Repository 추가
[root@localhost ~]# 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
## mongo db 설치[root@localhost ~]# yum -y install mongodb-org[root@localhost ~]# systemctl start mongod.service
■ Graylog 설치 ( graylog server)
## Repository 다운
[root@localhost ~]# rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-3.0-repository_latest.rpm
https://packages.graylog2.org/repo/packages/graylog-3.0-repository_latest.rpm(을)를 복구합니다
준비 중... ################################# [100%]
Updating / installing...
1:graylog-3.0-repository-1-6 ################################# [100%]
## graylog server 설치
[root@localhost ~]# yum -y install graylog-server
graylog 환경 변수 설정
■ password_ secret 수정
pwgen util을 통해 암호 생성, server.conf에 패스워드 정보 입력
[root@localhost ~]# pwgen -N 1 -s 96
DTfgqCVQs1Zjjl5VrLeJkztLGRYbETmuTbTnQwkHqWht7UJvHjHEuThqe2KWlY4rJHpy3Yz0Fpac7aL6vpyZORetifUHh933
■ 해당 파일 password_secret값 입력
[root@localhost ~]# vi /etc/graylog/server/server.conf
# Generate one by using for example: pwgen -N 1 -s 96
password_secret = DTfgqCVQs1Zjjl5VrLeJkztLGRYbETmuTbTnQwkHqWht7UJvHjHEuThqe2KWlY4rJHpy3Yz0Fpac7aL6vpyZORetifUHh933
■ graylog server admin에 대한 암호 생성 ( graylog server)
[root@localhost ~]# echo -n admin | sha256sum
8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
[root@localhost ~]# vi /etc/graylog/server/server.conf
# and put the resulting hash value into the following line
root_password_sha2 = 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
※ 추가 환경설정 수정 ( graylog server)
<일반 VM>
[root@localhost ~]# vi /etc/graylog/server/server.conf
root/timezone = Asia/Seoul
elasticsearch_shards = 1 // 샤드 설정. default는 4이나,클러스터 노드 1개만 있으면 1로 수정.
http_bind_address = 10.70.101.84:9000 //graylog 인터페이스 IP:port 변경
<Cloud 환경>
※ curl로는 받아오나 막상 ip로 web에 접속하였을때 인터페이스를 못받아오는 상황
[root@jh-test ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.41.227.47 netmask 255.255.254.0 broadcast 10.41.227.255 //이게 public ip가 매핑된 10점대역 네이버클라우드 ip입니다
ether f2:20:cd:b4:20:e9 txqueuelen 1000 (Ethernet)
RX packets 109317 bytes 443622377 (423.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 44991 bytes 6142309 (5.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 21626 bytes 8848708 (8.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 21626 bytes 8848708 (8.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
proxy로 아파치 설치
[root@jh-test ~]# yum -y install httpd
아파치 config 수정 (virtual 란에 아래 빨간색 config 삽입)
[root@jh-test ~]# vi /etc/httpd/conf/httpd.conf
# All of these directives may appear inside <VirtualHost> containers,
# in which case these default settings will be overridden for the
# virtual host being defined.
#
<VirtualHost *:80>
ServerName graylog.com => servername은 도메인을 넣었는데 public ip를 넣어도 됩니다. 저는 /etc/hosts에 넣은 alias 넣은겁니다.
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
RequestHeader set X-Graylog-Server-URL "http://118.67.132.167/" => public ip 기입
ProxyPass http://127.0.0.1:9000/ =>127.0.0.1 로컬 기입
ProxyPassReverse http://127.0.0.1:9000/ =>127.0.0.1 로컬 기입
</Location>
</VirtualHost>
## 아파치 시작
[root@jh-test ~]# systemctl start httpd.service
-----여기부턴 동일------
■ graylog 재기동 & 실행 확인 ( graylog server)
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart graylog-server.service
## 실행 확인
[root@localhost ~]# tail -200f /var/log/graylog-server/server.log | grep Graylog
2022-01-12T17:46:34.806+09:00 INFO [ServerBootstrap] Graylog server 3.0.2+1686930 starting up
2022-01-12T17:47:35.615+09:00 INFO [ServerBootstrap] Graylog server up and running.
■ 9000 port 개방 ( graylog server)
[root@localhost ~]# firewall-cmd --permanent --add-port=9000/tcp
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens160
sources:
services: ssh dhcpv6-client
ports: 9000/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
graylog 인터페이스
■ http://<graylog-server ip입력>:9000 접속
※ cloud환경에서는 아파치로 붙기때문에 80 포트로 접속 (ex http://118.67.132.167)
여기까지 설치를 완료 하였습니다. 다음 글에선 syslog수집하는 설정을 하도록 하겠습니다.
참고
'Others > DB Monitoring' 카테고리의 다른 글
[ Zabbix - email 얼롯팅 설정 ] part 3 (0) | 2022.02.07 |
---|---|
[ Zabbix - zabbix 수집 구성 ] part 2 (0) | 2022.02.07 |
[ Zabbix - DB monitoring 서버 구축 ] part 1 (0) | 2022.02.06 |
[ Graylog - Email 얼롯팅 설정 ] part 3 (0) | 2022.02.06 |
[ Graylog - Syslog & DBlog 수집 구성 ] part 2 (0) | 2022.02.05 |