安裝配置好三個軟件使之能夠正常啟動副瀑,下面開始測試舱污。
第一步
elasticsearch提供了restful api,這些api會非常便利粱栖,為了方便查看话浇,可以使用postman調(diào)用接口。
1闹究、查看Elasticsearch服務(wù)是否正常
GET http://120.27.110.143:9200
如果服務(wù)正常將會返回以下格式數(shù)據(jù)
{
"name": "node-1", # 節(jié)點(diǎn)名稱
"cluster_name": "es_cluster", # 集群名稱
"cluster_uuid": "p_19Z1wFQA2tUWwJr6BjpA", # 集群uuid
"version": { # elasticsearch的版本信息
"number": "6.4.0", # 版本號
"build_flavor": "default", # 默認(rèn)構(gòu)建
"build_type": "tar", # 構(gòu)建類型
"build_hash": "595516e", # 構(gòu)建hash
"build_date": "2018-08-17T23:18:47.308994Z", # 構(gòu)建時間
"build_snapshot": false, # 構(gòu)建快照
"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)節(jié)點(diǎn)名稱和集群名稱是可配置的幔崖,在elasticsearch.yml配置文件中可修改
(2)120.27.110.143是Elasticsearch服務(wù)所在的服務(wù)器地址,要使外部可以通過ip地址訪問Elasticsearch渣淤,同樣需要在elasticsearch.yml中配置network.host: 0.0.0.0
(3)elasticsearch.yml配置文件中還有其他配置項(xiàng)赏寇,具體情況具體配置
2、查看Elasticsearch里的索引數(shù)據(jù)
GET http://120.27.110.143:9200/_cat/indices?v
服務(wù)正常情況下回返回以下格式數(shù)據(jù)
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
由于之前已經(jīng)運(yùn)行過一次服務(wù)所以產(chǎn)生了以上數(shù)據(jù)
3价认、刪除Elasticsearch里的索引數(shù)據(jù)
DELETE http://120.27.110.143:9200/logstash-2018.09.18?pretty
如果索引名稱無誤將會返回
{
"acknowledged": true
}
如果索引名稱有誤則會返回404
第二步
已經(jīng)刪除之前產(chǎn)生的數(shù)據(jù)嗅定,現(xiàn)在開始測試
1、使用Elasticsearch官網(wǎng)提供的測試數(shù)據(jù)logstash-tutorial.log文件
我們看一下logstash-tutorial.log文件內(nèi)容
hsl@iZ282hpfj1mZ:~$ vi logstash-tutorial.log
里面含有100條以下格式的數(shù)據(jù)
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可以單獨(dú)和elasticsearch使用渠退,不通過logstash,差別在于沒有l(wèi)ogstash分析過濾脐彩,存儲的是原始數(shù)據(jù)碎乃,而將數(shù)據(jù)轉(zhuǎn)發(fā)到logstash分析過濾后,存儲的是格式化數(shù)據(jù)惠奸,下面通過對比可以看到
首先配置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,也可以輸出到數(shù)據(jù)庫存儲,考慮到全文檢索梗掰,官網(wǎng)建議使用elasticsearch數(shù)據(jù)庫删豺。
(3)hosts可以是多個數(shù)據(jù)庫地址,由于filebeat和elasticsearch在同一臺服務(wù)器上所以可以寫成localhost:9200愧怜,當(dāng)然也可以換成它的IP120.27.110.143:9200
3、運(yùn)行filebeat
hsl@iZ282hpfj1mZ:~/filebeat-6.4.0-linux-x86_64$ ./filebeat -e -c filebeat.yml -d "publish"
如果一切正常將會看到以下輸出
可以看到上面的輸出妈拌,以及下面的紅框中的內(nèi)容拥坛,
Connected to Elasticsearch version 6.4.0
已經(jīng)連接到elasticsearch數(shù)據(jù)庫,
Template already exists and will not be overwritten.
模板已經(jīng)存在并且不會被重寫尘分。
下面通過postman查看elasticsearch數(shù)據(jù)庫
GET http://120.27.110.143:9200/_cat/indices?v
結(jié)果如圖所示
index:filebeat-6.4.0-2018.09.18是生成的索引名稱猜惋,具體的生成規(guī)則暫時還不知道如何配置,下次再討論培愁。
docs.count:100文檔數(shù)量是100對應(yīng)我們的測試文件著摔。
可以看一下具體的數(shù)據(jù)格式
GET http://120.27.110.143:9200/filebeat-6.4.0-2018.09.18/_search?pretty
結(jié)果如圖所示
每個文檔中的具體內(nèi)容如下
{
"_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\"", # 一行日志內(nèi)容
"source": "/home/hsl/logstash-tutorial.log", # 來源
"offset": 325, # 物理地址位移
"input": {
"type": "log" # 輸入類型
},
"prospector": {
"type": "log"
},
"beat": {
"hostname": "iZ282hpfj1mZ", # beat所在主機(jī)名
"version": "6.4.0", # 版本號
"name": "iZ282hpfj1mZ" # beat名
},
"host": {
"name": "iZ282hpfj1mZ" # 主機(jī)名
}
}
}
現(xiàn)在關(guān)閉filebeat并且重新啟動一次看數(shù)據(jù)是否會變
通過服務(wù)器日志輸出以及postman查詢可以看到并沒有將數(shù)據(jù)再次寫入到elasticsearch中
現(xiàn)在向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
可以看到當(dāng)文件發(fā)生改變是filebeat會自動監(jiān)控到并執(zhí)行
下面看一下elasticsearch中的數(shù)據(jù),如果無誤現(xiàn)在的文檔數(shù)量應(yīng)該是101
Tip
(1)當(dāng)使用vi打開文件定续,在文件末尾添加一行谍咆,保存并退出后,filebeat會將上一次發(fā)送時的offset讀取重新發(fā)送一次私股,推送兩次event摹察,導(dǎo)致數(shù)據(jù)重復(fù)。具體的官網(wǎng)解釋翻譯如下:
你怎么修改文件倡鲸?你試過了$ echo 'new line' >> /usr/src/app/log.log嗎供嚎?filebeat試圖根據(jù)元數(shù)據(jù)來檢測文件是否是新的。一些工具/編輯器創(chuàng)建一個全新的文件保存并取消舊鏈接峭状。這被filebeat檢測為新文件克滴,迫使它重新發(fā)送所有內(nèi)容。
4优床、測試filebeat監(jiān)控多個日志文件
首先修改filebeat.yml文件如下:
filebeat.prospectors:
- type: log
paths:
- /home/hsl/logstash-tutorial.log
- type: log
paths:
- /home/hsl/logstash-tutorial_copy.log # 復(fù)制一份測試用例日志
output.elasticsearch:
hosts: ["120.27.110.143:9200"]
tail_files: true
然后劝赔,清空elasticsearch數(shù)據(jù),并執(zhí)行以下命令胆敞,刪除注冊信息
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"
如果一切正常望忆,數(shù)據(jù)庫中將會有202條數(shù)據(jù)
第三步
1、將filebeat輸出改為logstash
filebeat.prospectors:
- type: log
paths:
- /home/hsl/logstash-tutorial.log
output.logstash: # 將數(shù)據(jù)發(fā)送到logstash
hosts: ["120.27.110.143:5044"]
tail_files: true
2竿秆、增加logstash管道文件first-pipeline.conf文件
內(nèi)容如下:
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自動重載配置文件
如果正常啟動歉备,將會輸入以下內(nèi)容
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
結(jié)果如下
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是新建的索引蕾羊,并且文檔數(shù)正好為101
查看數(shù)據(jù)的具體格式
GET http://120.27.110.143:9200/logstash-2018.09.18/_search?pretty
具體某一條的數(shù)據(jù)如下:
{
"_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", # 創(chuàng)建時間
"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, # 位移數(shù)
"clientip": "83.149.9.216", # 請求接口的IP地址
"beat": { # beat信息
"hostname": "iZ282hpfj1mZ",
"name": "iZ282hpfj1mZ",
"version": "6.4.0"
},
"tags": [ # 標(biāo)簽
"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": { # 主機(jī)名
"name": "iZ282hpfj1mZ"
},
"bytes": "321631", # 大小
"auth": "-", # 認(rèn)證
"ident": "-", # 用戶id
"httpversion": "1.1" # http版本
}
}
回顧filebeat存在elasticsearch數(shù)據(jù)庫里的數(shù)據(jù)格式喧笔,不難發(fā)現(xiàn),logstash存儲起來的數(shù)據(jù)多出了一些其他字段龟再,這些字段信息是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數(shù)據(jù)庫驗(yàn)證
GET http://120.27.110.143:9200/_cat/indices?v
返回結(jié)果如下
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變?yōu)?02
以上是filebeat+logstash+elasticsearch的一些測試利凑。