k8s~fluentd从kafka到elk

Posted 敢于对过去告一个段落,才有信心掀开新的篇章!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s~fluentd从kafka到elk相关的知识,希望对你有一定的参考价值。

有时为了日志解耦,通常不把日志打到文件,而是直接打到kafka,而为了分析日志,我们可以通过sidecar的方式,把日志从kafka写入到es里,而通过kibana对日志进行分析。

我的k8s-fluentd的相关文章

k8s~部署EFK框架
k8s~为服务添加sidecar边斗
k8s~fluentd的configmap设置es索引前缀
ELK~fluentd多行日志的收集

使用docker的镜像

lypgcs/fluentd-es-kafka:v1.3.2

fluent.conf配置

可以添加configMap,扩展性更好,下面说一下配置的含义
名称是fluentd-config,内部文件名是fluent.conf

  • brokers 这是kafka的地址
  • consumer_group 消费组名称
  • format json 表示kafka里存储的是json格式
  • start_from_beginning true表示从头消费,false从最新的消息
  • topics 表示监控的主题,多个之间用逗号分开
  • tag 表示索引名称
  • flush_interval 刷新频率
  • logstash_format index是否使用logstash命名方式(logstash-%Y.%m.%d),默认不启用
  • logstash_prefix:logstash_format启用的时候,index命名前缀是什么。默认为logstash
  • include_tag_key true #把tag当做字段写入ES,如果需要自定义tag时,可以添加这项
  • tag_key @log_name
<source>
@type kafka_group
brokers test11:9092
consumer_group fluentd-k8s
format json
topics KC_AUTHORIZATION_POLICY,KC_AUTHORIZATION_POLICY_CREATE,KC_AUTHORIZATION_POLICY_DELETE,KC_AUTHORIZATION_POLICY_UPDATE,KC_AUTHORIZATION_RESOURCE_CREATE,KC_AUTHORIZATION_RESOURCE_DELETE,KC_CLIENT_LOGIN,KC_CLIENT_ROLE_MAPPING_CREATE,KC_CLIENT_ROLE_MAPPING_DELETE,KC_GROUP_CREATE,KC_GROUP_DELETE,KC_GROUP_MEMBERSHIP_CREATE,KC_LOGIN_ERROR,KC_LOGOUT,KC_REALM_ROLE_CREATE,KC_REALM_ROLE_MAPPING_CREATE,KC_REALM_ROLE_MAPPING_DELETE,KC_USER_ACTION,KC_USER_CREATE,KC_USER_DELETE,KC_USER_INFO_REQUEST,KC_USER_UPDATE,KC_CODE_TO_TOKEN_ERROR,KC_LOGIN
</source>

<match *>
@type elasticsearch
host 192.168.60.10
port 9200
logstash_format true
flush_interval 10s
logstash_prefix fluentd-log
</match>

k8s编排

apiVersion: apps/v1
kind: Deployment
metadata:
  name: fluentd-log-deployment
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: fluentd-log
  template:
    metadata:
      labels:
        app: fluentd-log
    spec:
      hostAliases:
        - ip: "192.168.10.11"
          hostnames: ["test11"]
      containers:
        - name: fluentd-log-controller
          image: lypgcs/fluentd-es-kafka:v1.3.2
          volumeMounts:
            - name: config-volume
              mountPath: /etc/fluent
      volumes:
        - name: config-volume
          configMap:
            name: kafka-fluentd
  #滚动升级策略
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0

基于fluentd风格的按日期为索引的命名

最后在kibana里的格式化后的数据

以上是关于k8s~fluentd从kafka到elk的主要内容,如果未能解决你的问题,请参考以下文章

FluentD 将日志从 kafka 转发到另一个 fluentD

k8s容器环境收集应用日志到已有的ELK日志平台

K8S 日志收集:在K8S创建fluentd的ds

ELK系列~log4-nxlog-Fluentd-elasticsearch写json数据需要注意的几点

ELK系列~对fluentd参数的理解

elk/elasticsearch+fluentd+kibana