IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> filebeat推送消息到kafka-k8s sidecar -> 正文阅读

[大数据]filebeat推送消息到kafka-k8s sidecar

完整示例

本示例为:使用filebeat将apisi的日志发送到kafka中

完整配置文件如下:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: apisix
  namespace: apisix
spec:
  replicas: 1
  strategy:
    rollingUpdate:  #由于replicas为3,则整个升级,pod个数在2-4个之间
      maxSurge: 1
      maxUnavailable: 1
  template:
    metadata:
      labels:
        app: apisix
    spec:
      containers:
      - name: filebeat
        image: docker.elastic.co/beats/filebeat:6.3.2
        args: [
          "-c", "/etc/filebeat/filebeat.yml",
          "-e",
        ]
        volumeMounts:
        - name: app-logs
          mountPath: /log
        - name: apisix-filebeat-config
          mountPath: /etc/filebeat/
      - name: apisix
        image: apisix
        command: ["sh","/startup.sh"]
        volumeMounts:
          - name: host-time
            mountPath: /etc/localtime
          - name: app-logs
            mountPath: /home
        env:
          - name: ADMIN_KEY
            value: 9b2498a6db1d11eb9d03fa16486175d7
          - name: BAYMAX_APP_LOG_MNT_DIR
            value: "/home"
          - name: ETCD_ENDPOINT_1
            value: "http://192.24.24.122:2379"
          - name: ETCD_ENDPOINT_2
            value: "http://192.24.24.110:2379"
          - name: ETCD_ENDPOINT_3
            value: "http://192.24.24.111:2379"
          - name: ETCD_PREFIX
            value: /apisix
          - name: ETCD_PWD
            value: root
          - name: ETCD_USER
            value: root
        ports:
          - name: port1
            containerPort: 9080
            protocol: TCP
          - name: port2
            containerPort: 9180
            protocol: TCP
          - name: port3
            containerPort: 9090
            protocol: TCP
        livenessProbe:
          tcpSocket:
            port: 9080
          initialDelaySeconds: 120
          periodSeconds: 30
        resources:
          limits:
            cpu: "2"
            memory: 1.5Gi
          requests:
            cpu: "0.03"
            memory: 1.0Gi
      volumes:
      - name: host-time
        hostPath:
          path: /etc/localtime
      - name: app-logs
        emptyDir: {}
      - name: apisix-filebeat-config
        configMap:
          name: apisix-filebeat-config
      nodeSelector:
        productline:  apisix
---
apiVersion: v1
kind: Service
metadata:
  name: apisix
  namespace: apisix
spec:
  ports:
    - name: port1
      protocol: TCP
      port: 9080
      nodePort: 30141
    - name: port2
      protocol: TCP
      port: 9180
      nodePort: 30142
    - name: port3
      protocol: TCP
      port: 9090
      nodePort: 30143
  selector:
    app: apisix
  type: NodePort
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: apisix-filebeat-config
  namespace: apisix
data:
  filebeat.yml: |
    filebeat.inputs:
    - type: log
      paths:
        - "/log/access.log"
      fields:
        log_source: access-apisix-log
    - type: log
      paths:
        - "/log/error.log"
      fields:
        log_source: error-apisix-log
    output.kafka:
      hosts: ["100.94.17.118:9095","100.94.12.134:9095","100.94.13.18:9095"]
      topic: 'apisix-filebeat-plugin-log'

配置解析

filebeat容器与服务容器共享空间获取日志

1.两个容器挂载emptyDir从而实现数据共享

volumes类型:emptyDir

以下emptyDir接解释参考:https://blog.csdn.net/qq_33591903/article/details/103529274

????????a) emptyDir的生命周期与所属的pod相同。pod删除时,其emptyDir中的数据也会被删除。

????????b) emptyDir类型的volume在pod分配到node上时被创建,kubernetes会在node上自动分配 一个目录,因此无需指定宿主机node上对应的目录文件。

????????c) emptyDir Volume主要用于某些应用程序无需永久保存的临时目录,多个容器的共享目录等。

volumes配置

      volumes:
      - name: host-time
        hostPath:
          path: /etc/localtime
      - name: app-logs
        emptyDir: {}
      - name: apisix-filebeat-config
        configMap:
          name: apisix-filebeat-config

启动filebeat sidecar

      - name: filebeat
        image: docker.elastic.co/beats/filebeat:6.3.2
        args: [
          "-c", "/etc/filebeat/filebeat.yml",
          "-e",
        ]
        volumeMounts:
        - name: app-logs
          mountPath: /log
        - name: apisix-filebeat-config
          mountPath: /etc/filebeat/

apisix(服务)挂载emptyDir

        volumeMounts:
          - name: host-time
            mountPath: /etc/localtime
          - name: app-logs
            mountPath: /home

ConfigMap-创建filebeat配置

apiVersion: v1
kind: ConfigMap
metadata:
  name: apisix-filebeat-config
  namespace: apisix
data:
  filebeat.yml: |
    filebeat.inputs:
    - type: log
      paths:
        - "/log/access.log"
      fields:
        log_source: access-apisix-log
    - type: log
      paths:
        - "/log/error.log"
      fields:
        log_source: error-apisix-log
    output.kafka:
      hosts: ["100.94.17.118:9095","100.94.12.134:9095","100.94.13.18:9095"]
      topic: 'apisix-filebeat-plugin-log'

inputs中fields来添加一些额外的标签

output.kafka常用参数:hosts、topic

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-15 23:47:47  更:2021-07-15 23:47:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/8 0:01:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码