安裝配置好三個軟件使之可以正常啓動,下面開始測試。php
elasticsearch提供了restful api,這些api會很是便利,爲了方便查看,可使用postman調用接口。
一、查看Elasticsearch服務是否正常css
GET http://120.27.110.143:9200
若是服務正常將會返回如下格式數據node
{
"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
linux
二、查看Elasticsearch裏的索引數據ios
GET http://120.27.110.143:9200/_cat/indices?v
服務正常狀況下回返回如下格式數據git
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
因爲以前已經運行過一次服務因此產生了以上數據
三、刪除Elasticsearch裏的索引數據數據庫
DELETE http://120.27.110.143:9200/logstash-2018.09.18?pretty
若是索引名稱無誤將會返回json
{
"acknowledged": true }
若是索引名稱有誤則會返回404api
已經刪除以前產生的數據,如今開始測試
一、使用Elasticsearch官網提供的測試數據logstash-tutorial.log文件
咱們看一下logstash-tutorial.log文件內容ruby
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"
首先配置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
三、運行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檢測爲新文件,迫使它從新發送全部內容。
四、測試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條數據
一、將filebeat輸出改成logstash
filebeat.prospectors:
- type: log paths: - /home/hsl/logstash-tutorial.log output.logstash: # 將數據發送到logstash hosts: ["120.27.110.143:5044"] tail_files: true
二、增長logstash管道文件first-pipeline.conf文件
內容以下:
input { # 輸入 beats { # 來源beats port => "5044" # 端口 } } filter { # 分析、過濾插件,能夠多個 grok { match => { "message" => "%{COMBINEDAPACHELOG}"} } geoip { source => "clientip" } } output { # 輸出 elasticsearch { # 選擇elasticsearch hosts => ["localhost:9200"] } }
三、啓動logstash
hsl@iZ282hpfj1mZ:~/logstash-6.4.0$ bin/logstash -f first-pipeline.conf --config.reload.automatic
--config.reload.automatic自動重載配置文件
若是正常啓動,將會輸入如下內容
hsl@iZ282hpfj1mZ:~/filebeat-6.4.0-linux-x86_64$ ./filebeat -e -c filebeat.yml -d "publish"
五、查看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分析過濾原消息得出的格式化信息。
六、給日誌文件寫入新日誌
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的一些測試。