说明
通过在运维平台上配置日志收集项,logAgent从etcd中获取要收集的日志信息从业务服务器读取日志信息,发往kafka,logTransfer负责从kafka读取日志,写入到Elasticsearch中,通过Kibana进行日志检索。系统性能数据的收集有Node_Exporter进行采集,Prometheus拉取入库,将告警信息推给AlertManager,最后通过Grafana进行可视化展示。
快速开发环境
使用docker-compose快速部署开发环境
version: "3"
networks:
app-kafka:
driver: bridge
services:
zookeeper:
container_name: zookeeper
image: zookeeper:3.4.14
restart: always
networks:
- app-kafka
kafka:
container_name: kafka
image: bitnami/kafka:2.4.0
restart: always
environment:
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
# 后面三条是暴露给外网使用
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,PLAINTEXT_HOST://:29092
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
ports:
- 127.0.0.1:9092:9092
# 外网使用29092进行访问
- 127.0.0.1:29092:29092
networks:
- app-kafka
-
读取日志文件
-
写入到kafka中
-
可以自行配置要收集的日志文件
-
从etcd中获取日志收集项
-
logAgent可以同时运行多个日志收集任务
-
实现实时配置项变更
-
根据当前服务器的IP地址获取配置项
-
实现日志入库到ES
-
使用第三方日志框架logrus保存日志
-
支持日志文件切割
-
加入消费组,支持多个topic
-
tail包从上次读取的位置开始读
logManager是有Beego框架搭建起来的web服务,主要是为了方便管理日志收集项
-
从后台界面添加主机和日志收集项
-
Cookie和Session实现
-
后台访问鉴权
-
CURD增删改查操作完成
-
使用redis进行缓存
-
实现从logManager进行添加/删除/修改日志收集项
-
logAgent获取logManager界面增删改的收集项
-
logManager使用redis进行缓存
-
logManager添加收集项之后将配置发给etcd
-
logAgent从etcd获取到收集项进行收集并监听变更
-
logTransfer从etcd获取配置写ES
Go运维开发之日志收集(3)根据etcd配置项创建多个tailTask
Go运维开发之日志收集(5)根据IP地址去拉取配置日志收集项