《CentOS 7.6实战:基于Docker的ELK日志系统一站式部署指南》—— 从环境配置到Kibana可视化,手把手教你搭建生产级日志平台

CentOS 7.6下基于Docker部署ELK日志系统

0、介绍

在这里插入图片描述

ELK三个开源工具的缩写组合,用于构建集中式日志管理数据分析平台

  • Elasticsearch:分布式搜索和分析引擎
  • Logstash:日志收集、过滤和转发工具
  • Kibana:数据可视化和分析界面

它们共同构成了一个完整的日志处理流水线,广泛应用于运维监控、安全分析、业务数据分析等领域。

0.1 Elasticsearch

0.1.1 功能

  • 存储和索引:高效存储海量日志数据,并建立索引(类似数据库)。
  • 全文搜索:支持复杂的搜索语法(如模糊查询、聚合统计)
  • 分布式架构:可横向扩展,支持PB级数据处理。

0.1.2 核心概念

索引(Index)

Index 是 Elasticsearch 中的最基本单元,类似于数据库的

文档(Document)

一条JSON格式的数据记录(如一条日志

0.2 Logstash

0.2.1 功能

  • 数据采集:从文件、数据库、Kafka等来源读取数据。
  • 数据过滤:解析非结构化日志(如正则提取字段)。
  • 数据转发:将处理后的数据发送到Elasticsearch、Kafka等。

在这里插入图片描述

它支持很多输入方式,最常用的还是 jdbc,链接数据库读取表里面的日志

在这里插入图片描述

0.2.2 核心组件

组件功能
Input数据输入(如 file、beats、kafka)
Filter数据处理(如 grok 解析日志、mutate 修改字段)
Output数据输出(如 elasticsearch、stdout)

下面到安装的时候会有详细的说明,可以看下面

0.3 Kibana

主要功能就是:数据可视化:通过图表、仪表盘展示日志分析结果

核心模块

模块功能
Discover原始日志搜索和过滤。
Dashboard将多个图表组合成监控面板(这个后续可以让用户自己定义可视化界面)

在这里插入图片描述

1. 部署 Elasticsearch

为 ELK 容器创建专用网络(方便容器间通信):
如若是用 docker 必须执行下面这行,不然 Kibana 会启动不起来,在创建容器的时候,也要加上 --net elk-net \
!!!!!!!!!!!!!!

sudo docker network create elk-net

1.1 拉取 ElasticSearch 镜像

docker pull elasticsearch:7.17.0

在这里插入图片描述

1.2 创建并运行容器

如若你需要弄 数据持久化 ,必须要做下面这个操作,否则, ElasticSearch 容器会启动失败

在这里插入图片描述

Elasticsearch 容器默认以 UID 1000 的用户运行,如果主机上的挂载目录 的所有者不是 UID 1000,容器仍然会因权限不足而报错。

自己创建的挂载目录的权限一般是下面这个图
在这里插入图片描述
但是,这样不行,目录所有者必须是 UID 1000

# 后面这个目录,就是你要把 ElasticSearch 容器 数据持久化的目录
# root 用户的UID  是 0 
 chown -R 1000:1000 /data/ddg/docker/elasticsearch

创建容器并启动

sudo docker run -d \
  --name elasticsearch \
  --net elk-net \
  -p 9200:9200 \
  -p 9300:9300 \
  -e "discovery.type=single-node" \
  -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
  -v /data/ddg/docker/elasticsearch:/usr/share/elasticsearch/data \
  elasticsearch:7.17.0
参数/选项说明
sudo docker run -d以守护进程(后台)模式运行一个新的 Docker 容器
--name elasticsearch将容器命名为 elasticsearch,便于后续管理
--net elk-net将容器连接到名为 elk-net 的 Docker 网络(需提前创建:docker network create elk-net)。
-p 9200:9200端口映射:将主机的 9200 端口映射到容器的 9200 端口(HTTP REST API 端口)
-p 9300:9300端口映射:将主机的 9300 端口映射到容器的 9300 端口(集群通信端口)
-e "discovery.type=single-node"设置 Elasticsearch 为单节点模式
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"限制 JVM 堆内存为 512MB(初始和最大值)
-v /data/ddg/docker/elasticsearch:/usr/share/elasticsearch/data数据卷挂载:将主机目录映射到容器数据目录,实现持久化存储
elasticsearch:7.17.0指定使用的 Elasticsearch 镜像版本

注意事项

  1. 确保挂载目录存在且权限正确:

Elasticsearch 容器默认以 UID 1000 运行,需确保主机目录 /data/ddg/docker/elasticsearch 的所有者为 1000

# Elasticsearch 容器默认以 UID 1000 运行,需确保主机目录 /data/ddg/docker/elasticsearch 的所有者为 1000
   sudo mkdir -p /data/ddg/docker/elasticsearch
   sudo chown -R 1000:1000 /data/ddg/docker/elasticsearch

1.3 验证是否创建成功

验证是否成功

# 验证是否 启动成功
curl http://localhost:9200

在这里插入图片描述

出现这个图,东西就是成功了,也可以直接在浏览器地址栏输入 自己的公网IP+9200 端口,记得要开放 服务器防火墙 这个端口号

在这里插入图片描述

2. 部署 Kibana

2.1 获取 Kibana 镜像

在这里插入图片描述

务必注意,Kibana的版本要和ElasticSearch 相等,或者接近,最好相等

 docker pull kibana:7.17.0

在这里插入图片描述

2.2 创建并运行容器

-e “I18N_LOCALE=zh-CN” \ 把界面设置为中文, 后续也可以调整,也可以先不设置,网上都有解决方案
在这里插入图片描述
在这里插入图片描述

sudo docker run -d \
  --name kibana \
  --net elk-net \
  -p 5601:5601 \
  -e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" \
  -e "I18N_LOCALE=zh-CN" \
  kibana:7.17.0

在这里插入图片描述

这样就是成功了,可以打开浏览器验证, 下面 Kibana server is not ready yet 的意思是 Kibana服务器尚未就绪 需要等待几分钟

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

有了这个就是成功

点击自己浏览

3. 部署 logstash

3.1 拉取镜像

docker pull logstash:7.17.0

在这里插入图片描述

3.2 创建logstash容器并运行

注意

  • 现在演示的是,logstash 监听容器外部的日志文件
  • 我们需要将容器外部的文件映射到容器内,才可以完成监听
  • 也可以监听数据库的某个表,这个后续再说
  1. 先创建文件夹,然后创建配置文件,需要覆盖 Logstash 的配置文件
  2. 创建容器
mkdir -p /data/ddg/docker/logstash

cat > /data/ddg/docker/logstash/logstash.conf <<EOF
input {
  file {
    path => "/var/log/*.log"  # 监听容器内的日志文件(需挂载宿主机日志目录)
    start_position => "beginning"
  }
}
output {
  elasticsearch {
    hosts => ["http://elasticsearch:9200"]
    index => "logs-%{+YYYY.MM.dd}"
  }
  stdout { codec => rubydebug }  # 可选:在控制台输出日志
}
EOF
sudo docker run -d \
  --name logstash \
  --net elk-net \
  -v /data/ddg/docker/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
  -v /data/testLogstash:/var/log \
  logstash:7.17.0

在这里插入图片描述

这样就是容器创建、启动成功了

往被监听的宿主机的目录,插入一条数据 ,验证 索引有没有生成

echo "Test ELK log at $(date)" >> /data/testLogstash/01.log

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这样就对了,就说明 索引生成成功了,下面就是创建一个数据视图 ,可视化管理这些日志

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

看到上面这个图,就成了 !!!!!!!!!!,
可以再给被监听的宿主机的目录。再次添加一个 日志,然后点击 这个界面的刷新,就可以看到你添加的日志了。

在这里插入图片描述

运行这个ELK 还是很吃内存的,直接占了2G

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值