一允坚、安裝ElasticSearch(下面統(tǒng)稱es,版本6.0.0,環(huán)境windows10)
直接上下載地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.zip
解壓后目錄如下:
啟動es漫试,./bin/elasticsearch.bat 极谊;啟動成功如圖
默認cluster_name是elasticsearch和端口9200可以修改诡右,需要修改在config/elasticsearch.yml;上圖
二、安裝logstash
下載地址:https://artifacts.elastic.co/downloads/logstash/logstash-6.0.0.zip
解壓目錄
先安裝logstash-input-jdbc插件?
./bin/logstash-plugin.bat install logstash-input-jdbc
在logstash目錄下創(chuàng)建config-mysql轻猖,見圖4
創(chuàng)建配置文件load_data.conf帆吻,配置文件隨便取名,可以創(chuàng)建sql文件咙边,也可以在conf配置文件中定義猜煮,具體下面有說明
先上配置文件內(nèi)容
input {
? ? stdin {
? ? }
? ? jdbc {
? ? ? jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/jfinal_club?characterEncoding=utf8&useSSL=false"
? ? ? jdbc_user => "root"
? ? ? jdbc_password => "root"
? ? ? jdbc_driver_library => "D:/ELK/6.0.0/logstash-6.0.0/config-mysql/mysql-connector-java-5.1.43.jar"
? ? ? jdbc_driver_class => "com.mysql.jdbc.Driver"
? ? ? jdbc_paging_enabled => "true"
? ? ? jdbc_page_size => "50000"
? ? ? statement_filepath => "D:/ELK/6.0.0/logstash-6.0.0/config-mysql/store_list.sql"
? ? ? schedule => "* * * * *"
? ? ? use_column_value => false
? ? ? record_last_run => true
? ? ? last_run_metadata_path => "D:/ELK/6.0.0/logstash-6.0.0/config-mysql/run/store_list"
? ? ? type => "sl"
? ? }
jdbc {
? ? ? jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/jfinal_club?characterEncoding=utf8&useSSL=false"
? ? ? jdbc_user => "root"
? ? ? jdbc_password => "root"
? ? ? jdbc_driver_library => "D:/ELK/6.0.0/logstash-6.0.0/config-mysql/mysql-connector-java-5.1.43.jar"
? ? ? jdbc_driver_class => "com.mysql.jdbc.Driver"
? ? ? jdbc_paging_enabled => "true"
? ? ? jdbc_page_size => "50000"
? ? ? statement => "select * from store where updated > date_add(:sql_last_value, interval 8 hour)"
? ? ? schedule => "* * * * *"
? ? ? use_column_value => false
? ? ? record_last_run => true
? ? ? last_run_metadata_path => "D:/ELK/6.0.0/logstash-6.0.0/config-mysql/run/store_s"
? ? ? type => "st"
? ? }
}
filter {
? ? json {
? ? ? ? source => "message"
? ? ? ? remove_field => ["message"]
? ? }
}
output {
? ? if[type] == "sl"{
? ? ? ? elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "store_list"
document_type => "jdbc"
document_id => "%{store_id}}"
? ? ? ? }
? ? }
if[type] == "st"{
? ? ? ? elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "store_st"
document_type => "jdbc"
document_id => "%{id}}"
? ? ? ? }
? ? }
? ? stdout {
? ? ? ? codec => json_lines
? ? }
}
字段解釋(來自官方文檔)
clean_run
值類型是布爾值
默認值是?false
是否應保留之前的運行狀態(tài)
columns_charset
值類型是散列
默認值是?{}
特定列的字符編碼次员。該選項將覆蓋:charset指定列的選項。
例:
輸入{? jdbc { ...? ? columns_charset => { “column0” => “ISO-8859-1” } ... } }? ? ? ? ? ? ?
這只會將具有ISO-8859-1的column0轉(zhuǎn)換為原始編碼王带。
值類型是數(shù)字
默認值是?1
嘗試連接到數(shù)據(jù)庫的最大次數(shù)
connection_retry_attempts_wait_time
值類型是數(shù)字
默認值是?0.5
在連接嘗試之間休眠的秒數(shù)
這是一個必需的設置淑蔚。
值類型是字符串
此設置沒有默認值。
JDBC連接字符串
值類型是字符串
此設置沒有默認值愕撰。
時區(qū)轉(zhuǎn)換刹衫。SQL不允許timestamp字段中的時區(qū)數(shù)據(jù)。此插件會自動將您的SQL時間戳字段轉(zhuǎn)換為Logstash時間戳搞挣,相對UTC時間采用ISO8601格式绪妹。
使用此設置將手動分配指定的時區(qū)偏移量,而不是使用本地計算機的時區(qū)設置柿究。例如邮旷,您必須使用規(guī)范時區(qū),美國/丹佛蝇摸。
這是一個必需的設置婶肩。
值類型是字符串
此設置沒有默認值。
如果您使用的是Oracle JDBC貌夕,則需要根據(jù)https://github.com/logstash-plugins/logstash-input-jdbc/issues/43加載JDBC驅(qū)動程序類律歼,例如“org.apache.derby.jdbc.ClientDriver”NB?驅(qū)動程序(ojdbc6.jar)正確的jdbc_driver_class是"Java::oracle.jdbc.driver.OracleDriver"
值類型是字符串
此設置沒有默認值。
暫時將JDBC邏輯抽象為混合啡专,以便在其他插件(輸入/輸出)中重復使用當某人包含此模塊時調(diào)用此方法將這些方法添加到給定的基礎中险毁。JDBC驅(qū)動程序庫路徑到第三方驅(qū)動程序庫。如果需要多個庫们童,您可以通過逗號分隔它們畔况。
如果未提供,Plugin將在Logstash Java類路徑中查找驅(qū)動程序類慧库。
值類型是數(shù)字
此設置沒有默認值跷跪。
JDBC提取大小。如果未提供齐板,則將使用相應的驅(qū)動程序默認值
值類型是數(shù)字
默認值是?100000
JDBC頁面大小
值類型是布爾值
默認值是?false
JDBC啟用分頁
這將導致一個sql語句被分解成多個查詢吵瞻。每個查詢將使用限制和偏移來共同檢索完整的結(jié)果集。限制尺寸設置為jdbc_page_size甘磨。
請注意橡羞,查詢之間不保證排序。
值類型是密碼
此設置沒有默認值济舆。
JDBC密碼
值類型是路徑
此設置沒有默認值卿泽。
JDBC密碼文件名
值類型是數(shù)字
默認值是?5
連接池配置。在引發(fā)PoolTimeoutError之前等待獲取連接的秒數(shù)(默認值為5)
這是一個必需的設置吗冤。
值類型是字符串
此設置沒有默認值又厉。
JDBC用戶
值類型是布爾值
默認值是?false
連接池配置九府。使用前驗證連接。
值類型是數(shù)字
默認值是?3600
連接池配置覆致。驗證連接的頻率(以秒為單位)
值類型是字符串
默認值是?"/home/ph/.logstash_jdbc_last_run"
使用上次運行時間的文件路徑
值類型是布爾值
默認值是?true
是否強制標識符域的縮小
值類型是散列
默認值是?{}
例如侄旬,查詢參數(shù)的哈希值?{ "target_id" => "321" }
值類型是布爾值
默認值是?true
是否在last_run_metadata_path中保存狀態(tài)
值類型是字符串
此設置沒有默認值。
以Cron格式定期運行語句的時間表煌妈,例如:“* * * * *”(每分鐘執(zhí)行一次查詢儡羔,每分鐘執(zhí)行一次)
沒有默認的時間表。如果沒有給出任何時間表璧诵,那么該語句只運行一次汰蜘。
值類型是散列
默認值是?{}
一般/供應商特定的續(xù)集配置選項。
可選連接池配置的示例max_connections - 連接池的最大連接數(shù)
特定于供應商的選項的示例可以在此文檔頁面中找到:https://github.com/jeremyevans/sequel/blob/master/doc/opening_databases.rdoc
值可以是任何的:fatal之宿,error族操,warn,info比被,debug
默認值是?"info"
記錄SQL查詢的日志級別章姓,接受的值是常見的值备籽,致命錯誤,警告蚕钦,信息和調(diào)試风宁。默認值是info旁钧。
值類型是字符串
此設置沒有默認值具温。
如果未定義硅则,即使編解碼器未被使用,Logstash也會投訴噪裕。要執(zhí)行的語句
要使用參數(shù)蹲盘,請使用命名參數(shù)語法。例如:
“SELECT * FROM MYTABLE WHERE id =:target_id”
在這里州疾,“:target_id”是一個命名參數(shù)辜限。您可以使用該parameters設置配置命名參數(shù)。
值類型是路徑
此設置沒有默認值严蓖。
包含要執(zhí)行的語句的文件的路徑
值類型是字符串
此設置沒有默認值。
如果跟蹤列值而不是時間戳氧急,那么將跟蹤其值的列
值可以是任何的:numeric颗胡,timestamp
默認值是?"numeric"
跟蹤列的類型。目前只有“數(shù)字”和“時間戳”
值類型是布爾值
默認值是?false
使用增量列值而不是時間戳
add_field
值類型是散列
默認值是?{}
添加一個字段到一個事件
值類型是編解碼器
默認值是?"plain"
用于輸入數(shù)據(jù)的編解碼器吩坝。輸入編解碼器是在數(shù)據(jù)進入輸入之前解碼數(shù)據(jù)的便捷方法毒姨,無需在Logstash管道中使用單獨的篩選器。
值類型是布爾值
默認值是?true
在默認情況下钉寝,為特定插件實例禁用或啟用度量標準日志記錄弧呐,我們會記錄所有可以使用的度量標準闸迷,但是您可以禁用特定插件的度量標準收集。
值類型是字符串
此設置沒有默認值俘枫。
添加一個獨特ID的插件配置腥沽。如果沒有指定ID,Logstash會生成一個鸠蚪。強烈建議在您的配置中設置此ID今阳。當你有兩個或多個相同類型的插件時,這是特別有用的茅信,例如盾舌,如果你有2個jdbc輸入。在這種情況下添加命名標識將有助于在使用監(jiān)視API時監(jiān)視Logstash蘸鲸。
輸入{? jdbc {? ? id => “my_plugin_id” } }?
值類型是數(shù)組
此設置沒有默認值妖谴。
為您的活動添加任意數(shù)量的任意標簽。
這可以幫助稍后處理酌摇。
值類型是字符串
此設置沒有默認值膝舅。
type為由此輸入處理的所有事件添加一個字段。
類型主要用于過濾器激活妙痹。
該類型存儲為事件本身的一部分铸史,因此您也可以使用該類型在Kibana中搜索它。
如果您嘗試在已經(jīng)有一個事件的事件上設置類型(例如怯伊,當您將事件從發(fā)貨方發(fā)送到索引器時)琳轿,則新輸入不會覆蓋現(xiàn)有類型。托運人設置的類型即使在發(fā)送到另一個Logstash服務器時也會保留該事件的生命耿芹。
以上翻譯是google翻譯提供
具體的見:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html
圖6中有個run目錄崭篡,在這里是用來存放:sql_last_value的時間值的
store_list.sql
先在es中生成index
PUT /store_list
{
? "settings": {
? ? "number_of_shards": 3,
? ? "number_of_replicas": 1
? },
? "mappings": {
? ? "jdbc": {
? ? ? "properties": {
? ? ? ? "@timestamp": {
? ? ? ? ? "type": "date"
? ? ? ? },
? ? ? ? "@version": {
? ? ? ? ? "type": "keyword"
? ? ? ? },
? ? ? ? "store_id": {
? ? ? ? ? "type": "long"
? ? ? ? },
? ? ? ? "store_name": {
? ? ? ? ? "type": "keyword"
? ? ? ? },
? ? ? ? "uid": {
? ? ? ? ? "type": "text"
? ? ? ? },
? ? ? ? "telephone": {
? ? ? ? ? "type": "text"
? ? ? ? },
? ? ? ? "street_id": {
? ? ? ? ? "type": "text"
? ? ? ? },
? ? ? ? "detail": {
? ? ? ? ? "type": "keyword"
? ? ? ? },
? ? ? ? "address": {
? ? ? ? ? "type": "keyword"
? ? ? ? },
? ? ? ? "store_created": {
? ? ? ? ? "type": "date"
? ? ? ? },
? ? ? ? "store_updated": {
? ? ? ? ? "type": "date"
? ? ? ? },
? ? ? ? "detail_id": {
? ? ? ? ? "type": "long"
? ? ? ? },
? ? ? ? "type_name": {
? ? ? ? ? "type": "text"
? ? ? ? },
? ? ? ? "tag": {
? ? ? ? ? "type": "keyword"
? ? ? ? },
? ? ? ? "overall_rating": {
? ? ? ? ? "type": "text"
? ? ? ? },
? ? ? ? "navi_location_lng": {
? ? ? ? ? "type": "double"
? ? ? ? },
? ? ? ? "navi_location_lat": {
? ? ? ? ? "type": "double"
? ? ? ? },
? ? ? ? "detail_url": {
? ? ? ? ? "type": "text"
? ? ? ? },
? ? ? ? "comment_num": {
? ? ? ? ? "type": "integer"
? ? ? ? },
? ? ? ? "detail_created": {
? ? ? ? ? "type": "date"
? ? ? ? },
? ? ? ? "detail_updated": {
? ? ? ? ? "type": "date"
? ? ? ? },
? ? ? ? "location_id": {
? ? ? ? ? "type": "long"
? ? ? ? },
? ? ? ? "lng": {
? ? ? ? ? "type": "double"
? ? ? ? },
? ? ? ? "lat": {
? ? ? ? ? "type": "double"
? ? ? ? }
? ? ? }
? ? }
? }
}
上面這種方式可以通過es管理工具執(zhí)行,比如kibana->dev tools
或者
curl -XPUT "http://localhost:9200/store_list" -H 'Content-Type: application/json' -d'
{
? "settings": {
? ? "number_of_shards": 3,
? ? "number_of_replicas": 1
? },
? "mappings": {
? ? "jdbc": {
? ? ? "properties": {
? ? ? ? "@timestamp": {
? ? ? ? ? "type": "date"
? ? ? ? },
? ? ? ? "@version": {
? ? ? ? ? "type": "keyword"
? ? ? ? },
? ? ? ? "store_id": {
? ? ? ? ? "type": "long"
? ? ? ? },
? ? ? ? "store_name": {
? ? ? ? ? "type": "keyword"
? ? ? ? },
? ? ? ? "uid": {
? ? ? ? ? "type": "text"
? ? ? ? },
? ? ? ? "telephone": {
? ? ? ? ? "type": "text"
? ? ? ? },
? ? ? ? "street_id": {
? ? ? ? ? "type": "text"
? ? ? ? },
? ? ? ? "detail": {
? ? ? ? ? "type": "keyword"
? ? ? ? },
? ? ? ? "address": {
? ? ? ? ? "type": "keyword"
? ? ? ? },
? ? ? ? "store_created": {
? ? ? ? ? "type": "date"
? ? ? ? },
? ? ? ? "store_updated": {
? ? ? ? ? "type": "date"
? ? ? ? },
? ? ? ? "detail_id": {
? ? ? ? ? "type": "long"
? ? ? ? },
? ? ? ? "type_name": {
? ? ? ? ? "type": "text"
? ? ? ? },
? ? ? ? "tag": {
? ? ? ? ? "type": "keyword"
? ? ? ? },
? ? ? ? "overall_rating": {
? ? ? ? ? "type": "text"
? ? ? ? },
? ? ? ? "navi_location_lng": {
? ? ? ? ? "type": "double"
? ? ? ? },
? ? ? ? "navi_location_lat": {
? ? ? ? ? "type": "double"
? ? ? ? },
? ? ? ? "detail_url": {
? ? ? ? ? "type": "text"
? ? ? ? },
? ? ? ? "comment_num": {
? ? ? ? ? "type": "integer"
? ? ? ? },
? ? ? ? "detail_created": {
? ? ? ? ? "type": "date"
? ? ? ? },
? ? ? ? "detail_updated": {
? ? ? ? ? "type": "date"
? ? ? ? },
? ? ? ? "location_id": {
? ? ? ? ? "type": "long"
? ? ? ? },
? ? ? ? "lng": {
? ? ? ? ? "type": "double"
? ? ? ? },
? ? ? ? "lat": {
? ? ? ? ? "type": "double"
? ? ? ? }
? ? ? }
? ? }
? }
}'
然后通過http://localhost:9200/store_list/查看字段生成情況
store_list就是index,相當于數(shù)據(jù)庫的database
然后回到logstash目錄下
執(zhí)行 nohup.exe ./bin/logstash.bat -f config-mysql/load_data.conf &
最好加上& 結(jié)尾吧秕,后臺運行
然后看數(shù)據(jù)庫同步情況
可能有些細節(jié)沒能寫全琉闪,如果在集成中遇到什么情況,可以評論指出