들어가며
- kubernetes log 를 수집해주는 sw 인 fluentd 의 상세 설정 방법을 알 수 있습니다.
- node 별로 디렉토리를 생성하여 pod 의 log 를 수집할 수 있습니다.
내용
flunetd 가 수집하는 log 는 기본적으로 minio 에 저장되도록 sodaflow 에 추가됩니다.
하지만 node 가 여러개로 나눠진 경우 분리하여 저장하는 기능은 추가되어있지 않습니다.
따라서 node 별로 pod 의 log 수집을 원하는 경우 다음 작업을 수행하여 fluentd 에 적용해야 합니다.
fluentd_0.3.9.yaml
sodaflow 에서 제공되는 fluentd 는 해당 yaml 로 실행합니다.
vi fluentd_0.3.9.yaml
오픈 소프트웨어를 사용하기 때문에 기본적인 틀은 fluentd 형식을 따라갑니다.
이 때, node 별로 디렉토리를 변경하기 위해서는 옵션을 다음과 같이 추가합니다.
04_outputs.conf: |- <label @OUTPUT> <match **> @type s3 aws_key_id "minio#agilesoda$01" aws_sec_key "minio#agilesoda$01" s3_endpoint "http://minio.minio:9000" force_path_style true store_as json s3_bucket logging path "#{ENV['K8S_NODE_NAME']}" s3_object_key_format "%{path}/${tag}/%{time_slice}-events_%{index}.%{file_extension}" time_slice_format %Y/%m/%d/%H
추가되는 옵션
k8s node name 을 추가한 뒤 경로에 입력해줍니다.
path "#{ENV['K8S_NODE_NAME']}" s3_object_key_format "%{path}/${tag}/%{time_slice}-events_%{index}.%{file_extension}"
적용
kubectl apply -f fluentd_0.3.9.yaml
마무리
- 적용 후 minio 에 node 이름 별로 pod 의 log 가 생성되는 것을 확인할 수 있습니다.
참고된 결과는 실제 pod 의 로그를 중략한 특정 부분입니다.cd <NAS ROOT>/minio-minio-data-volume-pvc-<UUID>/minio/ tree logging |-- lp645 | |-- kubernetes.var.log.containers.gitlab-redis-74cdd497c6-69vjb_sodaflow_gitlab-redis-caf51ab02f1b3d3b9ecdabcffabc464282ba5c88dd780ee8ea880410a25bf23e.log | | `-- 2023 | | `-- 01 | | `-- 26 | | `-- 08-events_0.json | |-- kubernetes.var.log.containers.kubewatch-654455fdc4-lld9r_sodaflow_kubewatch-0ea4e900b5298e3292c42be2a120b856e3b3eaefbcf735207d2aab6701260f1f.log | | `-- 2023 | | `-- 01 | | `-- 26 | | `-- 08-events_0.json |-- lp646 | |-- kubernetes.var.log.containers.devainexus-74484dd664-sspgq_sodaflow_devainexus-c49b3af3ed05b16f4d13a915b8346891ad6000df9dc8229621e374818f080586.log | | `-- 2023 | | `-- 01 | | `-- 26 | | `-- 08-events_0.json | |-- kubernetes.var.log.containers.mariadb-cluster-primary-8d9fdc949-7p4gm_sodaflow_mariadb-18ad4f8db37cd817b71a130a2e2f4a8294b4a83e5d2e8ba0723f77384b6185b2.log | | `-- 2023 | | `-- 01 | | `-- 26 | | `-- 08-events_0.json |-- lp647 | |-- kubernetes.var.log.containers.workflow-controller-76b8c46fdb-p476p_sodaflow_workflow-controller-3a2e6dce11e99aeb4c3f3534a7d82a70251fd1f2c57258a062d2e5c7277513bd.log | `-- 2023 | `-- 01 | `-- 26 | `-- 08-events_0.json `-- lp648 |-- kubernetes.var.log.containers.restapp-app04c2d-0_sodaflow_restapp-d1f8b53c9f972a02792d85462007937801f6a9075392b3625f71f27e1f802d07.log | `-- 2023 | `-- 01 | `-- 26 | `-- 08-events_0.json `-- kubernetes.var.log.containers.restapp-server-1-0_sodaflow_rest-server-42dc2b8b938b2a8a0712968fde98a09dfbaccbe5fc97f87549c5fb4932ea73f6.log `-- 2023 `-- 01 `-- 26 `-- 08-events_0.json
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.