Elasticsearch+Logstash+Kibana可视化集群部署
文章目录
- 1.组件介绍简述
- 2.集群规划
- 3.Es组件部署
- 4.Logstash组件部署
- 5.Kibana组件部署
- 6.Kibana的基础使用
1.组件介绍简述
-
Elasticsearch:开源实时分布式搜索和分析引擎,支持大规模数据存储和高吞吐量,提供丰富的搜索功能和可扩展性。
-
Logstash:开源数据收集引擎,用于实时收集、转换和传输数据,支持多种数据来源和实时数据处理。
-
Kibana:开源数据可视化工具,用于分析和可视化 Elasticsearch 中的数据,提供直观的界面和工具,支持数据可视化、查询构建和用户权限管理。
2.集群规划
java环境提前安装好
| 主机名 | IP地址 | 处理器(s) | 内存(GB) | 组件 | 版本 |
|---|---|---|---|---|---|
| test-server02 | 192.168.40.181 | 2 | 4 | Elasticsearch、cerebro | 7.17.18、0.94 |
| test-server03 | 192.168.40.182 | 4 | 4 | Logstash | 7.17.18 |
| test-server04 | 192.168.40.183 | 2 | 2 | Kibana | 7.17.18 |
3.Es组件部署
Elasticsearch单节点部署
Elasticsearch下载地址
- 下载Elasticsearch


- 安装Elasticsearch
#上传部署包
[root@test-server02 opt]# ll /opt/elasticsearch-7.17.18-linux-x86_64.tar.gz
-rw-r--r-- 1 root root 327087494 Feb 8 14:23 /opt/elasticsearch-7.17.18-linux-x86_64.tar.gz#解压部署包
[root@test-server02 opt]# tar -xf elasticsearch-7.17.18-linux-x86_64.tar.gz#创建软连接
[root@test-server02 opt]# ln -s /opt/elasticsearch-7.17.18 elasticsearch
- 配置Elasticsearch
[root@test-server02 opt]# cd elasticsearch/config/
[root@test-server02 config]# cat elasticsearch.yml | grep -v '^\s*#' | grep -v '^\s*$'
cluster.name: es-test-cluster
node.name: test-server02
path.data: /opt/elasticsearch/data
path.logs: /opt/elasticsearch/logs
network.host: 192.168.40.181
http.port: 9200
discovery.seed_hosts: ["192.168.40.181"]
cluster.initial_master_nodes: ["test-server02"]
#下面两行新增
node.master: true
node.data: true#配置介绍
1. cluster.name:集群名称,所有节点必须使用相同的集群名称以便彼此识别和连接。
2. node.name:节点名称,用于标识集群中的每个节点。
3. path.data:数据存储路径,指定Elasticsearch用于存储数据的目录路径。
4. path.logs:日志存储路径,指定Elasticsearch用于存储日志的目录路径。
5. network.host:节点绑定的网络地址,指定Elasticsearch监听的网络地址。
6. http.port:HTTP端口,用于与Elasticsearch进行RESTful API通信的端口号。
7. discovery.seed_hosts:发现种子节点,用于节点发现和集群组建。
8. cluster.initial_master_nodes:初始主节点列表,指定集群中第一批主节点的名称。
9. node.master:指定节点是否可以成为主节点,即负责集群级别操作的节点。
10. node.data:指定节点是否可以存储数据,即节点是否可以作为数据节点存储索引数据。
- 创建数据目录和普通用户
#创建数据目录
[root@test-server02 opt]# mkdir /opt/elasticsearch/data#新增普通用户
[root@test-server02 opt]# useradd elastic#修改普通用户密码
[root@test-server02 opt]# passwd elastic
elastic/elastic#授予普通用户权限
[root@test-server02 opt]# chown -R elastic:elastic elasticsearch*
- 修改系统配置
[root@test-server02 ~]# vim /etc/sysctl.conf
#最下面新增此参数
vm.max_map_count=262144
不修改此参数启动会报错:bootstrap check failure [1] of [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
意思是:
最大虚拟内存区域 vm.max_map_count [65530] 太低,请至少增加到 [262144]
这个 vm.max_map_count 在没有配置的情况下,默认是 65530,因为默认的比较少,不足以支撑es启动,所以我们需要去配置一下这个参数
- 启动Elasticsearch
[root@test-server02 ~]# su - elastic -c "/opt/elasticsearch/bin/elasticsearch --daemonize --silent"
- 安装Cerebro
Elasticsearch的管理工具Cerebro部署
1.下载部署包https://github.com/lmenezes/cerebro/releases/download/v0.9.4/cerebro-0.9.4.tgz
#可以通过github下载通过github下载#百度网盘下载
通过网盘分享的文件:cerebro-0.9.4.tgz
链接: https://pan.baidu.com/s/1Nr81_wTVV9d3FPmfn14XyA 提取码: 10212.上传文件
[root@test-server02 opt]# ll cerebro-0.9.4.tgz
-rw-r--r-- 1 root root 57244792 Feb 12 13:37 cerebro-0.9.4.tgz3.解压部署包
[root@test-server02 opt]# tar -xf cerebro-0.9.4.tgz4.修改配置
[root@test-server02 opt]# cd cerebro-0.9.4/conf/
[root@test-server02 conf]# vim application.conf
#最下面修改成Es的IP和集群名称

- 启动cerebro
[root@test-server02 cerebro-0.9.4]# nohup /opt/cerebro-0.9.4/bin/cerebro -Dhttp.port=1234 -Dhttp.address=192.168.40.181 &
- 访问cerebro页面
IP:1234
Es节点是正常状态

4.Logstash组件部署
Logstash单节点部署
Logstash下载地址
- 下载Logstash


- 安装Logstash
#上传部署包
[root@test-server03 opt]# ll logstash-7.17.18-linux-x86_64.tar.gz
-rw-r--r-- 1 root root 364233835 Feb 10 09:04 logstash-7.17.18-linux-x86_64.tar.gz#解压部署包
[root@test-server03 opt]# tar -xf logstash-7.17.18-linux-x86_64.tar.gz#创建软连接
[root@test-server03 opt]# ln -s /opt/logstash-7.17.18 logstash
- 配置Logstash
[root@test-server03 opt]# cd logstash/config/
[root@test-server03 config]# cat logstash.yml | grep -v '^\s*#' | grep -v '^\s*$'
node.name: test-logstash-node
path.data: /opt/logstash/data
api.http.host: 192.168.40.182
api.http.port: 9600
path.logs: /opt/logstash/logs#配置介绍
1.node.name: test-logstash-node:Logstash 实例的节点名称。
2.path.data: /opt/logstash/data:Logstash 存储内部数据的路径。
3.api.http.host: 192.168.40.182:Logstash API 监听的主机 IP 地址。
4.api.http.port: 9600:Logstash API 监听的端口号。
5.path.logs: /opt/logstash/logs:Logstash 日志文件的存储路径。
- 创建日志目录和普通用户
#创建日志目录
[root@test-server03 opt]# mkdir /opt/logstash/logs#新增普通用户
[root@test-server03 opt]# useradd logstash#修改普通用户密码
[root@test-server03 opt]# passwd logstash
logstash/logstash#授予普通用户权限
[root@test-server03 opt]# chown -R logstash.logstash logstash*
- 新建Logstash文件
[root@test-server03 config]# cat logstash.conf
input {file {path => "/var/log/nginx/access.log" # Nginx access.log 路径start_position => "beginning" # 从头读取日志sincedb_path => "/dev/null" # 每次重新读取日志codec => "plain" # 日志编码格式}
}filter {grok {match => { "message" => "%{COMBINEDAPACHELOG}" }}
}output {elasticsearch {hosts => ["http://192.168.40.181:9200"] # Elasticsearch 地址index => "nginx-logs-%{+YYYY.MM.dd}" # 索引名称,按日期分割}stdout { codec => rubydebug } # 控制台输出调试信息
}#根据自己的需求去修改即可。或者通过ai去生成
- 赋予其他用户可读文件的权限
[root@test-server03 opt]# chmod o+r /var/log/nginx/access.log#由于logstash是普通用户权限,如果不给文件赋予其他用户可读权限,logstash打不开这个文件然后会导致获取数据失败
- 启动Logstash
[root@test-server03 opt]# su logstash
[logstash@test-server03 opt]$ nohup /opt/logstash/bin/logstash -f /opt/logstash/config/logstash.conf > /dev/null 2>&1 &
- 测试Logstash状态
[root@test-server03 opt]# curl -XGET 'http://192.168.40.182:9600/_node/pipelines?pretty'
{"host" : "test-server03","version" : "7.17.18","http_address" : "192.168.40.182:9600","id" : "f6df67d3-31c3-4551-98f1-30746b4b8563","name" : "test-logstash-node","ephemeral_id" : "ceac450a-b68a-43df-aefe-0e9b6717ff76","status" : "green","snapshot" : false,"pipeline" : {"workers" : 8,"batch_size" : 125,"batch_delay" : 50},"pipelines" : {"main" : {"ephemeral_id" : "d60bbfb7-08e6-4a4e-ae42-75b181632638","hash" : "f58943ecfa9938796137f154d88da0c3b41eb40533e353aa6d9d57362a13a3b6","workers" : 8,"batch_size" : 125,"batch_delay" : 50,"config_reload_automatic" : false,"config_reload_interval" : 3000000000,"dead_letter_queue_enabled" : false}}
}
- 查看Es是否创建了新的索引
出现此问题的原因是:副本分片无法分配的原因是因为副本分片不能和主分片在同一个节点上。此问题可以忽略,生产环境不会出现此问题。

- 短暂解决目前问题


状态正常

此时nginx的日志已经进入到了Es集群
5.Kibana组件部署
Kibana下载地址
- 下载Kibana


- 安装Kibana
#上传部署包
[root@test-server04 opt]# ll kibana-7.17.18-linux-x86_64.tar.gz
-rw-r--r-- 1 root root 301593515 Feb 11 13:51 kibana-7.17.18-linux-x86_64.tar.gz#解压部署包
[root@test-server04 opt]# tar -xf kibana-7.17.18-linux-x86_64.tar.gz#创建软连接
[root@test-server04 opt]# ln -s /opt/kibana-7.17.18-linux-x86_64 kibana
- 配置Kibana
[root@test-server04 kibana]# cd config/
[root@test-server04 config]# cat kibana.yml | grep -v '^\s*#' | grep -v '^\s*$'
server.port: 5601
server.host: "192.168.40.183"
server.name: "test-server04"
elasticsearch.hosts: ["http://192.168.40.181:9200"]
logging.dest: /opt/kibana/logs/kibana.log
logging.verbose: true
i18n.locale: "zh-CN"#配置介绍
1.server.port:设置 Kibana 的 Web 服务端口(默认为 5601)。
2.server.host:设置 Kibana 监听的 IP 地址,指定机器的 IP 或 localhost。
3.server.name:Kibana 实例的名称,用来标识。
4.elasticsearch.hosts:配置 Kibana 连接的 Elasticsearch 地址。
5.logging.dest:设置 Kibana 的日志文件路径。
6.logging.verbose:开启详细日志(true 为详细,false 为普通)。
7.i18n.locale:设置 Kibana 的语言,zh-CN 为简体中文。
- 创建日志目录和普通用户
#创建日志目录
[root@test-server04 opt]# mkdir kibana/logs#新增普通用户
[root@test-server04 opt]# useradd kibana#修改普通用户密码
[root@test-server04 opt]# passwd kibana#赋予普通用户权限
[root@test-server04 opt]# chown -R kibana.kibana kibana*
- 启动Kibana
su - kibana -c "nohup /opt/kibana/bin/kibana > /dev/null 2>&1 &"
6.Kibana的基础使用
- 访问Kibana Web页面
IP:5601
选择Discover

创建索引模式




12号下午两点半产生了8条日志

相关文章:
Elasticsearch+Logstash+Kibana可视化集群部署
文章目录 1.组件介绍简述2.集群规划3.Es组件部署4.Logstash组件部署5.Kibana组件部署6.Kibana的基础使用 1.组件介绍简述 Elasticsearch:开源实时分布式搜索和分析引擎,支持大规模数据存储和高吞吐量,提供丰富的搜索功能和可扩展性。 Logsta…...
基于CanMV IDE 开发软件对K210图像识别模块的开发
简介 CanMV IDE 是一款专为 K210 芯片设计的图形识别 Python 软件,它提供了强大的功能,帮助开发者轻松实现基于 K210 芯片的图形识别应用。无论你是初学者还是经验丰富的开发者,CanMV IDE 都能为你提供便捷的开发环境和丰富的资源。 硬件资…...
win11系统 Docker Desktop提示Docker Engine stopped解决全过程记录
DockerDesktop安装指南以及Windows下WSL2和 Hyper-V相关问题追查 【已解决】win10系统 Docker 提示Docker Engine stopped解决全过程记录 本篇文章主要记录Docker Desktop安装和使用时出现的问题及解决方法,以及后续使用夜神模拟器,关闭了Hyper-V时&am…...
工作室如何实现一机一IP
对于工作室而言,多开游戏账号却是其运营模式的核心需求。他们通过大量囤积金币、资源,再将其变现来获取利润。在这种运营模式下,账号数量直接关系到工作室的收益,所以解决 IP 问题就成了手游工作室发展道路上的首要难题࿰…...
WEB安全--SQL注入--二次注入
一、原理: 二次注入的关键在于攻击者的输入并不立即执行,而是经过某些存储或处理后,在后续某个步骤中再触发注入攻击 二、示例: 2.1、sqli-labs-master/less-24: admin# 第一次在网页注册账号和密码时没有漏洞&#x…...
构建现代微服务安全体系:Spring Security、JWT 与 Spring Cloud Gateway 实践
构建现代微服务安全体系:Spring Security、JWT 与 Spring Cloud Gateway 实践 本文将基于提供的代码示例,详细介绍如何在一个Java微服务项目中使用Spring Security、JWT和Spring Cloud Gateway来构建一个高效且安全的微服务体系,并整合性能优…...
Spring Boot 动态数据源实操指南
在实际开发中,我们经常会遇到需要动态切换数据源的场景,比如多租户系统、读写分离、分库分表等。Spring Boot 提供了灵活的配置方式,结合 AbstractRoutingDataSource 可以轻松实现动态数据源切换。本文将带你一步步实现 Spring Boot 动态数据…...
HBase高级技巧:解锁更强大的数据处理能力
HBase高级技巧:解锁更强大的数据处理能力 嘿,小伙伴们!在掌握了HBase的基本操作之后,今天我们将深入探讨一些HBase的高级技巧。这些技巧将帮助你在面对复杂的数据处理需求时更加得心应手,进一步提升系统的性能和可靠性…...
【进阶】JVM篇
为什么学习jvm 1、面试的需要 学过java的程序员对jvm应该不陌生,程序员为什么要学习jvm呢?其实不懂jvm也可以照样写出优质的代码,但是不懂jvm会被大厂的面试官虐的体无完肤。 2、高级程序员需要了解 jvm作用 jvm负责把编译后的字节码转换…...
DeepSeek官方推荐的AI集成系统
DeepSeek模型虽然强大先进,但是模型相当于大脑,再聪明的大脑如果没有输入输出以及执行工具也白搭,所以需要有配套工具才能让模型发挥最大的作用。下面是一个典型AI Agent架构图,包含核心组件与数据流转关系: #mermaid-…...
【动态规划篇】:当回文串遇上动态规划--如何用二维DP“折叠”字符串?
✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:动态规划篇–CSDN博客 文章目录 一.回文串类DP核心思想(判断所有子串是否是回文…...
JENKINS(全面)
一.linux系统中JENKINS的安装 注意:安装jenkins需要安装jdk,而且具体版本的jenkins有相对应的jdk版本。可参考以下链接。 Redhat Jenkins 软件包https://pkg.jenkins.io/redhat-stable/https://pkg.jenkins.io/redhat-stable/https://pkg.jenkins.io/r…...
Promise详解大全:介绍、九个方法使用和区别、返回值详解
Promise的介绍 Promise是异步编程的一种解决方案,它的构造函数是同步执行的,then 方法是异步执行的,所以Promise创建后里面的函数会立即执行,构造函数中的resolve和reject只有第一次执行有效,,也就是说Pro…...
尚硅谷爬虫note004
一、urllib库 1. python自带,无需安装 # _*_ coding : utf-8 _*_ # Time : 2025/2/11 09:39 # Author : 20250206-里奥 # File : demo14_urllib # Project : PythonProject10-14#导入urllib.request import urllib.request#使用urllib获取百度首页源码 #1.定义一…...
Debezium系列之:时区转换器,时间戳字段转换到指定时区
Debezium系列之:时区转换器,时间戳字段转换到指定时区 示例:基本配置应用TimezoneConverter SMT的效果示例:高级配置配置选项当Debezium发出事件记录时,记录中的时间戳字段的时区值可能会有所不同,这取决于数据源的类型和配置。为了在数据处理管道和应用程序中保持数据一…...
ubuntu20.04声音设置
step1:打开pavucontrol,设置Configuration和Output Devices, 注意需要有HDMI / DisplayPort (plugged in)这个图标。如果没有,就先选择Configuration -> Digital Stereo (HDMI 7) Output (unplugged) (unvailable),…...
如何设置Python爬虫的User-Agent?
在Python爬虫中设置User-Agent是模拟浏览器行为、避免被目标网站识别为爬虫的重要手段。User-Agent是一个HTTP请求头,用于标识客户端软件(通常是浏览器)的类型和版本信息。通过设置合适的User-Agent,可以提高爬虫的稳定性和成功率…...
深度学习框架探秘|TensorFlow:AI 世界的万能钥匙
在人工智能(AI)蓬勃发展的时代,各种强大的工具和框架如雨后春笋般涌现,而 TensorFlow 无疑是其中最耀眼的明星之一。它不仅被广泛应用于学术界的前沿研究,更是工业界实现 AI 落地的关键技术。今天,就让我们…...
C++:高度平衡二叉搜索树(AVLTree) [数据结构]
目录 一、AVL树 二、AVL树的理解 1.AVL树节点的定义 2.AVL树的插入 2.1更新平衡因子 3.AVL树的旋转 三、AVL的检查 四、完整代码实现 一、AVL树 AVL树是什么?我们对 map / multimap / set / multiset 进行了简单的介绍,可以发现,这几…...
建筑兔零基础自学python记录18|实战人脸识别项目——视频检测07
本次要学视频检测,我们先回顾一下图片的人脸检测建筑兔零基础自学python记录16|实战人脸识别项目——人脸检测05-CSDN博客 我们先把上文中代码复制出来,保留红框的部分。 然后我们来看一下源代码: import cv2 as cvdef face_detect_demo(…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...
Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...
结构化文件管理实战:实现目录自动创建与归类
手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题,进而引发后续程序异常。使用工具进行标准化操作,能有效降低出错概率。 需要快速整理大量文件的技术用户而言,这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB,…...
【深尚想】TPS54618CQRTERQ1汽车级同步降压转换器电源芯片全面解析
1. 元器件定义与技术特点 TPS54618CQRTERQ1 是德州仪器(TI)推出的一款 汽车级同步降压转换器(DC-DC开关稳压器),属于高性能电源管理芯片。核心特性包括: 输入电压范围:2.95V–6V,输…...
