Elasticsearch集群与日志系统实战部署指南

devtools/2025/3/16 10:01:42/

一、环境规划与初始化配置

1. 服务器资源分配

IP地址部署服务主机名
172.25.23.7ES + Kafka + Zookeeper + Kibananode1
172.25.23.8ES + Kafka + Zookeeper + Filebeatnode2
172.25.23.9Kafka + Zookeeper + Apache + Logstashnode3

系统要求

  • 配置: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-1https://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-1https://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可以看到时间


http://www.ppmy.cn/devtools/167518.html

相关文章

Linux环境安装基础工具使用

Linux 软件包管理器 yum 什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方…

算法模型全解析:优缺点、场景适配与选择逻辑

算法模型的选择如同量体裁衣,需兼顾业务目标、数据特性与落地成本。以下从传统模型、集成学习、神经网络、新兴范式四大维度,拆解 20 + 主流模型的核心特点与适用场景,附通俗案例说明: 一、传统模型:简单高效的「工业基石」 1. 线性模型(逻辑回归 / LR) 优点:可解释性…

容器技术与Kubernetes概述

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

生成对抗网络——pytorch与paddle实现生成对抗网络

生成对抗网络——pytorch与paddle实现生成对抗网络 本文将深入探讨生成对抗网络的理论基础&#xff0c;并通过PyTorch和PaddlePaddle两个深度学习框架来展示如何实现生成对抗网络模型。我们将首先介绍生成对抗网络的基本概念&#xff0c;这些理论基础是理解和实现生成对抗网络…

yolo环境 pytorch环境配置 CUDA安装

安装yolo 直接&#xff1a;pip install ultralytics 就行 如果你只想用cpu驱动ultralytics拿到这就可以使用了 如果你还想用nvidia显卡gpu去驱动yolo那还需要安装cudapytorch 首先搜索你的电脑&#xff1a;nvidia-smi 可以看到你的驱动560.94 cuda最高版本到12.6 所以俺最…

MySQL开发陷阱与最佳实践:第1章:MySQL开发基础概述-1.1 MySQL简介与应用场景

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 MySQL开发陷阱与最佳实践&#xff1a;第1章&#xff1a;MySQL开发基础概述-1.1 MySQL简介与应用场景1.1.1 MySQL的发展历程与市场地位1.1.2 MySQL的核心特性与技术优势1.1.2…

【蓝桥杯】高能粒子对撞机轨迹中位数优化

问题描述 威慑纪元 2233 年&#xff0c;人类地球联邦为了突破质子科技封锁&#xff0c;决定在太阳系的黄道平面上建造大量高能粒子对撞机&#xff0c;与普通高能粒子对撞机不同的是&#xff0c;可以将黄道平面抽象为一个二维平面。 一共有 nn 个 αα 高能粒子和 mm 个 ββ …

Web安全:保护您的网站免受网络威胁

在当今数字化时代&#xff0c;Web安全已成为每个网站和应用程序开发者的首要任务。无论是小型博客还是大型电商平台&#xff0c;网络攻击都可能带来灾难性后果。本文将探讨Web安全的重要性&#xff0c;并分享一些关键的最佳实践&#xff0c;帮助您保护网站免受威胁。 为什么Web…