七米go语言日志收集的简单介绍

filebeat采集日志到kafka配置及使用Filebeat是elastic公司beats系列工具中七米go语言日志收集的一个,主要用于收集本地日志 。
在服务器上安装后 , filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化 , 不停的读) , 并且转发这些信息到配置文件中指定的输出端(例如七米go语言日志收集:elasticsearch,logstarsh或kafka) 。
Filebeat使用go语言开发 , 使用时没有其他依赖 , 比logstash-forworder轻量 , 不会占用部署服务器太多的资源 。
filebeat的工作流程:当你开启filebeat程序的时候,它会启动一个或多个探测器(prospectors)去检测你指定的日志目录或文件 , 对于探测器找出的每一个日志文件,filebeat启动收割进程(harvester),每一个收割进程读取一个日志文件的新内容 , 并发送这些新的日志数据到处理程序(spooler),处理程序会集合这些事件,最后filebeat会发送集合的数据到你指定的地点 。
2.配置filebeat
配置filebeat需要编辑filebeat的配置文件,不同安装方式,配置文件的存放路径有一些不同,对于 rpm 和 deb的方式, 配置文件路径的是 /etc/filebeat/filebeat.yml , 对于压缩包的方式,配置文件存在在解压目录下(例如:我是在home目录下进行的解压,那么配置文件的路径就应该是~/filebeat-6.2.4-linux-x86_64/filebeat.yml) 。
由于我的预期目标是将filebeat收集的日志发送到kafka,所以配置output就选择了kafka 。读者可根据自己的使用场景,配置output 。
例子中的配置将对/var/log目录下所有以.log结尾的文件进行采集 。
3.启动
本文中只是为满足需求对filebeat进行了最基本的配置 。filebeat的很多重要的配置和特性并没有体现(例如:模块,多行消息),读者如果需要更深入的了解请参考:。
欢迎大家在评论区讨论使用过程的心得和疑惑 。
没有类,C语言有结构体,那么Go的结构体有什么特别之处? Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念 。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性 。
自定义类型
【七米go语言日志收集的简单介绍】 在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型 ,  Go语言中可以使用type关键字来定义自定义类型 。
自定义类型是定义了一个全新的类型 。我们可以基于内置的基本类型定义,也可以通过struct定义 。例如:
通过Type关键字的定义 , MyInt就是一种新的类型,它具有int的特性 。
类型别名
类型别名是Go1.9版本添加的新功能 。
类型别名规定:TypeAlias只是Type的别名,本质上TypeAlias与Type是同一个类型 。就像一个孩子小时候有小名、乳名,上学后用学名 , 英语老师又会给他起英文名,但这些名字都指的是他本人 。
type TypeAlias = Type
我们之前见过的rune和byte就是类型别名,他们的定义如下:
类型定义和类型别名的区别
类型别名与类型定义表面上看只有一个等号的差异 , 我们通过下面的这段代码来理解它们之间的区别 。
结果显示a的类型是main.NewInt,表示main包下定义的NewInt类型 。b的类型是int 。MyInt类型只会在代码中存在 , 编译完成时并不会有MyInt类型 。
Go语言中的基础数据类型可以表示一些事物的基本属性,但是当我们想表达一个事物的全部或部分属性时,这时候再用单一的基本数据类型明显就无法满足需求了,Go语言提供了一种自定义数据类型,可以封装多个基本数据类型 , 这种数据类型叫结构体,英文名称struct 。也就是我们可以通过struct来定义自己的类型了 。

推荐阅读