概念
ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。
Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。Logstash 是一个动态数据收集管道。支持以 TCP/UDP/HTTP 多种方式收集数据(也可以接受 Beats 传输来的数据),并对数据做进一步丰富或提取字段处理
Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
LogStash
准备安装包logstash-5.6.0.tar.gz
tar -xvf logstash-5.6.0.tar.gz 解压安装
运行测试:
logstash -e ‘input{stdin{}}output{stdout{codec=>rubydebug}}’
这行命令的意思就是收集控制台打印内容,并且转化成固定格式的字符串在控制台输出
得到这样的结果,表示logstash运行成功
使用Logstash导入mysql数据到es
准备要导入的表information
安装jdbc-input插件(logstash-input-jdbc-4.2.4.tar.gz),上传到logstash下的plugins目录下(如果目录不存在手动创建)
准备好jdbc的驱动:logstash-input-jdbc-4.2.4.tar.gz
编写配置文件
jdbc.conf logstash启动时加载的文件
jdbc.sql 执行的查询语句
template.json输出到es中的数据类型的mapping
jdbc.conf
input {
stdin {
}
jdbc {
# 连接mysql地址和库
jdbc_connection_string => "jdbc:mysql://localhost:3306/tsdn"
# 登录名密码
jdbc_user => "root"
jdbc_password => "123456"
# 上传的mysql-connector的jar包,确定路径
jdbc_driver_library => "/home/resources/mysql-connector-java-5.1.38-bin.jar"
# 驱动类全路径名称
jdbc_driver_class => "com.mysql.jdbc.Driver"
# 开启分页,和分页最大值,自定义设置
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
#连接数据库执行的sql语句,可以在文件中设定搜索,更新等
statement_filepath => "/home/resources/jdbc.sql"
#设定监听事件间隔
schedule => "* * * * *"
#导入es中的类型,es中有个字段是type
type => "info_type"
}
}
filter {
json {
source => "message"
remove_field => ["message"]
}
}
output {
#设定收集数据的输出位置
elasticsearch {
#es的连接地址
hosts => "192.168.168.101:9200"
#新建的索引 , 数据存入时所在的索引名称
index => "tsdn_info"
#使用搜出出来的那个字段设定docid,我们使用商品id
document_id => "%{id}"
template_overwrite => true
template =>"/home/software/logstash5.6.0/
#template模板文件,定义,输入到es中的数据类型的mapping
template/template.json"
}
stdout {
codec => json_lines
}
}
jdbc.sql
select
id,title,description,source,author
from
information
template.json
{
"template": "*",
"version": 50001,
"settings": {
"index.refresh_interval": "5s"
},
"mappings": {
"_default_": {
"_all": {
"enabled": true,
"norms": false
},
"dynamic_templates": [
{
"message_field": {
"path_match": "message",
"match_mapping_type": "string",
"mapping": {
"type": "text",
"norms": false
}
}
},
{
"string_fields": {
"match": "*",
"match_mapping_type": "string",
"mapping": {
"type": "text",
"norms": false,
"analyzer": "ik_max_word",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
}
}
],
"properties": {
"@timestamp": {
"type": "date",
"include_in_all": false
},
"@version": {
"type": "keyword",
"include_in_all": false
}
}
}
}
}
启动logstash
./logstash -f /home/resources/jdbc.conf
即开始导入数据
Kibana
准备安装包kibana-5.5.2-linux-x86_64.tar.gz
解压安装tar -xvf kibana-5.5.2-linux-x86_64.tar.gz
修改安装目录下的config下的kibana.yml
2 server.port: 5601
7 server.host: "192.168.168.101"
21 elasticsearch.url: "http://192.168.168.101:9200"
30 kibana.index: ".kibana"
设置完成后,切换到bin目录,输入./kibana启动kibana(要先启动es)
在网页测试访问,我的是192.168.168.101:5601
kibana界面标签
discover查询:用于通过菜单界面主要用于通过搜索请求,过滤结果,查看文档数据
visualize展示:要用于将查询出的数据进行可视化展示,且可以将其保存加载合并到 Dashboard 中
dashboard控制面板:菜单界面中,我们可以自由排列一组已保存的可视化数据。
timelion时间序列化展示组件:是一个时间序列数据的可视化,可以结合在一个单一的可视化完全独立的数据源
dev tools开发工具:使用户可以方便的通过浏览器直接与es进行交互,发送restful请求进行增删查改
management 管理