빈자의 GKE/FluentBit에서 로그 수집

TLDR


  • 무료 테두리 f1-micro는 fluentd가 크다
  • 경량 로그 수집 에이전트 fluent-bit
  • Kubernetes 지원
  • Go에서 플러그인 생성 가능

  • fluent-bit로 Stackdriver Logging에 로그를 출력하여 상당한 리소스를 줄입니다.

    지금까지의 개요



    GCP의 무료 테두리만으로 GKE 클러스터를 만들 수 있었지만, 일부 Pod가 Pending이 되어 있었다.
    ぃ tp // 이 m/아 pstun db/있어 ms/788f705에71에7660967아6#%에3%83%아%에3%82%BD%에3%83%BC%에3%82%B9

    조사해 보면, 최대의 Pod 는 Stackdriver Logging 에의 각 컨테이너의 로그 수집을 위해서 생성되고 있는 fluentd-cloud-logging 이며, 실측 80 MB 를 넘는 자원을 사용하고 있었다.
    ぃ tp // 이 m/아 pst db/있어 ms/1c3f8에아 026에 d6b27에 357 #%에 5% 86% 85%에 8% 아 8% B3

    빈자의 로그 수집


    fluentd-cloud-logging는 클러스터 생성시 --no-enable-cloud-logging를 지정하여 무효화 할 수 있지만 12factor 로그을 처리 할 수없는 것은 매우 불편합니다. 무언가 대안을 생각할 필요가 있다.

    fluent-bit



    거기서 이번 눈을 끈 것이 C로 쓰여진 경량의 ​​로그 수집 에이전트의 fluent-bit이다.
    Kubernetes 대응 또한 Ruby에서 움직이는 fluentd보다 자원이 적을 것으로 예상됩니다.
    실제 Kubernetes 연계의 예를 찾아보면, DaemonSet 로서 동작해 Elasticsearch 에 출력하는 예도 공식적으로 fluent/fluent-bit-kubernetes-daemonset 로서 발견되었다.

    Elasticsearch는 JVM에서 작동하고 부자 자원을 요구하기 때문에 가난한 사람들에게는 손이 닿지 않지만 이것이 가능하다면 하고 싶은 일은 대략 할 수 있을 것 같다.

    플러그인을 쓰는 방법을 찾았는데 Go에서 플러그인을 작성할 수 있다는 것을 알았습니다.
    htps : // 기주 b. 이 m/fぅ엔 t/fぅ엔 t-비 t/bぉb/마s테 r/고 G_오우 T푸 T_P㎅긴. md
    htps : // 기주 b. 코 m / f ㅅ t / f ぅ 헉

    Go에는 Google 공식 Stackdriver Logging 클라이언트 라이브러리이 있기 때문에 Stackdriver Logging에 출력하는 fluent-bit을 Kubernetes 로그 수집에 사용할 수 있습니까?

    fluent-bit-stackdriver



    라는 이유로 검증해 본 것이 아래 리포지토리이다.
    apstndb/fluent-bit-stackdriver

    아직 다른 사람이 사용할 수 있도록 정비하고 있지 않고, 품질도 낮지만, 실제로 Kubernetes의 각 Pod가 출력하는 로그가 Stackdriver Logging에 건너는 것을 확인할 수 있다.



    아직 리소스 사용량을 살펴보면 아래와 같이 10MB 정도의 메모리 사용량이 되었다.
    $ kubectl top pod --all-namespaces
    NAMESPACE     NAME                                                        CPU(cores)   MEMORY(bytes)
    default       hostnames-3799501552-99h7f                                  0m           0Mi
    kube-system   heapster-v1.2.0.1-1382115970-gjg66                          0m           24Mi
    kube-system   fluent-bit-kgjzl                                            0m           10Mi
    kube-system   kubernetes-dashboard-3543765157-s86rn                       0m           16Mi
    kube-system   kube-proxy-gke-sandbox-cluster-default-pool-8b3dece3-ngf9   0m           12Mi
    kube-system   kube-dns-2185667875-75kdg                                   0m           16Mi
    

    이전에 측정 한 fluentd보다 70MB 정도는 줄일 수 있습니다. 그렇다면 600MB 밖에 RAM이 없는 f1-micro 인스턴스에서의 로그 수집이 현실적인 것이 되어 온 것이 아닌가.
  • 좋은 웹페이지 즐겨찾기