基于Docker搭建ELK(Elasticsearch、Logstash、Kibana)

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
日志服务 SLS,月写入数据量 50GB 1个月
简介: ELK是一套强大的开源工具组合,可以帮助我们采集、存储、分析和可视化大量的日志数据,本文通过简明清晰的步骤指导,帮助读者快速搭建起基于Docker的ELK日志分析平台,为日志数据的收集、存储、分析和可视化提供了一种高效可靠的解决方案。

Docker简介

Docker 是一个被广泛使用的开源容器引擎,是一种操作系统级别的虚拟化技术,它以一种特殊进程的方式运行于宿主机上,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,它依赖于liunx内核特性:namespace(名字空间进行资源的隔离)和cgroups(限制、记录任务组所使用的物理资源)

image.png

一个完整的Docker有以下几个部分组成:

  1. DockerClient客户端

  2. Docker Daemon守护进程

  3. Docker Image镜像

  4. DockerContainer容器

话不多说,先简要介绍到这里,还想了解更多的小伙伴可自行百度搜索,这里重点介绍实操内容。


Docker安装

安装依赖

yum install -y yum-utils device-mapper-persistent-data lvm2

当看到complete时代表安装完成。

image.png

添加aliyun docker-ce yum源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

image.png

重建yum缓存

yum clean all

image.png

yum makecache

image.png

查看可用的docker版本

yum list docker-ce.x86_64 --showduplicates | sort -r

image.png

这里建议根据实际情况,选择较新的稳定版本,我这里选择的是docker-ce-20.10.6

yum install -y docker-ce-20.10.6-* docker-ce-cli-20.10.6-*.x86_64

等待安装ing。。。

image.png

安装完成后,执行命令查看docker版本,有如下回显代表安装成功

docker -v

image.png


Docker启动

临时启动Docker

systemctl start docker

设置开机自动启动

systemctl enable docker

image.png

查看Docker运行状态

systemctl status docker

image.png

查看Docker容器版本信息

docker version

image.png

接下来要配置镜像加速器。这一步是很有必要的。

一是可以提升镜像下载速度:默认情况下,Docker从官方镜像仓库(Docker Hub)下载镜像。但是由于网络的限制或地理位置的原因,有时候从官方仓库下载镜像的速度可能会较慢。配置镜像加速器可以将镜像下载源切换到国内的镜像站点,从而加快镜像下载速度,提高开发和部署效率。

二是解决访问限制问题:有些时候,访问官方仓库可能会受到网络的限制,例如在某些特殊环境下无法正常访问国外网站。配置镜像加速器可以解决这样的问题,通过使用国内的镜像站点,避免了对官方仓库的直接访问,确保能够正常下载和使用镜像。

配置Docker镜像加速器非常简单,只需要将加速器的地址添加到Docker配置文件中即可,这里我们选择阿里云的加速器地址。

先创建目录/etc/docker

sudo mkdir -p /etc/docker

将文本内容写入指定文件的常用命令

sudo tee /etc/docker/daemon.json <<-'EOF'

image.png

写入镜像加速器配置

{
   
   
"registry-mirrors": ["https://e7n1ndig.mirror.aliyuncs.com"]
}
EOF

image.png

然后重新启动Docker服务,配置即可生效。

sudo systemctl daemon-reload //重载配置
sudo systemctl restart docker //重启服务

image.png


准备ELK镜像

拉取elasticsearch镜像

docker pull elasticsearch

时间较长,慢慢等待

image.png

拉取kibana镜像

docker pull kibana

image.png

拉取logstash镜像

docker pull logstash

image.png

拉取nginx镜像

docker pull nginx

这里为什么还需要部署nginx呢?因为Nginx在ELK部署中具有以下几个重要的作用:

(1)SSL/TLS加密和访问控制:通过使用Nginx作为反向代理,可以配置SSL/TLS证书以启用加密通信,确保数据在网络传输过程中的安全性。此外,Nginx还可以实施访问控制策略,例如基于IP地址的白名单/黑名单,提供对ELK堆栈的授权访问。

(2)负载均衡:当ELK集群规模扩大时,可能需要在多个Elasticsearch节点之间进行负载均衡,以提高性能和可扩展性。Nginx作为反向代理可以帮助实现负载均衡,将请求分发到不同的Elasticsearch节点,从而平衡负载并优化性能。

(3)静态资源缓存和压缩:Kibana作为ELK堆栈的前端可视化工具,可能包含大量的静态资源文件(例如JavaScript、CSS和图像等)。Nginx可以通过实施缓存策略和启用压缩,提高这些静态资源的加载速度,从而改善用户体验。

(4)改善网络安全性:将ELK堆栈直接暴露在公共网络中可能会带来一些潜在的安全风险。通过使用Nginx作为反向代理,可以将ELK堆栈隐藏在内部网络中,只暴露Nginx的端口给外部访问,从而提高网络安全性。

image.png

查看docker镜像

docker images

image.png


部署Elasticsearch

修改JVM堆大小

默认情况下,Elasticsearch的JVM使用的堆大小为2GB,可以修改ES的jvm默认参数

find /var/lib/docker/overlay2/ -name jvm.options

这个路径下的jvm文件

image.png

进去修改

vi /var/lib/docker/overlay2/53d11f269e179358229b5468f4580f3bc506cde5443f1c2087c3b5e4b1c70372/diff/etc/elasticsearch/jvm.options

修改红框处

-Xms2g 改为 -Xms1g

-Xmx2g 改为 -Xmx1g

image.png

image.png

调整vm.max_map_count大小

vim /etc/sysctl.conf

image.png

在尾行增加如下:

vm.max_map_count=262144

这是一个设置内核参数的语法,vm.max_map_count 是内核参数的名称。它用于控制单个进程能够拥有的虚拟内存区域(即映射区域)的最大数量。

Elasticsearch使用了大量的内存映射文件来存储数据索引和缓存。为了保证Elasticsearch正常运行,在某些操作系统中需要增加 vm.max_map_count 的值。

通过将该参数设置为较大的值(例如262144),可以确保操作系统能够提供足够的虚拟内存区域供Elasticsearch使用,从而避免潜在的性能问题或错误。

image.png

保存退出,查看配置是否生效

sysctl -p

image.png


启动elasticsearch容器

docker run --name elasticsearch -v "$PWD/esdata":/usr/share/elasticsearch/data -p 9200:9200 -d elasticsearch

image.png

docker logs elasticsearch  //查看Docker容器日志的命令

image.png

curl http://localhost:9200

回显如下表示服务正常

image.png


部署logstash

创建logstash配置文件

mkdir -p /docker/config/logstash/
vim /docker/config/logstash/logstash.conf

在/docker/config/logstash/目录下创建配置文件logstash.conf,内容如下:

input {
   
   
     beats {
   
   
         port => 5044
         type => beats
     }
}

output {
   
   
     elasticsearch {
   
   
         hosts => ["elasticsearch:9200"]
     }
}

启动logstash容器

docker run --name logstash --link elasticsearch:elasticsearch -p 5044:5044 -d -v /docker/config/logstash:/config-dir logstash -f /config-dir/logstash.conf

image.png

docker logs logstash

image.png


部署nginx应用

docker run -e TZ="Asia/Shanghai" -d -p 80:80 -v "$PWD/logs":/var/log/nginx --name nginx nginx

image.png

直接本地访问IP

image.png


部署filebeat

Filebeat是Elasticsearch公司提供的一个轻量级日志收集器,用于从各种源(例如日志文件、系统日志等)抓取数据,并将其传输到Elasticsearch或Logstash等数据处理和分析工具。Filebeat的轻量级特性使其适用于各种规模的环境,并且与Elastic Stack(如Elasticsearch、Logstash和Kibana)的其他组件集成紧密,提供了一个强大的日志分析解决方案。

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.4.2-x86_64.rpm

image.png

rpm -ivh filebeat-7.4.2-x86_64.rpm

image.png

vim /etc/filebeat/filebeat.yml

image.png

image.png

修改完毕保存退出,再查看相关配置内容

grep -Ev '#|^$' /etc/filebeat/filebeat.yml

image.png

检查无误,重载并启动

systemctl restart filebeat
systemctl enable filebeat

image.png


部署kibana

docker run --name kibana --link elasticsearch:elasticsearch -p 5601:5601 -d kibana

image.png

docker ps -a

image.png

访问IP加端口

image.png

创建Index pattern

image.png

查看采集到的日志信息

image.png


kibana基础使用

image.png

进入Discover页面

image.png

image.png

1.选择查询的服务和日志文件

选择对应的应用

image.png

选择对应的应用下的日志文件

image.png

2.查询错误日志

Search框输入error -> Refresh

image.png

3.精确搜索完整短句“this is my words”(带空格)【ps:需要加引号】

image.png

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。 &nbsp;
相关文章
|
1月前
|
JSON Java API
(ELK)ElasticSearch8.7 搭配 SpringDataElasticSearch5.1 的使用
截至2023/7/11日,全网最全最直白的SpringDataElasticSearch5.1
204 2
|
6月前
|
JSON 安全 数据可视化
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
Kibana 是 Elastic Stack(原 ELK Stack)中的核心数据可视化工具,主要与 Elasticsearch 配合使用,提供强大的数据探索、分析和展示功能。elasticsearch安装在windows上一般是zip文件,解压到对应目录。文件,elasticsearch8.x以上版本是自动开启安全认证的。kibana安装在windows上一般是zip文件,解压到对应目录。elasticsearch的默认端口是9200,访问。默认用户是elastic,密码需要重置。
3200 0
ELK 圣经:Elasticsearch、Logstash、Kibana 从入门到精通
ELK是一套强大的日志管理和分析工具,广泛应用于日志监控、故障排查、业务分析等场景。本文档将详细介绍ELK的各个组件及其配置方法,帮助读者从零开始掌握ELK的使用。
|
存储 监控 安全
|
自然语言处理 搜索推荐 关系型数据库
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
这篇文章是关于Elasticsearch全文搜索引擎的学习指南,涵盖了基本概念、命令风格、索引操作、分词器使用,以及数据的增加、修改、删除和查询等操作。
320 0
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
|
2月前
|
消息中间件 Java Kafka
搭建ELK日志收集,保姆级教程
本文介绍了分布式日志采集的背景及ELK与Kafka的整合应用。传统多服务器环境下,日志查询效率低下,因此需要集中化日志管理。ELK(Elasticsearch、Logstash、Kibana)应运而生,但单独使用ELK在性能上存在瓶颈,故结合Kafka实现高效的日志采集与处理。文章还详细讲解了基于Docker Compose构建ELK+Kafka环境的方法、验证步骤,以及如何在Spring Boot项目中整合ELK+Kafka,并通过Logback配置实现日志的采集与展示。
735 64
搭建ELK日志收集,保姆级教程
|
8月前
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
651 90
|
存储 消息中间件 网络协议
日志平台-ELK实操系列(一)
日志平台-ELK实操系列(一)
|
消息中间件 Kafka 开发工具
rsyslog+ELK收集Cisco日志
rsyslog+ELK收集Cisco日志
|
运维 监控 Ubuntu
一键启动日志魔法:揭秘ELK自动安装脚本的神秘面纱!
【8月更文挑战第9天】在数据驱动时代,高效处理日志至关重要。ELK Stack(Elasticsearch、Logstash、Kibana)是强大的日志分析工具,但其复杂的安装配置常让初学者望而却步。本文介绍如何编写ELK自动安装脚本,简化部署流程。脚本适用于Ubuntu系统,自动完成ELK下载、安装及基本配置,包括依赖项安装、服务启动及自启设置,极大降低了使用门槛,助力运维人员和开发者轻松构建日志分析平台。
406 6
下一篇
oss云网关配置