Elasticsearch+Logstash+Kibana可视化集群部署

news2025/2/23 17:55:00

文章目录

  • 1.组件介绍简述
  • 2.集群规划
  • 3.Es组件部署
  • 4.Logstash组件部署
  • 5.Kibana组件部署
  • 6.Kibana的基础使用

1.组件介绍简述

  • Elasticsearch:开源实时分布式搜索和分析引擎,支持大规模数据存储和高吞吐量,提供丰富的搜索功能和可扩展性。

  • Logstash:开源数据收集引擎,用于实时收集、转换和传输数据,支持多种数据来源和实时数据处理。

  • Kibana:开源数据可视化工具,用于分析和可视化 Elasticsearch 中的数据,提供直观的界面和工具,支持数据可视化、查询构建和用户权限管理。

2.集群规划

java环境提前安装好

主机名IP地址处理器(s)内存(GB)组件版本
test-server02192.168.40.18124Elasticsearch、cerebro7.17.18、0.94
test-server03192.168.40.18244Logstash7.17.18
test-server04192.168.40.18322Kibana7.17.18

3.Es组件部署

Elasticsearch单节点部署

Elasticsearch下载地址

  1. 下载Elasticsearch

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

  1. 安装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
  1. 配置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:指定节点是否可以存储数据,即节点是否可以作为数据节点存储索引数据。
  1. 创建数据目录和普通用户
#创建数据目录
[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*
  1. 修改系统配置
[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启动,所以我们需要去配置一下这个参数

  1. 启动Elasticsearch
[root@test-server02 ~]# su - elastic -c "/opt/elasticsearch/bin/elasticsearch --daemonize --silent"
  1. 安装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 提取码: 1021

2.上传文件
[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.tgz

3.解压部署包
[root@test-server02 opt]# tar -xf cerebro-0.9.4.tgz

4.修改配置
[root@test-server02 opt]# cd cerebro-0.9.4/conf/
[root@test-server02 conf]# vim application.conf
#最下面修改成Es的IP和集群名称

在这里插入图片描述

  1. 启动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 &
  1. 访问cerebro页面

IP:1234
Es节点是正常状态

在这里插入图片描述


4.Logstash组件部署

Logstash单节点部署

Logstash下载地址

  1. 下载Logstash

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

  1. 安装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
  1. 配置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 日志文件的存储路径。
  1. 创建日志目录和普通用户
#创建日志目录
[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*
  1. 新建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去生成
  1. 赋予其他用户可读文件的权限
[root@test-server03 opt]# chmod o+r /var/log/nginx/access.log

#由于logstash是普通用户权限,如果不给文件赋予其他用户可读权限,logstash打不开这个文件然后会导致获取数据失败
  1. 启动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 &
  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
    }
  }
}
  1. 查看Es是否创建了新的索引

出现此问题的原因是:副本分片无法分配的原因是因为副本分片不能和主分片在同一个节点上。此问题可以忽略,生产环境不会出现此问题。
在这里插入图片描述

  1. 短暂解决目前问题

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

状态正常
在这里插入图片描述
此时nginx的日志已经进入到了Es集群


5.Kibana组件部署

Kibana下载地址

  1. 下载Kibana

在这里插入图片描述

在这里插入图片描述

  1. 安装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
  1. 配置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 为简体中文。
  1. 创建日志目录和普通用户
#创建日志目录
[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*
  1. 启动Kibana
su - kibana -c "nohup /opt/kibana/bin/kibana > /dev/null 2>&1 &"

6.Kibana的基础使用

  1. 访问Kibana Web页面

IP:5601

选择Discover
在这里插入图片描述

创建索引模式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

12号下午两点半产生了8条日志
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2298167.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DeepSeek+Excel 效率翻倍

2025年初,DeepSeek以惊人的效率突破技术壁垒,用极低的成本实现了与行业顶尖AI相媲美的性能,瞬间成为全球科技领域的热门话题。 那么AI工具的普及将如何改变我们的工作方式?Excel会被取代吗? 今天,珠珠带你…

将Sqlite3数据库挂在内存上处理

创作灵感:最近把小学生的口算题从2位数改到3位数,100以内四则运算练习(千纬数学)再次更新,选取难题-CSDN博客要不断刷题目,以前100以内的加减乘除也是这样刷出来的,代码如下: impor…

electron.vite 项目创建以及better-sqlite3数据库使用

1.安装electron.vite npm create quick-start/electronlatest中文官网:https://cn.electron-vite.org/ 2. 安装项目依赖 npm i3.修改 electron-builder 配置文件 appId: com.electron.app productName: text33 directories:buildResources: build files:- !**/.v…

C++,STL容器适配器,stack:栈深入解析

文章目录 一、容器概览与核心特性核心特性速览二、底层实现原理1. 容器适配器设计2. 默认容器对比三、核心操作详解1. 容器初始化2. 元素操作接口3. 自定义栈实现四、实战应用场景1. 括号匹配校验2. 浏览器历史记录管理五、性能优化策略1. 底层容器选择基准2. 内存预分配技巧六…

Vue笔记(十)

一、AI的基本认知 二、ChatGPT的基本使用 三、AI插件--Copilot入门 1.Copilot是由OpenAI和GitHub合作开发的AI编程辅助插件,基于大量代码训练,能根据上下文自动生成代码建议。 2.安装与配置:在常用代码编辑器(如Visual Studio Cod…

Ubuntu下载安装Docker-Desktop

下载 Ubuntu | Docker Docs 预备工作 Ubuntu增加docker apt库-CSDN博客 安装 sudo apt-get updatesudo apt install gnome-terminal# sudo apt install -y docker-composesudo apt-get install ./docker-desktop-amd64.deb 测试 sudo docker run hello-worldHello from D…

DeepSeek 突然来袭,AI 大模型变革的危机与转机藏在哪?

随着人工智能技术的飞速发展,大模型领域不断涌现出具有创新性的成果。DeepSeek 的横空出世,为 AI 大模型领域带来了新的变革浪潮。本文将深入探讨 DeepSeek 出现后 AI 大模型面临的危机与转机。 冲冲冲!!! 目录 一、…

C#运动控制——轴IO映射

1、IO映射的作用 该功能允许用户对专用 IO 信号的硬件输入接口进行任意配置,比如轴的急停信号,通过映射以后,可以将所有轴的急停信号映射到某一个IO输入口上,这样,我们只要让一个IO信号有效就可以触发所有轴的急停。 进…

ArrayList、LinkedList、HashMap、HashTable、HashSet、TreeSet

集合族谱 在这些集合中,仅有vector和hashtable是线程安全的,其内部方法基本都有synchronized修饰。 ArrayList 底层采用Object数组实现,实现了RandomAccess接口因此支持随机访问。插入删除操作效率慢。 ArrayList需要一份连续的内存空间。 A…

DeepSeek 指导手册(入门到精通)

第⼀章:准备篇(三分钟上手)1.1 三分钟创建你的 AI 伙伴1.2 认识你的 AI 控制台 第二章:基础对话篇(像交朋友⼀样学交流)2.1 有效提问的五个黄金法则2.2 新手必学魔法指令 第三章:效率飞跃篇&…

2024 CyberHost 语音+图像-视频

项目:CyberHost: Taming Audio-driven Avatar Diffusion Model with Region Codebook Attention 音频驱动的身体动画面临两个主要挑战:(1)关键人体部位,如面部和手部,在视频帧中所占比例较小&#x…

Rasa学习笔记

一、CALM 三个关键要素: 业务逻辑:Flow,描述了AI助手可以处理的业务流程对话理解:旨在解释最终用户与助手沟通的内容。此过程涉及生成反映用户意图的命令,与业务逻辑和正在进行的对话的上下文保持一致。自动对话修复…

Android 系统面试问题

一.android gki和非gki的区别 Android GKI(Generic Kernel Image)和非GKI内核的主要区别在于内核设计和模块化程度,具体如下: 1. 内核设计 GKI:采用通用内核设计,与设备硬件分离,核心功能统一…

bitcoinjs学习1—P2PKH

1. 概述 在本学习笔记中,我们将深入探讨如何使用 bitcoinjs-lib 库构建和签名一个 P2PKH(Pay-to-PubKey-Hash) 比特币交易。P2PKH 是比特币网络中最常见和最基本的交易类型之一,理解其工作原理是掌握比特币交易构建的关键。 想要详…

【论文笔记】Are Self-Attentions Effective for Time Series Forecasting? (NeurIPS 2024)

官方代码https://github.com/dongbeank/CATS Abstract 时间序列预测在多领域极为关键,Transformer 虽推进了该领域发展,但有效性尚存争议,有研究表明简单线性模型有时表现更优。本文聚焦于自注意力机制在时间序列预测中的作用,提…

瑞芯微开发板/主板Android调试串口配置为普通串口方法 深圳触觉智能科技分享

本文介绍瑞芯微开发板/主板Android调试串口配置为普通串口方法,不同板型找到对应文件修改,修改的方法相通。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联…

Redis 数据类型 Hash 哈希

在 Redis 中,哈希类型是指值本⾝⼜是⼀个键值对结构,形如 key "key",value { { field1, value1 }, ..., {fieldN, valueN } },Redis String 和 Hash 类型⼆者的关系可以⽤下图来表⽰。 Hash 数据类型的特点 键值对集合…

IntelliJ IDEA 2024.1.4版无Tomcat配置

IntelliJ IDEA 2024.1.4 (Ultimate Edition) 安装完成后,调试项目发现找不到Tomcat服务: 按照常规操作添加,发现服务插件中没有Tomcat。。。 解决方法 1、找到IDE设置窗口 2、点击Plugins按钮,进入插件窗口,搜索T…

连锁收银系统的核心架构与技术选型

在连锁门店的日常运营里,连锁收银系统扮演着极为重要的角色,它不仅承担着交易结算的基础任务,还关联着库存管理、会员服务、数据分析等多个关键环节。一套设计精良的核心架构与合理的技术选型,是保障收银系统高效、稳定运行的基础…

CSS 小技巧 —— CSS 实现 Tooltip 功能-鼠标 hover 之后出现弹层

CSS 小技巧 —— CSS 实现 Tooltip 功能-鼠标 hover 之后出现弹层 1. 两个元素实现 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>纯 CSS 实现 Tooltip 功能-鼠标 hover 之后出现弹层</titl…