本文章用的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
帐号登陆, 还能够设置其余几个帐号的权限了.