关于ELK以及其优势
简单GPT一下
ELK 是 Elasticsearch、Logstash 和 Kibana 三个开源项目的首字母缩写,通常一起使用构成一个强大的日志管理和分析解决方案。下面将介绍它们各自的功能和ELK的优势:
– Elasticsearch:
是一个基于 Lucene 构建的高性能搜索引擎。
主要用于全文搜索和分析。
具有高伸缩性,可以水平扩展,并且能够快速处理大量数据。
– Logstash:
是一个强大的数据处理管道工具。
能够动态地收集、处理和转发日志和事件数据。
支持多种输入、过滤、编解码和输出插件。
– Kibana:
是一个为 Elasticsearch 提供数据可视化的 Web 应用程序。
允许用户创建和分享图表、地图、表格等,以图形化展示 Elasticsearch 索引中的数据。
通常用于日志和时间序列分析、应用监控等。
ELK 相比于 MySQL 的优势主要在以下几点:
1. 文本搜索处理能力: Elasticsearch 提供全文搜索功能,对于复杂的文本查询和大数据集的文本处理有明显优势。
2. 数据处理及实时分析: Logstash 能够实时处理和分析数据,适用于日志管理和复杂事件处理,而 MySQL 更多用于结构化数据存储。
3. 数据可视化: Kibana 提供了丰富的数据可视化选择,能够以图表、地图等形式直接在 Web 界面上展示数据分析结果。
4. 扩展性与高可用性: 集群/分你手机友好
5. 大数据兼容性: 对日志和非结构化数据友好
省流:
- 优点:全文检索、毫秒级响应
- 缺点:约三倍原文大小的索引
安装
由于网上都是Docker/二进制文件分开部署,让我非常烦躁,怎么这么好的东西就不能一次搞完呢!
PS:这样不方便集群管理,不过本地跑还是很爽的🤣
ELK不支持使用latest部署,我们需要自己指定版本
在测试中8.x版本无法正常部署,建议使用7.x
version: '3'
services:
elasticsearch:
image: elasticsearch:7.17.19
environment:
- ES_JAVA_OPTS=-Xms512m -Xmx512m
- discovery.type=single-node
- cluster.name=es-docker-cluster
- http.host=0.0.0.0
volumes:
- ./es-data:/usr/share/elasticsearch/data
- ./es-plugins:/usr/share/elasticsearch/plugins
- ./es-logs:/usr/share/elasticsearch/logs
networks:
- elk-net
ports:
- "9200:9200"
- "9300:9300"
privileged: true
kibana:
image: kibana:7.17.19
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
- I18N_LOCALE=zh-CN
networks:
- elk-net
ports:
- "5601:5601"
depends_on:
- elasticsearch
logstash:
image: logstash:7.17.19
networks:
- elk-net
ports:
- "5044:5044"
- "9600:9600"
depends_on:
- elasticsearch
networks:
elk-net:
driver: bridge
如果配置正常的话会自动连接配置,等一会访问 http://127.0.0.1:5601 就行
部分情况无法连接可以参考
docker log查看kibana的配置code(实际上并不需要,自动配置失败的话,只要访问那个端口就行)
http://0.0.0.0:5601/?code=xxxxxx
替换 http://0.0.0.0:5601 为 http://127.0.0.1:5601 访问Kibana的管理界面
在这个界面可能需要输入token,token可以docker log查看elasticsearch控制台
如果不行的话可以尝试
docker exec <DOKCER_ID> bin/elasticsearch-create-enrollment-token --scope kibana
# 返回如下
WARNING: Owner of file [/usr/share/elasticsearch/config/users] used to be [root], but now is [elasticsearch]
WARNING: Owner of file [/usr/share/elasticsearch/config/users_roles] used to be [root], but now is [elasticsearch]
<一串JWT密钥>
完成
左边三道杠 -> Management(管理) -> 堆栈监测
可以看到ELK都正常工作
索引管理
左边三道杠 -> Management(管理) -> Stack Management
解析数据
logstash
TODO:等我nas配起来后去写这个,不然还没有地方存数据