rocky8 --Elasticsearch+Logstash+Filebeat+Kibana部署【7.1.1版本】

软件说明:

所有软件包下载地址:Past Releases of Elastic Stack Software | Elastic

打开页面后选择对应的组件及版本即可!

所有软件包名称如下:

架构拓扑:

  1. 集群模式:

  1. 单机模式

架构规划:

  1. 集群模式

角色主机名IP地址
图形展示kibana192.168.166.111
日志存储es1192.168.158.6
es2192.168.166.113
es3192.168.166.114
日志收集分析lostash1192.168.166.166
lostash2192.168.166.116
lostash3192.168.166.117
日志采集access、error192.168.166.118

  1. 单机模式

    角色主机名IP地址
    图形展示kibana192.168.166.111
    日志存储es192.168.158.6
    日志收集分析lostash192.168.166.113
    日志采集access、error192.168.166.114

    说明:以下部署过程为单机模式部署,集群模式请自行修改部署!!!

一、 Elasticsearch安装与配置

修改主机名

[root@localhost ~]# hostnamecl set-hostname  es
[root@localhost ~]# bash
[root@es ~]#

配置主机名解析

[root@es ~]# cat /etc/hosts
192.168.166.111 kibana
192.168.158.6 es
192.168.166.113 logstash
192.168.166.114 nginx

时间同步 

[root@elk ~]# vim /etc/chrony.conf server ntp.aliyun.com iburst[root@elk ~]# systemctl restart chronyd.service 
[root@elk ~]# date
2025年 07月 16日 星期三 20:48:10 CST

 

安装JAVA8

[root@es ~]# yum install -y java

(Rocky8 yum安装版本为java-1.8.0-openjdk)  

将elasticsearch软件包拷贝至elk主机执行安装

[root@es ~]# yum localinstall -y elasticsearch-7.1.1-x86_64.rpm#安装软件包需要的依赖

 

配置elasticsearch

[root@es ~]# cd /etc/elasticsearch/
[root@es elasticsearch]# cat elasticsearch.yml | grep -Ev "^#"
cluster.name: my-application #集群名称
node.name: es #节点主机名
path.data: /var/lib/elasticsearch #数据存放目录
path.logs: /var/log/elasticsearch #日志存放目录
network.host: 192.168.158.6 #监听IP地址
http.port: 9200 #监听端口号
cluster.initial_master_nodes: ["es"] #主节点
http.cors.enabled: true
http.cors.allow-origin: "*"
​
#####集群模式下修改为如下配置:
cluster.name: my-application #集群名称
node.name: es #节点主机名
path.data: /var/lib/elasticsearch #数据存放目录
path.logs: /var/log/elasticsearch #日志存放目录
network.host: 192.168.158.6 #监听IP地址
http.port: 9200 #监听端口号
http.cors.enabled: true #跨域访问
http.cors.allow-origin: "*" #跨域访问
cluster.initial_master_nodes: ["192.168.158.6","192.168.166.113","192.168.166.114"] #主节点
discovery.zen.ping.unicast.hosts: ["192.168.158.6", "192.168.166.113", "192.168.166.114"] # 配置自动发现
discovery.zen.minimum_master_nodes: 2 #防止集群“脑裂”,需要配置集群最少主节点数目,通常为 (主节点数目/2) + 1

启动elasticsearch服务并设置开机自启动

[root@es ~]# systemctl start elasticsearch.service
[root@es ~]# systemctl enable elasticsearch.service实验环境开机自启会占用大量内存,易卡顿,这里仅启动

验证启动结果

[root@es ~]# systemctl status elasticsearch.service
[root@es ~]# ss -antl|grep 9200

 

二、 logstash安装与配置

修改主机名
[root@localhost ~]# hostnamecl set-hostname  logstash
[root@localhost ~]# bash
[root@logstash ~]#
配置主机名解析
[root@logstash ~]# cat /etc/hosts
192.168.166.111 kibana
192.168.158.6 es
192.168.166.113 logstash
192.168.166.114 nginx
安装JAVA8(系统自带)
[root@logstash ~]# yum install -y java

将logstash软件包拷贝至elk主机执行安装

[root@logstash ~]# yum localinstall -y logstash-7.1.1.rpm

优化logstash命令

[root@logstash ~]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

配置logstash

[root@logstash ~]# cd /etc/logstash/
[root@logstash logstash]# cat logstash.yml
path.data: /var/lib/logstash #数据存储路径
http.host: "192.168.166.113" #监听地址
http.port: 9600-9700 #监听端口范围
path.logs: /var/log/logstash #日志存储路径

测试logstash服务的数据传输

##标准输入与输出
[root@logstash ~]# logstash -e 'input{ stdin{} }output { stdout{} }'
##使用rubydebug解码
[root@logstash ~]# logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug }}'
##输出到elasticsearch
[root@logstash ~]# logstash -e 'input { stdin{} } output { elasticsearch{ hosts=>["192.168.158.6:9200"]} }'

创建配置文件

[root@logstash ~]# cd /etc/logstash/conf.d/logstash/conf.d
[root@logstash ~]# cat pipline.conf
input {beats {port => 5044}
}
output {if "access" in [tags] {elasticsearch {hosts => ["192.168.158.6:9200"]index => "access-%{+YYYY.MM.dd}"}}if "error" in [tags] {elasticsearch {hosts => ["192.168.158.6:9200"]index => "error-%{+YYYY.MM.dd}"}}
###日志进行标准输出,观察日志获取的过程###stdout {codec => rubydebug}
}
​
#####集群模式下修改问如下配置:
input {beats {port => 5044}
}
output {if "access" in [tags] {elasticsearch {hosts => ["192.168.158.6:9200"]index => "access-%{+YYYY.MM.dd}"}}if "error" in [tags] {elasticsearch {hosts => ["192.168.158.6:9200"]index => "error-%{+YYYY.MM.dd}"}}
###日志进行标准输出,观察日志获取的过程###
 stdout {codec => rubydebug}
}

启动logstash服务

[root@logstash ~]# logstash -f /etc/logstash/conf.d/pipline.conf &

三、 nginx、filebeat安装与配置

修改主机名

[root@localhost ~]# hostnamecl set-hostname  nginx
[root@localhost ~]# bash
[root@nginx ~]#

配置主机名解析

[root@logstash ~]# cat /etc/hosts
192.168.166.111 kibana
192.168.158.6 es
192.168.166.113 logstash
192.168.166.114 nginx

nginx安装与启动

[root@nginx ~]# yum install -y epel-release
[root@nginx ~]# yum install -y nginx
[root@nginx ~]# systemctl start nginx

filebeat安装

[root@nginx ~]# yum localinstall -y filebeat-7.1.1-x86_64.rpm

filebeat配置项

[root@nginx ~]# cd /etc/filebeat
[root@nginx ~]# cat filebeat.yml
配置项作用
filebeat.inputs输入配置块,用于指定 Filebeat 应该监听哪些文件并将其作为输入。你可以指定文件路径、文件类型、文件格式等。
filebeat.prospectors这是一种更灵活的输入方式,它允许你同时监听多个目录或文件系统中的多个文件。它结合了输入和输出配置项,使得配置更加灵活。
filebeat.config用于加载和执行自定义的配置文件。你可以使用此选项加载其他 YAML 文件,以便在 Filebeat 中使用自定义规则和插件。
output.elasticsearch输出配置块,用于将日志数据发送到 Elasticsearch。你可以指定 Elasticsearch 的地址、端口、索引名称等。
output.logstash输出配置块,用于将日志数据发送到 Logstash。你可以指定 Logstash 的地址、端口、输入格式等。
filebeat.harvesterHarvester 是 Filebeat 的核心组件之一,负责监听文件并将其拆分为事件。你可以通过配置项来调整 Harvester 的行为,例如事件级别、分隔符等。
filebeat.scannerScanner 负责定期扫描指定路径中的新文件并触发事件收集。你可以通过配置项来调整 Scanner 的行为,例如扫描频率、延迟等。
filebeat.processor处理器用于对收集到的日志事件进行处理和解析。你可以使用内置的处理器类型(如过滤器、映射器等)来对事件进行过滤、转换和编码。
filebeat.registry注册表用于存储 Filebeat 的配置信息、事件数据和资源状态。你可以通过配置项来调整注册表的行为和存储方式。

日志收集

filebeat 7.1以上支持模版收集日志和传统方式收集日志,具体每个方式的配置如下:

1、 采用filebeat的nginx模块收集nginx日志

##filebeat模块操作命令:
#查看支持的模块
[root@nginx ~]# filebeat modules list
#启用nginx模块
[root@nginx ~]# filebeat modules enable nginx
#配置nginx模块
[root@nginx ~]# cd /etc/filebeat/modules.d
[root@nginx ~]# cat nginx.yml
- module: nginx# Access logsaccess:enabled: truevar.paths: ["/var/log/nginx/access.log"]# Error logserror:enabled: truevar.paths: ["/var/log/nginx/error.log"]
#################测试配置文件
[root@localhost ~]# filebeat test config -e

2、传统方式收集

输出给logstash

[root@localhost ~]# cat /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: logenabled: truepaths:- /var/log/access/*.logtags: "nignx1"
- type: logenabled: truepaths:- /var/log/error/*.logtags: "nignx2"
output.logstash:hosts: ["192.168.166.113:5044"]
#################测试配置文件
[root@localhost ~]# filebeat test config -e

输出给elasticsearch

[root@localhost ~]# cat /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: logenabled: truepaths:- /var/log/nginx/access.log- /var/log/nginx/error.log
output.elasticsearch:# Array of hosts to connect to.hosts: ["192.168.166.129:9200"]index: "nginx-access-%{[host.name]}-%{+yyyy.MM.dd}"# 自定义索引名称
setup.ilm.enabled: false   # 索引生命周期 ilm 功能默认开启,开启情况下索引名称只能为 filebeat-*
setup.template.name: "nginx1" # 定义模板名称
setup.template.pattern: "nginx1-*" # 定义模板的匹配索引名称
​
#####产生不同索引的方法#####
output.elasticsearch:# Array of hosts to connect to.hosts: ["192.168.166.22:9200"]indices:- index: "nginx1-access-logs"when:contains:{ "message": "GET"}- index: "nginx1-error-logs"when:contains:{ "message": "error" }
setup.ilm.enabled: false
setup.template.name: "nginx1"
setup.template.pattern: "nginx1-*"
​
#################测试配置文件
[root@localhost ~]# filebeat test config -e

启动filebeat

[root@nginx ~]# systemctl start filebeat
[root@nginx ~]# systemctl enabled filebeat

es续期

 curl -XPosT 'http://192.168.88.133:9200/_license/start_trial?acknowledge=true'

四、 Kibana安装与配置

修改主机名

[root@localhost ~]# hostnamecl set-hostname  logstash
[root@localhost ~]# bash
[root@logstash ~]#

配置主机名解析

[root@logstash ~]# cat /etc/hosts
192.168.166.111 kibana
192.168.158.6 elk
192.168.166.113 logstash
192.168.166.114 nginx
192.168.166.166 tomcat
192.168.166.116 mysql

安装JAVA8

[root@logstash ~]# yum install -y java

将logstash软件包拷贝至elk主机执行安装

[root@logstash ~]# yum localinstall -y kibana-7.1.1-x86_64.rpm

配置kibana

[root@kibana]# cd /etc/kibana/
[root@kibana kibana]# cat kibana.yml 
server.port: 5601 #监听端口
server.host: "192.168.166.111" #监听地址
server.name: "kibana" #主机名
elasticsearch.hosts: ["http://192.168.158.6:9200"] #连接的elasticsearch服务器
kibana.index: ".kibana" #kibana的索引
i18n.locale: "zh-CN" #汉化
​
##集群模式下配置:
server.port: 5601 #监听端口
server.host: "192.168.166.111" #监听地址
server.name: "kibana" #主机名
elasticsearch.hosts: ["http://192.168.158.6:9200","http://192.168.166.113:9200","http://192.168.166.114:9200"] #连接的elasticsearch服务器
kibana.index: ".kibana" #kibana的索引
i18n.locale: "zh-CN" #汉化

 

访问kibana

#在浏览器中输入:
http://192.168.166.111:5601

创建索引

创建筛选

添加仪表盘

 

 

 

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

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

相关文章

【JVM】内存分配与回收原则

在 Java 开发中,自动内存管理是 JVM 的核心能力之一,而内存分配与回收的策略直接影响程序的性能和稳定性。本文将详细解析 JVM 的内存分配机制、对象回收规则以及背后的设计思想,帮助开发者更好地理解 JVM 的 "自动化" 内存管理逻辑…

Qt获取hid设备信息

Qt 中通过 HID&#xff08;Human Interface Device&#xff09;接口获取指定的 USB 设备&#xff0c;并读取其数据。资源文件中包含了 hidapi.h、hidapi.dll 和 hidapi.lib。通过这些文件&#xff0c;您可以在 Qt 项目中实现对 USB 设备的 HID 接口调用。#include <QObject&…

Anaconda Jupyter 使用注意事项

Anaconda Jupyter 使用注意事项 1.将cell转换为markdown。 First, select the cell you want to convertPress Esc to enter command mode (the cell border should turn blue)Press M to convert the cell to Markdown在编辑模式下按下ESC键&#xff0c;使单元块&#xff08;c…

[硬件电路-20]:模拟信号处理运算与数字信号处理运算的相同点与不同点

模拟信号处理运算与数字信号处理运算是信号处理领域的两大核心方法&#xff0c;二者在信号形式、处理机制、性能特点和应用场景上存在显著差异&#xff0c;但也共享一些基础目标与理论支撑。以下从多个维度进行系统对比分析&#xff1a;一、相同点1. 核心目标一致信号变换与分析…

Redis 高频面试题

1. 缓存穿透 1.1 描述 用户想要查询某个数据,在 Redis 中查询不到,即没有缓存命中,这时就会直接访问数据库进行查询。当请求量超出数据库最大承载量时,就会导致数据库崩溃。这种情况一般发生在非正常 URL 访问,目的不是为了获取数据,而是进行恶意攻击。 1.2 现象 1、应…

OWASP Top 10 攻击场景实战

OWASP (开放式Web应用程序安全项目) Top 10 榜单是全球公认的、针对Web应用最关键安全风险的权威指南。它不是一份详尽无遗的清单&#xff0c;而是一份凝聚了安全专家共识的“高危预警”。本文将不止于罗列这些风险&#xff0c;而是深入每个风险的核心&#xff0c;通过生动的比…

Three.js 实战:使用 PBR 贴图打造真实地面材质

在 Three.js 中&#xff0c;我们可以通过 MeshStandardMaterial 材质配合多张贴图来实现真实的地面效果。这种方式模拟了物理世界中光照与表面材质的复杂交互&#xff0c;常用于构建高质量场景&#xff0c;如数字孪生、建筑可视化、游戏等。 本文将以一个完整示例为基础&#x…

Java基础的总结问题(第一篇)

JDK和JRE的区别&#xff1f;JRE是Java运行环境&#xff08;Java Runtime Environment&#xff09;&#xff0c;包含了JVM和Java核心类库JDK是Java开发工具包&#xff08;Java Developers Kit&#xff09;,包含了JRE和Java常见的开发工具与equals的区别&#xff1f;可以用来比较…

[智能算法]MOEA/D算法的Python实现

一、初始化不同于NSGA-II&#xff0c;MOEA/D在进行迭代之前需要先进行初始化&#xff0c;初始化的主要内容是计算个体向量权重之间的欧氏距离&#xff0c;并得出其邻域集合。# 计算T个邻居 def cpt_W_Bi_T(moead):# 设置的邻居个数错误(自己不能是自己的邻居)if moead.T_size &…

Java设计模式之-组合模式

什么是组合模式&#xff1f; 组合模式允许你将对象组合成树形结构来表示"部分-整体"的层次结构。它让客户端能够以统一的方式处理单个对象和对象组合。 简单来说&#xff0c;就像公司的组织结构&#xff1a; 公司有部门部门有小组小组有员工但无论是对公司、部门还是…

2021-10-29 C++与反转数的和

缘由输入一个三位数 与它倒过来的数相加&#xff0c;输出和-编程语言-CSDN问答 直接写 int n0,nn0,nnn0; cin>>n;nnn; while(nn)nnn*10,nnnnn%10,nn/10; cout<<nnnn<<endl; 缘由https://ask.csdn.net/questions/7552128 int 反转数(int n) { int nn 0…

论安全架构设计(威胁与措施)

安全架构威胁与措施摘要2021年4月&#xff0c;我有幸参与了某保险公司的“优车险”项目的建设开发工作&#xff0c;该系统以车险报价、车险投保和报案理赔为核心功能&#xff0c;同时实现了年检代办、道路救援、一键挪车等增值服务功能。在本项目中&#xff0c;我被安排担任架构…

022_提示缓存与性能优化

提示缓存与性能优化 目录 缓存技术概述缓存工作原理实现方法详解成本优化策略性能优化实践高级应用场景最佳实践指南 缓存技术概述 什么是提示缓存 提示缓存是Claude API的一项优化功能&#xff0c;允许缓存提示的特定部分以便重复使用&#xff0c;从而显著减少处理时间和…

【AI交叉】地理:人工智能如何推动地理科学的智能转型?

随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;越来越多的传统学科开始与之融合&#xff0c;催生出一系列跨学科的新研究方向和应用场景。地理科学作为研究地球表层自然与人文现象的综合性学科&#xff0c;也在这一浪潮中迎来转型契机。 AI与地理学的交叉正…

iOS高级开发工程师面试——关于网络

iOS高级开发工程师面试——关于网络 一、谈谈对 HTTP、HTTPS 的理解1. HTTP协议:2. HTTPS 协议二、TCP、UDP 和 SocketTCPUDPTCP 和 UDP 的区别?Socket一、谈谈对 HTTP、HTTPS 的理解 1. HTTP协议: 超文本传输协议,他是基于TCP应用层协议。 是无连接 无状态 的,需要通过…

跟着Nature正刊学作图:回归曲线+散点图

&#x1f4cb;文章目录复现目标图片绘图前期准备绘制左侧回归线图绘制右侧散点图组合拼图 (关键步骤&#xff01;)跟着「Nature」正刊学作图&#xff0c;今天挑战复现Nature文章中的一张组合图–左边为 回归曲线、右边为 散点图。这种组合图在展示相关性和分组效应时非常清晰有…

LVS集群调度器

目录 集群和分布式 LVS运行原理 LVS概念 LVS的集群类型 实验配置 安装LVS ipvsadm命令参数 1.管理集群服务中的增删改 2.管理集群服务中的RS增删改 3.lvs调度策略的备份与恢复 4.lvs调度策略的开机启动 LVS-NAT模式 LVS-DR模式 集群和分布式 集群&#xff08;Clu…

【React Natve】NetworkError 和 TouchableOpacity 组件

NetworkError公共组件 import SimpleLineIcons from "expo/vector-icons/SimpleLineIcons"; import { StyleSheet, Text, View } from "react-native";export default function NetworkError() {return (<View style{styles.container}><SimpleL…

Linux 驱动中 Timer / Tasklet / Workqueue 的作用与对比

Linux 驱动中 Timer / Tasklet / Workqueue 的作用与对比 &#x1f9e9; 1. 使用场景概览&#xff08;对比表&#xff09;机制执行上下文是否可睡眠使用场景常用接口Timer中断上下文❌ 不可睡眠延迟执行&#xff08;如防抖、超时处理&#xff09;add_timer() 等Tasklet软中断上…

JavaScript中关于proxy的作用以及和Object.defineProperty的区别

之前写了一篇介绍 Object.defineProperty的&#xff0c;提到proxy&#xff0c;二者有一些共性&#xff0c;也都是前端框架Vue的核心机制&#xff0c;所以再写一篇介绍一下proxy的基础原理和使用。 在 JavaScript 中&#xff0c;Proxy 是 ES6 引入的一个元编程特性&#xff0c;用…