8장. 클러스터 로깅 배포

OpenShift Container Platform 클러스터를 4.4에서 4.5로 업데이트한 후 OpenShift Elasticsearch Operator 및 Cluster Logging Operator를 4.4에서 4.5로 업데이트할 수 있습니다.

클러스터 로깅 4.5에는 새로운 Elasticsearch 버전인 Elasticsearch 6.8.1과 강화된 보안 플러그인인 OpenDistro for Elasticsearch가 도입되었습니다. 새로운 Elasticsearch 버전은 Elasticsearch 데이터가 인프라, 애플리케이션 및 감사 유형별로만 인덱싱되는 새로운 Elasticsearch 데이터 모델을 도입합니다. 이전에는 데이터가 유형(인프라 및 애플리케이션) 및 프로젝트별로 인덱싱되었습니다.

중요

새로운 데이터 모델로 인해 업데이트는 기존 사용자 정의 Kibana 인덱스 패턴 및 시각화를 새 버전으로 마이그레이션하지 않습니다. 업데이트 후 새 인덱스와 일치하도록 Kibana 인덱스 패턴 및 시각화를 다시 생성해야 합니다.

이러한 변경의 특성으로 인해 클러스터 로깅을 4.5로 업데이트할 필요가 없습니다. 그러나 OpenShift Container Platform 4.6으로 업데이트할 때 클러스터 로깅을 4.6으로 업데이트해야 합니다.

8.1. 클러스터 로깅 배포

OpenShift Container Platform 클러스터를 업데이트한 후 OpenShift Elasticsearch Operator 및 Cluster Logging Operator에 대한 서브스크립션을 변경하여 클러스터 로깅을 4.5에서 4.6으로 업데이트할 수 있습니다.

업데이트하는 경우:

  • Cluster Logging Operator를 업데이트하기 전에 OpenShift Elasticsearch Operator를 업데이트해야 합니다.
  • OpenShift Elasticsearch Operator와 Cluster Logging Operator를 모두 업데이트해야 합니다.

    OpenShift Elasticsearch Operator를 업데이트하고 Cluster Logging Operator는 업데이트하지 않으면 Kibana를 사용할 수 없습니다.

    OpenShift Elasticsearch Operator보다 Cluster Logging Operator를 먼저 업데이트하면 Kibana가 업데이트되지 않고 Kibana 사용자 정의 리소스(CR)가 생성되지 않습니다. 이 문제를 해결하려면 Cluster Logging Operator Pod를 삭제하십시오. Cluster Logging Operator Pod가 재배포되면 Kibana CR이 생성됩니다.

중요

클러스터 로깅 버전이 4.5 이전인 경우 4.6으로 업데이트하기 전에 클러스터 로깅을 4.5로 업그레이드해야 합니다.

사전 요구 사항

  • OpenShift Container Platform 클러스터를 4.5에서 4.6으로 업데이트합니다.
  • 클러스터 로깅 상태가 정상인지 확인합니다.

    • 모든 Pod가 ready 상태입니다.
    • Elasticsearch 클러스터는 정상입니다.
  • Elasticsearch 및 Kibana 데이터를 백업합니다.

프로세스

  1. OpenShift Elasticsearch Operator를 업데이트합니다.

    1. 웹 콘솔에서 Operator설치된 Operator를 클릭합니다.
    2. openshift-operators-redhat 프로젝트를 선택합니다.
    3. OpenShift Elasticsearch Operator를 클릭합니다.
    4. 서브스크립션채널을 클릭합니다.
    5. 서브스크립션 업데이트 채널 변경 창에서 4.6을 선택하고 저장을 클릭합니다.
    6. 몇 초 정도 기다린 후 Operator설치된 Operator를 클릭합니다.

      OpenShift Elasticsearch Operator가 4.6으로 표시됩니다. 예를 들면 다음과 같습니다.

      OpenShift Elasticsearch Operator
      4.6.0-202007012112.p0 provided
      by Red Hat, Inc

      상태 필드가 성공으로 표시될 때까지 기다립니다.

  2. Cluster Logging Operator 업데이트:

    1. 웹 콘솔에서 Operator설치된 Operator를 클릭합니다.
    2. openshift-logging 프로젝트를 선택합니다.
    3. Cluster Logging Operator를 클릭합니다.
    4. 서브스크립션채널을 클릭합니다.
    5. 서브스크립션 업데이트 채널 변경 창에서 4.6을 선택하고 저장을 클릭합니다.
    6. 몇 초 정도 기다린 후 Operator설치된 Operator를 클릭합니다.

      Cluster Logging Operator가 4.6으로 표시됩니다. 예를 들면 다음과 같습니다.

      Cluster Logging
      4.6.0-202007012112.p0 provided
      by Red Hat, Inc

      상태 필드가 성공으로 표시될 때까지 기다립니다.

  3. 로깅 구성 요소를 확인합니다.

    1. 모든 Elasticsearch Pod가 ready 상태인지 확인합니다.

      $ oc get pod -n openshift-logging --selector component=elasticsearch

      출력 예

      NAME                                            READY   STATUS    RESTARTS   AGE
      elasticsearch-cdm-1pbrl44l-1-55b7546f4c-mshhk   2/2     Running   0          31m
      elasticsearch-cdm-1pbrl44l-2-5c6d87589f-gx5hk   2/2     Running   0          30m
      elasticsearch-cdm-1pbrl44l-3-88df5d47-m45jc     2/2     Running   0          29m

    2. Elasticsearch 클러스터가 정상인지 확인합니다.

      $ oc exec -n openshift-logging -c elasticsearch elasticsearch-cdm-1pbrl44l-1-55b7546f4c-mshhk -- es_cluster_health
      {
        "cluster_name" : "elasticsearch",
        "status" : "green",
      }
      ...
    3. Elasticsearch Cron 작업이 생성되었는지 확인합니다.

      $ oc project openshift-logging
      $ oc get cronjob
      NAME                     SCHEDULE       SUSPEND   ACTIVE   LAST SCHEDULE   AGE
      curator                  30 3,9,15,21 * * * False 0        <none>          20s
      elasticsearch-im-app     */15 * * * *   False     0        <none>          56s
      elasticsearch-im-audit   */15 * * * *   False     0        <none>          56s
      elasticsearch-im-infra   */15 * * * *   False     0        <none>          56s
    4. 로그 저장소가 4.6으로 업데이트되고 인덱스가 녹색인지 확인합니다.

      $ oc exec -c elasticsearch <any_es_pod_in_the_cluster> -- indices

      출력에 app-00000x, infra-00000x, audit-00000x, .security 인덱스가 포함되어 있는지 확인합니다.

      예 8.1. 인덱스가 녹색 상태인 샘플 출력

      Tue Jun 30 14:30:54 UTC 2020
      health status index                                                                 uuid                   pri rep docs.count docs.deleted store.size pri.store.size
      green  open   infra-000008                                                          bnBvUFEXTWi92z3zWAzieQ   3 1       222195            0        289            144
      green  open   infra-000004                                                          rtDSzoqsSl6saisSK7Au1Q   3 1       226717            0        297            148
      green  open   infra-000012                                                          RSf_kUwDSR2xEuKRZMPqZQ   3 1       227623            0        295            147
      green  open   .kibana_7                                                             1SJdCqlZTPWlIAaOUd78yg   1 1            4            0          0              0
      green  open   infra-000010                                                          iXwL3bnqTuGEABbUDa6OVw   3 1       248368            0        317            158
      green  open   infra-000009                                                          YN9EsULWSNaxWeeNvOs0RA   3 1       258799            0        337            168
      green  open   infra-000014                                                          YP0U6R7FQ_GVQVQZ6Yh9Ig   3 1       223788            0        292            146
      green  open   infra-000015                                                          JRBbAbEmSMqK5X40df9HbQ   3 1       224371            0        291            145
      green  open   .orphaned.2020.06.30                                                  n_xQC2dWQzConkvQqei3YA   3 1            9            0          0              0
      green  open   infra-000007                                                          llkkAVSzSOmosWTSAJM_hg   3 1       228584            0        296            148
      green  open   infra-000005                                                          d9BoGQdiQASsS3BBFm2iRA   3 1       227987            0        297            148
      green  open   infra-000003                                                          1-goREK1QUKlQPAIVkWVaQ   3 1       226719            0        295            147
      green  open   .security                                                             zeT65uOuRTKZMjg_bbUc1g   1 1            5            0          0              0
      green  open   .kibana-377444158_kubeadmin                                           wvMhDwJkR-mRZQO84K0gUQ   3 1            1            0          0              0
      green  open   infra-000006                                                          5H-KBSXGQKiO7hdapDE23g   3 1       226676            0        295            147
      green  open   infra-000001                                                          eH53BQ-bSxSWR5xYZB6lVg   3 1       341800            0        443            220
      green  open   .kibana-6                                                             RVp7TemSSemGJcsSUmuf3A   1 1            4            0          0              0
      green  open   infra-000011                                                          J7XWBauWSTe0jnzX02fU6A   3 1       226100            0        293            146
      green  open   app-000001                                                            axSAFfONQDmKwatkjPXdtw   3 1       103186            0        126             57
      green  open   infra-000016                                                          m9c1iRLtStWSF1GopaRyCg   3 1        13685            0         19              9
      green  open   infra-000002                                                          Hz6WvINtTvKcQzw-ewmbYg   3 1       228994            0        296            148
      green  open   infra-000013                                                          KR9mMFUpQl-jraYtanyIGw   3 1       228166            0        298            148
      green  open   audit-000001                                                          eERqLdLmQOiQDFES1LBATQ   3 1            0            0          0              0
    5. 로그 수집기가 4.6으로 업데이트되었는지 확인합니다.

      $ oc get ds fluentd -o json | grep fluentd-init

      출력에 fluentd-init 컨테이너가 포함되어 있는지 확인합니다.

      "containerName": "fluentd-init"
    6. 로그 시각화 프로그램이 Kibana CRD를 사용하여 4.6으로 업데이트되었는지 확인합니다.

      $ oc get kibana kibana -o json

      출력에 ready 상태가 있는 Kibana pod가 포함되어 있는지 확인합니다.

      예 8.2. Kibana Pod가 준비된 샘플 출력

      [
      {
      "clusterCondition": {
      "kibana-5fdd766ffd-nb2jj": [
      {
      "lastTransitionTime": "2020-06-30T14:11:07Z",
      "reason": "ContainerCreating",
      "status": "True",
      "type": ""
      },
      {
      "lastTransitionTime": "2020-06-30T14:11:07Z",
      "reason": "ContainerCreating",
      "status": "True",
      "type": ""
      }
      ]
      },
      "deployment": "kibana",
      "pods": {
      "failed": [],
      "notReady": []
      "ready": []
      },
      "replicaSets": [
      "kibana-5fdd766ffd"
      ],
      "replicas": 1
      }
      ]
    7. Curator가 4.6으로 업데이트되었는지 확인합니다.

      $ oc get cronjob -o name
      cronjob.batch/curator
      cronjob.batch/elasticsearch-im-app
      cronjob.batch/elasticsearch-im-audit
      cronjob.batch/elasticsearch-im-infra

      출력에 elasticsearch-im-* 인덱스가 포함되어 있는지 확인합니다.

업데이트 후 작업

Log Forwarding API를 사용하여 로그를 전달하는 경우 OpenShift Elasticsearch Operator 및 Cluster Logging Operator가 4.6으로 완전히 업데이트되면 LogForwarding 사용자 정의 리소스(CR)를 ClusterLogForwarder CR로 교체해야 합니다.