web log 가 생성되는 인스턴스와 mongoDB 가 설치된 인스턴스와 연동하기 위해서는 Fluentd 가 필요하다. (서로 다른 인스턴스!)
일단 양쪽 인스턴스에 Fluentd 를 설치해준다.
curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-trusty-td-agent2.sh | sh
터미널에 위의 명령어를 입력해주면 자동으로 설치되면서 가장 밑에 설치가 완료되었다고 뜬다.
설치를 완료하면 conf 파일을 설정해준다.
sudo vim /etc/td-agent/td-agent.conf
송신측 td-agent.conf 설정
# 송신측 td-agent.conf 설정
<source>
@type tail
format none
path /home/ubuntu/webapp/spring.log # ubuntu 환경에서 jar 파일 실행 후 생성되는 로그
tag access.web1
</source>
<match *.web1>
@type forward
flush_interval 3s
<server>
# 로그 생성 서버의 host
host 15.165.61.55 # 로그 수집하는 인스턴스의 퍼블릭 IP 주소
port 24224
</server>
</match>
수신측 td-agent.conf 설정
# 수신측 td-agent.conf 설정
<source>
@type forward
port 24224
</source>
<match access.*>
@type mongo
# mongodb db + collection
database log
collection access
# set tag_name
include_tag_key true
tag_key tag
# mongodb host + port
host localhost
port 27017
# interval
flush_interval 10s
buffer_chunk_limit 10m
</match>
<match error.*>
@type mongo
# mongodb db + collection
database log
collection access
# set tag_name
include_tag_key true
tag_key tag
# mongodb host + port
host localhost
port 27017
# interval
flush_interval 10s
buffer_chunk_limit 10m
</match>
<match **>
@type file
path /var/log/td-agent/no_match.log
</match>
MongoDB 설치, 설정
mongoDB 설치
apt install mongodb-clients
mongoDB 설치 후, web log 를 저장할 database와 collection 생성
mongo // shell 진입
use log // log DB 없을 시 생성
db.createCollection("access") // access 컬렉션 생성
db.createCollection("error") // error 컬렉션 생성
이후 각 인스턴스의 td-agent를 재시작 해준다.
/etc/init.d/td-agent restart
이후 MongoDB의 인스턴스를 들어가 log 데이터베이스의 access 컬렉션을 확인해본다.
use log // log DB 접근
db.access.find() // log DB 의 collection 인 access 데이터 확인
캡쳐한 사진과 같이 access log 가 쌓인 상태이다.
아!!! 그리고 각 인스턴스끼리 통신하려면 인스턴스마다 각각의 보안그룹 인바운드에 추가를 해줘야해요.
MongoDB 인스턴스의 보안그룹 인바운드에 Web 인스턴스의 보안그룹 ID를 추가해주고,
Web 인스턴스의 보안그룹 인바운드에 MongoDB 인스턴스의 보안그룹 ID를 추가해주시면 됩니다.
그렇게 추가해주고 인스턴스를 재시작하면, 서로 다른 인스턴스끼리 통신이 가능해져요!
'MSA 모니터링 서비스 > DB' 카테고리의 다른 글
[한이음] Docker에 MongoDB 설치 (0) | 2021.11.15 |
---|