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

第一步

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
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

Filebeat+Logstash+Elasticsearch测试的更多相关文章

  1. Nginx filebeat+logstash+Elasticsearch+kibana实现nginx日志图形化展示

    filebeat+logstash+Elasticsearch+kibana实现nginx日志图形化展示   by:授客  QQ:1033553122   测试环境 Win7 64 CentOS-7- ...

  2. filebeat + logstash + elasticsearch + granfa

    filebeat + logstash + elasticsearch + granfa https://www.cnblogs.com/wenchengxiaopenyou/p/9034213.ht ...

  3. filebeat -> logstash -> elasticsearch -> kibana ELK 日志收集搭建

    Filebeat 安装参考 http://blog.csdn.net/kk185800961/article/details/54579376 elasticsearch 安装参考http://blo ...

  4. Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台

    对于ELK还不太熟悉的同学可以参考我前面的两篇文章ElasticSearch + Logstash + Kibana 搭建笔记.Log stash学习笔记(一),本文搭建了一套专门访问Apache的访 ...

  5. filebeat+logstash+elasticsearch收集haproxy日志

    filebeat用于是日志收集,感觉和 flume相同,但是用go开发,性能比较好 在2.4版本中, 客户机部署logstash收集匹配日志,传输到 kafka,在用logstash 从消息队列中抓取 ...

  6. 安装logstash,elasticsearch,kibana三件套

    logstash,elasticsearch,kibana三件套 elk是指logstash,elasticsearch,kibana三件套,这三件套可以组成日志分析和监控工具 注意: 关于安装文档, ...

  7. ELK_日志分析系统Logstash+ElasticSearch+Kibana4

    elk 日志分析系统 Logstash+ElasticSearch+Kibana4 logstash 管理日志和事件的工具 ElasticSearch 搜索 Kibana4 功能强大的数据显示客户端 ...

  8. 安装logstash,elasticsearch,kibana三件套(转)

    logstash,elasticsearch,kibana三件套 elk是指logstash,elasticsearch,kibana三件套,这三件套可以组成日志分析和监控工具 注意: 关于安装文档, ...

  9. (原)logstash-forwarder + logstash + elasticsearch + kibana

    [logstash-forwarder + logstash + elasticsearch + kibana]-------------------------------------------- ...

随机推荐

  1. myeclipse10修改全局jsp编码格式为gbk

    myeclipse10修改全局jsp编码格式为gbk: window->prefenrence->general->content types->  展开:text->j ...

  2. 彻底弄懂jQuery事件原理二

    上一篇说到,我们在最外层API的on,off,tiggler,triggerHandler调用的是event方法的add,remove和tirgger方法,本篇就来介绍event辅助类 \ 先放个图, ...

  3. android 知识小结-1

    Java哪些数据结构是线程安全的,CurrentHashMap的原理 ConcurrentHashMap.ConcurrentSkipListMap.ConcurrentSkipListSet.Con ...

  4. 关于apply、call和bind的总结

    基础知识不是你看了一遍书或者两篇文章就能掌握的. 之前看书看文章时,感觉自己看懂了就掌握了.呵呵!too young!too naive! 以前的坑还是要一铲一铲的填上的. 高程上面关于apply和c ...

  5. 433.92 TX RX module design and test recording。。

    This paper records the process of 433.92 TX RX module  design and test,fyi.  1 RX module The circuit ...

  6. django2 显示图片 输出图片

    使用笨办法,指向图片的路径,然后输出图片. 首先路由设置: # 查看图片 path('tu/', ShowTuView.as_view(), name='image') 视图代码: import os ...

  7. vim自动缩进

    最近写完程序,在进行调试时发现特别困难,代码乱的一塌糊涂,特别是代码量很多时,调试起来特别囧,逻辑很难理清. 这让我想起了缩进功能,可以让代码自动对齐. gedit编辑器在菜单栏里的编辑->首选 ...

  8. POI使用 (4.0) 常用改动

    POI 升级到高版本后,原有的EXCLE导入导出工具类部分代码已不适用,目前只是对我自己写的工具类的过期代码进行更新,以后继续更新 若有问题请指出,再修改 1.数据类型 Cell.CELL_TYPE_ ...

  9. 《DSP using MATLAB》Problem 3.2

    1.用x1序列的DTFT来表示x2序列的DTFT 2.代码: %% ------------------------------------------------------------------ ...

  10. vue-cli项目配置mock数据(新版本)

    最新的vue-webpack-template 中已经去掉了dev-server.js 但是要进行模拟后台数据的,如何模拟本地数据操作? 解决方法: dev-server.js 改用webpack-d ...