Logz.io: Kubernetes 에서 수집 로그— fluentd와 filebeat

5528 단어 monitoringkubernetes

Logz.io: Kubernetes 에서 수집 로그— fluentd와 filebeat





Kubernetes 클러스터 로그를 수집하기 위해 Logz.io을 사용하고 있습니다(로컬Loki 인스턴스도 있음).

기본 구성의 Fluentd에서 배포된 모든 WorkerNode의 DaemonSet 포드에서 로그를 수집하고 처리합니다. 여기에서 설명서를 참조하십시오.

우리가 직면한 문제는 이러한 포드가 최대 3000 millicpu까지 너무 많은 CPU 를 소비하는 반면 WorkerNode에는 4개의 코어만 있다는 것입니다. 4000밀리푸.

그래서 이 문제를 해결하기 위해 유사한 로그 수집기를 검색하기로 결정했고 두 번째로 할 일은 Helm 차트를 통해 Ansible과 함께 배포할 수 있는 것이었지만 Fluentd에는 아직 준비된 차트가 없습니다.

찾은 솔루션 w Filebeat 수집기, 참조logzio-k8s — 해보자.

처음에는 Dev 클러스터를 수동으로 배포한 다음 Aisible 작업을 추가하여 프로덕션에 배포합니다.

Filebeat를 통해 Helm과 함께 k8s 로그 전송 Logz.io Filebeat Helm 차트



저장소 추가:

$ helm repo add logzio-helm [https://logzio.github.io/logzio-helm/filebeat](https://logzio.github.io/logzio-helm/filebeat)
“logzio-helm” has been added to your repositories


다음으로 토큰과 지역을 확인해야 합니다.— 계정의 일반 설정으로 이동합니다.



기본 리전 — us-east-1( 참조)이 있으므로 Helm 차트의 인수에서 secrets.logzioRegion를 제거할 수 있습니다.

또한 기본적으로 Logz.io 클라이언트는 kube-system 네임스페이스에 설치되지만 사용된 리소스를 보다 쉽게 ​​모니터링할 수 있도록 전용 NS에 배치하고 싶습니다.

네임스페이스는 How to look up your account region 파일에서 구성되므로 --set 로 재정의하고 --create-namespace--debug 옵션을 추가해 보겠습니다.

$ helm install — namespace=dev-1–18-devops-logzio-ns \
 --create-namespace — debug \
 --set secrets.logzioShippingToken='AVG***Onq' \
 --set secrets.clusterName='bttrm-eks-dev-1–18' \
 --set namespace=dev-1–18-devops-logzio-ns \
logzio-k8s-logs logzio-helm/logzio-k8s-logs


포드 확인:

$ kubectl -n dev-1–18-devops-logzio-ns get pod
NAME READY STATUS RESTARTS AGE
filebeat-2qt5s 1/1 Running 0 96s
filebeat-4xb44 1/1 Running 0 96s
filebeat-9prr9 1/1 Running 0 96s
filebeat-cth47 1/1 Running 0 96s
filebeat-fgmgx 1/1 Running 0 96s
filebeat-gb5ts 1/1 Running 0 96s
filebeat-hs9tr 1/1 Running 0 96s
filebeat-nskvg 1/1 Running 0 96s
filebeat-wfgbg 1/1 Running 0 96s


그리고 values 페이지에서 Kibana에 로그인합니다.

app.logs.io

앤서블



Ansible — (Rus)을 사용하여 Helm 차트를 배포하는 방법에 대한 게시물이 있습니다. 지금은 간단한 예일 뿐입니다.

프로덕션 클러스터에만 Logz.io를 배포할 때 조건을 추가합니다.

- name: "Add Logzio chart repo"
  when: "eks_env.startswith('prod')"
  community.kubernetes.helm_repository:
    name: "logzio-helm"
    repo_url: "https://logzio.github.io/logzio-helm/filebeat"

- name: "Deploy Logzio Filebit chart to the {{ eks_env }}-devops-logzio-ns namespace"
  when: "eks_env.startswith('prod')"
  community.kubernetes.helm:
    kubeconfig: "{{ kube_config_path }}"
    name: "logzio-k8s-logs"
    chart_ref: "logzio-helm/logzio-k8s-logs"
    release_namespace: "{{ eks_env }}-devops-logzio-ns"
    create_namespace: true
    values:
      secrets:
        logzioShippingToken: "{{ logzio_token }}"
        clusterName: "{{ eks_cluster_name }}"
      namespace: "{{ eks_env }}-devops-logzio-ns"


Ansible 변수에 logzio_token를 지정하고 Ansible: модуль community.kubernetes и установка Helm-чарта с ExternalDNS으로 암호화합니다. Ansible 역할은 Github 리포지토리에 저장되어 있습니다.

ansible-vault Fluentd vs Filebeat — CPU 및 성능



마지막으로 CPU 사용량: 왼쪽의 이전fluentd(Ruby + C) 대 오른쪽의 새로운filebeat(Golang):



에 원래 게시되었습니다.

좋은 웹페이지 즐겨찾기