部署的版本需要统一,否则可能会有兼容性问题,使用6.8.0. 外网访问需要放行 5601 9200 9300 三个端口 ElasticSearch 与Logstash不建议部署同台服务器
默认中间件都安装在 /usr/local/elk下(没有的话新建目录 mkdir /usr/local/elk),点此处下载(链接: https://pan.baidu.com/s/1J-fOALTN4YzbV-gqJZ_HJQ 密码: t133)useradd esuser; chown -R esuser:esuser /usr/local/elk/elasticsearch-6.8.0; su esuser;
上传安装包elasticsearch-6.8.0.tar.gz至/usr/local/elk下,解压tar -zxvf elasticsearch-6.8.0.tar.gz进入解压完的目录elasticsearch-6.8.0,启动ES。sh bin/elasticsearch -d
查看启动日志有无报错信息tail -300f logs/elasticsearch.log
上述步骤没有问题,验证环境是否正常。服务器验证:curl localhost:9200 或者浏览器访问:ip:9200
若访问返回一个JSON串,则启动成功!
{ "name" : "yAp2S0u", "cluster_name" : "elasticsearch", "cluster_uuid" : "7z3A7GQWS0ipoMWmDSa0jw", "version" : { "number" : "6.8.0", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "65b6179", "build_date" : "2019-05-15T20:06:13.172855Z", "build_snapshot" : false, "lucene_version" : "7.7.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }若没有类似的返回结果,查看日志排查。 备注:第4步中若服务器正常,浏览器访问不了,在确认服务器防火墙对9200、9300的不限制的情况下,需要配置服务的host
# 配置 network.host: 0.0.0.0 vi config/elasticsearch.yml 安装ik分词插件可以在线/离线安装,这里使用离线安装
离线安装在线安装的 6.8.0使用过程中有问题,版本有bug,使用离线6.6.1版本可以正常使用
在ES安装目录下的plugins新建ik文件夹,把elasticsearch-analysis-ik-6.6.1.zip上传至文件夹中解压上面的文件 unzip elasticsearch-analysis-ik-6.6.1.zip,需要修改版本对应信息,修改plugin-descriptor.propertiesversion=6.8.0 elasticsearch.version=6.8.0 重启ES在线安装(暂时不使用在线方式安装6.x版本)
进入ES安装的目录下,执行下面的语句 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.0/elasticsearch-analysis-ik-6.8.0.zip重启ESsh bin/elasticsearch -d
验证 创建索引 curl -XPUT http://localhost:9200/test 测试分词器 curl -XPOST http://localhost:9200/test/_analyze -H 'Content-Type:application/json' -d' { "analyzer": "ik_max_word", "text":["我是测试数据,中文分词ik!"] } ' 返回结果正常分词则配置分词成功 开启安全登录单机部署无需去配置ssl,但配置文件需要开启,集群部署需要
查杀 elasticsearch 进程
jps 找到对应任务的pidkill -9 ${pid}在根目录找到config文件夹,进入该文件夹,编辑配置文件
vim elasticsearch.yml 在末尾添加 xpack.security.enabled: true xpack.security.transport.ssl.enabled: true
重新启动 elasticsearch
sh bin/elasticsearch -d
为默认账号手动设置密码(出现y/n,选y就行),以后登录需要使用
sh bin/elasticsearch-setup-passwords interactive
解压
上传安装包kibana-6.8.0-6.8.0.tar.gz至/usr/local/elk下,解压tar -zxvf kibana-6.8.0-6.8.0.tar.gz 点此处下载(链接: https://pan.baidu.com/s/1J-fOALTN4YzbV-gqJZ_HJQ 密码: t133)
编辑配置文件,添加elasticsearch用户登录名、密码
进入解压文件夹目录,vim config/kibana.yml
elasticsearch.username: "kibana" # 安装ES时设置的对应的账号密码 elasticsearch.password: "your_password"启动
nohup sh bin/kibana &
验证
打开浏览器,访问ip:5601,跳转kibana登录验证界面即为安装成功。输入设置的内置账号密码登录即可内置账号:elastic、kibana、logstash_system、beats_system、apm_system、remote_monitoring_user elastic 账号可管理用户设置(kibana->Management->Users)
点击DevTools的控制台 POST test003/_doc { "city2":"我和我的家乡上映!" } GET test003/_search若GET有返回结果,说明环境正常。
**备注:**ES服务正常,kibana启动也无ERROR日志,浏览器不能访问,5601端口也无防火墙隔离,需要设置host
# 设置 server.host: "0.0.0.0" vi config/kibana.ymldate.dat 存储增量变化的值。如按时间进行增量同步,这里就是保存最新的增量时间。在第一次呢做全量同步的时候,可以手动指定一个比当前数据都小的过去时间
--- '1970-01-01 00:00:00'config.cfg 任务执行的配置文件
input { stdin { } jdbc { #数据库连接地址(需要替换地址) jdbc_connection_string => "jdbc:mysql://ip:3306/test" #用户名 jdbc_user => "root" #密码 jdbc_password => "0.123abc" #指定数据库驱动jar(需要替换地址)(建议使用绝对路径,相对试过没成功) jdbc_driver_library => "/usr/local/elk/logstash-6.8.0/driver/mysql-connector-java-5.1.44.jar" #驱动类名称 jdbc_driver_class => "com.mysql.jdbc.Driver" #数据查询分页配置 jdbc_paging_enabled => "true" jdbc_page_size => "50000" #时区设置 jdbc_default_timezone => "Asia/Shanghai" #是否开始小写转化 false使用sql中的字段名称,不改变大小写 lowercase_column_names => false #开启记录最后一次的增量字段值 record_last_run => true #使用sql自定义的字段 use_column_value => true #自定义增量字段名称(需要替换地址) tracking_column => "updateTime" #字段类型 tracking_column_type => "timestamp" #最后一次增量字段保存的值(需要替换地址)(可以指定文件设置默认值 ---#{value}) last_run_metadata_path => "/usr/local/elk/logstash-6.8.0/task/searchTest/date.dat" #指定执行sql文件(需要替换地址) statement_filepath => "/usr/local/elk/logstash-6.8.0/task/searchTest/excute.sql" schedule => "* * * * *" #任务名称(需要替换地址)(唯一性) type => "searchTest" } } output { elasticsearch { # ES服务地址(需要替换地址) hosts => "ip:9200" user => "elastic" # 密码 (需要替换地址) password => "yourPassword" #ES对应索引名称(没有索引会按照默认的规则新建) index => "searchTest" #文档ID属性(可以用sql语句中的字段名,若不写,系统自动创建UUID) document_id => "%{id}" #ES索引创建的模板属性(可设置默认分词器等) template_name => "logstash" template => "/usr/local/elk/logstash-6.8.0/template/logstash.json" template_overwrite => true manage_template => true } # 控制台输出(可省略) stdout { codec => rubydebug } }excute.sql
字段需要设置别名,以驼峰方式命名。:sql_last_value 这个是在config.cfg文本中所配置的增量字段,可以是ID或者时间来标识这个数据是否是增量同步。
SELECT id as id, app_name AS appName, update_time as updateTime FROM app WHERE update_time > :sql_last_value 编辑 config/pipelines.yml流水线配置,有多个任务可以配置多个流水线任务,id是唯一就行 #搜索任务流水配置 - pipeline.id: serachTest path.config: "/usr/local/elk/logstash-6.8.0/task/searchTest/config.cfg" 启动 sh bin/logstash启动失败,配置没有问题,可能是配置文件格式中格式或者空格导致的