36.5.4. Kibana


OpenShift Container Platform 웹 콘솔에서 Kibana 콘솔에 액세스하려면 master webconsole-config configmap 파일에 loggingPublicURL 매개변수를 추가합니다(kiban a-hostname 매개변수). 값은 HTTPS URL이어야 합니다.

...
clusterInfo:
  ...
  loggingPublicURL: "https://kibana.example.com"
...

loggingPublicURL 매개변수를 설정하면 찾아보기 Pod <pod_name> 로그 탭 아래 OpenShift Container Platform 웹 콘솔에서 View Archive (아카이브 보기) 버튼이 생성됩니다. 이 링크는 Kibana 콘솔에 연결됩니다.

참고

유효한 로그인 쿠키가 만료되면 Kibana 콘솔에 로그인해야 합니다(예: 로그인해야 합니다.

  • 첫 번째 사용
  • 로그아웃 후

중복성을 위해 Kibana 배포를 일반적인 대로 확장할 수 있습니다.

$ oc scale dc/logging-kibana --replicas=2
참고

로깅 플레이북의 여러 실행에서 확장이 지속되도록 하려면 인벤토리 파일의 openshift_logging_kibana_replica_count 를 업데이트해야 합니다.

openshift_logging_kibana_hostname 변수로 지정된 사이트를 방문하여 사용자 인터페이스를 확인할 수 있습니다.

Kibana에 대한 자세한 내용은 Kibana 설명서 를 참조하십시오.

Kibana 시각화

Kibana Visualize를 사용하면 컨테이너 및 Pod 로그를 모니터링하기 위한 시각화 및 대시보드를 생성할 수 있으므로 관리자 사용자(Cluster-admin 또는 cluster-reader)는 배포, 네임스페이스, Pod 및 컨테이너별로 로그를 볼 수 있습니다.

Kibana 시각화는 Elasticsearch 및 ES-OPS Pod 내부에 있으며 해당 Pod 내에서 실행해야 합니다. 대시보드 및 기타 Kibana UI 오브젝트를 로드하려면 먼저 대시보드를 추가하려는 사용자로 Kibana에 로그인한 다음 로그아웃해야 합니다. 그러면 다음 단계에서 사용하는 필수 사용자별 구성이 생성됩니다. 그런 다음 다음을 실행합니다.

$ oc exec <$espod> -- es_load_kibana_ui_objects <user-name>

여기서 $espod 는 Elasticsearch Pod 중 하나입니다.

Kibana 시각화에 사용자 지정 필드 추가

OpenShift Container Platform 클러스터가 Elasticsearch .operations.* 또는 project.* 에 정의되지 않은 사용자 정의 필드가 포함된 JSON 형식으로 로그를 생성하는 경우 Kibana에서 사용자 정의 필드를 사용할 수 없기 때문에 이러한 필드를 사용하여 시각화를 생성할 수 없습니다.

그러나 Elasticsearch 인덱스에 사용자 정의 필드를 추가하면 Kibana 시각화에서 사용할 Kibana 인덱스 패턴에 필드를 추가할 수 있습니다.

참고

사용자 정의 필드는 템플릿이 업데이트된 후 생성된 인덱스에만 적용됩니다.

Kibana 시각화에 사용자 정의 필드를 추가하려면 다음을 수행합니다.

  1. Elasticsearch 인덱스 템플릿에 사용자 정의 필드를 추가합니다.

    1. 필드를 추가할 Elasticsearch 인덱스( .operations.* 또는 project.* 인덱스)를 결정합니다. 사용자 지정 필드가 있는 특정 프로젝트가 있는 경우 프로젝트의 특정 인덱스에 필드를 추가합니다(예: project.this-project-has-time-fields.*).
    2. 다음과 유사한 사용자 지정 필드에 대한 JSON 파일을 생성합니다.

      예를 들면 다음과 같습니다.

      {
      	"order": 20,
      	"mappings": {
      		"_default_": {
      			"properties": {
      				"mytimefield1": { 1
      					"doc_values": true,
      					"format": "yyyy-MM-dd HH:mm:ss,SSSZ||yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ||yyyy-MM-dd'T'HH:mm:ssZ||dateOptionalTime",
      					"index": "not_analyzed",
      					"type": "date"
      				},
      				"mytimefield2": {
      					"doc_values": true,
      					"format": "yyyy-MM-dd HH:mm:ss,SSSZ||yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ||yyyy-MM-dd'T'HH:mm:ssZ||dateOptionalTime",
      					"index": "not_analyzed",
      					"type": "date"
      				}
      			}
      		}
      	},
      	"template": "project.<project-name>.*" 2
      }
      1
      사용자 지정 필드 및 매개 변수를 추가합니다.
      2
      .operations.* 또는 project.* 인덱스를 지정합니다.
    3. openshift-loggin 프로젝트로 변경합니다.

      $ oc project openshift-logging
    4. Elasticsearch Pod 중 하나의 이름을 가져옵니다.

      $ oc get -n logging pods -l component=es
      
      NAME                                       READY     STATUS    RESTARTS   AGE       IP             NODE                         NOMINATED NODE
      logging-es-data-master-5av030lk-1-2x494    2/2       Running   0          38m       154.128.0.80   ip-153-12-8-6.wef.internal   <none>
    5. JSON 파일을 Elasticsearch 포드로 로드합니다.

      $ cat <json-file-name> | \  1
      oc exec -n logging -i -c elasticsearch <es-pod-name> -- \ 2
          curl -s -k --cert /etc/elasticsearch/secret/admin-cert \
          --key /etc/elasticsearch/secret/admin-key \
          https://localhost:9200/_template/<json-file-name> -XPUT -d@- | \ 3
      python -mjson.tool
      1 3
      생성한 JSON 파일의 이름입니다.
      2
      Elasticsearch Pod의 이름입니다.
      {
          "acknowledged": true
      }
    6. 별도의 OPS 클러스터가 있는 경우 es-ops Elasticsearch Pod 중 하나의 이름을 가져옵니다.

      $ oc get -n logging pods -l component=es-ops
      
      NAME                                           READY     STATUS    RESTARTS   AGE       IP             NODE                         NOMINATED NODE
      logging-es-ops-data-master-o7nhcbo4-5-b7stm    2/2       Running   0          38m       154.128.0.80   ip-153-12-8-6.wef.internal   <none>
    7. JSON 파일을 es-ops Elasticsearch Pod로 로드합니다.

      $ cat <json-file-name> | \ 1
      oc exec -n logging -i -c elasticsearch <esops-pod-name> -- \ 2
          curl -s -k --cert /etc/elasticsearch/secret/admin-cert \
          --key /etc/elasticsearch/secret/admin-key \
          https://localhost:9200/_template/<json-file-name> -XPUT -d@- | \ 3
      python -mjson.tool
      1 3
      생성한 JSON 파일의 이름입니다.
      2
      OPS 클러스터 Elasticsearch Pod의 이름입니다.

      출력은 다음과 유사합니다.

      {
          "acknowledged": true
      }
    8. 인덱스가 업데이트되었는지 확인합니다.

      oc exec -n logging -i -c elasticsearch <es-pod-name> -- \ 1
          curl -s -k --cert /etc/elasticsearch/secret/admin-cert \
          --key /etc/elasticsearch/secret/admin-key \
          https://localhost:9200/project.*/_search?sort=<custom-field>:desc | \ 2
      python -mjson.tool
      1
      Elasticsearch 또는 OPS 클러스터 Elasticsearch Pod의 이름입니다.
      2
      추가한 사용자 지정 필드의 이름입니다.

      명령은 정렬된 사용자 지정 필드의 인덱스 레코드를 내림차순으로 출력합니다.

      참고

      설정이 기존 인덱스에는 적용되지 않습니다. 설정을 기존 인덱스에 적용하려면 re-index를 수행합니다.

  2. Kibana에 사용자 정의 필드를 추가합니다.

    1. Elasticsearch 컨테이너에서 기존 인덱스 패턴 파일을 가져옵니다.

      $ mkdir index_patterns
      $ cd index_patterns
      $ oc project openshift-logging
      $ for espod in $( oc get pods -l component=es -o jsonpath='{.items[*].metadata.name}' ) ; do
      >  for ff in $( oc exec -c elasticsearch <es-pod-name> -- ls /usr/share/elasticsearch/index_patterns ) ; do
      >    oc exec -c elasticsearch <es-pod-name> -- cat /usr/share/elasticsearch/index_patterns/$ff > $ff
      >  done
      >  break
      > done

      인덱스 패턴 파일은 /usr/share/elasticsearch/index_patterns 디렉터리에 다운로드됩니다.

      예를 들면 다음과 같습니다.

      index_patterns $ ls
      
      com.redhat.viaq-openshift.index-pattern.json
    2. 해당 인덱스 패턴 파일을 편집하여 각 사용자 정의 필드의 정의를 필드 값에 추가합니다.

      예를 들면 다음과 같습니다.

      {\"count\": 0, \"name\": \"mytimefield2\", \"searchable\": true, \"aggregatable\": true, \"readFromDocValues\": true, \"type\": \"date\", \"scripted\": false},

      정의에는 시각화에 사용하려면 \"searchable\": true 및 \"aggregatable\": true, 매개변수가 포함되어야 합니다. 데이터 유형은 위에서 추가한 Elasticsearch 필드 정의에 일치해야 합니다. 예를 들어 숫자 유형인 Elasticsearch에 myfield 필드를 추가한 경우 myfield 를 Kibana에 문자열 유형으로 추가할 수 없습니다.

    3. 인덱스 패턴 파일에서 Kibana 인덱스 패턴의 이름을 인덱스 패턴 파일에 추가합니다.

      예를 들어, 작업을 사용하려면\ * 인덱스 패턴은 다음과 같습니다.

      "title": "*operations.*"

      project.MYNAMESPACE.\* 인덱스 패턴을 사용하려면 다음을 수행합니다.

      "title": "project.MYNAMESPACE.*"
    4. 사용자 이름을 식별하고 사용자 이름의 해시 값을 가져옵니다. 인덱스 패턴은 사용자 이름의 해시를 사용하여 저장됩니다. 다음 두 명령을 순서대로 실행합니다.

      $ get_hash() {
      >     printf "%s" "$1" | sha1sum | awk '{print $1}'
      > }
      $ get_hash admin
      
      d0aeb5660fc2140aec35850c4da997
    5. 인덱스 패턴 파일을 Elasticsearch에 적용합니다.

      cat com.redhat.viaq-openshift.index-pattern.json | \ 1
        oc exec -i -c elasticsearch <espod-name> -- es_util \
          --query=".kibana.<user-hash>/index-pattern/<index>" -XPUT --data-binary @- | \ 2
        python -mjson.tool
      1
      인덱스 패턴 파일의 이름입니다.
      2
      사용자 해시 및 인덱스( .operations.* 또는 project.*).

      예를 들면 다음과 같습니다.

      cat index-pattern.json | \
        oc exec -i -c elasticsearch mypod-23-gb9pl -- es_util \
          --query=".kibana.d0aeb5660fc2140aec35850c4da997/index-pattern/project.MYNAMESPACE.*" -XPUT --data-binary @- | \
        python -mjson.tool

      출력은 다음과 유사합니다.

      {
          "_id": ".operations.*",
          "_index": ".kibana.d0aeb5660fc2140aec35850c4da997",
          "_shards": {
              "failed": 0,
              "successful": 2,
              "total": 2
          },
          "_type": "index-pattern",
          "_version": 1,
          "created": true,
          "result": "created"
      }
    6. 사용 가능한 필드 목록과 관리 인덱스 패턴 페이지의 필드 목록에 사용자 정의 필드 가 표시되도록 Kibana 콘솔을 종료하고 다시 시작합니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.