ELK Stack学习笔记
一、ELK Stack简介
1、Elasticsearch
一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene
(信息检索的工具jar包)基础上的搜索引擎,使用Java语言编写
2、Logstash
一个完全开源的工具,可以对日志进行收集、过滤,并将其存储供以后使用。
是开源的服务器端数据处理管道,能够从多个来源收集数据、转换数据。并保存到存储库中
3、Kibana
一个开源和免费的工具,它可以为Logstash
和 ElasticSearch
提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
4、Filebeat
ELK
协议栈的新成员,一个轻量级开源日志文件数据搜集器,基于 Logstash-Forwarder
源代码开发,是对它的替代。在需要采集日志数据的 server 上安装Filebeat
,并指定日志目录或日志文件后,Filebeat
就能读取数据,迅速发送到Logstash
进行解析,亦或直接发送到 Elasticsearch
进行集中式存储和分析。
这种结构因为需要在各个服务器上部署 Logstash
,而它比较消耗 CPU 和内存资源,所以比较适合计算资源丰富的服务器,否则容易造成服务器性能下降,甚至可能导致无法正常工作。
基于Filebeat的架构
简单总结一下:ELK = Logstash、Filebeat(收集)+ Elasticsearch(存储 + 搜索)+ kinana(展示)
ELK日志采集流程
二、Elasticsearch
1、历史
多年前,一个叫做Shay Banon的刚结婚不久的失业开发者,由于妻子要去伦敦学习厨师,他便跟着也去了。在他找工作的过程中,为了给妻子构建一个食谱的搜索引擎,他开始构建一个早期版本的Lucene。
直接基于Lucene工作会比较困难,所以Shay开始抽象Lucene代码以便]ava程序员可以在应用中添加搜索功能。他发布了他的第一个开源项目,叫做“Compass".
后来Shay找到一份工作,这份工作处在高性能和内存数据网格的分布式环境中,因此高性能的、实时的、分布式的搜索引擎也是理所当然需要的。然后他决定重写Compass库使其成为一个独立的服务叫做Elasticsearch。
第一个公开版本出现在2010年2月,在那之后Elasticsearch已经成为Github上最受欢迎的项目之一,代码贡献者超过300人。一家主营Elasticsearch的公司就此成立,他们一边提供商业支持一边开发新功能,不过Elasticsearch将永远开源且对所有人可用。Shay的妻子依旧等待着她的食谱搜索......
2、ES与关系型数据库对比
关系型数据库和Elasticsearch
客观对比
Relational DB | ElasticSearch |
---|---|
数据库 | indexes(索引) |
表 | types(7.x弃用) |
行 | documents(文档 ) |
字段 | fields(属性) |
类型弃用原因
3、ES中的核心概念
1)、index、type、document、field
2)、mappings:映射关系,映射field的字段类型,字段的分词,索引,存储的特性。字段类型自动推断
在实际工作中,我们一般都会提前定义好es当中每个字段的类型,方便于我们后面使用JavaBean来映射索引库里面的数据
字段类型一旦创建之后便无法修改,可以通过reindex解决
索引:是否可以搜索
分词:是否可用字段检索
存储:查询结果是否显示该字段
3)、settings:设置es索引库当中数据的分片数以及副本数
比如有的重要索引,副本数很少甚至没有副本,那么我们可以通过setting来添加副本数
分片数创建之后便无法修改
4)、cluster:集群 es每一个节点叫做一个node,所有的node组织起来就形成了集群的概念
5)、基本数据类型
类型 | 字段 |
---|---|
字符串类型 | text、keyword |
数值类型 | long、integer、short、byte、double、float、half float、scaled float |
日期 | date |
布尔 | boolean |
二进制 | binary |
4、Rest风格说明
method | url地址 | 描述 |
---|---|---|
PUT | localhost:9200/索引名称/类型名称/文档id | 创建文档(指定文档id ) |
POST | localhost:9200/索引名称/类型名称 | 创建文档(随机文档id) |
POST | localhost:9200/索引名称/类型名称/文档id/_update | 修改文档 |
DELETE | localhost:9200/索引名称/类型名称/文档id | 删除文档 |
GET | localhost:9200/索引名称/类型名称/文档id | 查询文档通过文档id |
POST | localhost:9200/索引名称/类型名称/_search | 查询所有数据 |
5、IK分词器
1)、两种分词算法
最粗粒度:ik_smart
最细粒度:ik_max_word
2)、热词更新
修改配置IKAnalyzer.cfg.xml文件
6、分片交互过程
数据究竟写入到哪一个shard去
由系统_id hashCode值 % number of primary shard
根据id查询过程跟写入过程一样
根据条件查询需要查询所有shard,然后根据数据得分值进行排序汇总
三、Logstash
集中、转换和存储数据
Logstash
主要有三个组件
input plugins : 主要是用于定义从那些地方采集数据
output plugins : 主要是定义将采集好的数据保存到指定位置
filter plugins : 主要是对收集的数据做加工和格式转换的工作
1、input插件
1)、采集文件数据
.\logstash.bat -f ..\config\monitor_file.conf -tinput{file{ // 采集文件数据 当tomcat.log文件中追加数据path => "/export/servers/es/datas/tomcat.log"type => "log"start_position => "beginning"}
}
2)、采集数据库数据
.\logstash.bat -f ..\config\jdbc.conf -t
input{jdbc{jdbc_driver_library => "F:/ElasticSearch/datas/mysql-connector-java-5.1.48.jar"jdbc_driver_class => "com.mysql.jdbc.Driver"jdbc_connection_string => "jdbc:mysql://localhost:3306/jdbc"jdbc_user => "root"jdbc_password => "root"use_column_value => truetracking_column => "id"schedule => "* * * * *"statement => "select * from t_user where id > :sql_last_value}
}
3)、采集系统日志
syslog机制负责记录内核和应用程序产生的日志信息,管理员可以通过查看日志记录来掌控系统状况
2、filter插件
Logstash
之所以强悍的主要原因是filter插件,通过过滤器的各种组合可以得到我们想要的结构化数据。
1)、grok正则表达式
grok正则表达式是logstash非常重要的一个环节,可以通过grok非常方便的将数据拆分和索引
语法格式:
(?pattern)
?表示要取出里面的值,pattern就是正则表达式
5.20 今天天气不错
filter{grok{match => {"message" => "(?<date>\d+\.\d+)\s+"}}
}
提取数据
{"@version" => "1","message" => "5.20 \\xBD\\xF1\\xCC\\xEC\\xCC?\\xC4\\xE1?\\r","@timestamp" => 2022-03-23T13:04:09.070Z,"host" => "PC-20210226RHLR","date" => "5.20"
}
3、output插件
1)、标准输出到控制台
将我们收集的数据直接打印到控制台
output{stdout{codec => rubydebug}
}
2)、将采集到的数据保存到文件
output{file{path => "F:/ElasticSearch/datas/output-%{+YYYY-MM-dd}-%{host}.log"codec => line {format = "%{message}"}flush_interval => 0}
}
3)、将采集到的数据保存到es
output{elasticsearch{hosts => "localhost:9200"index => "logstash-%{+YYYY.MM.dd}"}
}
四、Kibana
Kibana
是一个强大的报表展示工具,开源通过Kibana
自定义我们的 数据报表展示,实现我们的数据的各种图表查看
1、添加测试数据
curl -H "Content-Type: application/x-ndjson" -XPOST "localhost:9200/bank/account/_bulk?pretty" --data-binary @accounts.json
curl -H "Content-Type: application/x-ndjson" -XPOST "localhost:9200/_bulk?pretty" --data-binary @logs.jsonl
五、ELK综合案例
ELK Stack
全量日志查询
在实际工作当中,我们经常会对服务器当中产生的各种日志比较感兴趣,因为产生的日志可以很好的说明我们的服务器的工作状态是否正常,日志的也可以供我们排查各种错误等。所以很多时候我们都会收集各种日志进行汇总,方便我们统一的查看,有了ELK技术栈
之后,我们就可以很轻松方便的使用Logstash
来进行收集我们的日志数据,然后将数据存储到ES当中,然后通过 Kibana
的可视化工具来查看我们的日志数据了
1、rsyslog
收集服务器日志数据
2、收集服务器用户操作命令日志
3、采集nginx日志数据
ELK Stack学习笔记相关推荐
- ELK搜索学习笔记--Day1
ELK搜索学习笔记–Day1 1. 课程简介 1.1 课程内容 ELK是包含但不限于Elasticsearch(简称es).Logstash.Kibana 三个开源软件的组成的一个整体.这三个软件合成 ...
- java值栈_Struts2学习笔记-Value Stack(值栈)和OGNL表达式
只是本人的Struts2学习笔记,关于Value Stack(值栈)和OGNL表达式,把我知道的都说出来,希望对大家有用. 一,值栈的作用 记录处理当前请求的action的数据. 二,小例子 有两个a ...
- ELK学习笔记之Logstash详解
0x00 Logstash概述 官方介绍:Logstash is an open source data collection engine with real-time pipelining cap ...
- 写给大忙人的ELK最新版6.2.4学习笔记-Logstash和Filebeat解析(java异常堆栈下多行日志配置支持)
写给大忙人的ELK最新版6.2.4学习笔记-Logstash和Filebeat解析(java异常堆栈下多行日志配置支持) 参考文章: (1)写给大忙人的ELK最新版6.2.4学习笔记-Logstash ...
- 【小猫爪】AUTOSAR学习笔记03-Communication Stack之CanIf模块
[小猫爪]AUTOSAR学习笔记03-Communication Stack之CanIf模块 前言 1 CanIf简介 2 功能介绍 2.1 发送缓冲区 2.2 CAN Controller 模式控制 ...
- 【小猫爪】AUTOSAR学习笔记10-Communication Stack之CanTsyn模块
[小猫爪]AUTOSAR学习笔记10-Communication Stack之CanTsyn模块 前言 1 时间同步的引入 2 时间同步的角色 3 时间同步过程 3.1 四种报文 3.2 时间同步过程 ...
- 【小猫爪】AUTOSAR学习笔记02-Communication Stack简介
[小猫爪]AUTOSAR学习笔记02-Communication Stack简介 前言 1 简介 2 CAN消息的传播路径 2.1 Com服务 2.2 Dcm服务 2.3 SM服务和NM服务 3 补充 ...
- 【小猫爪】AUTOSAR学习笔记06-Communication Stack之ComM模块
[小猫爪]AUTOSAR学习笔记06-Communication Stack之ComM模块 前言 1 ComM简介 2 ComM功能介绍 2.1 PNC 状态管理 2.2 Channel状态管理 2. ...
- 学习笔记:C++初阶【C++入门、类和对象、C/C++内存管理、模板初阶、STL简介、string、vector、list、stack、queueu、模板进阶、C++的IO流】
文章目录 前言 一.C++入门 1. C++关键字 2.命名空间 2.1 C语言缺点之一,没办法很好地解决命名冲突问题 2.2 C++提出了一个新语法--命名空间 2.2.1 命名空间概念 2.2.2 ...
- 【小猫爪】AUTOSAR学习笔记16-Memory Stack之Nvm模块
[小猫爪]AUTOSAR学习笔记16-Memory Stack之Nvm模块 前言 1 Memory Stack结构 2 NvM模块 2.1 Block 2.2 数据结构 2.3 Redundant B ...
最新文章
- uni-app 使用 web-view 页面之间互相跳转、通信
- Elasticsearch的Shield插件
- 2018几大主流的 UI/JS 前端框架
- 产品问答| 如何选择行业?行业经验会变成阻碍吗?
- css实现快速抖动效果_web前端入门到实战:CSS实现照片堆叠效果
- 什么标准规定了aes加密_Python 爬虫进阶必备 | 关于某租房网站数据加密的分析(送两本 Python 书)...
- linux加密框架 crypto 算法crypto_register_alg的注册流程
- pythonopencv提取圆内图像_python – 使用OpenCV从图像中提取多边形给定...
- Swift中文教程(十) 属性
- AGP Aperture Size UMA Frame Buffer Size
- 手游服务器价格表,杭州高防43.241.17.1
- android studio 报错Permission is only granted to system apps
- 报错: mysqldump: Got errno 28 on write
- 增量式编码器工作原理超详细图解
- what is the mes (mes系统是什么)
- 收益率的分解 无风险利率
- mysql免安装版用法
- 6个简历模板免费下载网站,资源超多,质量超高!
- 2021年危险化学品生产单位安全生产管理人员考试内容及危险化学品生产单位安全生产管理人员试题及解析
- Cesium交流群链接