热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Filebeat+Logstash+Elasticsearch测试

安装配置好三个软件使之能够正常启动,下面开始测试。第一步elasticsearch提供了restfulapi,这些api会非常便利,为了方便查看,可以使用postman调用

安装配置好三个软件使之能够正常启动,下面开始测试。

第一步

elasticsearch提供了restful api,这些api会非常便利,为了方便查看,可以使用postman调用接口。
1、查看Elasticsearch服务是否正常

GET http://120.27.110.143:9200

如果服务正常将会返回以下格式数据

{
    "name": "node-1",   # 节点名称
    "cluster_name": "es_cluster",  # 集群名称
    "cluster_uuid": "p_19Z1wFQA2tUWwJr6BjpA",  # 集群uuid
    "version": {  # elasticsearch的版本信息
        "number": "6.4.0",  # 版本号
        "build_flavor": "default",  # 默认构建
        "build_type": "tar",  # 构建类型
        "build_hash": "595516e",  # 构建hash
        "build_date": "2018-08-17T23:18:47.308994Z",  # 构建时间
        "build_snapshot": false,  # 构建快照
        "lucene_version": "7.4.0",  # lucene版本
        "minimum_wire_compatibility_version": "5.6.0",  # 最小兼容版本
        "minimum_index_compatibility_version": "5.0.0"  # 最小索引兼容版本
    },
    "tagline": "You Know, for Search"  # 品牌口号
}

Tip
(1)节点名称和集群名称是可配置的,在elasticsearch.yml配置文件中可修改
(2)120.27.110.143是Elasticsearch服务所在的服务器地址,要使外部可以通过ip地址访问Elasticsearch,同样需要在elasticsearch.yml中配置network.host: 0.0.0.0

 
 

(3)elasticsearch.yml配置文件中还有其他配置项,具体情况具体配置

 

2、查看Elasticsearch里的索引数据

GET http://120.27.110.143:9200/_cat/indices?v

服务正常情况下回返回以下格式数据

health status index                       uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   nagios-dashboard-2018.09.17 YPsJER0dRYSY7cHXJqm_WQ   5   1       1108            0    622.9kb        622.9kb
yellow open   logstash-2018.09.18         mm3r8OEeTrmw3vBrt4RdwQ   5   1        302            0    686.9kb        686.9kb
yellow open   filebeat-6.4.0-2018.09.18   qBq5H37iQEiw86x7mDSJpg   5   1        500            0    342.2kb        342.2kb

由于之前已经运行过一次服务所以产生了以上数据
3、删除Elasticsearch里的索引数据

DELETE http://120.27.110.143:9200/logstash-2018.09.18?pretty

如果索引名称无误将会返回

{
    "acknowledged": true
}

如果索引名称有误则会返回404

第二步

已经删除之前产生的数据,现在开始测试
1、使用Elasticsearch官网提供的测试数据logstash-tutorial.log文件
我们看一下logstash-tutorial.log文件内容

hsl@iZ282hpfj1mZ:~$ vi logstash-tutorial.log 

里面含有100条以下格式的数据

83.149.9.216 - - [04/Jan/2015:05:13:42 +0000] "GET /presentations/logstash-monitorama-2013/images/kibana-dashboard3.png HTTP/1.1" 200 171717 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"

 

 
 

2、配置filebeat
filebeat可以单独和elasticsearch使用,不通过logstash,差别在于没有logstash分析过滤,存储的是原始数据,而将数据转发到logstash分析过滤后,存储的是格式化数据,下面通过对比可以看到

 

首先配置filebeat.yml文件如下

filebeat.prospectors:
- type: log  # filebeat处理类型为log文件
  paths:
    - /home/hsl/logstash-tutorial.log  # log文件的绝对路径
output.elasticsearch:  # 输出到elasticsearch
  hosts: ["localhost:9200"]
tail_files: true  # 从文件末尾读取

Tip
(1)paths可以是多个日志文件的绝对路径
(2)output有多个输出方式,可以输出到logstash,也可以输出到数据库存储,考虑到全文检索,官网建议使用elasticsearch数据库。
(3)hosts可以是多个数据库地址,由于filebeat和elasticsearch在同一台服务器上所以可以写成localhost:9200,当然也可以换成它的IP120.27.110.143:9200

3、运行filebeat

hsl@iZ282hpfj1mZ:~/filebeat-6.4.0-linux-x86_64$ ./filebeat -e -c filebeat.yml -d "publish"

如果一切正常将会看到以下输出


 
 

可以看到上面的输出,以及下面的红框中的内容,
Connected to Elasticsearch version 6.4.0
已经连接到elasticsearch数据库,
Template already exists and will not be overwritten.
模板已经存在并且不会被重写。

下面通过postman查看elasticsearch数据库

GET  http://120.27.110.143:9200/_cat/indices?v

结果如图所示


 
 

index:filebeat-6.4.0-2018.09.18是生成的索引名称,具体的生成规则暂时还不知道如何配置,下次再讨论。
docs.count:100文档数量是100对应我们的测试文件。

可以看一下具体的数据格式

GET  http://120.27.110.143:9200/filebeat-6.4.0-2018.09.18/_search?pretty

结果如图所示


 
 

每个文档中的具体内容如下

{
         "_index": "filebeat-6.4.0-2018.09.18",  # 索引名
         "_type": "doc",  # 类型
         "_id": "3ZWv6mUBvd_PCv61-X6v",  # id
         "_score": 1,  # 得分
         "_source": {
              "@timestamp": "2018-09-18T03:18:44.531Z",  # 时间戳
              "message": "83.149.9.216 - - [04/Jan/2015:05:13:42 +0000] \"GET /presentations/logstash-monitorama-2013/images/kibana-dashboard3.png HTTP/1.1\" 200 171717 \"http://semicomplete.com/presentations/logstash-monitorama-2013/\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36\"",  # 一行日志内容
              "source": "/home/hsl/logstash-tutorial.log",  # 来源
              "offset": 325,  #  物理地址位移
              "input": {
                   "type": "log"  # 输入类型
               },
              "prospector": {
                   "type": "log"
               },
              "beat": {
                  "hostname": "iZ282hpfj1mZ",  # beat所在主机名
                  "version": "6.4.0",  # 版本号
                  "name": "iZ282hpfj1mZ"  # beat名
               },
               "host": {
                   "name": "iZ282hpfj1mZ"  # 主机名
               }
       }
}

现在关闭filebeat并且重新启动一次看数据是否会变
通过服务器日志输出以及postman查询可以看到并没有将数据再次写入到elasticsearch中


 
 

 
 

现在向logstash-tutorial.log文件中添加一行

hsl@iZ282hpfj1mZ:~$ echo \'86.1.76.62 - - [04/Jan/2015:05:30:37 +0000] "GET /style2.css HTTP/1.1" 200 4877 "http://www.semicomplete.com/projects/xdotool/" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20140205 Firefox/24.0 Iceweasel/24.3.0"\' >> /home/hsl/logstash-tutorial.log 

可以看到当文件发生改变是filebeat会自动监控到并执行


 
 

下面看一下elasticsearch中的数据,如果无误现在的文档数量应该是101

 
 

 

Tip
(1)当使用vi打开文件,在文件末尾添加一行,保存并退出后,filebeat会将上一次发送时的offset读取重新发送一次,推送两次event,导致数据重复。具体的官网解释翻译如下:
你怎么修改文件?你试过了$ echo \'new line\' >> /usr/src/app/log.log吗?filebeat试图根据元数据来检测文件是否是新的。一些工具/编辑器创建一个全新的文件保存并取消旧链接。这被filebeat检测为新文件,迫使它重新发送所有内容。
4、测试filebeat监控多个日志文件
首先修改filebeat.yml文件如下:

filebeat.prospectors:
- type: log
  paths:
    - /home/hsl/logstash-tutorial.log
- type: log
  paths:
    - /home/hsl/logstash-tutorial_copy.log  # 复制一份测试用例日志
output.elasticsearch:
  hosts: ["120.27.110.143:9200"]
tail_files: true

然后,清空elasticsearch数据,并执行以下命令,删除注册信息

hsl@iZ282hpfj1mZ:~/filebeat-6.4.0-linux-x86_64$ rm data/registry 

最后重新启动filebeat

hsl@iZ282hpfj1mZ:~/filebeat-6.4.0-linux-x86_64$ ./filebeat -e -c filebeat.yml -d "publish"

如果一切正常,数据库中将会有202条数据

 
 

 

第三步

1、将filebeat输出改为logstash

filebeat.prospectors:
- type: log
  paths:
    - /home/hsl/logstash-tutorial.log
output.logstash:  # 将数据发送到logstash
  hosts: ["120.27.110.143:5044"]
tail_files: true

2、增加logstash管道文件first-pipeline.conf文件
内容如下:

input {  # 输入
    beats {  # 来源beats
        port => "5044"  # 端口
    }
}
 filter {  # 分析、过滤插件,可以多个
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}"}
    }
    geoip {
        source => "clientip"
    }
}
output {  # 输出
    elasticsearch {  # 选择elasticsearch
        hosts => ["localhost:9200"]
        }
}

3、启动logstash

hsl@iZ282hpfj1mZ:~/logstash-6.4.0$ bin/logstash -f first-pipeline.conf --config.reload.automatic

--config.reload.automatic自动重载配置文件
如果正常启动,将会输入以下内容

 
 

4、启动filebeat

 

hsl@iZ282hpfj1mZ:~/filebeat-6.4.0-linux-x86_64$ ./filebeat -e -c filebeat.yml -d "publish"

5、查看elasticsearch

GET http://120.27.110.143:9200/_cat/indices?v

结果如下

health status index                     uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   filebeat-6.4.0-2018.09.18 CWijkL6cTE2kNMXP-cQeMA   5   1        202            0     97.1kb         97.1kb
yellow open   logstash-2018.09.18       7b9NzO15QFWr3FLPeszThA   5   1        101            0    256.3kb        256.3kb

logstash-2018.09.18是新建的索引,并且文档数正好为101
查看数据的具体格式

GET http://120.27.110.143:9200/logstash-2018.09.18/_search?pretty
 
 

具体某一条的数据如下:

{
    "_index": "logstash-2018.09.18",  # 索引名
    "_type": "doc",  # 类型doc
    "_id": "NZVj62UBvd_PCv61z4OP",  # 文档id
    "_score": 1,  # 得分
    "_source": {
        "message": "83.149.9.216 - - [04/Jan/2015:05:13:43 +0000] \"GET /presentations/logstash-monitorama-2013/images/kibana-dashboard.png HTTP/1.1\" 200 321631 \"http://semicomplete.com/presentations/logstash-monitorama-2013/\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36\"",  # 原消息
        "request": "/presentations/logstash-monitorama-2013/images/kibana-dashboard.png",  # 请求
        "agent": "\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36\"",  # 用户代理
        "@timestamp": "2018-09-18T06:35:09.345Z",  # 创建时间
        "response": "200",  # 返回码
        "geoip": {  # IP地址信息
            "location": {
                "lon": 37.6184,
                "lat": 55.7485
            },
            "longitude": 37.6184,
            "continent_code": "EU",
            "region_code": "MOW",
            "timezone": "Europe/Moscow",
            "postal_code": "101194",
            "country_code2": "RU",
            "latitude": 55.7485,
            "region_name": "Moscow",
            "country_name": "Russia",
            "country_code3": "RU",
            "city_name": "Moscow",
            "ip": "83.149.9.216"
        },
        "offset": 2932,  # 位移数
        "clientip": "83.149.9.216",  # 请求接口的IP地址
        "beat": {  # beat信息
            "hostname": "iZ282hpfj1mZ",
            "name": "iZ282hpfj1mZ",
            "version": "6.4.0"
        },
        "tags": [  # 标签
            "beats_input_codec_plain_applied"
        ],
        "verb": "GET",  # 请求方法
        "input": {  # 输入
            "type": "log"
        },
        "@version": "1",  # 版本
        "timestamp": "04/Jan/2015:05:13:43 +0000",  # 接口请求时间
        "referrer": "\"http://semicomplete.com/presentations/logstash-monitorama-2013/\"",  # 引用URL
        "prospector": {  
            "type": "log"
        },
        "source": "/home/hsl/logstash-tutorial.log",  # 来源
        "host": {  # 主机名
            "name": "iZ282hpfj1mZ"
        },
        "bytes": "321631",  # 大小
        "auth": "-",  # 认证
        "ident": "-",  # 用户id
        "httpversion": "1.1"  # http版本
    }
}

回顾filebeat存在elasticsearch数据库里的数据格式,不难发现,logstash存储起来的数据多出了一些其他字段,这些字段信息是logstash分析过滤原消息得出的格式化信息。
6、给日志文件写入新日志

hsl@iZ282hpfj1mZ:~$ echo \'86.1.76.62 - - [04/Jan/2015:05:30:37 +0000] "GET /style2.css HTTP/1.1" 200 4877 "http://www.semicomplete.com/projects/xdotool/" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20140205 Firefox/24.0 Iceweasel/24.3.0"\' >> /home/hsl/logstash-tutorial.log 

查看elasticsearch数据库验证

GET http://120.27.110.143:9200/_cat/indices?v

返回结果如下

health status index                     uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   filebeat-6.4.0-2018.09.18 CWijkL6cTE2kNMXP-cQeMA   5   1        202            0     97.1kb         97.1kb
yellow open   logstash-2018.09.18       7b9NzO15QFWr3FLPeszThA   5   1        102            0    279.5kb        279.5kb

可以看到logstash-2018.09.18索引的dosc.count从原来的101变为102

以上是filebeat+logstash+elasticsearch的一些测试。

 


作者:几回寒暑
链接:https://www.jianshu.com/p/88d9ad372a85
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

推荐阅读
  • This article explores the process of integrating Promises into Ext Ajax calls for a more functional programming approach, along with detailed steps on testing these asynchronous operations. ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • Elasticsearch 嵌套调用中动态类导致数据返回异常分析与解决方案 ... [详细]
  • 本文深入探讨了ASP.NET Web API与RESTful架构的设计与实现。ASP.NET Web API 是一个强大的框架,能够简化HTTP服务的开发,使其能够广泛支持各种客户端设备。通过详细分析其核心原理和最佳实践,本文为开发者提供了构建高效、可扩展且易于维护的Web服务的指导。此外,还讨论了如何利用RESTful原则优化API设计,确保系统的灵活性和互操作性。 ... [详细]
  • 深入解析 Vue 中的 Axios 请求库
    本文深入探讨了 Vue 中的 Axios 请求库,详细解析了其核心功能与使用方法。Axios 是一个基于 Promise 的 HTTP 客户端,支持浏览器和 Node.js 环境。文章首先介绍了 Axios 的基本概念,随后通过具体示例展示了如何在 Vue 项目中集成和使用 Axios 进行数据请求。无论你是初学者还是有经验的开发者,本文都能为你解决 Vue.js 相关问题提供有价值的参考。 ... [详细]
  • 利用Jenkins与SonarQube集成实现高效代码质量检测与优化
    本文探讨了通过在 Jenkins 多分支流水线中集成 SonarQube,实现高效且自动化的代码质量检测与优化方法。该方案不仅提高了开发团队的代码审查效率,还确保了软件项目的持续高质量交付。 ... [详细]
  • Logstash安装配置
    阅读此文请先阅读上文:[大数据]-Elasticsearch5.3.1IK分词,同义词联想搜索设置,前面介绍了ES,Kiba ... [详细]
  • Go语言中Web服务的实现方式
    这篇文章主要讲解了“Go语言中Web服务的实现方式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习 ... [详细]
  • restful是这些年的高频词汇了,各大互联网公司也都纷纷推出了自己的restfulapi,其实restful和thrift,grpc类似,就是一种协议,但是这种协议有点特殊的就是 ... [详细]
  • 谈起RESTFUL大家未免都耳熟能详,但是要介绍一下它是什么,可能就是停留在听过或者见过的阶段了。一贯喜欢以通俗的语言来消化知识的小马自然不会放过它了& ... [详细]
  • 前端开发接口联调推荐方案mockm是一款便于使用,功能灵活的接口工具。安装和使用非常简洁和方便,直接一个命令搞定,前后端人员都可以使用。在多数项目中,这可以说是前端与后台进行接口联 ... [详细]
  • EspressoLogic在其DBaas服务中添加了支持SQL存储过程的RESTful终结点。\u0026#xD;\nEspressoLogic通过分析数据库架构,为 ... [详细]
  • ​如何设计一个安全可靠的 API 接口?
    作者|阿文责编|屠敏出品|CSDN(ID:CSDNnews)最近几年,随着RESTfulAPI开始风靡,使用H ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
author-avatar
国邮国旅刘峰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有