【赵强老师】Kubernetes平台中日志收集方案

摘要:
ELK是Elasticsearch、Logstash和Kibana的缩写,它们是核心套件,但不是全部。Kibana是一个基于web的图形界面,用于搜索、分析和可视化存储在弹性搜索指示器中的日志数据。它使用Elasticsearch的REST接口来检索数据。它不仅允许用户创建自己的自定义仪表板数据视图,还允许用户以特殊方式查询和过滤数据。2.在不同组件的日志收集节点上部署日志收集器:在DaemonSet模式下部署日志收集器。应用程序直接推送日志:它不属于Kubernetes。

【赵强老师】Kubernetes平台中日志收集方案第1张

一、K8s整体日志收集方案

整体的日志收集方案,如下图所示:

【赵强老师】Kubernetes平台中日志收集方案第2张

  1. Filebeat是本地文件的日志数据采集器,可监控日志目录或特定日志文件(tail file),并将它们转发给Elasticsearch或Logstatsh进行索引、kafka等。带有内部模块(auditd,Apache,Nginx,System和MySQL),可通过一个指定命令来简化通用日志格式的收集,解析和可视化。
  2. ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部。
  • Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。
  • Logstash是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。
  • Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据
二、针对不同组件的日志收集
  • Node上部署一个日志收集程序:DaemonSet方式部署日志收集程序。对本节点/var/log和/var/lib/docker/containers/ 两个目录下的日志进行采集.

【赵强老师】Kubernetes平台中日志收集方案第3张

  • Pod中附加专用日志收集的容器:每个运行应用程序的Pod中增加一个日志收集容器,使用emtyDir共享日志目录让日志收集程序读取到。

【赵强老师】Kubernetes平台中日志收集方案第4张

  • 应用程序直接推送日志:不属于Kubernetes范围。

【赵强老师】Kubernetes平台中日志收集方案第5张

三、安装ELK
  • 安装JDK:这里我们使用的是jdk-8u181-linux-x64.tar.gz(安装过程省去,非常简单)
  • 安装Elasticsearch:直接解压启动,即可,执行下面的语句测试ES。

【赵强老师】Kubernetes平台中日志收集方案第6张

  • 安装Kibana:核心配置文件config/kibana.yml
server.port: 5601
server.host: "192.168.79.110"
elasticsearch.hosts: ["http://localhost:9200"]

启动:bin/kibana,访问Web Console:http://192.168.79.110:5601
  • 安装logstash:核心配置文件config/logstash.conf
input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "k8s-log-%{+YYYY-MM-dd}"
  }
}

启动:bin/logstash -f config/logstash.conf
四、收集k8s组件日志

filebeat的配置文件filebeat.yml使用ConfigMap管理,k8s组件日志记录在node节点本机/var/log/messages目录下,所以将node节点/var/log/messages目录挂载到pod中。创建收集k8s 组件日志/var/log/messages资源。创建yaml文件如下:k8s-logs.yaml,并执行kubectl create -f k8s-logs.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: k8s-logs-filebeat-config
  namespace: kube-system
data:
  filebeat.yml: |-
    filebeat.prospectors:
      - type: log
        paths:
          - /messages
        fields:
          app: k8s
          type: module
        fields_under_root: true

    output.logstash:
      hosts: ['192.168.79.110:5044']

---

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: k8s-logs
  namespace: kube-system
spec:
  selector:
    matchLabels:
      project: k8s
      app: filebeat
  template:
    metadata:
      labels:
        project: k8s
        app: filebeat
    spec:
      containers:
      - name: filebeat
        image: collenzhao/filebeat:6.5.4
        args: [
          "-c", "/etc/filebeat.yml",
          "-e",
        ]
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
          limits:
            cpu: 500m
            memory: 500Mi
        securityContext:
          runAsUser: 0
        volumeMounts:
        - name: filebeat-config
          mountPath: /etc/filebeat.yml
          subPath: filebeat.yml
        - name: k8s-logs
          mountPath: /messages
      volumes:
      - name: k8s-logs
        hostPath:
          path: /var/log/messages
          type: File
      - name: filebeat-config
        configMap:
          name: k8s-logs-filebeat-config

下图是Kibana的生成的信息。

【赵强老师】Kubernetes平台中日志收集方案第7张

【赵强老师】Kubernetes平台中日志收集方案第8张

免责声明:文章转载自《【赵强老师】Kubernetes平台中日志收集方案》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ApacheHudi常见问题汇总报表工具怎么制作带有时间轴的记录表?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Elasticsearch logstsh测试数据新增和修改

1、将MySql中修改的数据同步到ES中 修改mysql中的数据 logstash中看到日志,修改的数据已经同步。 查看elasticsearch的数据 可以看到,ES中已经同步了MySql中的数据修改。 补充问题: 1、Logstash时间不是标准时间 2、Logstash与数据库时间相差8小时 修改conf默认时区为上海 cd /usr/loca...

k8s中pod的定义

Pod,而不是容器,才是 Kubernetes 项目中的最小编排单位。将这个设计落实到 API 对象上,容器(Container)就成了 Pod 属性里的一个普通的字段。 那么,一个很自然的问题就是:到底哪些属性属于 Pod 对象,而又有哪些属性属于 Container 呢?如果你能把Pod 看成传统环境里的“机器”、把容器看作是运行在这个“机器”里的“用...

基于ack k8s集群调度的方案设计

目录 1、概述 2、原生调度原则 2.1 调度流程 2.2 调度策略 3、应用和服务概况 4、阿里云集群概况 4.1 集群概况 4.1 node节点的规划 4.1.1 阿里云ecs介绍 4.1.2 k8s集群节点选型原则 4.1.3 k8s集群节点池设计 5、调度策略的设计 5.1 原生调度类型的取舍 5.2 局部最优解理论 5....

十五、ES开启SSL访问

开启SSL访问的好处不用多说了吧,直接步入正题吧。 一、申请SSL证书 我使用的是阿里云免费申请的SSL证书,很不错的。 前提是需要购买一个域名,配置域名解析还有实名认证,接下来就是免费申请SSL证书了,具体可以看这篇文章。 审核通过后,会下载下来一个名为6269835_tzlinux.cn_nginx.zip的压缩包,tzlinux.cn是我注册的域名,...

使用Kibana 分析Nginx 日志并在 Dashboard上展示

一、Kibana之Visualize 功能 在首页上Visualize 标签页用来设计可视化图形。你可以保存之前在discovery中的搜索来进行画图,然后保存该visualize,或者加载合并到 dashboard 里。一个可视化可以基于以下几种数据源类型:一个新的交互式搜索一个已保存的搜索一个已保存的可视化 下面是kibana自带的几种visualiz...

在Kubernetes中部署GlusterFS+Heketi

目录 简介 Gluster-Kubernetes 部署 环境准备 下载相关文件 部署glusterfs 部署heketi server端 配置heketi client 简介 在上一篇《独立部署GlusterFS+Heketi实现Kubernetes共享存储》中,我们说明了如何手动部署GlusterFS+Heketi来提供Kubernetes...