ELK之elasticsearch +logstash+ kibana (一)服务搭建及测试
通过查看网上的资料和文档,来把这块整理下。
elasticsearch 一个简单且又复杂的搜索引擎,索引,片,文档等操作元素。在集群环境下的搜索比较能发挥作用。
logstash (logstash-input-jdbc)用来实时同步数据库表数据到elasticsearch上
kibana 提供一个可视化监控管理及分析测试elasticsearch数据数据的工具。
上面搭建完并测试通过后,然后就 Java编写 elasticsearch客户端的代码 (后续补充)
一, 服务器环境
- CentOS 7 (64-bit) VMware 虚机上 ( IP : 172.16.28.248)
- JDK1.8 (Elasticsearch 的最低要求)
- oracle (IP: 172.16.28.243 )
JDK 安装 命令 :yum install java-1.8.0-openjdk* -y
二,Elastic搭建
1. 安装包下载及解压
官网下载 elasticsearch 包最新版本 elasticsearch-6.6.1.tar.gz https://www.elastic.co/cn/downloads/elasticsearch
创建目录 data/elastic
# 将 elasticsearch-6.6.1.tar.gz 放到 data/elastic ,解压 tar zxvf elasticsearch-6.6.1.tar.gz
2. 修改配置文件 elasticsearch.yml
将解压后的目录/data/elastic/elasticsearch-6.6.1 下建文件夹 data(存储数据)和logs (存储日志)。
修改 /data/elastic/elasticsearch-6.6.1 config/elasticsearch.yml
# 集群名称(本测试仅仅真对一个节点,非集群环境)
cluster.name: elastic_test
# 节点名称
node.name: node-1 # 配置存储数据目录 path.data: /data/elastic/data # 配置日志目录 path.logs: /data/elastic/logs # 绑定地址 ,这里配置本服务器的地址,也可以配置 0.0.0.0 network.host: 172.16.28.248
# 释放 elasticsearch 默认端口 9200 http.port: 9200
.... 后面的 集群节点 以及 主节点数 的配置 这里都没有释放开进行配置。不测试集群环境
以及 其他属性 比如 http.max_content_length 配置索引文件的大小 等等用到时 进行设置
3. 创建elastic用户,用 elastic用户启动elasticsearch
# 用户组 groupadd elasticgp # 用户名 useradd -g elasticgp elastic # 给用户设置密码 passwd elastic # 授权 chgrp -R elasticgp elastic/ chown -R elastic elastic/
4.启动elasticsearch 前的环境配置
1> 修改文件 /etc/security/limits.conf
elastic soft nofile 65535
elastic hard nofile 65537
2> 修改/etc/sysctl.conf
vm.max_map_count=262144 (修改完,为了确保修改的立即生效 再执行下 sudo sysctl -p )
3> 修改elastic的初始内存,在/data/elastic/elasticsearch-6.3.2/config目录下 jvm.options
-Xms512M
-Xmx512M
4> 开放端口
# 永久开放9200端口 ---- elastic http访问的默认端口 firewall-cmd --permanent --zone=public --add-port=9200/tcp
# 永久开放9300端口 ---- elastic 集群下 多节点之前通信的端口 firewall-cmd --permanent --zone=public --add-port=9300/tcp
#重新加载防火墙配置,使开放端口生效 firewall-cmd --reload
5.启动 elasticsearch
# 切换到elastic用户 su elastic # 切换到程序目录下 cd /data/elastic/elasticsearch-6.3.2 # 后台启动程序 ./bin/elasticsearch -d
6. 测试查看 http://172.16.28.248:9200/
三,logstash搭建
1. 下载解压 logstash
官网下载 logstash-6.6.1.tar.gz(与elasticsearch 版本一致) https://www.elastic.co/cn/downloads/logstash
# 将 logstash-6.6.1.tar.gz 放到 data/elastic ,解压
tar zxvf logstash-6.6.1.tar.gz
2. 安装logstash-input-jdbc
在logstash 安装目录 /data/elastic/logstash-6.6.1 下 执行
./bin/logstash-plugin install logstash-input-jdbc
3. 安装 elasticsearch-jdbc
# 将 elasticsearch-jdbc-2.3.4.1-dist.zip 放到 data/elastic ,解压
unzip elasticsearch-jdbc-2.3.4.1-dist.zip
4. 将你oracle安装目录下的ojdbc6.jar拷贝到elasticsearch-jdbc-2.3.4.1的lib目录下
本测试是oracle环境,服务器找到oracle的安装目录下ojdbc6.jar,然后进行复制转移到elasticsearch-jdbc-2.3.4.1的lib目录下
5. 在 logstash-6.6.1/bin 目录下新建jdbc_oracle.conf文件,该文件用来配置 同步oracle表数据到elasticsearch
配置一个简单同步一个表的数据 ( BAF_ORG_USER表的数据 为例子)
input{ stdin{ } jdbc{ jdbc_connection_string => "jdbc:oracle:thin:@172.16.28.243:1521:orcl" jdbc_user => "bds" jdbc_password => "bds" jdbc_driver_library => "/data/elastic/elasticsearch-jdbc-2.3.4.1/lib/ojdbc6.jar" jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver" record_last_run => "true" use_column_value => "false" tracking_column => "userid" last_run_metadata_path => "/home/oracle/es/info" clean_run => "false" jdbc_paging_enabled => "true" jdbc_page_size => "50000" statement => "SELECT * from BAF_ORG_USER" schedule => "* * * * *" type => "tstype" } } output{ elasticsearch{ hosts => "172.16.28.248:9200" index => "tsuser" document_id => "%{userid}"
--------- 这里面还可以 自定义 mapping 模板 ,对索引相关的定义 。这个定义对搜索的调整很重要,
如果没有这个自定义就是默认配置了
manage_template => true
template_overwrite => true
template_name => "test"
template => "../config/es_template.json" ---模板文件
} }
6. 启动 logstash
# 切换到 logstash-6.6.1/bin 目录下 执行命令
./logstash -f jdbc_oracle.conf
三,kibana搭建
1. 下载解压kibana
官网下载最新 kibana-6.6.1-linux-x86_64.tar.gz https://www.elastic.co/downloads/kibana
# 将 kibana-6.6.1-linux-x86_64.tar.gz 放到 data/elastic ,解压
tar zxvf kibana-6.6.1-linux-x86_64.tar.gz
2. 配置 kibana.yml
# 修改/data/elastic/kibana-6.6.1-linux-x86_64/config/kibana.yml,设置公开访问和绑定的端口: server.port: 5601 server.host: "0.0.0.0"
3. 把5601 端口 放开 (保险操作)
firewall-cmd --permanent --zone=public --add-port=5601/tcp firewall-cmd --reload
4. 启动kibana
# 在/data/elastic/kibana-6.6.1-linux-x86_64/bin 执行命令
./kibana &
5.测试 http://172.16.28.248:5601
查看 自己业务oracle 库 用户表的数据 是否同步到 elastic
全面搭建成功后,你可以通过kibana的DevTools (如上图) 来编写测试 更复杂的搜索查询等