折腾了一套 ELK Stack 日志平台(一)

·  阅读 94

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情

你好,我是悟空呀~

前言

最近在折腾 ELK 日志平台,它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。

专门实操了一波,这玩意看起来简单,但是里面的流程步骤还是很多的,而且遇到了很多坑。在此记录和总结下。

日志收集平台有多种组合方式:

  • ELK Stack 方式:Elasticsearch + Logstash + Filebeat + Kibana,业界最常见的架构。
  • Elasticsearch + Logstash + Kafka + Kibana,用上了消息中间件,但里面也有很多坑,放到下一讲。

这次先讲解 ELK Stack 的方式,这种方式对我们的代码无侵入,核心思想就是收集磁盘的日志文件,然后导入到 Elasticsearch。

比如我们的应用系统通过 logback 把日志写入到磁盘文件,然后通过这一套组合的中间件就能把日志采集起来供我们查询使用了。

整体的架构图如下所示,

流程如下:

  • 先使用 Filebeat 把日志收集起来,然后把数据再传给 Logstash。
  • 通过 Logstash 强大的数据清洗功能。
  • 最终把数据写入到 Elasticsearch 中。
  • 并由 Kibana 进行可视化。

温馨提示:以下案例都在一台 ubuntu 虚拟机上完成,内存分配了 6G。

一、部署 Elasticsearch 数据库

获取 elasticsearch 镜像

docker pull elasticsearch:7.7.1
复制代码

创建挂载目录

mkdir -p /data/elk/es/{config,data,logs}
复制代码

赋予权限

chown -R 1000:1000 /data/elk/es
复制代码

创建配置文件

cd /data/elk/es/config
touch elasticsearch.yml
-----------------------配置内容----------------------------------
cluster.name: "my-es"
network.host: 0.0.0.0
http.port: 9200
复制代码

启动 elasticsearch 容器

docker run -it  -d -p 9200:9200 -p 9300:9300 --name es -e ES_JAVA_OPTS="-Xms1g -Xmx1g" -e "discovery.type=single-node" --restart=always -v /data/elk/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/elk/es/data:/usr/share/elasticsearch/data -v /data/elk/es/logs:/usr/share/elasticsearch/logs elasticsearch:7.7.1
复制代码

验证 elasticsearch 是否启动成功

curl http://localhost:9200
复制代码

分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改