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(…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散
前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为,…...
