# 日志转发 **Repository Path**: N-Ghost/log_forwarding ## Basic Information - **Project Name**: 日志转发 - **Description**: 把日志内容从NSQ消息队列中读取,发送到ES中,配合 https://gitee.com/nastyghost/log_agent 项目使用 - **Primary Language**: Go - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-07-02 - **Last Updated**: 2021-11-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 日志转发 #### 介绍 把日志内容从NSQ消息队列中读取,发送到ES中,配合 https://gitee.com/nastyghost/log_agent 项目使用 #### 软件架构 - util包下面是一些零碎工具,日志包用的是`github.com/sirupsen/logrus` - `etcd`包:初始化etcd地址,获取配置放到结构体对象中,供`nsqmgr`初始化的时候调用。`WatchConf`监视配置变化,根据变化来创建新的nsq连接把日志数据发送到ES中。 **不过目前增加能实现,删除配置还需要重启程序** - `nsq`包:nsq就是构造结构体对象的同时,初始化消费者`InitNSQConsumer`,调用`SendToChan`的函数,先把从消息队列读取的日志数据缓存到通道中。 - `nsqmgr`包:定义了一个etcd的配置信息的结构体对象,遍历这个对象,获取配置,根据配置来执行每一个`nsq`下的`LogHandler`。 - `es`包:`ElasticSearch`弹性搜索,用的是7+版本,初始化ES地址后,就启动一个goroutine,把通道里的日志数据发送到es中。 #### 安装教程 1. nsq消息队列,可以和`log_forwarding`共用一个集群,日志转发,**前只支持nsqlookup,同时是单节点。** 启动nsqlookupd,`nsqlookupd`是`nsqd`的管理者,启动后默认监听4160和4161端口 ```sh ./nsqlookupd -broadcast-address=本机IP地址 ``` 启动NSQD守护进程,`nsqd`接收、排队、并向客户端发送消息。默认监听4151和4150端口。 ```sh ./nsqd -broadcast-address=本机地址 -lookupd-tcp-address=“nsqlookup地址”:4160 ``` 启动nsqadmin,这是一个执行各种管理任务的web界面,需要指定lookup地址。默认监听4171端口。 ```sh ./nsqadmin -lookupd-http-address=“nsqlookup地址”:4161 ``` 2. etcd服务发现,可以和`log_forwarding`共用一个集群 目前还日志收集还不支持集群,单机部署: ```sh ./etcd --initial-advertise-peer-urls http://0.0.0.0:2380 --listen-peer-urls http://0.0.0.0:2380 \ --advertise-client-urls http://0.0.0.0:2379 --listen-client-urls http://0.0.0.0:2379 ``` 图形化管理etcd可以使用`etcdkeeper`这个工具,docker安装相对方便。 3. es和kibana,ES端口9200,kibana端口5601,就先不写了。 #### 使用说明 1. 解压后要对`log_forwarding`程序添加启动权限: ```sh chmod 744 log_forwarding ``` 2. `conf.yaml`配置文件不能换目录,不能改名,否则会找不到 3. `etcd`中每个配置为json格式,`nsqllookup`如果只有一个节点的话在数组模式下写一个就行,比如: ```json [ { "addr": [ "10.1.1.7:4161", "10.1.1.58:4161" ], "topic": "web_ip33", "channl": "tomcat_ip33" }, { "addr": [ "10.1.1.7:4161", "10.1.1.58:4161" ], "topic": "oa_ip33", "channl": "tomcat_ip33" }, { "addr": [ "10.1.1.7:4161", "10.1.1.58:4161" ], "topic": "ec_ip33", "channl": "tomcat_ip33" } ] ``` #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)