日志就是一个大数据库
使用到
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: falsesetup.template.settings:
index.number_of_shards: 2output.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