Elasticsearch集群与日志系统实战部署指南
一、环境规划与初始化配置
1. 服务器资源分配
| IP地址 | 部署服务 | 主机名 |
|---|---|---|
| 172.25.23.7 | ES + Kafka + Zookeeper + Kibana | node1 |
| 172.25.23.8 | ES + Kafka + Zookeeper + Filebeat | node2 |
| 172.25.23.9 | Kafka + Zookeeper + Apache + Logstash | node3 |
系统要求:
- 配置:4核CPU / 4GB内存 / 60GB磁盘
- 组件版本:Elasticsearch 5.5.0、JDK 1.8
日志系统架构图
apache—>filebeat—>kafka—>logstash—>elasticsearch—>kibana

2. 基础环境配置
(1) 主机名与Hosts绑定
# 所有节点执行(以node1为例)
hostnamectl set-hostname node1
echo "172.25.23.7 node1" >> /etc/hosts
echo "172.25.23.8 node2" >> /etc/hosts
echo "172.25.23.9 node3" >> /etc/hosts
修改完重启终端或执行命令bash

vi /etc/hosts
加入
172.25.23.7 node1172.25.23.8 node2172.25.23.9 node3

(2) 关闭防火墙与SELinux
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
(3) 安装Java环境
yum -y install java-1.8.0-openjdk
cat <<EOF >> /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0
export PATH=\$PATH:\$JAVA_HOME/bin
EOF
source /etc/profile
安装Java
yum -y install java-1.8.0-*

vi /etc/profile
加入下面三行
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64export JRE_HOME=$JAVA_HOME/jreexport PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$MYCAT_HOME/bin

source /etc/profileecho $JAVA_HOME

二、Elasticsearch集群部署
1. 安装与基础配置(以node1为例)
cd /rootrpm -ivh elasticsearch-5.5.0.rpmsystemctl daemon-reloadsystemctl enable elasticsearch.service

cd /etc/elasticsearch/cp elasticsearch.yml elasticsearch.yml.bak
2.修改配置文件
vim /etc/elasticsearch/elasticsearch.yml--17--取消注释,指定集群名字cluster.name: zhang--23--取消注释,指定节点名字:Node1节点为node1,Node2节点为node2node.name: node1--33--取消注释,指定数据存放路径path.data: /data/elk_data--37--取消注释,指定日志存放路径path.logs: /var/log/elasticsearch/--43--取消注释,改为在启动的时候不锁定内存bootstrap.memory_lock: false--55--取消注释,设置监听地址,0.0.0.0代表所有地址network.host: 0.0.0.0--59--取消注释,ES 服务的默认监听端口为9200http.port: 9200--68--取消注释,集群发现通过单播实现,指定要发现的节点 node1、node2discovery.zen.ping.unicast.hosts: ["node1", "node2"]

Node1


Node2


grep -v "^#" /etc/elasticsearch/elasticsearch.yml
node1

Node2

3.创建数据目录并授权
mkdir -p /data/elk_datachown elasticsearch:elasticsearch /data/elk_data/systemctl start elasticsearchsystemctl enable --now elasticsearch.servicenetstat -antp | grep 9200
4、查看node1节点信息
curl http://node1:9200/_cluster/health?pretty
预期输出
{"cluster_name" : "es-cluster","status" : "green", # 集群健康状态"number_of_nodes" : 2 # 节点数量
}
实际访问输出 http://172.16.39.66:9200/

http://172.16.39.66:9200//_cluster/health?pretty

三、Elasticsearch 集群部署(在node2上操作)
1、前面步骤与node1节点一致


安装Java
yum -y install java-1.8.0-*

vi /etc/profile 加入下面三行export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64export JRE_HOME=$JAVA_HOME/jreexport PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$MYCAT_HOME/bin

source /etc/profileecho $JAVA_HOME

2、部署安装Elasticsearch软件
cd /rootrpm -ivh elasticsearch-5.5.0.rpmsystemctl daemon-reloadsystemctl enable elasticsearch.servicecd /etc/elasticsearch/cp elasticsearch.yml elasticsearch.yml.bak

配置Elasticsearch主配置文件
将node1节点配置文件复制过来scp 172.25.23.7:/etc/elasticsearch/elasticsearch.yml .

vim /etc/elasticsearch/elasticsearch.ymlgrep -v "^#" /etc/elasticsearch/elasticsearch.yml

3、创建数据存放路径并授权
mkdir -p /data/elk_datachown elasticsearch:elasticsearch /data/elk_data/systemctl daemon-reloadsystemctl enable --now elasticsearch.servicesystemctl start elasticsearchnetstat -antp | grep 9200

4、查看node2节点信息
http://172.16.39.70:9200/

http://172.16.39.70:9200/_cluster/health?pretty

由于es服务启动之后,访问界面比较简单,为了更好的查看索引库当中的信息,我们可以通过安装elasticsearch-head这个插件来实现,这个插件可以更方便快捷的看到es的管理界面。
5.创建测试索引(可以不创建)
curl -X PUT "node1:9200/index-demo" -H 'Content-Type: application/json' -d'
{"settings": { "number_of_shards": 3 }
}'
四、安装 Elasticsearch-head 可视化插件(node1和node2节点操作一样)
Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作为独立服务进行安装,需要使用npm工具(NodeJS的包管理工具)安装。
安装 Elasticsearch-head 需要提前安装好依赖软件 node 和 phantomjs。
node:是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
phantomjs:是一个基于 webkit 的JavaScriptAPI,可以理解为一个隐形的浏览器,任何基于 webkit 浏览器做的事情,它都可以做到。
1.安装Node.js与依赖
上传软件包 node-v12.18.1-linux-x64.tar.gz 到/opt
yum install gcc gcc-c++ make -y
node1

Node2

cd /opttar xvf node-v12.18.1-linux-x64.tar.gz
node1

Node2

mkdir /usr/local/nodemv node-v12.18.1-linux-x64/* /usr/local/nodeecho "export PATH=$PATH:/usr/local/node/bin" >> ~/.bashrcsource ~/.bashrcnpm -v

2.安装 phantomjs
上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2到opt
cd /opttar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/

cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bincp phantomjs /usr/local/bin

3.安装 Elasticsearch-head 数据可视化工具
上传软件包 elasticsearch-head-5.0.0.zip 到/opt
cd /optunzip elasticsearch-head-5.0.0.zip

mv elasticsearch-head-5.0.0/* /usr/local/src/cd /usr/local/src/
修改为淘宝的源
npm config set registry http://registry.npm.taobao.orgnpm install


4.修改 Elasticsearch 主配置文件
vim /etc/elasticsearch/elasticsearch.yml
--末尾添加以下内容--
http.cors.enabled: true http.cors.allow-origin: "*"

systemctl restart elasticsearch
5.修改Gruntfile.js配置文件
vi Gruntfile.js
connect: {server: {options: {hostname: '172.25.23.7', //添加这行port: 9100,base: '.',keepalive: true}}}

6.修改app.js配置文件
cd _site/vi app.js
搜素XHR找到下面的位置(修改)
init: function(parent) {this._super();this.prefs = services.Preferences.instance();this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://172.25.23.7:9200"; //修改这里if( this.base_uri.charAt( this.base_uri.length - 1 ) !== "/" ) {// XHR request fails if the URL is not ending with a "/"this.base_uri += "/";}

7.启动 elasticsearch-head 服务
cd /usr/local/src/node_modules/grunt/bin./grunt server
8、通过 Elasticsearch-head查看Elasticsearch 信息
浏览器访问 http://172.25.23.7:9100/ 地址并连接群集。如果看到群集健康值为 green 绿色,代表群集很健康。

9、插入索引,进行测试
curl -X PUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"lcdb","mesg":"lichen youshoujiuxing"}'

浏览器访问 http://172.25.23.7:9100/ 查看索引信息,可以看见索引默认被分片5个,并且有一个副本。

点击“数据浏览”,会发现在node1上创建的索引为 index-demo,类型为 test 的相关信息。

五、Logstash 部署
下载地址:https://www.elastic.co/cn/downloads/past-releases/logstash-5-5-1
https://www.elastic.co/cn/downloads/past-releases/logstash-5-5-1
Logstash 一般部署在需要监控其日志的服务器。在本案例中,Logstash 部署在 Apache 服务器上,用于收集 Apache 服务器的日志信息并发送到 Elasticsearch。
1.安装httpd服务
yum -y install httpdsystemctl start httpdsystemctl status httpd


2、安装java环境
yum -y install java-1.8.0-*

vi /etc/profile加入下面三行
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64export JRE_HOME=$JAVA_HOME/jreexport PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$MYCAT_HOME/bin

source /etc/profileecho $JAVA_HOME

3、安装logstash
cd /optrpm -ivh logstash-5.5.1.rpm

systemctl start logstash.servicesystemctl enable logstash.serviceln -s /usr/share/logstash/bin/logstash /usr/local/bin/

4、测试 Logstash
4.1 Logstash 命令常用选项
-f:通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash 的输入和输出流。
-e:从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是空,则默认使用 stdin 作为输入,stdout 作为输出)。
-t:测试配置文件是否正确,然后退出。
4.2 定义输入输出流
输入采用标准输入,输出采用标准输出(类似管道)
指定数据输入端口,默认为9600~9700
logstash -e "input { stdin{} } output { stdout{} }"

4.3 使用 rubydebug 输出详细格式显示,codec 为一种编解码器
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'

4.4 使用 Logstash 将信息写入 Elasticsearch 中
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["172.16.39.66:9200"] } }'

结果不在标准输出显示,而是发送至 Elasticsearch 中,可浏览器访问 http://172.25.23.7:9100/ 查看索引信息和数据浏览。


5、定义logstash配置文件
Logstash 配置文件基本由三部分组成(根据需要选择使用)
input:表示从数据源采集数据,常见的数据源如Kafka、日志文件等
filter:表示数据处理层,包括对数据进行格式化处理、数据类型转换、数据过滤等,支持正则表达式
output:表示将Logstash收集的数据经由过滤器处理之后输出到Elasticsearch。
修logstash 配置文件,让其收集系统日志/var/log/messages,并将其输出到 elasticsearch 中
chmod +r /var/log/messages 给系统日志添加读权限cd /etc/logstash/conf.d/vim syslog.conf

input {file{path =>"/var/log/messages"type =>"system"start_position =>"beginning"}}output {elasticsearch {hosts => ["172.25.23.7:9200"]index =>"system-%{+YYYY.MM.dd}"}}

systemctl restart logstash.service
![]()
6、浏览器验证,查看索引信息


六、Kibana部署(Node1节点)
下载地址:https://www.elastic.co/cn/downloads/past-releases/kibana-5-5-1
https://www.elastic.co/cn/downloads/past-releases/kibana-5-5-1
1.安装 Kibana
cd /optrpm -ivh kibana-5.5.1-x86_64.rpm

2.设置kibana的主配置文件
vim /etc/kibana/kibana.yml
--2--取消注释,Kiabana 服务的默认监听端口为5601
server.port: 5601
--7--取消注释,设置 Kiabana 的监听地址,0.0.0.0代表所有地址
server.host: "0.0.0.0"
--21--取消注释,设置和 Elasticsearch 建立连接的地址和端口
elasticsearch.url: "http://172.25.23.7:9200"
--30--取消注释,设置在 elasticsearch 中添加.kibana索引
kibana.index: ".kibana"

3.启动kibana服务
systemctl daemon-reloadsystemctl start kibana.servicesystemctl enable kibana.servicenetstat -antp | grep 5601

4.验证Kibana
浏览器访问http://172.16.39.66:5601




5.将 Apache 服务器的日志(访问的、错误的)添加到 Elasticsearch 并通过 Kibana 显示
vim /etc/logstash/conf.d/apache_log.conf
input {file{path => "/etc/httpd/logs/access_log"type => "access"start_position => "beginning"}file{path => "/etc/httpd/logs/error_log"type => "error"start_position => "beginning"}}output {if [type] == "access" {elasticsearch {hosts => ["172.16.39.66:9200"]index => "apache_access-%{+YYYY.MM.dd}"}}if [type] == "error" {elasticsearch {hosts => ["172.16.39.66:9200"]index => "apache_error-%{+YYYY.MM.dd}"}}}

cd /etc/logstash/conf.d//usr/share/logstash/bin/logstash -f apache_log.conf 指定配置文件开启logstash

打开apache页面,多刷新几次

浏览器访问 http://172.25.23.7:9100 查看索引是否创建

创建访问日志索引

创建错误日志索引



访问apache可以刷新日志,kibana可以看到时间


相关文章:
Elasticsearch集群与日志系统实战部署指南
一、环境规划与初始化配置 1. 服务器资源分配 IP地址部署服务主机名172.25.23.7ES Kafka Zookeeper Kibananode1172.25.23.8ES Kafka Zookeeper Filebeatnode2172.25.23.9Kafka Zookeeper Apache Logstashnode3 系统要求: 配置:4核CPU / 4G…...
SFT数据处理部分的思考
SFT数据及处理的业内共识 1.prompt的质量和多样性远重要于数据量级,微调一个 30 b 量级的base model只需要 10 w 量级的数据即可 参考:《LIMA:Less Is More for Alignment》 2.合成数据很重要!一般需要通过…...
netsh实现TCP端口转发
服务器:192.168.31.9 端口:56000 客户端:192.168.31.2 端口:5600 客户端(本地端口5600)通过TCP连接服务器的56000端口 PC:192.168.31.5,PC实现客户端和服务器之间56000端口转发 1. …...
数据分布偏移检测:保障模型在生产环境中的稳定性
数据分布偏移检测:保障模型在生产环境中的稳定性 引言 在机器学习系统从开发环境部署到生产环境的过程中,数据分布偏移问题是影响模型性能的主要挑战之一。当训练数据与生产环境中的数据分布不一致时,即使是经过精心调优的模型也可能表现出明显的性能下降。本文将深入探讨…...
leetcode 75.颜色分类(荷兰国旗问题)
题目描述 题目分析 本题是经典的「荷兰国旗问题」,由计算机科学家 Edsger W. Dijkstra 首先提出。 要想单独解决这道题本身还是很简单的,统计0、1、2的数量然后按顺序赋值,或者手写一个冒泡排序,whatever。 但是在这一题中我们主…...
在windows上通过idea搭建doris fe的开发环境(快速成功版)
一、前置环境准备 1. 准备Linux环境,我起的虚机,使用CentOS8,4核、12G,磁盘50G 1.1.备份yum源 # 系统下载连接:magnet:?xturn:btih:9DB46A612D04763AA7DB02A0FF63EDE2EA555867&dnCentOS-8.1.1911-x86_64-dvd1.…...
MyBatis源码分析の配置文件解析
文章目录 前言一、SqlSessionFactoryBuilder1.1、XMLConfigBuilder1.2、parse 二、mappers标签的解析2.1、cacheElement2.1.1、缓存策略 2.2、buildStatementFromContext2.2.1、sql的解析 前言 本篇主要介绍MyBatis源码中的配置文件解析部分。MyBatis是对于传统JDBC的封装&…...
python爬虫笔记(一)
文章目录 html基础标签和下划线无序列表和有序列表表格加边框 html的属性a标签(网站)target属性换行线和水平分割线 图片设置宽高width,height html区块——块元素与行内元素块元素与行内元素块元素举例行内元素举例 表单from标签type属性pla…...
docker后台运行,便于后期用命令行进入它的终端
在 docker compose up --build -d 命令中,**-d(或 --detach)参数的作用是让容器以后台模式(detached mode)**运行。以下是详细解释: **-d 参数的作用** 后台运行容器: 默认情况下&a…...
剑指 Offer II 087. 复原 IP
comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20087.%20%E5%A4%8D%E5%8E%9F%20IP/README.md 剑指 Offer II 087. 复原 IP 题目描述 给定一个只包含数字的字符串 s ,用以表示一个 IP 地址…...
DC-6靶机详解
一、主机发现 arp-scan -l靶机ip为192.168.55.159 二、端口扫描、目录枚举、指纹识别、 2.1端口扫描 nmap 192.168.55.159发现没有开放特殊端口 看来信息收集的重点要放在网页中了 2.2目录枚举 dirb http://192.168.55.1592.3指纹识别 nmap 192.168.55.159 -sV -sC -O …...
Java构造方法详解:从入门到实战
目录 一、什么是构造方法? 二、构造方法的作用 三、构造方法分类与使用 1. 默认构造方法 2. 有参构造方法 3. 构造方法重载 四、注意事项(避坑指南) 五、经典面试题解析 六、实战应用场景 七、总结 一、什么是构造方法? …...
STM32-SPI通信外设
目录 一:SPI外设简介 SPI框图编辑 SPI逻辑 编辑 主模式全双工连续传输 编辑 非连续传输 二:硬件SPI读写W25Q64 1.接线: 2. 代码 SPI外设的初始化 生成时序 一:SPI外设简介 STM32内部集成了硬件SPI收发电路&#…...
远程控制中的云电脑是什么意思?1分钟学会用
很多常用我们ToDesk远程控制的朋友们或许会注意到无论是在PC端还是移动端中都出现有【云电脑】【来云电脑爽玩-新用户免费1小时】这些词句等信息。那么这究竟是代表什么意思呐?云电脑是什么又怎么用呐?为什么要增加云电脑?以下小编就为大家科…...
【go】Go 语言中 errors.Is 和 errors.As 的区别
Go 语言中 errors.Is 和 errors.As 的区别 核心区别概述 errors.Is 和 errors.As 是 Go 1.13 引入的错误处理函数,它们有着不同的用途: errors.Is: 判断错误链中是否包含特定的错误值(错误相等性检查)errors.As: 尝试将错误转换…...
网络爬虫【简介】
我叫补三补四,很高兴见到大家,欢迎一起学习交流和进步 今天来讲一讲视图 一、网络爬虫的定义 网络爬虫(Web Crawler),又称为网络蜘蛛、网络机器人等,是一种按照一定规则自动抓取互联网信息的程序或脚本。它…...
JPA动态查询自定义排序规则
方法1:使用 CASE WHEN 语句排序 // 自定义排序逻辑 // 定义“离线”排在前,“在线”排在后 Expression<Object> caseExpression cb.selectCase().when(cb.equal(root.get("status"), "离线"), 0).when(cb.equal(root.get(…...
卫语句优化多层if else嵌套
一、卫语句的介绍 卫语句是一种编程实践,用于在函数或方法的开头快速处理不符合条件的情况,从而避免深层次的嵌套结构。它的核心思想是尽早返回,减少嵌套,使代码更加清晰易读。 二、卫语句的作用 提高可读性:卫语句将…...
2024华东师范大学计算机复试上机真题
2024华东师范大学计算机复试机试真题 2023华东师范大学计算机复试机试真题 2022华东师范大学计算机复试机试真题 2024华东师范大学计算机复试上机真题 2023华东师范大学计算机复试上机真题 2022华东师范大学计算机复试上机真题 在线评测:传动门:pgcode…...
3.15刷题
P6337 [COCI 2007/2008 #2] CRNE - 洛谷 #include<bits/stdc.h> using namespace std; int main(){int n;cin>>n;//横加竖 最大。n/2,n/21if(n%20){cout<<(n/21)*(n/21);}else cout<<(n/22)*(n/21);return 0; }P6338 [COCI 2007/2008 #2] PRVA - 洛…...
14.使用各种读写包操作 Excel 文件:辅助模块
一 各种读写包 这些是 pandas 在底层使用的各种读写包。无须安装 pandas,直接使用这些读写包就能够读写 Excel 工作簿。可以尽可能地使用 pandas 来解决这类问题,只在 pandas 没有提供你所需要的功能时才用到读写包。 表中没有 xlwings ,因为…...
设计心得——多态
一、设计上的多态 无论是在网上还是书籍上,还是自己的文章里都反复分析过多态的原理、应用和各种常见的情况。本篇重点从设计的角度来阐述一下多态,而不对多态的具体的用法进行说明。在前面的知识学习中可以知道,多态可以分为动多态和靜多态…...
【DeepSeek】本地部署DeepSeek的完整教程(Ollama+Docker+Open WebUI)
本地部署DeepSeek的完整教程 文章目录 本地部署DeepSeek的完整教程写在前面技术需求详细步骤一. 安装Ollama软件二. 安装DeepSeek-R1模型三. 安装Docker软件四. 配置Web UI界面问题解决1. 打开`docker desktop`时,一直显示`Docker Engine stopped`2. 用`Docker`拉取`Open WebU…...
Python数据分析之数据可视化
Python 数据分析重点知识点 本系列不同其他的知识点讲解,力求通过例子让新同学学习用法,帮助老同学快速回忆知识点 可视化系列: Python基础数据分析工具数据处理与分析数据可视化机器学习基础 四、数据可视化 图表类型与选择 根据数据特…...
1、操作系统引论
一、操作系统 会使用linux系统 建议大家先学会linux的基础指令,可以看菜鸟教程网站进行学习。 1、各种定义 操作系统定义 管理计算机的 硬件 和软件资源, 能对各类作业进行调度,方便用户使用计算机的程序集合。操作系统运行在内核态…...
DeepSeek 本地化新篇章:Ollama 兼容 OpenAI API 的深度解析与部署实践
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着大语言模型(LLM)的快速发展,开发者对本地化部署和 API 兼容性的需求日益增加。Ollama 作为一个轻量级开源框架,通过兼容 OpenAI AP…...
【PTA题目解答】7-4 数气球 (20分)
1.题目 天空上有n个气球,第i个气球的颜色为colori(为全由小写字母组成的字符串) 请你数出每种颜色的气球的数量,并按照颜色出现的先后顺序进行排序输出。 输入格式: 测试数据有T组(1≤T≤100)。 对于每组样例,第一…...
Swift 中 associatedtype 的用法详解
目录 前言 1.什么是associatedtype 2.associatedtype 的作用 1.让协议支持泛型 2.让协议支持不同的数据类型 3.结合 where 关键字限制类型 4.什么时候使用 associatedtype 5.总结 前言 在 Swift 语言中,泛型(Generics)是一个非常强大…...
java泛型通配符?及上下界(extends,super)保证安全性、灵活性、可读性
在 Java 中,泛型通配符(?)用于表示未知类型,通常用于增强泛型的灵活性。通配符可以与上下限结合使用,以限制泛型的范围。以下是通配符及上下限的使用示例: 1. 无界通配符 (?) 无界通配符表示可以接受任意…...
HarmonyOS NEXT - 网络请求问题(http)
HTTP(HyperText Transfer Protocal,超文本传输协议)是一种用于传输超媒体文档(如HTML)的应用层协议,它是客户端和服务器之间通信的基础;无论是获取数据、提交表单、上传文件,HTTP都扮…...

