Fluent Bit를 사용하여 감독자 제어부 로그를 Grafana Loki 또는 Elastic Search와 같은 외부 모니터링 시스템으로 전달을 구성하는 방법을 확인합니다.
감독자 제어부 로그는 Fluent Bit를 사용하여 vCenter Server 장치에 구성된 Syslog 서버로 자동으로 전달됩니다. Fluent Bit는 다양한 로그 데이터 유형, 필터링 및 로그 태그 기능 향상을 지원하는 구성을 제공하는 오픈 소스 경량 로깅 및 메트릭 프로세서 및 전달자입니다.
감독자 활성화 또는 업그레이드 중에 부트스트랩 로그는 rsyslog를 통해 vCenter Server 장치에 구성된 Syslog 서버로 계속 전달됩니다. 감독자 제어부 VM이 가동되어 실행되면 Fluent Bit가 감독자 제어부 로그의 기본 로그 전달자가 됩니다.
vSphere 관리자는 다음에 Fluent Bit를 사용할 수 있습니다.
감독자 제어부 로그 및 시스템 저널 로그를 Fluent Bit에서 지원되는 Loki, Elastic Search, Grafana 및 기타 플랫폼과 같은 주요 외부 로그 모니터링 플랫폼으로 전달합니다.
- k8s API를 사용하여 감독자 제어부에 대한 로그 전달 구성을 업데이트하거나 재설정합니다.
inputs-custom.conf: | [INPUT] Name tail Alias audit_apiserver_tail Tag audit.apiserver.* Path /var/log/vmware/audit/kube-apiserver.log DB /var/log/vmware/fluentbit/flb_audit_apiserver.db Buffer_Max_Size 12MBb Mem_Buf_Limit 32MB Skip_Long_Lines On Refresh_Interval 10 filters-custom.conf: | [FILTER] Name record_modifier Alias audit_apiserver_modifier Match audit.apiserver.* Record hostname ${NODE_NAME} Record appname audit-kube-apiserver Record filename kube-apiserver.log outputs-custom.conf: | [OUTPUT] Name syslog Alias audit_apiserver_output_syslog Match audit.apiserver.* Host <syslog-server-host> Port <syslog-server-port> Mode tcp Syslog_Format rfc5424 Syslog_Message_key log Syslog_Hostname_key hostname Syslog_Appname_key appname Syslog_Msgid_key filename
Fluent Bit 로그 전달 사용자 지정
단계에 따라 Fluent Bit 로그 전달 구성을 사용자 지정합니다.
- 감독자 제어부에 vCenter Single Sign-On 관리자로 로그인합니다.
> kubectl vsphere login --server=<supervisor-cluster-vip> -u [email protected] > kubectl config use-context <supervisor-cluster-vip>
- fluentbit-config-custom ConfigMap의 outputs-custom.conf 섹션에서 syslog 출력을 업데이트하거나 추가합니다. 그러면 모든 제어부 VM 시스템 로그가 외부 서버로 전달됩니다.
[OUTPUT] Name syslog Alias syslog_system Match system* Host <syslog-server-host> Port <syslog-server-port> Mode tcp Syslog_Format rfc5424 Syslog_Message_key log Syslog_Hostname_key hostname Syslog_Appname_key appname Syslog_Msgid_key filename # add the following if the mode is TLS Tls on Tls.verify off Tls.ca_file /etc/ssl/certs/vmca.pem
- fluentbit-config-custom ConfigMap에 변경 내용을 적용합니다.
> kubectl -n vmware-system-logging edit cm fluentbit-config-custom # use the below command if the change is stored in outputs-custom.conf file > kubectl -n vmware-system-logging create configmap fluentbit-config-custom --from-file=filters-custom.conf --from-file=inputs-custom.conf --from-file=outputs-custom.conf -o yaml --from-file=parsers-custom.conf --dry-run | kubectl replace -f -
Fluent Bit 포드를 모니터링하여 구성 변경 내용을 자동으로 적용하고 Syslog 서버에서 감독자 로그를 쿼리합니다. 업데이트된 구성이 다시 로드된 후 Fluentbit DaemonSet가 오류로 실행되는 경우
fluentbit-config-custom
ConfigMap의 구성을 복구하거나 재설정하여 Fluentbit DaemonSet가 정상 상태가 되도록 합니다.> kubectl -n vmware-system-logging get pod > kubectl -n vmware-system-logging logs <fluentbit-pod-name>
Grafana Loki 서버에 Kubernetes API 서버 감사 로그 전달
다음 단계에 따라 외부 Grafana Loki 서버로 로그 전달을 구성합니다.
- 감독자 제어부에 vCenter Single Sign-On 관리자로 로그인합니다.
> kubectl vsphere login --server=<supervisor-cluster-vip> -u [email protected] > kubectl config use-context <supervisor-cluster-vip>
- fluentbit-config-custom ConfigMap의 outputs-custom.conf 섹션에서 Loki 출력을 업데이트하거나 추가합니다. 그러면 모든 제어부 VM 시스템 로그가 Loki 로그 서버로 전달됩니다.
[OUTPUT] Name loki Alias system_output_loki Match system* Host <loki-server-host> Port <loki-server-port> Labels $hostname,$appname,$filename,$procid,$labels
- fluentbit-config-custom ConfigMap에 변경 내용을 적용합니다.
> kubectl -n vmware-system-logging edit cm fluentbit-config-custom # use the below command if the change is stored in outputs-custom.conf file > kubectl -n vmware-system-logging create configmap fluentbit-config-custom --from-file=filters-custom.conf --from-file=inputs-custom.conf --from-file=outputs-custom.conf -o yaml --from-file=parsers-custom.conf --dry-run | kubectl replace -f -
Fluent Bit 포드를 모니터링하여 구성 변경 내용을 자동으로 적용하고 Syslog 서버에서 감독자 로그를 쿼리합니다. 업데이트된 구성이 다시 로드된 후 Fluentbit DaemonSet가 오류로 실행되는 경우
fluentbit-config-custom
ConfigMap의 구성을 복구하거나 재설정하여 Fluentbit DaemonSet가 정상 상태가 되도록 합니다.> kubectl -n vmware-system-logging get pod > kubectl -n vmware-system-logging logs <fluentbit-pod-name>
Elastic Search에 로그 전달
- 감독자 제어부에 vCenter Single Sign-On 관리자로 로그인합니다.
> kubectl vsphere login --server=<supervisor-cluster-vip> -u [email protected] > kubectl config use-context <supervisor-cluster-vip>
- fluentbit-config-custom ConfigMap의 outputs-custom.conf 섹션에서 Elastic Search 출력을 업데이트하거나 추가합니다. 그러면 모든 제어부 VM 시스템 로그가 ES 로그 서버에 전달됩니다.
[OUTPUT] Name es Alias system_output_es Match system* Host <es-server-host> Port <es-server-port> Index supervisor Type controlplanevm
- fluentbit-config-custom ConfigMap에 변경 내용을 적용합니다.
> kubectl -n vmware-system-logging edit cm fluentbit-config-custom # use the below command if the change is stored in outputs-custom.conf file > kubectl -n vmware-system-logging create configmap fluentbit-config-custom --from-file=filters-custom.conf --from-file=inputs-custom.conf --from-file=outputs-custom.conf -o yaml --from-file=parsers-custom.conf --dry-run | kubectl replace -f -
Fluent Bit 포드를 모니터링하여 구성 변경 내용을 자동으로 적용하고 Syslog 서버에서 감독자 로그를 쿼리합니다.
> kubectl -n vmware-system-logging get pod > kubectl -n vmware-system-logging logs <fluentbit-pod-name>
Syslog 서버에 Kubernetes API 감사 로그 전달
다음 단계에 따라 외부 Syslog 서버로 Kubernetes API 감사 로그 전달을 구성합니다.
- kubectl-plugin-vsphere 및 authproxy 입력을 fluentbit-config ConfigMap에 추가합니다.
[INPUT] Name tail Tag auth.kubectl-plugin.* Path /var/log/containers/audit/kubectl-plugin-vsphere*.log DB /var/log/vmware/fluentbit/flb_auth_kubectl-plugin.db Skip_Long_Lines Off Refresh_Interval 10 [INPUT] Name tail Tag auth.authproxy.* Path /var/log/containers/audit/wcp-authproxy*.log DB /var/log/vmware/fluentbit/flb_auth_authproxy.db Skip_Long_Lines Off Refresh_Interval 10
- kubectl-plugin-vsphere 및 authproxy 필터를 fluentbit-config ConfigMap에 추가합니다.
[FILTER] Name kubernetes Match auth.* Kube_URL https://localhost:6443 Tls.verify Off K8S-Logging.Parser On K8S-Logging.Exclude On [FILTER] Name record_modifier Match auth.* Operation lift Nested_under kubernetes [FILTER] Name modify Match auth.* Rename container_name appname Rename host hostname Rename pod_name procid
- Syslog 서버에 kubectl-plugin-vsphere 출력을 fluentbit-config ConfigMap에 추가합니다.
[OUTPUT] Name syslog Match auth.* Host <syslog-server-host> Port <syslog-server-port> Mode tcp Syslog_Format rfc5424 Syslog_Message_key log Syslog_Hostname_key hostname Syslog_Appname_key appname Syslog_Msgid_key filename
- 위의 파일을 vmware-system-logging 네임스페이스 아래의 fluentbit-config ConfigMap에 포함합니다.
> k -n vmware-system-logging edit cm fluentbit-config > k -n vmware-system-logging rollout restart ds fluentbit > k -n vmware-system-logging rollout status ds fluentbit