Kubernetes 이야기

OpenSearch 및 Fluent Bit로 Kubernetes Event 및 Container 로그 저장하기 본문

Kubernetes/일반

OpenSearch 및 Fluent Bit로 Kubernetes Event 및 Container 로그 저장하기

kmaster 2024. 5. 6. 22:54
반응형

 

OpenSearch

OpenSearchAmazon에서 만든 OpenSearch 프로젝트는 이전 버전의 Elasticsearch와 Kibana를 기반으로 하는 포크(fork)된 검색 프로젝트 로 Apache 2.0 라이선스 하에 제공되는 분산형 커뮤니티 기반 100% 오픈 소스 검색 및 분석 제품군군이다. 실시간 애플리케이션 모니터링, 로그 분석 및 웹 사이트 검색과 같이 다양한 사용 사례에 사용된다. OpenSearch는 데이터 탐색을 쉽게 해주는 통합 시각화 도구 OpenSearch 대시보드와 함께 대량 데이터 볼륨에 빠르게 액세스하고 응답하며 뛰어난 확장성을 지닌 시스템을 제공한다. OpenSearch는 Apache Lucene 검색 라이브러리로 구동되며 k-nearest neighbors(KNN) 검색, SQL, Anomaly Detection, Machine Learning Commons, Trace Analytics, 전체 텍스트 검색 등 다수의 검색 및 분석 기능을 지원한다.

 

설치

$ helm repo add opensearch https://opensearch-project.github.io/helm-charts/
$ helm repo update
$ helm pull opensearch/opensearch --untar


values를 알맞게 수정한다.

extraEnvs:
#  - name: MY_ENVIRONMENT_VAR
#    value: the_value_goes_here
# Chart version 2.18.0 and App Version OpenSearch 2.12.0 onwards a custom strong password needs to be provided in order to setup demo admin user.
# Cluster will not spin-up without this unless demo config install is disabled.
  - name: OPENSEARCH_INITIAL_ADMIN_PASSWORD
    value: test#2321

 

 

테스트

$ curl -u "admin:test#2321" -k https://ip:9200/_cat/indices?v
health status index                           uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .ql-datasources                 XPSbtmETT5-kkUhEwwg5Lw   1   0          0            0       208b           208b
green  open   .kibana_92668751_admin_1        ic6oGRFtSkyf48Uh5vaMeQ   1   0          6            0     30.5kb         30.5kb
green  open   .opendistro-reports-definitions 8pWzhdq9R7akVZHCUff5VQ   1   0          0            0       208b           208b
green  open   .opendistro_security            55f_ZSZtSTaU0cMM-_q0fA   1   0         10            0     79.1kb         79.1kb
green  open   .kibana_1                       RbiAx1inRLKhk4ut-PQ_4w   1   0          7            1     40.7kb         40.7kb
green  open   .opendistro-reports-instances   FZ0MdanlRIONmCGju_TJOA   1   0          1            0      6.6kb          6.6kb
green  open   .tasks                          jl4FOIBfSHG4iFBfy2gjrg   1   0          3            0     20.7kb         20.7kb
green  open   .plugins-ml-config              1rrI3UiSSxGDcxWWC3KumA   1   0          1            0      3.9kb          3.9kb
green  open   .opensearch-observability       kCXF5ml5R_amxBMuQtM66A   1   0          1            0      6.3kb          6.3kb


Fluent Bit

Fluent Bit 는 Linux, macOS, Windows 및 BSD 제품군 운영 체제용 로그, 지표 및 추적을 위한 빠르고 가벼운 원격 측정 에이전트이다. 복잡성 없이 다양한 소스에서 원격 측정 데이터를 수집하고 처리할 수 있도록 성능에 중점을 두고 만들어졌다.

 

주요특징

  • 고성능: 낮은 리소스 소비로 높은 처리량

  • 데이터 분석

    • JSON , Regex , LTSVLogfmt 파서를 사용하여 구조화되지 않은 메시지를 변환

  • 측정항목 지원: Prometheus 및 OpenTelemetry 호환

  • 신뢰성 및 데이터 무결성

  • 네트워킹

    •  
    • 보안: 내장형 TLS/SSL 지원
    • 비동기 I/O

  • 플러그형 아키텍처 및 확장성 : 입력, 필터 및 출력
    • 기존 플러그인을 사용하여 거의 모든 소스를 거의 모든 대상에 연결

  • 모니터링 : HTTP를 통해 JSON 및 Prometheus 형식 으로 내부 측정항목을 노출

  • 스트림 처리 : 간단한 SQL 쿼리를 사용하여 데이터 선택 및 변환 수행

    • 쿼리 결과를 사용하여 새로운 데이터 스트림 생성

    • 집계 창

    • 데이터 분석 및 예측: 시계열 예측

  • 휴대용: Linux, macOS, Windows 및 BSD 시스템에서 실행

설치

 

$ helm repo add fluent https://fluent.github.io/helm-charts
$ helm repo update
$ helm pull fluent/fluent-bit --untar
$ kubectl create ns fluent-bit

 

values 수정

[values]
rbac:
  create: true
  nodeAccess: true
  eventsAccess: true


  inputs: |
    [INPUT]
        Name tail
        Path /var/log/containers/*.log
        multiline.parser docker, cri
        Tag kube.*
        Mem_Buf_Limit 5MB
        Skip_Long_Lines On

    [INPUT]
        Name systemd
        Tag host.*
        Systemd_Filter _SYSTEMD_UNIT=kubelet.service
        Read_From_Tail On

    [INPUT]
        name            kubernetes_events
        tag             k8s_events
        kube_url        https://kubernetes.default.svc


  outputs: |
    [OUTPUT]
        Name es
        Match kube.*
        Host opensearch-cluster-master.opensearch.svc
        Port            9200
        tls             On
        tls.verify      Off
        http_user       admin
        http_passwd     test#2321
        Logstash_Format On
        Retry_Limit False
        Suppress_Type_Name On

    [OUTPUT]
        Name es
        Match host.*
        Host opensearch-cluster-master.opensearch.svc
        Port            9200
        tls             On
        tls.verify      Off
        http_user       admin
        http_passwd     test#2321
        Logstash_Format On
        Logstash_Prefix node
        Retry_Limit False
        Suppress_Type_Name On

    [OUTPUT]
        name            opensearch
        match           k8s_events
        Host            opensearch-cluster-master.opensearch.svc
        Port            9200
        tls             On
        tls.verify      Off
        http_user       admin
        http_passwd     test#2321
        logstash_format true
        logstash_prefix kubernetes-events
        Suppress_Type_Name On

 

설치 실행

helm upgrade --install fluent-bit . -f values.yaml -n fluent-bit

 

모니터링을 위해 OpenSearch Dashboard를 설치해 보자.

* OpenSearch Dashboard

$ helm pull opensearch/opensearch-dashboards --untar
$ helm upgrade --install opensearch-dashboards . -f values.yaml -n opensearch

 

이제 OpenSearch Dashboard에 접속하여 생성된 Event 로깅을 살펴보자.

반응형
Comments