这里简单介绍一下elk架构中的各个组件,关于elk的详细介绍的请自行百度java
Elasticsearch是个开源分布式搜索引擎,是整个ELK架构的核心mysql
Logstash能够对数据进行收集、过滤,存储到ELasticsearch中linux
Kibana 能够为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,能够帮助您汇总、分析和搜索重要数据日志sql
下面是各个组件在架构中起到的做用数据库
elasticsearch对版本极其敏感,因此必定要注意elk全部组件务必保持版本一致!json
elk组件下载地址》》:https://www.elastic.co/cn/downloads/windows
若是是本机使用elasticsearch基本上解压即用,只须要注意将elasticsearch配置成外网可访问,方法以下:服务器
修改elasticsearch/config目录下的elasticsearch.yml文件架构
network.host: 0.0.0.0
将network.host设置为0.0.0.0便可开启外网访问,elasticsearch默认端口9200若是须要修改仍是在elasticsearch.yml文件中jvm
http.port: 9200
elasticsearch设置数据存储路径以及目录存储路径
path.data: /path/to/data
path.logs: /path/to/logs
启动方式:
windows下双击elasticsearch.bat启动
linux下执行elasticsearch启动 -d为后台启动
整个elk架构中logstash须要配置的地方最多,首先logstash起到的做用是收集数据导入至elasticsearch中,收集的方法有不少中,关系型数据库,非关系型数据库亦或者文件这里主要讲一下关系型数据库的导入
先贴出笔者的配置文件
input {
jdbc {
#设置数据库url
jdbc_connection_string => "jdbc:mysql://localhost:3306/elk"
#帐号与密码
jdbc_user => "root"
jdbc_password => "root"
#对应数据库的jar包位置以及jdbc类型
jdbc_driver_library => "/root/mysql-connector-java-5.1.46.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
#每次启动logstash是否从新加载数据
clean_run => false
#编码格式
codec => plain { charset => "UTF-8"}
#是否使用user_column_value 记录每次查询的值,这个必须为递增的值,在sql中可使用:sql_last_value取出该值,若是不设置即默认该值为上次执行sql的时间
use_column_value => false
#sql语句位置
statement_filepath => "/root/product_list.sql"
#记录上一次执行时间的文件位置
last_run_metadata_path => "/root/product_last_run_time.txt"
#使用corn表达式定义执行周期
schedule => "*/30 * * * * *"
#多个配置文件时定义该次查询集的名字,方便output、filter进行逻辑处理
type => "test"
#时区
jdbc_default_timezone => "Asia/Shanghai"
}
}
output {
#使用if判断type
if [type] == "test"{
#输出时的数据类型
stdout { codec => json_lines }
#输出到elasticsearch
elasticsearch {
#elasticsearch地址
hosts => ["localhost:9200"]
#存储到elasticsearch中的索引名
index => "test"
#存到elasticsearch中的类型名
document_type => "test"
#存到elasticsearch中的id
document_id => "%{id}"
#使用模板存储到elasticsearch中
template_name => "test"
#模板位置
template => "/root/logstash-ik.json"
}
}
}
在数据量大的期初导入数据可能会由于数据量太大致使jvm内存溢出,修改logstash/config下jvm.options文件
-Xms1g
-Xmx1g
根据机器配置去修改jvm的最大内存至8g或者更多
若是这样都不能解决内存溢出的问题,笔者这里建议将logstash数据存储从内存放到本地磁盘,这样会牺牲速率但解决了期初数据量太大的问题
修改logstash/config下logstash.yml文件
配置以下:
queue.type: persisted
queue.max_bytes: 10240mb
将queue.type设置为persisted,queue.max_bytes设置队列的最大存储数量
还有一些关于logstash性能上的优化
#logstash同时工做的线程数量,默认为服务器cpu核数,通常在cpu核数的四倍及如下合理
pipeline.workers: 2
#logstash一次操做的数据量,能够根据服务器内存来调整
pipeline.batch.size: 125
还有一些其余的优化能够自行参考logstash.yml文件
Kibana须要修改的配置很少,须要注意若是要开启远程访问Kibana须要修改
KIBANA/config/kibaba.yml下的
server.host:"localhost"更改成
server.host: "0.0.0.0" 就能够远程访问Kibana
关于elk搜索引擎的环境搭建以及配置就到这里,要配置的地方也很少,基本上是开包即用,后面会介绍如何使用关于elasticsearch的使用以及讲解如何使用elk作一个电商平台的搜索引擎。