7.4. Kibana를 사용한 로그 시각화
ElasticSearch 로그 저장소를 사용하는 경우 Kibana 콘솔을 사용하여 수집된 로그 데이터를 시각화할 수 있습니다.
Kibana를 사용하면 데이터로 다음을 수행할 수 있습니다.
- 검색 탭을 사용하여 데이터를 검색하고 찾습니다.
- 시각화 탭을 사용하여 데이터를 차트로 작성하고 매핑 합니다.
- 대시보드 탭을 사용하여 사용자 정의 대시보드를 생성하고 봅니다.
Kibana 인터페이스의 사용 및 구성은 이 문서의 범위를 벗어납니다. 인터페이스 사용에 대한 자세한 내용은 Kibana 설명서 를 참조하십시오.
감사 로그는 기본적으로 AWS Elasticsearch 인스턴스의 내부 Red Hat OpenShift Service에 저장되지 않습니다. Kibana에서 감사 로그를 보려면 Log Forwarding API 를 사용하여 감사 로그에 기본
출력을 사용하는 파이프라인을 구성해야 합니다.
7.4.1. Kibana 인덱스 패턴 정의
인덱스 패턴은 시각화하려는 Elasticsearch 인덱스를 정의합니다. Kibana에서 데이터를 탐색하고 시각화하려면 인덱스 패턴을 생성해야 합니다.
사전 요구 사항
Kibana에서 인프라 및 감사 인덱스를 보려면 사용자에게
cluster-admin
역할이나cluster-reader
역할 또는 두 역할이 모두 있어야 합니다. 기본kubeadmin
사용자에게는 이러한 인덱스를 나열할 수 있는 적절한 권한이 있습니다.default
,kube-
,openshift-
프로젝트에서 Pod와 로그를 볼 수 있다면 이러한 인덱스에 액세스할 수 있어야 합니다. 다음 명령을 사용하여 현재 사용자에게 적절한 권한이 있는지 확인할 수 있습니다.$ oc auth can-i get pods --subresource log -n <project>
출력 예
yes
참고감사 로그는 기본적으로 AWS Elasticsearch 인스턴스의 내부 Red Hat OpenShift Service에 저장되지 않습니다. Kibana에서 감사 로그를 보려면 Log Forwarding API를 사용하여 감사 로그에
default
출력을 사용하는 파이프라인을 구성해야 합니다.- 인덱스 패턴을 생성하려면 먼저 Elasticsearch 문서를 인덱싱해야 합니다. 이 작업은 자동으로 수행되지만 새 클러스터나 업데이트된 클러스터에서는 몇 분 정도 걸릴 수 있습니다.
절차
Kibana에서 인덱스 패턴을 정의하고 시각화를 생성하려면 다음을 수행합니다.
- AWS 콘솔의 Red Hat OpenShift Service에서 애플리케이션 시작 프로그램 을 클릭하고 로깅 을 선택합니다.
관리
인덱스 패턴 인덱스 패턴 생성을 클릭하여 Kibana 인덱스 패턴을 생성합니다. -
각 사용자는 프로젝트의 로그를 보려면 Kibana에 로그인할 때 수동으로 인덱스 패턴을 생성해야 합니다. 사용자는
app
이라는 새 인덱스 패턴을 생성하고@timestamp
시간 필드를 사용하여 컨테이너 로그를 확인해야 합니다. -
관리자는
@timestamp
시간 필드를 사용하여app
,infra
,audit
인덱스에 대해 처음 Kibana에 로그인할 때 인덱스 패턴을 생성해야 합니다.
-
각 사용자는 프로젝트의 로그를 보려면 Kibana에 로그인할 때 수동으로 인덱스 패턴을 생성해야 합니다. 사용자는
- 새로운 인덱스 패턴에서 Kibana 시각화를 생성합니다.
7.4.2. Kibana에서 클러스터 로그 보기
Kibana 웹 콘솔에서 클러스터 로그를 봅니다. 이 문서의 범위를 벗어난 Kibana에서 데이터를 보고 시각화하는 방법입니다. 자세한 내용은 Kibana 설명서를 참조하십시오.
사전 요구 사항
- Red Hat OpenShift Logging 및 Elasticsearch Operator가 설치되어 있어야 합니다.
- Kibana 인덱스 패턴이 있어야 합니다.
Kibana에서 인프라 및 감사 인덱스를 보려면 사용자에게
cluster-admin
역할이나cluster-reader
역할 또는 두 역할이 모두 있어야 합니다. 기본kubeadmin
사용자에게는 이러한 인덱스를 나열할 수 있는 적절한 권한이 있습니다.default
,kube-
,openshift-
프로젝트에서 Pod와 로그를 볼 수 있다면 이러한 인덱스에 액세스할 수 있어야 합니다. 다음 명령을 사용하여 현재 사용자에게 적절한 권한이 있는지 확인할 수 있습니다.$ oc auth can-i get pods --subresource log -n <project>
출력 예
yes
참고감사 로그는 기본적으로 AWS Elasticsearch 인스턴스의 내부 Red Hat OpenShift Service에 저장되지 않습니다. Kibana에서 감사 로그를 보려면 Log Forwarding API를 사용하여 감사 로그에
default
출력을 사용하는 파이프라인을 구성해야 합니다.
절차
Kibana에서 로그를 보려면 다음을 수행합니다.
- AWS 콘솔의 Red Hat OpenShift Service에서 애플리케이션 시작 프로그램 을 클릭하고 로깅 을 선택합니다.
사용하는 것과 동일한 자격 증명을 사용하여 AWS 콘솔의 Red Hat OpenShift Service에 로그인합니다.
Kibana 인터페이스가 시작됩니다.
- Kibana에서 검색을 클릭합니다.
왼쪽 상단 드롭다운 메뉴에서 생성한 인덱스 패턴(app, audit 또는 infra)을 선택합니다.
로그 데이터가 타임스탬프가 있는 문서로 표시됩니다.
- 타임스탬프가 있는 문서 중 하나를 확장합니다.
JSON 탭을 클릭하여 해당 문서에 대한 로그 항목을 표시합니다.
예 7.1. Kibana의 샘플 인프라 로그 항목
{ "_index": "infra-000001", "_type": "_doc", "_id": "YmJmYTBlNDkZTRmLTliMGQtMjE3NmFiOGUyOWM3", "_version": 1, "_score": null, "_source": { "docker": { "container_id": "f85fa55bbef7bb783f041066be1e7c267a6b88c4603dfce213e32c1" }, "kubernetes": { "container_name": "registry-server", "namespace_name": "openshift-marketplace", "pod_name": "redhat-marketplace-n64gc", "container_image": "registry.redhat.io/redhat/redhat-marketplace-index:v4.7", "container_image_id": "registry.redhat.io/redhat/redhat-marketplace-index@sha256:65fc0c45aabb95809e376feb065771ecda9e5e59cc8b3024c4545c168f", "pod_id": "8f594ea2-c866-4b5c-a1c8-a50756704b2a", "host": "ip-10-0-182-28.us-east-2.compute.internal", "master_url": "https://kubernetes.default.svc", "namespace_id": "3abab127-7669-4eb3-b9ef-44c04ad68d38", "namespace_labels": { "openshift_io/cluster-monitoring": "true" }, "flat_labels": [ "catalogsource_operators_coreos_com/update=redhat-marketplace" ] }, "message": "time=\"2020-09-23T20:47:03Z\" level=info msg=\"serving registry\" database=/database/index.db port=50051", "level": "unknown", "hostname": "ip-10-0-182-28.internal", "pipeline_metadata": { "collector": { "ipaddr4": "10.0.182.28", "inputname": "fluent-plugin-systemd", "name": "fluentd", "received_at": "2020-09-23T20:47:15.007583+00:00", "version": "1.7.4 1.6.0" } }, "@timestamp": "2020-09-23T20:47:03.422465+00:00", "viaq_msg_id": "YmJmYTBlNDktMDMGQtMjE3NmFiOGUyOWM3", "openshift": { "labels": { "logging": "infra" } } }, "fields": { "@timestamp": [ "2020-09-23T20:47:03.422Z" ], "pipeline_metadata.collector.received_at": [ "2020-09-23T20:47:15.007Z" ] }, "sort": [ 1600894023422 ] }
7.4.3. Kibana 구성
ClusterLogging
사용자 정의 리소스(CR)를 수정하여 Kibana 콘솔을 사용하여 구성할 수 있습니다.
7.4.3.1. CPU 및 메모리 제한 구성
로깅 구성 요소를 사용하면 CPU 및 메모리 제한을 모두 조정할 수 있습니다.
절차
openshift-logging
프로젝트에서ClusterLogging
사용자 정의 리소스(CR)를 편집합니다.$ oc -n openshift-logging edit ClusterLogging instance
apiVersion: "logging.openshift.io/v1" kind: "ClusterLogging" metadata: name: "instance" namespace: openshift-logging ... spec: managementState: "Managed" logStore: type: "elasticsearch" elasticsearch: nodeCount: 3 resources: 1 limits: memory: 16Gi requests: cpu: 200m memory: 16Gi storage: storageClassName: "gp2" size: "200G" redundancyPolicy: "SingleRedundancy" visualization: type: "kibana" kibana: resources: 2 limits: memory: 1Gi requests: cpu: 500m memory: 1Gi proxy: resources: 3 limits: memory: 100Mi requests: cpu: 100m memory: 100Mi replicas: 2 collection: logs: type: "fluentd" fluentd: resources: 4 limits: memory: 736Mi requests: cpu: 200m memory: 736Mi
7.4.3.2. 로그 시각화 프로그램 노드의 확장성 중복
중복성에 대해 로그 시각화 프로그램을 호스팅하는 Pod를 확장할 수 있습니다.
절차
openshift-logging
프로젝트에서ClusterLogging
사용자 정의 리소스(CR)를 편집합니다.$ oc edit ClusterLogging instance
$ oc edit ClusterLogging instance apiVersion: "logging.openshift.io/v1" kind: "ClusterLogging" metadata: name: "instance" .... spec: visualization: type: "kibana" kibana: replicas: 1 1
- 1
- Kibana 노드의 수를 지정합니다.