ELK 로 NGINX Plus 통계 모니터링
해당 포스트에서는 ELK 의 Elasticsearch 를 사용하여 NGINX Plus 실시간 활동 모니터링 API의 JSON 형식 메트릭을 저장 후 색인화하고, Logstash를 사용하여 처리한 다음, Kibana (ELK 기술 스택)에서 검색 및 시각화하는 방법에 대해 설명합니다.
ELK 와 NGINX Plus를 함께 사용해보기 쉽도록 해당 포스트에서 함께 사용할 수 있는 예제 Demo인 ElasticStack_NGINX_Plus-json이 작성되었으며, 단계별 지침을 제공합니다.
목차
1. 개요
2. ELK 기술 스택 정보
3. ELK Elasticsearch 에 NGINX Plus 로그 수집
4. Kibana를 사용하여 데이터 모니터링
5. 요약
1. 개요
오늘 날, 세계에서는 확장 가능하고 신뢰할 수 있는 웹 인프라를 갖는 것이 사이트의 성공에 중요합니다. NGINX Plus 성능 및 로드 밸런싱된 애플리케이션의 상태를 모니터링하는 것은 중요하며, 이러한 메트릭에 대한 조치를 취하면 신뢰할 수 있고 만족스러운 사용자 경험을 제공할 수 있습니다.
가상 서버가 받는 트래픽 양을 알고 에러율을 주시하는 것은 애플리케이션을 효과적으로 처리할 수 있도록 도와줍니다.
NGINX Plus는 고급 HTTP 및 TCP 로드 밸런싱, 세션 지속성, Health Checks, 실시간 활동 모니터링 및 관리와 같은 기업용 기능을 제공하여 인프라에 제약을 받지 않고 혁신할 수 있는 자유를 제공합니다.
시간 활동 모니터링 기능(NGINX Plus 상태 모듈에서 구현)을 통해 핵심 load 및 성능 메트릭을 실시간으로 쉽게 얻을 수 있습니다. NGINX Plus를 통해 흐르는 트래픽에 대한 다양하고 유용한 데이터는 내장된 대시보드와 HTTP 기반 API를 통해 쉽게 분석 가능한 JSON 형식으로 제공됩니다.
실시간 활동 모니터링 API에서 제공하는 데이터를 활용하는 효과적인 방법은 여러 가지가 있습니다.
예를 들어, 특정 가상 서버의 업스트림 트래픽을 모니터링하고 NGINX Plus 동적 재구성 API를 사용하여 Docker 컨테이너를 자동으로 확장할 수 있습니다.
또는 메트릭을 직접 표준 출력으로 덤프하고 로그 파일에 기록하여 ELK Elasticsearch 또는 Splunk 클러스터로 메트릭을 전송하여 추가적인 모니터링 및 분석을 수행할 수 있습니다.
또는 API 데이터를 statsd 또는 collectd와 같은 데이터 집계기에 수집하고 전송하여 그래프 작성이나 로깅을 위해 사용할 수도 있습니다.
2. ELK 기술 스택 정보
Elastic 은 실시간으로 데이터를 검색, 분석 및 시각화하여 실용적인 통찰력을 얻기 위한 오픈 소스 프로젝트와 상용 제품을 제공하는 성장하는 플랫폼입니다. ELK 스택에는 세 가지 오픈 소스 프로젝트가 있습니다.
ELK Elasticsearch – 실시간 분산 검색 및 분석 엔진으로 로그를 색인화하고 저장합니다. 전체 텍스트 검색, 구조화된 검색 및 분석의 어떤 조합도 수행할 수 있습니다. Elasticsearch 노드를 로드 밸런싱하기 위해 NGINX Plus를 사용하는 방법에 대한 정보는 블로그의 “Elasticsearch + NGINX 배포 가이드“를 참조하십시오.
ELK Logstash – 수신 로그를 처리하는 서버 구성 요소로, 데이터를 어디에서든 파이프라인으로 이동할 수 있게 해줍니다. 이는 비즈니스 인텔리전스 및 데이터 웨어하우징 분야에서 ETL(추출, 변환, 로드) 파이프라인이라고 불리며, Elasticsearch에 이벤트를 흡수, 변환 및 저장할 수 있게 합니다.
ELK Kibana – 로그를 검색하고 시각화하기 위한 웹 인터페이스입니다. Elasticsearch의 검색 기능을 활용하여 데이터를 몇 초 안에 분석하고 시각화합니다.
3. ELK Elasticsearch 에 NGINX Plus 로그 수집
데이터를 수집하도록 Logstash를 설정하려면, 데이터의 출처, 변환 방법, 전송 위치를 지정하는 구성 파일을 생성해야 합니다.
다음은 실시간 활동 모니터링 API에서 Elasticsearch로 로그를 수집하기 위한 샘플 Logstash 구성 파일입니다.
- 첫 번째 섹션에서는 Logstash의 file 입력 플러그인을 사용해 로그를 읽습니다.
- 두 번째 섹션에서는 date 필터 플러그인의 match 구성 옵션을 사용해 NGINX Plus 로그 항목의 타임스탬프 필드를 UNIX_MS 형식으로 변환합니다.
- 세 번째 섹션에서는 ELK elasticsearch 출력 플러그인을 사용해 Elasticsearch에 로그를 저장합니다.
input {
file {
path => “/nginxlogfile.log”
}
}
filter {
date {
match => ["timestamp", "UNIX_MS"]
}
}
output {
stdout { codec => dots }
elasticsearch {
host => "localhost"
protocol => "http"
cluster => "elasticsearch"
index => "nginxplus_json_elk_example"
document_type => "logs"
template => "./nginxplus_json_template.json"
template_name => "nginxplus_json_elk_example"
template_overwrite => true
}
}
Logstash 구성 파일 생성에 대한 자세한 내용은 Logstash 구성을 참조하세요. NGINX에서 주기적으로 상태를 읽어오는 경량 에이전트를 찾고 계신다면, nginxbeat를 확인해 보세요.
4. Kibana를 사용하여 데이터 모니터링
데이터가 Elasticsearch로 색인되면, 웹 브라우저에서 http://kibana-host:5601 에 액세스하여 Kibana에서 데이터를 표시할 수 있습니다.
대화형 방식으로 새로운 시각화 및 대시보드를 생성하여 상태 모듈에 의해 노출된 메트릭을 시각화할 수 있습니다. 예를 들어, 다음을 볼 수 있습니다:
- 수락된 연결, 삭제된 연결, active 및 idle 상태
- 각 서버 영역에서 주고받은 Bytes 수
- 실패한 Health checks 횟수
- status code 및 업스트림 서버 별로 분류된 Response 수
ELK 에서 인덱싱된 모든 NGINX Plus 메트릭 이름을 보여주는 예제는 nginxplus_elk_fields에서 확인할 수 있습니다.

Kibana를 사용해 생성된 위의 샘플 대시보드는 분당 평균 요청 수, 분당 평균 Active 연결 수, 분당 SSL handshake 수 등과 같은 몇 가지 유용한 시각화를 보여줍니다.
5. 요약
ELK 스택을 사용하여 NGINX Plus 실시간 활동 모니터링 API의 로그를 수집, 시각화, 기록 분석을 수행하면 데이터에 대한 추가적인 유연성과 더 많은 통찰력을 얻을 수 있습니다. ELK 를 사용하여 NGINX Plus에서 가져온 통계 데이터는 더 나은 로깅을 제공하고, 실시간 활동 모니터링에 대한 자동화를 생성하고, NGINX Plus의 성능 기록을 기반으로 그래프나 차트를 생성하는 데 도움이 될 수 있습니다.
NGINX Plus를 사용해 보려면 오늘부터 30일 무료 평가판을 시작하거나 NGINX STORE에게 문의하세요.
아래 뉴스레터를 구독하고 NGINX와 NGINX STORE의 최신 정보들을 빠르게 전달 받아보세요.
댓글을 달려면 로그인해야 합니다.