Beat简介

在ELK中beats是用于数据采集的工具,相较于logstash,beats是更轻量级的工具。Beats 平台集合了多种单一用途数据采集器。这些采集器安装后可用作轻量型代理,从成百上千或成千上万台机器向 Logstash 或 Elasticsearch 发送数据。

应用日志对接 - 图1

Beats平台提供了如下的几种具体收集日志的工具

工具名称对应解释
Filebeat日志文件
Metricbeat指标
Packetbeat网络数据
Winlogbeatwindows事件日志
Auditbeat审计数据
Heartbeat运行心跳监控

FileBeat简介

  • 概述
    Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到elasticsearch或者logstarsh中存放。

  • 工作流程
    当你开启filebeat程序的时候,它会启动一个或多个探测器(prospectors)去检测你指定的日志目录或文件,对于探测器找出的每一个日志文件,filebeat启动收割进程(harvester),每一个收割进程读取一个日志文件的新内容,并发送这些新的日志数据到处理程序(spooler),处理程序会集合这些事件,最后filebeat会发送集合的数据到你指定的地点。

如图

应用日志对接 - 图2

更多详情参考官方文档

云帮应用日志收集实践

插件制作

插件是以容器形式运行在云帮上的,所以制作插件就是制作一个可运行的镜像。我们以FileBeat为例 (本文中的日志收集工具除特殊说明以外均为FileBeat工具)

dockerfile编写

云帮插件支持docker镜像和dockerfile两种创建的方式。这里我们以dockerfile为例。FileBeat官方提供了docker镜像,因此我们只需在原来的镜像基础上进行定制化即可。这里提供了云帮目前的日志收集插件的dockerfile。

创建插件

在云帮左侧连接中点击我的插件,然后点击新建插件,便可指定创建插件的类型。

应用日志对接 - 图3

应用日志对接 - 图4

对于dockerfile创建的插件,主要填写源代码的地址即可。填写完相关信息以后,点击创建插件按钮即可。在此之后,还需要对插件进行构建,插件的创建和应用不一样,插件不会自动构建,需要手动进行此操作。如图-插件构建

应用日志对接 - 图5

配置

在上面提供的代码中,我们主要修改的配置有elasticsearch的用户名,密码,连接信息,以及对应的日志配置地址信息。具体修改的配置可参考下文中应用日志收集插件的详情。在FileBeat插件中主要以环境变量的方式来配置插件运行环境。关于FileBeat插件的配置可以参考官网文档插件构建完成后,我们需要根据在代码中提供的获取参数的方式来进行配置,在FileBeat中,插件的配置是通过环境变量来进行配置的,关于FileBeat使用环境变量配置可以参考Filebeat对环境变量的引用

云帮应用日志收集插件提供的参数中主要如下

配置项默认值详细说明
ES_HOST127.0.0.1es连接地址
ES_PORT9200es连接端口
KIBANA_HOST127.0.0.1kibana连接地址
KIBANA_PORT5601kibana连接端口
ES_USERNAMEelastices用户名
ES_PASSchangemees用户名密码
INPUT_PATH/var/log/nginx/.log日志地址
NGINX_ACCESS_PATH/var/log/nginx/access.lognginx访问地址
NGINX_ERROR_PATH/var/log/nginx/error.lognginx错误日志地址
APACHE2_ACCESS_LOG_PATH/var/log/apache2/access.logapache访问日志地址
APACHE2_ERROR_LOG_PATH/var/log/apache2/error.logapache访问错误日志地址
MYSQL_ERROR_LOG/var/log/mysql/error.logmysql错误日志地址
MYSQL_SLOW_LOG/var/log/mysql/mysql-slow.logmysql查询日志地址
MONGODB_LOG/var/log/mongodb/.logmongodb日志地址
INDEX_NAMEfilebeatelastic建立索引名称

配置完成后应用即可安装此插件进行日志收集。

云帮日志收集插件使用

云帮默认的应用日志收集插件为您提供了基于nginxmysqlapachemongoDB的日志分析。下面的案例我们主要以nginx为例进行说明

安装ES和KIBANA

在云帮应用市场中搜索 elasticsearch_kibana 即可找到elasticsearch和kibana的应用组。如图

应用日志对接 - 图6

安装完成后,访问elasticsearch的访问地址会得到类似如下的信息

应用日志对接 - 图7

访问kibana的访问地址会得到如下信息

应用日志对接 - 图8

后面会详细讲述有关kibana的使用。

安装日志收集插件

  • 安装插件

我的插件中从内部市场安装应用日志收集插件

应用日志对接 - 图9

  • 应用安装插件

在应用的插件页面,选择应用日志收集插件进行安装

应用日志对接 - 图10

  • 配置

在应用日志安装完成后,我们需要针对已安装的elasticsearch和kinban的链接信息,以及nginx的配置信息做一些调整,如下。

应用日志对接 - 图11

关于配置的详细说明可参考上文中应用日志收集插件提供的参数信息。

配置完成后重启应用即可。

kibana查看分析结果

以上操作做完后,就可以在Kibana中查看日志的信息结果了。

  • 登录kibana

打开kibana的界面,需要进行用户登录,登录的密码为elasticsearcha的用户名和密码,您可以在elasticsearch的链接信息中查询看到。

应用日志对接 - 图12

  • 查找对应模板

熟悉kibana的朋友应该知道,初次使用时,需要创建索引 .但是使用应用日志收集插件,此过程会自动完成,创建索引的过程已在插件中默认完成。

应用日志对接 - 图13

如果所示, filebeat-* 为系统默认创建名称,如果您想修改,可以在插件的配置项中修改INDEX_NAME的值。

  • 分析结果查看

对于Nginx日志,我们直接可以在kibana的Discover中查看分析结果,如图所示

应用日志对接 - 图14

kibana会根据默认的nginx日志模板分析出相应的nginx访问参数。

也可以在Dashboard中查看访问日志的图表展示信息,如图

应用日志对接 - 图15

图中展示了nginx的用户访问量和访问错误信息,以及访问使用的客户端,点击相应的详情还能看到更多信息。 更多关于kibana的使用可以参考官网文档

进阶

参考此例和Filebeat官方文档您可以创建您自己的应用日志收集插件,根据Kibana官网文档,您也可以根据自己的需求,绘画出属于自己的图表展示结果。