Edit This Page

엘라스틱서치(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초로 설정할 수 있다.

키바나 뷰어에서 수집된 로그의 일반적인 보기는 다음과 같다.

키바나 로그

다음 내용

키바나는 로그를 탐색하기 위한 모든 종류의 강력한 옵션을 제공한다! 이를 파헤치는 방법에 대한 아이디어는 키바나의 문서를 확인한다.