前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Beats:运用 Filebeat module 分析 nginx 日志

Beats:运用 Filebeat module 分析 nginx 日志

作者头像
腾讯云大数据
修改于 2021-01-08 08:28:21
修改于 2021-01-08 08:28:21
4.9K00
代码可运行
举报
运行总次数:0
代码可运行

腾讯云 Elasticsearch Service】高可用,可伸缩,云端全托管。集成X-Pack高级特性,适用日志分析/企业搜索/BI分析等场景


在之前的文章中,我介绍了如何使用 Filebeat 把一个日志文件直接写入到 Elasticsearch 中,或通过 Logstash 的方法写到Elasticsearch 中。在今天的文章中,我们来介绍如何运用 Filebeat 来把 nginx 日志导入到 Elasticsearch 中,并进行分析。

Filebeat 模块为你提供了一种快速处理常见日志格式的快速方法。 它们包含默认配置,Elasticsearch 接收节点管道定义和 Kibana 仪表板,以帮助你实施和部署日志监视解决方案。

Filebeat 提供了几种不同的方式来启用模块。 你可以:

  • 在 modules.d 目录中启用模块配置
  • 运行 Filebeat时 启用模块
  • 在 filebeat.yml 文件中启用模块配置

今天我们采用第一种方法来展示如何使用 Filebeat 所提供的模块功能来对 nginx 日志进行分析。

下载测试数据

我已经上传了一个测试数据,它位于:https://github.com/liu-xiao-guo/nginx_log_file。我们可以通过如下的方法来下载这个测试数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/liu-xiao-guo/nginx_log_file

等我们把测试数据克隆下来后,我们可以通过如下的方法来解压,并把它存于到一个我们喜欢的目录中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
unzip nginx.zip

我们发现它里面含有一个叫做 nginx.log 的文件。它的大小有 227M。它里面含有1万个 nginx 的日志。

如何得到安装帮助

我们可以先打开我们的Kibana,并点击Kibana左上角的home图标:

点击 “Add log data”,然后,我们可以看到:

点击 “Nginx logs”,然后,你就就可以看到比较全的安装步骤:

在上面,我们根据自己的平台选择适合自己的安装方式。

安装Filebeat

我们可以根据不同的操作系统来进行如下不同的安装:

deb:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.1-amd64.deb
sudo dpkg -i filebeat-7.3.1-amd64.deb

rpm:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.1-x86_64.rpm
sudo rpm -vi filebeat-7.3.1-x86_64.rpm

mac:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.1-darwin-x86_64.tar.gz
tar xzvf filebeat-7.3.1-darwin-x86_64.tar.gz

brew:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
brew tap elastic/tap
brew install elastic/tap/filebeat-full

linux:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.1-linux-x86_64.tar.gz
tar xzvf filebeat-7.3.1-linux-x86_64.tar.gz

这样我们的Filebeat就安装好了。请注意:由于ELK迭代比较快,我们可以把上面的版本7.3.1替换成我们需要的版本即可。我们先不要运行Fliebeat。

使用Filebeat模块

当我们安装完 Filebeat 后,我们可以看到在 Filebeat 的安装目录下的文件结果如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ pwd
/Users/liuxg/elastic/filebeat-7.3.0-darwin-x86_64
(base) localhost:filebeat-7.3.0-darwin-x86_64 liuxg$ ls -F
LICENSE.txt        filebeat.reference.yml    filebeat_es.yml
NOTICE.txt        filebeat.template.json    kibana/
README.md        filebeat.yml        logs/
data/            filebeat1.yml        module/
fields.yml        filebeat2.yml        modules.d/
filebeat*        filebeat_apache.yml    sample.log

在这里,我们可以看到它里面有一个叫做 filebeat.yml 的配置文件,还有一个叫做 modules.d 的文件夹。在 filebeat.yml 中,我们做如下的修改:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
setup.kibana:
  host: "localhost:5601"
output.elasticsearch:
  hosts: ["localhost:9200"]

在这里,我们把 host 都指向我们的 localhost,这是因为我们的 elasticsearch 及 Kibana 都安装在本地的电脑上。这两个地址需要根据自己实际的部署的地址改变而改变。

显示 Filebeat 支持的模块

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ ./filebeat modules list
Enabled:
nginx
Disabled:
apache
auditd
cisco
coredns
elasticsearch
envoyproxy
googlecloud
haproxy
icinga
iis
iptables
kafka
kibana
logstash
mongodb
mssql
mysql
nats
netflow
osquery
panw
postgresql
rabbitmq
redis
santa
suricata
system
traefik
zeek

我们可以看出来目前已经被启动的模块是 nginx。它可以通过如下方式来启动:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./filebeat modules enable nginx

当然我们也可以通过如下的方式来关闭这个模块:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./filebeat modules disable nginx

针对我们今天的练习,我们需要启动 nginx 模块。

我们可以通过如下的命令查看在 modules.d 目录下的文件变化:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ pwd
/Users/liuxg/elastic/filebeat-7.3.0-darwin-x86_64
(base) localhost:filebeat-7.3.0-darwin-x86_64 liuxg$ ls modules.d
apache.yml.disabled        mssql.yml.disabled
auditd.yml.disabled        mysql.yml.disabled
cisco.yml.disabled        nats.yml.disabled
coredns.yml.disabled        netflow.yml.disabled
elasticsearch.yml.disabled    nginx.yml
envoyproxy.yml.disabled        osquery.yml.disabled
googlecloud.yml.disabled    panw.yml.disabled
haproxy.yml.disabled        postgresql.yml.disabled
icinga.yml.disabled        rabbitmq.yml.disabled
iis.yml.disabled        redis.yml.disabled
iptables.yml.disabled        santa.yml.disabled
kafka.yml.disabled        suricata.yml.disabled
kibana.yml.disabled        system.yml.disabled
logstash.yml.disabled        traefik.yml.disabled
mongodb.yml.disabled        zeek.yml.disabled

我们可以看到 nginx.yml 文件的最后没有 “disabled” 字样,表明它已经被启动成功。我们进一步编辑这个 nginx.yml 文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Module: nginx
# Docs: https://www.elastic.co/guide/en/beats/filebeat/7.3/filebeat-module-nginx.html
- module: nginx
  # Access logs
  access:
    enabled: true
    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    var.paths: ["/Users/liuxg/data/nginx.log"]
  # Error logs
  error:
    enabled: true
    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    #var.paths: ["/var/log/nginx/error.log"]

在这里,我把文件路径 /Users/liuxg/data/nginx.log 写入到该文件,这是因为我的 nginx.log 文件是位于这个路径的。这个路径需要你依据把 nginx 的日志文件路径改变而改变。

启动模块

为了能够使得我们的 nginx 模块能够正确地被 Kibana 显示,我们必须运行如下的命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./filebeat setup
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ pwd
/Users/liuxg/elastic/filebeat-7.3.0-darwin-x86_64
(base) localhost:filebeat-7.3.0-darwin-x86_64 liuxg$ ./filebeat setup
Index setup finished.
Loading dashboards (Kibana must be running and reachable)
Loaded dashboards
Loaded machine learning job configurations
Loaded Ingest pipelines

注意:在安装或升级 Filebeat 时,或在启用新模块后,必须执行 setup 命令

运行Filebeat

上面我们已经配置好,下面我们通过如下的命令来把我们的 nginx 日志导入到我们的 Elasticsearch 中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./filebeat -e

我们可以在 Kibana的 “Dev tools” 可以看到最新被创建的 index:

这里的 filebeat-7.3.0 是一个 alias,它指向我们刚被创建的一个 index,比如 filebeat-7.3.0-2019.09.28-000001。

在这里显示的数据是10,000,其实这不是一个真实的文档的数目。它的真实的文档个数是:

这里要注意的一件事是响应中的 hits.total。 它具有10,000和 “relation” =“ gte” 的值。 索引中实际上有 984,887 个文档,我们已经创建了全部。 在 7.0 版发布之前,hits.total 始终用于表示符合查询条件的文档的实际数量。 在 Elasticsearch 7.0 版中,如果匹配数大于10,000,则不会计算 hits.total。 这是为了避免为给定查询计算精确匹配文档的不必要开销。 我们可以通过将 track_total_hits = true 作为请求参数来强制进行精确匹配的计算。

一旦数据被导入到 Elasticsearch 中,我们就可以开始对数据进行分析了。

运用 Kibana 来分析数据

在之前我们已经通过 ./filebeat setup 命令,已经把针对 nginx 的模块仪表盘导入到 Kibana 中了。下面我们就可以使用标准的 dashboard 来对 nginx 数据进行展示及分析。

打开 Discover 查看数据,index pattern 选择 filebeat-*,把时间选择到2018年10月-2018年12月停止

————————————————

版权声明:本文为CSDN博主「Elastic 中国社区官方博客」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://elasticstack.blog.csdn.net/article/details/101604717


最新活动

包含文章发布时段最新活动,前往ES产品介绍页,可查找ES当前活动统一入口

Elasticsearch Service自建迁移特惠政策>>

Elasticsearch Service 新用户特惠狂欢,最低4折首购优惠 >>

Elasticsearch Service 企业首购特惠,助力企业复工复产>>

关注“腾讯云大数据”公众号,技术交流、最新活动、服务专享一站Get~

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
30个类手写Spring核心原理之自定义ORM(上)(6)
说到ResultSet,有Java开发经验的“小伙伴”自然最熟悉不过了,不过我相信对于大多数人来说也算是“最熟悉的陌生人”。从ResultSet取值操作大家都会,比如:
Tom弹架构
2021/12/16
5530
用建造者模式实现一个防SQL注入的ORM框架
以构建一门课程为例,一个完整的课程由PPT课件、回放视频、课堂笔记、课后作业组成,但是这些内容的设置顺序可以随意调整,我们用建造者模式来代入理解一下。首先创建一个产品类Course。
Tom弹架构
2021/10/28
9910
手写一个orm框架-6
上一篇里我们实现了生成insert的sql,下面要开始实现update,delete,select的sql语句了。但是这些语句有一个比较麻烦的地方是:它们一般后面都会有where条件,因为在执行的时候不能把表里所有的数据都进行操作。
何白白
2019/06/28
4850
Hibernate 5 通用基础DAO父类
发表于2017-05-152019-01-01 作者 wind /* * Copyright (c) 2017 西安才多信息技术有限责任公司。 * 项目名称:dev-admin * 文件名称:HibernateBaseDaoImpl.java * 日期:17-5-31 下午6:39 * 作者:yangyan * */ package cn.firegod.common.hibernate; import cn.firegod.common.Page; import cn.firego
前Thoughtworks-杨焱
2021/12/07
5820
聊聊spring jdbc的RowMapper
spring-jdbc-4.3.10.RELEASE-sources.jar!/org/springframework/jdbc/core/RowMapper.java
code4it
2018/09/17
1.5K0
30个类手写Spring核心原理之MVC映射功能(4)
接下来我们来完成MVC模块的功能,应该不需要再做说明。Spring MVC的入口就是从DispatcherServlet开始的,而前面的章节中已完成了web.xml的基础配置。下面就从DispatcherServlet开始添砖加瓦。
Tom弹架构
2021/12/14
7120
4. 自定义DBUtils
在上一章节,我们使用 Apache-DBUtils 实现了数据库的增删查改,的确使用起来很方便。但是除了方便之余,我们还要思考一下这个 Apache-DBUtils 是如何实现的。
Devops海洋的渔夫
2021/10/12
7500
[Spring] 30个类手写 Spring Mini 版本系列(二)
为了更深入的了解 Spring 的实现原理和设计思想,一直打算出个系列文章,从零开始重新学习 Spring。在[Spring] 30个类手写 Spring Mini 版本系列(一)中,我们直接通过 Servlet API 初步实现了 Spring 的简易版。针对V1.1.0版,今天我们来做下优化,主要针对主要流程节点进行初步的方法封装,便于后续模块设计。
架构探险之道
2020/05/13
4330
用300行代码手写提炼Spring核心原理
为了解析方便,我们用application.properties来代替application.xml文件,具体配置内容如下:
Tom弹架构
2022/04/25
2590
用300行代码手写提炼Spring核心原理
[Spring] 30个类手写 Spring Mini 版本系列(一)
为了更深入的了解 Spring 的实现原理和设计思想,一直打算出个系列文章,从零开始重新学习 Spring。有兴趣的小伙伴可以持续关注更新。
架构探险之道
2020/04/26
5270
30个类手写Spring核心原理之AOP代码织入(5)
前面我们已经完成了Spring IoC、DI、MVC三大核心模块的功能,并保证了功能可用。接下来要完成Spring的另一个核心模块—AOP,这也是最难的部分。
Tom弹架构
2021/12/14
3350
cassandra 数据到Java对象的映射绑定
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/108639.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/20
2.5K0
Java之自定义排序工具类
在项目开发中,经常会遇到需要对一个复杂对象的集合进行规则排序,可能需要根据某一字段排序,也可能需要根据某些字段排序,导致冗余的代码看起来既复杂又繁琐。因此,我们可以通过封装一个通用的工具类,来针对所有的复杂对象进行抽象处理。 这样会使你的代码显得更加具备通用性,并且可适配。
23号杂货铺
2019/09/27
1.8K0
Java之自定义排序工具类
长文干货 | 手写自定义持久层框架!
创建两个JavaBean对象 用于存储解析的配置文件的内容(Configuration.java、MappedStatement.java)
田维常
2021/01/13
8350
长文干货 | 手写自定义持久层框架!
自定义mybatis解析
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
多凡
2019/11/01
6780
Java | 实现一个ORM比你想象的还要简单
原理ORM 实现1. 通过注解来将 Java Bean 和数据库字段关联2. 反射工具类3. 简单的 model 示例4. 注解解析5. 数据库操作6. 结合反射实现查询操作使用动态代理实现 @Query @Select 类似功能1. 动态代理2. 注解3. 表设计4. model5. repository7. 大体流程8. 代理使用9. 将生成代理放入 Spring IOC 容器中10. invoke方法处理
双鬼带单
2021/03/18
1.5K0
mybatis-plus随机查询工具类
这里的USER_MAPPER我们可以使用任意一个mapper,我这里使用的是静态注入的方式
阿超
2022/08/16
1.5K0
mybatis-plus随机查询工具类
从源码到实战之Spring中的JdbcTemplate及策略模式自定义JdbcTemplate实现
3.2 MyResultSetHandler 接口及实现(策略模式)
IT技术小咖
2020/11/03
2.3K0
快速学习Mybatis-自定义 Mybatis 框架
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
cwl_java
2019/12/11
3720
自定义MyBatis
第三步:DefaultSqlSessionFactory工厂生产出DefaultSqlSession对象
用户3112896
2019/09/26
4080
推荐阅读
相关推荐
30个类手写Spring核心原理之自定义ORM(上)(6)
更多 >
LV.2
Java架构丛书作者公众号:Tom弹架构
目录
  • 【腾讯云 Elasticsearch Service】高可用,可伸缩,云端全托管。集成X-Pack高级特性,适用日志分析/企业搜索/BI分析等场景
  • 下载测试数据
  • 如何得到安装帮助
  • 安装Filebeat
  • 使用Filebeat模块
    • 显示 Filebeat 支持的模块
    • 启动模块
    • 运行Filebeat
  • 运用 Kibana 来分析数据
  • 最新活动
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档