티스토리 뷰
이 글은 로그 분석을 위한 아키텍처 구현과 발생한 이슈에 대한 내용을 정리하였습니다
들어가기에 앞서 아키텍처 구성(AWS 서비스)은 데모 수준의 사양으로 구성되었습니다
운영을 위한 아키텍처가 필요한 경우 같은 구성에서 서버의 사양은 달리 설정해야 할 것 같습니다
진행 목록 |
4. Create EC2 for Logstash and connect both MSK and Opensearch |
5. Use Opensearch Dashboard |
4. Create EC2 for Logstash and connect both MSK and Opensearch
4_1. Logstash 사용을 위한 EC2 생성
작성일 기준으로 AWS 에서 Opensearch(Elasticsearch, Kibana)는 서비스로 지원하지만 Logstash 는 지원하지 않습니다
물론 다른 아키텍처로 예를 들면 MSK 에서 람다로 전달하여 함수 실행으로 Logstash 처럼 데이터를 핸들링 하고
Opensearch 로 전달하여 ELK 와 같은 작업을 수행할 수 있으나 여기서는 EC2 에서 Logstash 를 설치하여 테스트합니다
EC2 생성은 3_1 에서 생성한 EC2 인스턴스 생성 방법과 동일하게 적용합니다
4_2. Logstash 설치
생성한 EC2 인스턴스에 AWS 연결 또는 SSH 연결프로그램으로 연결하여 JDK 8, Logstash 를 설치 합니다
# JDK 설치
sudo dnf update
sudo dnf install java-1.8.0-amazon-corretto
# JDK 버전을 여러개 사용할 경우 전환하는 명령어
sudo alternatives --config java
# Logstash 설치
curl https://artifacts.opensearch.org/logstash/logstash-oss-with-opensearch-output-plugin-7.16.3-linux-x64.tar.gz --output logstash-oss-with-opensearch-output-plugin-7.16.3-linux-x64.tar.gz
tar -xvf logstash-oss-with-opensearch-output-plugin-7.16.3-linux-x64.tar.gz
4_3. Logstash 와 MSK(Consumer), Opensearch 연결
Logstash 폴더 안에 config 폴더로 이동하고 아래와 같이 파일을 생성합니다
input 은 AWS MSK 에 대한 설정 값들을 입력하면 되고
output 은 AWS Opensearch 에 대한 설정 값들을 입력하면 됩니다
즉 1_x. 에서 메모 했던 값들을 적용하면 됩니다
output - opensearch - index 값 으로 우리가 전달한 데이터가 인덱싱됩니다 원하는 값으로 설정합니다(index 메모)
sudo vi 파일이름마음대로.conf
# 안에 넣을 설정 값
input {
kafka {
bootstrap_servers => "AWS MSK 클러스터의 클라이언트 프라이빗 엔드포인트 N개 중 1개, 배열로 여러개도 적용 가능함"
security_protocol => "SASL_SSL"
sasl_mechanism => "SCRAM-SHA-512"
sasl_jaas_config => "org.apache.kafka.common.security.scram.ScramLoginModule required username='AWS SM에서 설정한 username' password='AWS SM에서 설정한 password';"
topics => ["토픽"]
}
}
output {
opensearch {
hosts => ["Opensearch 도메인 엔드포인트"]
index => "인덱스"
user => "Opensearch 마스터 이름"
password => "Opensearch 마스터 비밀번호"
ecs_compatibility => disabled
}
}
# 저장
4_4. Logstash 실행
(압축해제한폴더)/bin/logstash -f config/(바로 위에서 생성한 conf 파일)
실행시 출력되는 메시지를 확인하여 정상적으로 실행되었다면
다시 한번 포스트맨으로 요청을 전달합니다
5. Use Opensearch Dashboard
5_1. Logstash 에서 전달한 값 확인
1_x 에서 Opensearch 생성 후 메모했던 Opensearch 대시보드 URL 을 브라우저에 띄웁니다
마스터 이름, 패스워드를 입력하고 로그인합니다
Opensearch 대시보드 메인화면에서 상단에 Manage 클릭
다음 화면에서 좌측에 Index patterns 클릭
우측에 Create index pattern 클릭
아래 movies 는 제가 테스트로 진행했던 값인데 이 값 대신
앞 전에 Logstash 설정에서 output - opensearch - index 에 설정한 값으로 목록에 출력됩니다
위에 Index pattern name 에 똑같은 값을 입력하고 우측에 Next step 버튼을 클릭하고 인덱스 패턴 정의를 완료합니다
다시 Opensearch 대시보드 메인화면으로 돌아와서 좌측 상단에 선 3개로 된 사이드 메뉴 확장 버튼 클릭
Opensearch Dashboards 에 Discover 클릭합니다
저는 movies 로 설정했기 때문에 movies 인덱스로 넣은 데이터 목록이 출력됩니다
위 Search 에 값을 입력하여 원하는 데이터만 쿼리할 수 있습니다
저는 테스트를 진행하면서 1.x 에 있는 인증 관련 이슈 때문에 설치하고 지우고를 반복하면서
Logstash 에서 kafka 를 호출할 때 사용하는 버전이 AWS MSK 와 버전이 틀어졌는데도 사용하는데 문제가 없었습니다
(AWS MSK apache kafka 2.6.2 였으며 Logstash 에서 테스트할 때 설치한 Kafka 클라이언트 버전은 2.8.x)
버전은 어느정도 문제없이 호환 가능한 것 같고 전체 글에서 빨간색으로 처리한 인증과 같은 부분만 신경써서 적용하시면
저와 같은 결과를 확인할 수 있을 것 같습니다
'AWS > 로그 분석 아키텍처' 카테고리의 다른 글
AWS 기반 로그 분석 서비스 아키텍처 구현(2/3) (0) | 2023.10.20 |
---|---|
AWS 기반 로그 분석 서비스 아키텍처 구현(1/3) (0) | 2023.10.19 |
- Total
- Today
- Yesterday
- kibana
- CodeBuild
- properties 암호화
- 네임 서버 변경
- AWS CodePipeline
- jasypt
- Spring Data JPA
- letsencrypt
- aws codecommit
- Spring Boot 3.x
- Certbot
- aws codebuild
- ELK
- AWS MSK
- QueryDSL 사용 방법
- certonly
- codedeploy
- Spring boot
- elasticsearch
- 후이즈에서 AWS Route 53
- AWS 로드밸런서 SSL 등록
- logstash
- AWS Opensearch
- AWS 자동 배포
- CodePipeline
- querydsl
- 시스템 환경변수
- REST API
- aws codedeploy
- JPA 벌크성 수정 쿼리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |