本文章用的elastic相关组件版本: 6.4.1
一, 准备
Elasticsearch
Logstash
Kibana
jdk8
(主要根据Logstash
的版本, 最新的6.6版本应该是可以支持jdk11
了)
下载mysql-connector-java.jar找对应MySQL的版本
具体每个插件的安装方式请查看官方文档, 很简单的, WIN下的都是绿色版, Linux的安装目录基本是在/usr/share/对应软件
,配置文件目录在/etc/对应软件
下面.
二, Logstash与MySQL同步
1, Logstash的配置
input的配置 可以参考:https://www.elastic.co/guide/...
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/...
if EXPRESSION {
//...
} else if EXPRESSION {
//...
} else {
//...
}
举个例子:
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
用的
2, 运行Logstash
logstash -f [指定配置文件的路径.conf]
二, 安全设置(用户认证相关设置)
修改Elasticsearch设置
修改elasticsearch.yml
, 添加两个配置项:
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
在下面更新license
的时候, 请将以上设置为false
(也可以不设置为false, 影响可能不大)
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
文件.
初始化用户及密码
命令: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
账号登录, 还可以设置其他几个账号的权限了.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。