参考

创建 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-namecluster-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。