本文章用的elastic相關組件版本: 6.4.1html
Elasticsearch
Logstash
Kibana
jdk8
(主要根據Logstash
的版本, 最新的6.6版本應該是能夠支持jdk11
了)
下載mysql-connector-java.jar找對應MySQL的版本
具體每一個插件的安裝方式請查看官方文檔, 很簡單的, WIN下的都是綠色版, Linux的安裝目錄基本是在/usr/share/對應軟件
,配置文件目錄在/etc/對應軟件
下面.java
input的配置 能夠參考:https://www.elastic.co/guide/...mysql
input { jdbc { #多個輸入或者輸出的時候須要配置此項 type => "article" jdbc_driver_library => "youpath/mysql-connector-java-5.1.47-bin.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/yourdb" jdbc_user => "mysql_user" jdbc_password => "mysql_password" #是否啓用分頁查詢, 就是limit jdbc_paging_enabled => true #每次查詢多少 jdbc_page_size => 50000 #定時字段 各字段含義(由左至右)分、時、天、月、年,所有爲*默認含義爲每分鐘都更新(測試結果,不一樣的話請留言指出) schedule => "* * * * *" statement => "SELECT * FROM article WHERE id > :sql_last_value ORDER BY id ASC" #能夠是語句, 也能夠是指定的文件, 和上面的statement有一個就好了 statement_filepath => "yourpath/logstash_jdbc_article.sql" #是否使用自定義標記列 use_column_value => true #指定的列(字段) tracking_column => "id" #是否記錄最後運行的指標 record_last_run => true #記錄的指標存儲路徑, 當多個input的時候, 這個是必需要設置的, 不然多個input會共用一個 last_run_metadata_path => "yourpath/logstash_jdbc_last_run_article" } }
schedule的寫法
默認* * * * *
是每分鐘一次, 這個的語法能夠看rufus-scheduler, 估計不少人看了也不太會寫本身想要的, 我就舉個簡單的例子吧:
每5分鐘這樣寫:*/5 * * * *
; 每3小時這樣寫:* */3 * * *
.
output的判斷語法 能夠參考:https://www.elastic.co/guide/...git
if EXPRESSION { //... } else if EXPRESSION { //... } else { //... }
舉個例子:github
output { if [type] == "article" { elasticsearch { hosts => ["http://127.0.0.1:9200"] index => "article" document_id => "%{id}" #user => "elastic" #password => "changeme" #自定義的mapping的文件 template => "../config/mapping_article.json" template_name => "article" template_overwrite => true } } else if [type] == "order" { elasticsearch { hosts => ["http://127.0.0.1:9200"] index => "order" document_id => "%{id}" #user => "elastic" #password => "changeme" #自定義的mapping的文件 template => "../config/mapping_order.json" template_name => "order" template_overwrite => true } } }
template
和 template_name
, template_overwrite
這三個配置是自定義mapping
用的sql
logstash -f [指定配置文件的路徑.conf]
json
修改Elasticsearch設置
修改elasticsearch.yml
, 添加兩個配置項:安全
xpack.security.enabled: true xpack.security.transport.ssl.enabled: true
在下面更新license
的時候, 請將以上設置爲false
(也能夠不設置爲false, 影響可能不大)app
X-PACK設置:
在用下面步驟中的elastic-setup-passwords
命令以前, 是須要依賴x-pack
模塊的, Elastic 6.3.x
後面的版本, 就內置了這個模塊,這個模塊 是收費的, 免費和收費的區別, 網上有破解版, 我暫時用破解版作演示, 請你們仍是使用正版吧. 破解版替換完原版文件後, 須要本身去官網申請一個basic受權的license文件, 這是申請地址. 申請成功後去你剛纔填寫的郵箱裏查收郵件, 點擊右鍵裏的 license
下載地址, 下載下來這是一個json文件, 修改裏面的type
爲platinum
; 修改expiry_date_in_millis
爲2855980923000
. 而後再在Kibana
的Management
的License Management
的地方上傳修改後的License
文件.dom
初始化用戶及密碼
命令:yourpath/elastic/bin/elastic-setup-passwords
根據本身的系統找到相應位置
這個命令只有兩個參數 auto
和 interactive
一個是自動, 一個是交互, 交互的方式就是能夠本身設置密碼, 自動的我沒用過, 這個命令會設置5個用戶的密碼:elastic
,kibana
,logstash_system
,beats_system
,apm_system_users
,其中elastic
這個用戶的權限最大.
Kibana密碼設置
修改kibana.yml
文件:
elasticsearch.username: "elastic" elasticsearch.password: "剛纔設置的密碼"
在完成以上步驟後, 記得重啓Elasticsearch
和Kibana
, 在重啓Kibana
的時候, 會遇到一些warning
和error
,先無論error
,有兩個warning
須要先解決, 後面的error
天然就沒有了. 這兩個應該是關於xpack.reporting.encryptionKey
和xpack.security.encryptionKey
的.參考https://www.elastic.co/guide/... 和 https://www.elastic.co/guide/... 仍是修改kibana.yml
xpack.reporting.encryptionKey: "a_random_string" xpack.security.encryptionKey: "something_at_least_32_characters"
再重啓應該就沒有error
了, 這個時候就能夠用以前設置密碼的那幾個帳號登陸了, 用elastic
帳號登陸, 還能夠設置其餘幾個帳號的權限了.