通过kafka和filebeat收集日志 再保存到clickhouse 最后通过grafana展现

  • Post author:
  • Post category:其他


日志就是一个大数据库


使用到



golang




clickhouse kafka filebeat grafana


filebeat

filebeat是通过docker部署的,把要收集的日志目录持到容器中,filebeat自动读取文件并送到kafka中去.日志格式为json.filebeat按行读取

通过docker-compose部署filebeat 文件如下

# filebeat的docker-compose文件
version: '3'
services:
  myFileBeat:
    image: elastic/filebeat:8.3.3
    restart: always
    container_name: filebeat01
    hostname: filebeat01
    user: root
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - $PWD/data_lib:/var/lib/filebeat:rw #存放日志文件读取偏移量
      - $PWD/data_data:/usr/share/filebeat/data:rw #存放日志文件读取偏移量
      - $PWD/data_logs:/usr/share/filebeat/logs:rw #存放filebeat本身的日志
      - $PWD/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro #filebeat配置文件
      - $PWD/crts:/crts:ro #连接kafaka使用的证书
      - /opt/appName/logs:/logs/appName:ro #要收集的日志地址

filebeat的配置文件如下

filebeat.inputs:

– type: log

id: myAppLog

enabled: true

encoding: utf-8

paths:

– /logs/*/*.log       #可以监控一整个目录及子目录

fields:

tag: ‘myNewApp’    #自定义tag 这个tag会随消息传递

filebeat.config.modules:

path: ${path.config}/modules.d/*.yml

reload.enabled: false

setup.template.settings:

index.number_of_shards: 2

output.kafka:

# 连接到kafka的配置 这里通过证书进行客户端认证

hosts: [ “kafka01.example.top:9092” ]

topic: all_log

partition.round_robin:

reachable_only: true

ssl.enabled: true

ssl.key: “/crts/filebeat.key”

ssl.certificate: “/crts/filebeat.crt”

ssl.certificate