1、環境,基于java開發環境(jdk1.8及以上,node.js)
2、首先下載elk三劍客(這里以7.6.2為例子,elk需要版本統一)
連接:https://www.elastic.co/cn/downloads/past-releases#elasticsearch (e)
https://www.elastic.co/cn/downloads/past-releases#logstash (l)
https://www.elastic.co/cn/downloads/past-releases#kibana (k)
3、本著開箱即用的原則.安裝完即可使用
接下來逐個講解:
elasticsearch 安裝完即可使用,來到bin目錄下雙擊elasticsearch.bat啟動elasticsearch,
如果想分詞查詢,可下載ik分詞器插件,地址https://github.com/medcl/elasticsearch-analysis-ik(7.6.2)
下載完的插件放到plugins/ik目錄下,(ik檔案夾需要新建,并且需要重新啟動elasticsearch,方可生效);
訪問 localhost:9200

logstash 根目錄下新建檔案夾mysql_es(可因個人喜好命名)
在mysql_es檔案夾下新建mysql.conf檔案,all.sql 檔案(需要同步的sql,)
sql如下
SELECT * from tablea a
WHERE a.index_time CONVERT_TZ(:sql_last_value, ‘+00:00’, ‘+00:00’)
注:index_time 是資料庫中的實實在在的一個時間戳,是設計資料庫時自己設定的,可根據自己的資料庫指定某個欄位時間,
官網上下載一個mysql 驅動放到本檔案中,我這里使用的是mysql-connector-java-5.1.25.jar,重點:配置mysql.conf 檔案
input {
stdin {
}
# 班級
jdbc {
type => "test"
# 資料庫
jdbc_connection_string => "jdbc:mysql://localhost:3306/test?tinyInt1isBit=false&useUnicode=true&characterEncoding=UTF-8&relaxAutoCommit=true&zeroDateTimeBehavior=convertToNull"
jdbc_user => "root"
jdbc_password => "root"
jdbc_driver_library => "D:\logstash\logstash-7.6.2\mysqletc/mysql-connector-java-5.1.25.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
codec => plain { charset => "UTF-8"}
jdbc_default_timezone => "Asia/Shanghai" #時區
lowercase_column_names => false
statement_filepath => "D:\logstash\logstash-7.6.2\mysqletc\sql\all.sql"
jdbc_paging_enabled => "true"
jdbc_page_size => "5000"
# 不使用欄位值追蹤,直接用該次更新的當前時間賦值到:sql_last_value,然后在sql中用創建時間和更新時間 >= :sql_last_value
use_column_value => false
tracking_column => index_time
record_last_run => true
last_run_metadata_path => "D:\logstash\logstash-7.6.2\mysql_es\last\last.txt"
# 設定監聽間隔 各欄位含義(由左至右)分、時、天、月、年,全部為*默認含義為每分鐘都更新
schedule => "* * * * *"
}
filter {
ruby {
code => "event.timestamp.time.localtime"
}
date {
match => ["time", "yyyy-MM-dd HH:mm:ss"]
}
json {
source => "message"
remove_field => ["message"]
}
}
output {
if [type] == "test" {
elasticsearch {
hosts => "localhost:9200"
# index名
index => "test"
# 需要關聯的資料庫中有有一個id欄位,對應索引的id號
document_id => "%{id}
}
}
stdout {
codec => json_lines
}
}
配置完需要在bin 目錄下新建一個rundefault.bat檔案(前綴無所謂)
貼上 logstash -f …/mysql_es/mysql.conf即可雙擊運行,在黑視窗中可看到sql,如果沒有,9層以上是配置錯誤,需要檢查配置,
kibana 拆箱即用,直接運行bin目錄下的kibana.bat即可
訪問 localhost:5601

kibana使用的搜索語法

右側有資料及代表本地的es已經同步完畢,
也可以下載elasticsearch-head來查看資料是否同步完畢,
4、elasticsearch-head需要前端環境,需要前端依賴,可以自行百度,安裝完會有跨域問題,需要配置elasticsearch.yml檔案 如下
http.cors.enabled: true
http.cors.allow-origin: “*”
即可解決跨域問題

安裝完訪問localhost:9100

5、可能會遇到的問題
logstash需要執行多個組態檔,將多個conf檔案放到同一個目錄conf下
然后執行命令 logstash -f …/mysql_es/conf/
x
6、 需要注意的是,windows適合自己本地除錯,
logstash 生效時間最快是分鐘級,不適合大量資料的應用,
不支持物理洗掉,物理洗掉es中還會有資料,無人通知es洗掉資料,
支持邏輯洗掉,
logstash 可做增量和全量,
以上就是elk 基于windows的配置,更多玩法需要自己摸索,歡迎交流,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/389101.html
標籤:其他
