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

第一步

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. Sizzle源码分析:二 词法分析

    上一篇我们了解了Sizzle的整体流程,下面我开始一点点分析各个流程,我们进行查询的第一步就是词法分析tokenize,同样先了解下思路,如果是#div_test > span input[ch ...

  2. 为什么样本方差自由度(分母)为n-1

    一.概念.条件及目的 1.概念 要理解样本方差的自由度为什么是n-1,得先理解自由度的概念: 自由度,是指附加给独立的观测值的约束或限制的个数,即一组数据中可以自由取值的个数. 2.成立条件 所谓自由 ...

  3. java基础第10天

    Java异常 Exception 异常指的的在运行期出现的错误,在编译阶段出现的语法错误等,不能称之为异常. 编译类异常 必须处理之后才能正常编译(类找不到,IO异常,在API文档中明确写明throw ...

  4. Vue3.0代理的设置

    1.在主目录下创建vue.config.js 内容如下: const path = require('path'); function resolve (dir) { return path.join ...

  5. CF1143C Queen

    CF1143C Queen 开始想大力维护 \(bfs\) 序+数据结构解决,但 \(bfs\) 序的变化不太好推. 换了一个思路,注意到删除一个点后,原来可以被删除的点仍然可以被删除,原来不能被删除 ...

  6. 6-8 Percolate Up and Down(20 分)

    Write the routines to do a "percolate up" and a "percolate down" in a binary min ...

  7. 1013:Digital Roots

    注意:大数要用字符串表示! sprintf:字符串格式化命令 主要功能:将格式化的数据写入某个字符串缓冲区 头文件:<stdio.h> 原型 int sprintf( char *buff ...

  8. Ambiguous reference to member 'dataTask(with:completionHandle:)'错误

    在研究IOS的网络请求过程中,因为NSURLConnection已经过时,需要引用到URLSession var url:NSURL=NSURL(string: "http://3g.163 ...

  9. C语言使用pthread多线程编程(windows系统)一

    运行之前需要做一些配置: 1.下载PTHREAD的WINDOWS开发包 pthreads-w32-2-4-0-release.exe(任何一个版本均可)    http://sourceware.or ...

  10. .NET可变性解析(协变和逆变)

    [一]何为可变性 可变性是.NET4.0中的一个新特性,可变性可分为 : 协变性.逆变性.不可变性. 那么在.NET4.0之前是否有可变性? 答案是肯定的,我们可以通过下面的几个实例来简单的了解一下. ...