- Notifications
You must be signed in to change notification settings - Fork15
Go语言实现的日志收集服务,由LogAgent、LogTransfer和LogManager三部分组成。
License
hzde0128/logCollect
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
说明
通过在运维平台上配置日志收集项,logAgent从etcd中获取要收集的日志信息从业务服务器读取日志信息,发往kafka,logTransfer负责从kafka读取日志,写入到Elasticsearch中,通过Kibana进行日志检索。系统性能数据的收集有Node_Exporter进行采集,Prometheus拉取入库,将告警信息推给AlertManager,最后通过Grafana进行可视化展示。
快速开发环境
使用docker-compose快速部署开发环境
version:"3"networks:app-kafka:driver:bridgeservices:zookeeper:container_name:zookeeperimage:zookeeper:3.4.14restart:alwaysnetworks: -app-kafkakafka:container_name:kafkaimage:bitnami/kafka:2.4.0restart:alwaysenvironment: -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:29092ports: -127.0.0.1:9092:9092# 外网使用29092进行访问 -127.0.0.1:29092:29092networks: -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地址去拉取配置日志收集项
About
Go语言实现的日志收集服务,由LogAgent、LogTransfer和LogManager三部分组成。