通过Filebeat将nginx日志输出至Elasticsearch Serverless
当您需要查看并分析nginx的日志时,可通过Filebeat采集nginx日志到阿里云Elasticsearch Serverless中,然后在控制台中完成可视化查询、分析和展示。本文介绍具体的实现方法。
操作流程
步骤一:环境准备
开通阿里云Elasticsearch Serverless服务,并创建应用和日志类型的数据流。
安装并启动nginx服务。
本文使用阿里云ECS实例安装nginx服务。在安装前需要先创建阿里云ECS实例,具体操作请参见自定义购买实例。
连接ECS实例。
具体操作请参见通过密码或密钥认证登录Linux实例。
说明本文档以普通用户权限为例。
安装nginx。
sudo yum -y install nginx
启动nginx。
sudo systemctl start nginx
步骤二:安装并配置Filebeat
连接ECS实例。
具体操作请参见通过密码或密钥认证登录Linux实例。
说明本文档以普通用户权限为例。
安装Filebeat。
下载Filebeat安装包。
sudo wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.5.3-linux-x86_64.tar.gz
解压。
sudo tar -zxf filebeat-8.5.3-linux-x86_64.tar.gz
修改Filebeat配置文件。
进入Filebeat目录。
cd filebeat-8.5.3-linux-x86_64
新建Filebeat配置文件(示例文件名称为fb2serverless.yml)。
sudo vim fb2serverless.yml
在Filebeat配置文件中添加以下脚本。
filebeat.inputs: - type: log enabled: true paths: - /var/log/nginx/access.log - type: filestream enable: false paths: - /var/log/nginx/access.log multiline.type: pattern multiline.pattern: '^[[:space:]]+(at|\.{3})[[:space:]]+\b|^Caused by:' multiline.negate: false multiline.match: after filebeat.config.modules: # Glob pattern for configuration loading path: ${path.config}/modules.d/*.yml reload.enabled: false output.elasticsearch: # Array of hosts to connect to. hosts: ["https://es-serverless-cn-hangzhou.aliyuncs.com:443"] allow_older_versions: true setup.ilm.enabled: false setup.template.enabled: false output.elasticsearch.headers: X-Api-Key: ***** X-Xops-App-Name: zjy-test X-Xops-Data-Stream-Name: test_filebeat X-Xops-Data-Type: logs
部分参数说明如下:
参数
说明
filebeat.inputs
配置Filebeat的输入信息。type需要配置为log,paths为具体的文件路径。本文以nginx的访问日志为例,path配置为/var/log/nginx/access.log。
重要您还需要配置type为filestream类型的enable值为false,否则无法正常上传。
multiline
处理跨行信息采集的配置,详细信息请参见Manage multiline messages。
filebeat.config.modules
加载目录中启用的模块配置。
output.elasticsearch
输出端Elasticsearch配置:
setup.ilm.enabled
创建的新索引是否启用索引生命周期管理。需要配置为false。
setup.template.enabled
是否加载Elasticsearch索引模板。需要配置为false。
output.elasticsearch.headers
Serverless数据流的配置:
启动Filebeat ,并将日志输出到fb2serverless.log中。
sudo nohup ./filebeat -e -c fb2serverless.yml > fb2serverless.log 2>&1 &
说明如果无法传输数据,可以查看fb2serverless.log文件内容分析原因。
步骤三:在Elasticsearch Serverless服务控制台查看日志信息
在左侧导航栏,单击应用管理。
在应用列表中,单击目标应用名称。
在左侧导航栏,选择 。
在日志查询页面,选择目标数据流,查看该数据流的日志。
更多详细信息,请参见日志查询。
常见问题
Q:用Filebeat推送数据时,Filebeat的日志里出现一条log.level
报错,是什么原因?
A:日志中出现以下报错信息,您忽略即可,该报错不影响ES推送数据。
{"log.level":"error","@timestamp":"2023-04-28T10:14:23.121+0800","log.logger":"elasticsearch","log.origin":{"file.name":"elasticsearch/client.go","file.line":387},"message":"expected item response object","service.name":"filebeat","ecs.version":"1.6.0"}