해당 문서의 쿠버네티스 버전: v1.19
Kubernetes v1.19 문서는 더 이상 적극적으로 관리되지 않음. 현재 보고있는 문서는 정적 스냅샷임. 최신 문서를 위해서는, 다음을 참고. 최신 버전.
엘라스틱서치(Elasticsearch) 및 키바나(Kibana)를 사용한 로깅
Google 컴퓨트 엔진(Compute Engine, GCE) 플랫폼에서, 기본 로깅 지원은 스택드라이버(Stackdriver) 로깅을 대상으로 한다. 이는 스택드라이버 로깅으로 로깅하기에 자세히 설명되어 있다.
이 문서에서는 GCE에서 운영할 때 스택드라이버 로깅의 대안으로, 엘라스틱서치에 로그를 수집하고 키바나를 사용하여 볼 수 있도록 클러스터를 설정하는 방법에 대해 설명한다.
참고: Google 쿠버네티스 엔진(Kubernetes Engine)에서 호스팅되는 쿠버네티스 클러스터에는 엘라스틱서치 및 키바나를 자동으로 배포할 수 없다. 수동으로 배포해야 한다.
클러스터 로깅에 엘라스틱서치, 키바나를 사용하려면 kube-up.sh를 사용하여 클러스터를 생성할 때 아래와 같이 다음의 환경 변수를 설정해야 한다.
KUBE_LOGGING_DESTINATION=elasticsearch
또한 KUBE_ENABLE_NODE_LOGGING=true
(GCE 플랫폼의 기본값)인지 확인해야 한다.
이제, 클러스터를 만들 때, 각 노드에서 실행되는 Fluentd 로그 수집 데몬이 엘라스틱서치를 대상으로 한다는 메시지가 나타난다.
cluster/kube-up.sh
...
Project: kubernetes-satnam
Zone: us-central1-b
... calling kube-up
Project: kubernetes-satnam
Zone: us-central1-b
+++ Staging server tars to Google Storage: gs://kubernetes-staging-e6d0e81793/devel
+++ kubernetes-server-linux-amd64.tar.gz uploaded (sha1 = 6987c098277871b6d69623141276924ab687f89d)
+++ kubernetes-salt.tar.gz uploaded (sha1 = bdfc83ed6b60fa9e3bff9004b542cfc643464cd0)
Looking for already existing resources
Starting master and configuring firewalls
Created [https://www.googleapis.com/compute/v1/projects/kubernetes-satnam/zones/us-central1-b/disks/kubernetes-master-pd].
NAME ZONE SIZE_GB TYPE STATUS
kubernetes-master-pd us-central1-b 20 pd-ssd READY
Created [https://www.googleapis.com/compute/v1/projects/kubernetes-satnam/regions/us-central1/addresses/kubernetes-master-ip].
+++ Logging using Fluentd to elasticsearch
노드별 Fluentd 파드, 엘라스틱서치 파드 및 키바나 파드는 클러스터가 활성화된 직후 kube-system 네임스페이스에서 모두 실행되어야 한다.
kubectl get pods --namespace=kube-system
NAME READY STATUS RESTARTS AGE
elasticsearch-logging-v1-78nog 1/1 Running 0 2h
elasticsearch-logging-v1-nj2nb 1/1 Running 0 2h
fluentd-elasticsearch-kubernetes-node-5oq0 1/1 Running 0 2h
fluentd-elasticsearch-kubernetes-node-6896 1/1 Running 0 2h
fluentd-elasticsearch-kubernetes-node-l1ds 1/1 Running 0 2h
fluentd-elasticsearch-kubernetes-node-lz9j 1/1 Running 0 2h
kibana-logging-v1-bhpo8 1/1 Running 0 2h
kube-dns-v3-7r1l9 3/3 Running 0 2h
monitoring-heapster-v4-yl332 1/1 Running 1 2h
monitoring-influx-grafana-v1-o79xf 2/2 Running 0 2h
fluentd-elasticsearch
파드는 각 노드에서 로그를 수집하여
elasticsearch-logging
파드로 전송한다. 이 로그는 elasticsearch-logging
이라는
서비스의 일부이다. 이
엘라스틱서치 파드는 로그를 저장하고 REST API를 통해 노출한다.
kibana-logging
파드는 엘라스틱서치에 저장된 로그를 읽기 위한 웹 UI를
제공하며, kibana-logging
이라는 서비스의 일부이다.
엘라스틱서치 및 키바나 서비스는 모두 kube-system
네임스페이스에
있으며 공개적으로 접근 가능한 IP 주소를 통해 직접 노출되지 않는다. 이를 위해,
클러스터에서 실행 중인 서비스 접근에
대한 지침을 참고한다.
브라우저에서 elasticsearch-logging
서비스에 접근하려고 하면,
다음과 같은 상태 페이지가 표시된다.
원할 경우, 이제 엘라스틱서치 쿼리를 브라우저에 직접 입력할 수 있다. 수행 방법에 대한 자세한 내용은 엘라스틱서치의 문서를 참조한다.
또는, 키바나를 사용하여 클러스터의 로그를 볼 수도 있다(다시
클러스터에서 실행되는 서비스에 접근하기 위한 지침을 참고).
키바나 URL을 처음 방문하면 수집된 로그 보기를
구성하도록 요청하는 페이지가 표시된다. 시계열 값에
대한 옵션을 선택하고 @timestamp
를 선택한다. 다음 페이지에서
Discover
탭을 선택하면 수집된 로그를 볼 수 있다.
로그를 정기적으로 새로 고치려면 새로 고침 간격을 5초로
설정할 수 있다.
키바나 뷰어에서 수집된 로그의 일반적인 보기는 다음과 같다.
다음 내용
키바나는 로그를 탐색하기 위한 모든 종류의 강력한 옵션을 제공한다! 이를 파헤치는 방법에 대한 아이디어는 키바나의 문서를 확인한다.