ELK从入门到实践
参考文章:
ELK 圣经:Elasticsearch、Logstash、Kibana 从入门到精通https://developer.aliyun.com/article/1639868
Elastic Stack(ELK)从入门到实践
ELK日志平台介绍
ELK指的是Elastic公司下面Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称
Elasticsearch(存储)
Elasticsearch是一个高度可扩展的全文搜索和分析引擎,基于Apache Lucence(事实上,Lucence也是百度所采用的搜索引擎)构建,能够对大容量的数据进行接近实时的存储、搜索和分析操作。
Logstash(收集分析)
Logstash是一个数据收集引擎,它可以动态的从各种数据源搜集数据,并对数据进行过滤、分析和统一格式等操作,并将输出结果存储到指定位置上。Logstash支持普通的日志文件和自定义Json格式的日志解析。
负责日志清洗: 日志 过滤,格式处理,等等。 有大量的 自定义完成。
Kibana(可视化)
Kibana是一个数据分析和可视化平台,通常与Elasticsearch配合使用,用于对其中的数据进行搜索、分析,并且以统计图标的形式展示。
Beats
Beats是elastic公司开源的一款采集系统监控数据的代理agent,是在被监控服务器上以客户端形式运行的数据采集器的统称。
ELK架构优点如下:
处理方式灵活,配置相对简单、检索性能高、集群线性扩展、页面美观
安装部署
这里通过docker将ELK一键部署
打开 PowerShell(管理员),依次复制执行:
# 1. 创建专用网络
docker network create elk
# 2. 启动 Elasticsearch(单节点 + 1 GB 内存)
docker run -d --name elasticsearch --net elk `
-p 9200:9200 -p 9300:9300 `
-e "discovery.type=single-node" `
-e "ES_JAVA_OPTS=-Xms1g -Xmx1g" `
-e "xpack.security.enabled=false" `
-v esdata:/usr/share/elasticsearch/data `
elasticsearch:7.17.28
# 创建logstash.conf
@"
input { beats { port => 5044 } }
output { elasticsearch { hosts => ["elasticsearch:9200"] } }
"@ > logstash.conf
# 3. 启动 Logstash(带 beats 输入)
docker run -d --name logstash --net elk `
-p 5044:5044 -p 9600:9600 `
-e "LS_JAVA_OPTS=-Xms512m -Xmx512m" `
-v ${PWD}/logstash.conf:/usr/share/logstash/pipeline/logstash.conf `
logstash:7.17.28
# 4. 启动 Kibana,让docker自动寻找可用端口(随机)
docker run -d --name kibana --net elk `
-p 5603:5601 `
-e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" `
kibana:7.17.28
如此就部署好了
#查看kibana映射
docker port kibana
#如5601/tcp -> 0.0.0.0:32768就是访问http://localhost:32768/
服务 | URL | 预期结果 |
Elasticsearch | 返回 JSON 集群信息 | |
Kibana | 出现欢迎页面(无登录框) | |
Logstash |
| 看到 Pipeline started |
相应端口展示
Elasticsearch
基本概念
索引:是Elasticsearch对逻辑数据的逻辑存储
可以把索引看成关系型数据库的表,Elasticsearch可以把索引存放在一台机器或者分散在多台服务器上,每个索引有一或多个分片,每个分片可以有多个副本
文档:存储在Elasticsearch中的主要实体叫文档document。用关系型数据库来类比的话,一个文档相当于数据库表中的一行数据。
映射:所有文档写进索引之前都会先进行分析,如何将输入的文本分割为词条,哪些词条 会被过滤,这种行为叫做映射,一般由用户自己定义规则。
基于Kibana Lens进行数据可视化,灵活分析航班 数据
首先导入样本数据,这里选择中间的flight data
然后在dashboard中创建相关视图,处理分析数据
实验结果