• AWS云上面的k8s统一日志收集(Fluent Bit+EKS+CW)


    目标

    k8s上面的常见的统一日志方案是EFK,具体如下:

    • E:elasticsearch;
    • F:fluentd;
    • K:kibana
      这里我们变成了使用fluentd的AWS替代品Fluent Bit,直接将日志输出到CloudWatch组。不需要E和K了。不过,这样仅仅用于AWS EKS。

    步骤

    给EC2 IAM角色CloudWatchAgentServerPolicy权限

    给支撑运行EKS的EC2上面的IAM角色添加CloudWatchAgentServerPolicy策略。这里的角色名是AmazonEKSNodeRole。

    创建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
    
    • 1

    创建cluster-info的ConfigMap

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    其中,cluster-name表示集群名称;cluster-region表示云区。

    创建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
    
    • 1

    验证部署

    kubectl get pods -n amazon-cloudwatch
    
    • 1

    应该能够查询出fluent-bit-*开头的pod,就表示部署fluent bit成功。然后,跑到CloudWatch页面看看是否存在/aws/containerinsights/*开头的相关日志组:
    fluent bit日志组
    具体的SpringBoot服务的日志,在这个日志组下面:

    /aws/containerinsights/uat/application
    
    • 1

    总结

    这就是在AWS云上的k8s统一日志方案。和EFK方案很类似了。对业务服务SVC也是无侵入式的。

    参考

  • 相关阅读:
    不容易解的题10.7
    netty系列之:EventLoop,EventLoopGroup和netty的默认实现
    与“改善”形成两个轮子。落实“改善”的东西
    513找树左下角值
    MFC Windows 程序设计[333]之高亮列表控件(附源码)
    Android系统启动流程概览
    面试官:什么是伪共享,如何避免?
    一图带你领略Spring Bean的生命周期全过程
    python爬虫+django新闻推荐系统可视化分析
    MIT6.830-lab6-Rollback and Recovery(数据库的日志回滚和恢复)
  • 原文地址:https://blog.csdn.net/fxtxz2/article/details/136741903