当您需要查看并分析Apache日志数据时,可以使用Filebeat采集日志数据,并通过阿里云Logstash过滤采集后的日志数据,最终传输到Elasticsearch中进行分析。本文介绍如何通过Filebeat采集Apache日志数据。
操作流程
步骤一:准备工作
- 创建阿里云Elasticsearch实例和Logstash实例,两者版本相同,并且在同一专有网络VPC(Virtual Private Cloud)下。 - 具体操作,请参见创建阿里云Elasticsearch实例和创建阿里云Logstash实例。 
- 开启阿里云Elasticsearch实例的自动创建索引功能。 - 出于安全考虑,阿里云Elasticsearch默认不允许自动创建索引。但是Beats目前依赖该功能,因此如果采集器Output选择为Elasticsearch,需要开启自动创建索引功能。具体操作,请参见配置YML参数。 
- 创建阿里云ECS实例,并且该ECS实例与阿里云Elasticsearch实例和Logstash实例处于同一VPC下。 - 具体操作,请参见自定义购买实例。 重要- Beats目前仅支持Alibaba Cloud Linux、RedHat和CentOS三种操作系统。 
- 阿里云Filebeat仅支持采集与阿里云Elasticsearch或Logstash同地域同VPC下ECS服务器的日志,不支持采集公网环境下的日志。 
 
- 在ECS实例上搭建Httpd服务。 - 为了便于通过可视化工具分析展示日志,建议在httpd.conf中将Apache日志格式定义为JSON格式,详情请参见手动搭建Magento2电子商务网站(Ubuntu)。本文的测试环境配置如下。 - LogFormat "{\"@timestamp\":\"%{%Y-%m-%dT%H:%M:%S%z}t\",\"client_ip\":\"%{X-Forwa rded-For}i\",\"direct_ip\": \"%a\",\"request_time\":%T,\"status\":%>s,\"url\":\"%U%q\",\"method\":\"%m\",\"http_host\":\"%{Host}i\",\"server_ip\":\"%A\",\"http_referer\":\"%{Referer}i\",\"http_user_agent\":\"%{User-agent}i\",\"body_bytes_sent\":\"%B\",\"total_bytes_sent\":\"%O\"}" access_log_json # 注销原有CustomLog修改为CustomLog "logs/access_log" access_log_json
- 在目标ECS实例上安装云助手和Docker服务。 - 具体操作,请参见安装云助手Agent和安装Docker。 
步骤二:配置并安装Filebeat采集器
- 进入Beats数据采集中心。 - 在顶部菜单栏处,选择地域。 
- 在左侧导航栏,单击Beats数据采集中心。 
- 可选:首次进入Beats数据采集中心页面,需要在服务授权对话框中查看提示信息,无误后单击确认,授权系统创建服务关联角色。 说明- Beats采集不同数据源中的数据时,依赖于服务关联角色以及角色规则。使用过程中请勿删除服务关联角色,否则会影响Beats使用。详细信息,请参见阿里云ES服务关联角色。 
 
- 在创建采集器区域单击ECS日志。 
- 配置并安装采集器。 
- 单击下一步。 
- 在采集器安装配置向导中,选择安装采集器的ECS实例。 说明- 选择准备工作中创建和配置的ECS实例。 
- 启动采集器并查看采集器安装情况。 - 单击启动。 - 启动成功后,系统弹出启动成功对话框。 
- 单击前往采集中心查看,返回Beats数据采集中心页面,在采集器管理区域中,查看启动成功的Filebeat采集器。 
- 等待采集器状态变为已生效1/1后,单击右侧操作列下的查看运行实例。 
- 在查看运行实例页面,查看采集器安装情况,当显示为心跳正常时,说明采集器安装成功。 
 
步骤三:配置Logstash管道过滤并同步数据
- 在阿里云Elasticsearch控制台的左侧导航栏,单击Logstash实例。 
- 单击目标Logstash实例右侧操作列下的管道管理。 
- 在管道管理页面,单击创建管道。 
- 配置管道。 - 参考如下示例配置管道,详细配置方法请参见通过配置文件管理管道。 - input { beats { port => 8000 } } filter { json { source => "message" remove_field => "@version" remove_field => "prospector" remove_field => "beat" remove_field => "source" remove_field => "input" remove_field => "offset" remove_field => "fields" remove_field => "host" remove_field => "message" } } output { elasticsearch { hosts => ["http://es-cn-mp91cbxsm00******.elasticsearch.aliyuncs.com:9200"] user => "elastic" password => "<YOUR_PASSWORD>" index => "<YOUR_INDEX>" } }- 参数 - 说明 - input - 接收Beats采集的数据。 - filter - 过滤采集的数据。通过JSON插件进行message数据解码,使用remove_field删除指定字段。 说明- 本文中的filter配置只适用于当前测试场景,不适用于所有的业务场景。请根据自身业务场景修改filter配置,关于filter支持的插件及每个插件的使用说明,请参见filter plugin。 - output - 将数据传输至阿里云Elasticsearch实例中。参数说明如下: - hosts:替换为您阿里云Elasticsearch实例的访问地址,可在实例的基本信息页面获取,详细信息请参见查看实例的基本信息。 
- <YOUR_PASSWORD>:替换为您阿里云Elasticsearch实例的访问密码。 
- <YOUR_INDEX>:替换为您定义的索引名称。 
 
步骤四:查看数据采集结果
- 登录目标阿里云Elasticsearch实例的Kibana控制台,根据页面提示进入Kibana主页。 - 登录Kibana控制台的具体操作,请参见登录Kibana控制台。 说明- 本文以阿里云Elasticsearch 6.7.0版本为例,其他版本操作可能略有差别,请以实际界面为准。 
- 在左侧导航栏,单击Dev Tools。 
- 在Console中,执行如下命令查看采集成功的数据。 - GET <YOUR_INDEX>/_search说明- <YOUR_INDEX>需要替换为在配置阿里云Logstash实例的管道时,output中所定义的索引名称。 
- 在左侧导航栏,单击Discover,选择一段时间,查看采集的数据详情。  说明 说明- 在查询前,请确保您已经创建了<YOUR_INDEX>的索引模式。否则需要在Kibana控制台中,单击Management,再选择Kibana区域中的,按照提示创建索引模式。 
