데브허브 | DEVHUB | Set Up ELK Stack Logging for Rust Applications | Elasticsearch | Logstash | Kibana | Step-by-StepSet Up ELK Stack Logging for Rust Applications | Elasticsearch | Logstash | Kibana | Step-by-Step
- ELK 스택은 Elasticsearch (데이터 저장 및 인덱싱), Logstash (데이터 수집, 처리, 변환), Kibana (데이터 시각화)로 구성된 중앙 집중식 로깅 및 모니터링 솔루션입니다. 📊
- Rust 애플리케이션의 로그를 ELK 스택으로 전송하기 위해
docker-compose를 사용하여 Elasticsearch, Logstash, Kibana 컨테이너를 쉽게 배포할 수 있습니다. 🐳
- Elasticsearch는 단일 노드 구성, JVM 메모리 할당(1GB), 개발 환경을 위한 보안 비활성화 설정으로 구성됩니다. 💾
- Logstash는 Beats로부터 데이터를 수신(5044 포트), HTTP/TCP 입력(5000 포트), 모니터링(9600 포트)을 위해 여러 포트를 사용하며, Elasticsearch에 의존하여 데이터를 저장합니다. 🔌
- Logstash 파이프라인은 파일 입력(Rust 앱 로그 파일), JSON 코덱, Elasticsearch 출력(특정 인덱스
customer_api로 전송)으로 설정됩니다. ⚙️
- Rust 애플리케이션은
fmt_tracing_subscriber 라이브러리를 사용하여 로그를 JSON 형식으로 지정된 파일(my_service.log)에 기록하도록 구성됩니다. 📝
- 로그 파일에 기록된 데이터는 Logstash에 의해 읽히고 처리되어 Elasticsearch로 푸시되며, Kibana의 Discover 섹션에서
customer_api 인덱스를 통해 시각화 및 분석할 수 있습니다. 🔍
- Kibana는
localhost:5601에서 접근 가능하며, Logstash가 Elasticsearch로 성공적으로 전송한 로그 데이터를 기반으로 데이터 뷰를 생성하여 애플리케이션의 동작을 모니터링할 수 있습니다. 📈
- 개발 환경에서는 Logstash 컨테이너에서
stdout 코덱을 rubydebug로 설정하여 로그 처리 과정을 디버깅할 수 있습니다. 🐞
- 이 설정은 Rust 애플리케이션의 헬스 체크 및 고객 API 호출과 같은 다양한 이벤트에서 발생하는 로그를 효과적으로 수집하고 분석하는 데 활용됩니다. 🚀