关于 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 配起来后去写这个,不然还没有地方存数据