创建 amazon-cloudwatch 命名空间
如果您还没有名为 amazon-cloudwatch
的命名空间,请通过输入以下命令创建一个:
kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cloudwatch-namespace.yaml
创建 ConfigMap
运行以下命令以创建一个名为 cluster-info
的 ConfigMap,该 ConfigMap 以集群名称和要向其发送日志的区域命名。将 cluster-name
和 cluster-region
分别替换为您的集群的名称和区域。
ClusterName=cluster-name
RegionName=cluster-region
FluentBitHttpPort='2020'
FluentBitReadFromHead='Off'
[[ ${FluentBitReadFromHead} = 'On' ]] && FluentBitReadFromTail='Off'|| FluentBitReadFromTail='On'
[[ -z ${FluentBitHttpPort} ]] && FluentBitHttpServer='Off' || FluentBitHttpServer='On'
kubectl create configmap fluent-bit-cluster-info \
--from-literal=cluster.name=${ClusterName} \
--from-literal=http.server=${FluentBitHttpServer} \
--from-literal=http.port=${FluentBitHttpPort} \
--from-literal=read.head=${FluentBitReadFromHead} \
--from-literal=read.tail=${FluentBitReadFromTail} \
--from-literal=logs.region=${RegionName} -n amazon-cloudwatch
在此命令中:
- 默认情况下,用于监控插件指标的
FluentBitHttpServer
处于启用状态。要将其关闭,请将命令中的第三行更改为FluentBitHttpPort=''
(空字符串)。 - 默认情况下,Fluent Bit 从尾部读取日志文件,并在部署后仅捕获新日志。如果你想要相反的设置,请设置
FluentBitReadFromHead='On'
,它将收集文件系统中的所有日志。
部署 Fluent Bit DaemonSet
运行以下任一命令,将 Fluent Bit DaemonSet 下载并部署到集群中。
使用优化配置
kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/fluent-bit/fluent-bit.yaml
使用更类似于 Fluentd 的配置
kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/fluent-bit/fluent-bit-compatible.yaml
重要
默认情况下,Fluent Bit 守护程序集配置会将日志级别设置为
INFO
,这可能会导致 CloudWatch Logs 摄取成本增加。要减少日志摄取量和成本,您可以将日志级别更改为ERROR
。有关如何减少日志量的更多信息,请参阅 (可选)从 Fluent Bit 减少日志卷。
运行以下命令以验证部署。每个节点应具有一个名为 fluent-bit-*
的 pod。
kubectl get pods -n amazon-cloudwatch
创建 IAM Service Account
eksctl create iamserviceaccount --cluster=${ClusterName} --name=fluent-bit --namespace amazon-cloudwatch --attach-policy-arn=arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy --approve --region us-east-1 --override-existing-serviceaccounts
这个命令将创建一个名为 fluent-bit
的 IAM Service Account,并将 CloudWatchAgentServerPolicy
策略附加到它上面,以允许 Fluent Bit 将日志发送到 CloudWatch Logs。