zoukankan      html  css  js  c++  java
  • 11 深入kubernetes-----日志和监控-----11-1 常见日志采集问题和解决方案分析

    k8s中的日志处理

    传统服务 

    • 固定机器、固定目录
    • 不受重启影响
    • 不关注stdout、stderr

     k8s中的服务

    • 节点不固定
    • 重启服务会漂移
    • 需关注stdout、stderr

    k8s的日志

    • stdout   标准输出
    • stderr    错误输出

      # 默认,以json模式保存目录。也可以修改指定日志目录

      /var/lib/docker/containers/<cname>/<cname>-json.log    

    • 日志文件

      对于应用直接写日志文件,重启丢失

    常见方案-----远程日志

      pod----(ES,kafka)     # 用的比较多的。应用做改造

    常见方案-----sidecar

      每个pod中跑一个 sidecar,会跟主容器共享volume,可以访问到所有的日志文件。把日志文件转发后端存储。单独的进程,消耗内存,cpu。社区不推荐这种方式

    常见方案-----LogAgent

      每个节点上部署一个agent, 相当于sidecar从pod中拿到节点上。通过agent采集所有pod日志发送后端存储。一般一daemonset方式部署。需要容器把日志挂载到宿主机上。

      资源消耗小,对pod没有侵入,对应用没有侵入。

      约定所有项目挂载一个特定的主机目录,主机名也尽量统一。挂载目录事先定义好的,日志来源不好判断来源于哪个pod。

    我们实践的方案。

     

     一个节点部署一个agent。agent采用阿里开源的 LogPilot。

    常见的agent:filebeat、logstash、fluentd等,都是静态的。静态日志容器出现瓶颈。

    logpilot 能采集docker错误输出,也能采集文件日志。

    • 智能的容器日志采集工具
    • 自动发现机制
    • 2917年初在github开源。

    在静态采集上面又包了一层,事先静态之上的动态采集。自动发现。

    目前 Log-Pilot 支持两种采集插件:一个是CNCF社区的Fluentd插件,一个是Elastic的Filebeat插件;其同时其支持对接多种存储后端,目前 Fluentd 和 Filebeat 都支持 Elasticsearch、Kafka、File、Console 作为日志存储后端,而 Fluentd 还支持 Graylog、阿里云日志服务 以及 Mongodb 作为存储后端。

    图:

     

     

    end...

  • 相关阅读:
    [Github]在仓库中添加Sponsor赞助者按钮
    SpringMVC面试题常问的29道(附答案)
    Spring常问面试题及答案汇总(2020版)
    Java面试题及答案整理(2020最新版)
    MySQL数据库下载及安装教程(最新版!史上最详细!)
    +0与-0在plc传递数值上的坑
    halcon极坐标转换与亮暗缺陷检测结合的案例(转)
    互联网项目管理
    zabbix 监控IO DISK
    转 更改当前schema
  • 原文地址:https://www.cnblogs.com/edeny/p/14685329.html
Copyright © 2011-2022 走看看