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

news2025/3/16 7:20:29

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

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 node1

172.25.23.8 node2

172.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_64

export JRE_HOME=$JAVA_HOME/jre

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$MYCAT_HOME/bin

 

source /etc/profile

echo $JAVA_HOME

 

二、Elasticsearch集群部署

1. 安装与基础配置(以node1为例)

cd /root

rpm -ivh elasticsearch-5.5.0.rpm

systemctl daemon-reload

systemctl 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节点为node2

node.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 服务的默认监听端口为9200

http.port: 9200

--68--取消注释,集群发现通过单播实现,指定要发现的节点 node1、node2

discovery.zen.ping.unicast.hosts: ["node1", "node2"]

 

Node1

Node2

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

node1

Node2

3.创建数据目录并授权

mkdir -p /data/elk_data

chown elasticsearch:elasticsearch /data/elk_data/

systemctl start elasticsearch

systemctl enable --now elasticsearch.service

netstat -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_64

export JRE_HOME=$JAVA_HOME/jre

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$MYCAT_HOME/bin

source /etc/profile

echo $JAVA_HOME

2、部署安装Elasticsearch软件

cd /root

rpm -ivh elasticsearch-5.5.0.rpm

systemctl daemon-reload

systemctl enable elasticsearch.service

cd /etc/elasticsearch/

cp elasticsearch.yml elasticsearch.yml.bak

配置Elasticsearch主配置文件

将node1节点配置文件复制过来

scp 172.25.23.7:/etc/elasticsearch/elasticsearch.yml .

vim /etc/elasticsearch/elasticsearch.yml

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

3、创建数据存放路径并授权

mkdir -p /data/elk_data

chown elasticsearch:elasticsearch /data/elk_data/

systemctl daemon-reload

systemctl enable --now elasticsearch.service

systemctl start elasticsearch

netstat -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 /opt

tar xvf node-v12.18.1-linux-x64.tar.gz

node1

Node2

mkdir /usr/local/node

mv node-v12.18.1-linux-x64/* /usr/local/node

echo "export PATH=$PATH:/usr/local/node/bin" >> ~/.bashrc

source ~/.bashrc

npm -v

2.安装 phantomjs

上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2到opt

cd /opt

tar 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/bin

cp phantomjs /usr/local/bin

3.安装 Elasticsearch-head 数据可视化工具

上传软件包 elasticsearch-head-5.0.0.zip 到/opt

cd /opt

unzip 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.org

npm 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 httpd

systemctl start httpd

systemctl 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_64

export JRE_HOME=$JAVA_HOME/jre

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$MYCAT_HOME/bin

source /etc/profile

echo $JAVA_HOME

3、安装logstash

cd /opt

rpm -ivh logstash-5.5.1.rpm

systemctl start logstash.service

systemctl enable logstash.service

ln -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 /opt

rpm -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-reload

systemctl start kibana.service

systemctl enable kibana.service

netstat -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.coloradmin.cn/o/2315881.html

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

相关文章

SFT数据处理部分的思考

SFT数据及处理的业内共识 1&#xff0e;prompt的质量和多样性远重要于数据量级&#xff0c;微调一个 30 b 量级的base model只需要 10 w 量级的数据即可 参考&#xff1a;《LIMA&#xff1a;Less Is More for Alignment》 2&#xff0e;合成数据很重要&#xff01;一般需要通过…

netsh实现TCP端口转发

服务器&#xff1a;192.168.31.9 端口&#xff1a;56000 客户端&#xff1a;192.168.31.2 端口&#xff1a;5600 客户端&#xff08;本地端口5600&#xff09;通过TCP连接服务器的56000端口 PC&#xff1a;192.168.31.5&#xff0c;PC实现客户端和服务器之间56000端口转发 1. …

leetcode 75.颜色分类(荷兰国旗问题)

题目描述 题目分析 本题是经典的「荷兰国旗问题」&#xff0c;由计算机科学家 Edsger W. Dijkstra 首先提出。 要想单独解决这道题本身还是很简单的&#xff0c;统计0、1、2的数量然后按顺序赋值&#xff0c;或者手写一个冒泡排序&#xff0c;whatever。 但是在这一题中我们主…

在windows上通过idea搭建doris fe的开发环境(快速成功版)

一、前置环境准备 1. 准备Linux环境&#xff0c;我起的虚机&#xff0c;使用CentOS8&#xff0c;4核、12G&#xff0c;磁盘50G 1.1.备份yum源 # 系统下载连接&#xff1a;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标签&#xff08;网站&#xff09;target属性换行线和水平分割线 图片设置宽高width&#xff0c;height html区块——块元素与行内元素块元素与行内元素块元素举例行内元素举例 表单from标签type属性pla…

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 …

STM32-SPI通信外设

目录 一&#xff1a;SPI外设简介 SPI框图​编辑 SPI逻辑 ​编辑 主模式全双工连续传输 ​编辑 非连续传输 二&#xff1a;硬件SPI读写W25Q64 1.接线&#xff1a; 2. 代码 SPI外设的初始化 生成时序 一&#xff1a;SPI外设简介 STM32内部集成了硬件SPI收发电路&#…

远程控制中的云电脑是什么意思?1分钟学会用

很多常用我们ToDesk远程控制的朋友们或许会注意到无论是在PC端还是移动端中都出现有【云电脑】【来云电脑爽玩-新用户免费1小时】这些词句等信息。那么这究竟是代表什么意思呐&#xff1f;云电脑是什么又怎么用呐&#xff1f;为什么要增加云电脑&#xff1f;以下小编就为大家科…

网络爬虫【简介】

我叫补三补四&#xff0c;很高兴见到大家&#xff0c;欢迎一起学习交流和进步 今天来讲一讲视图 一、网络爬虫的定义 网络爬虫&#xff08;Web Crawler&#xff09;&#xff0c;又称为网络蜘蛛、网络机器人等&#xff0c;是一种按照一定规则自动抓取互联网信息的程序或脚本。它…

2024华东师范大学计算机复试上机真题

2024华东师范大学计算机复试机试真题 2023华东师范大学计算机复试机试真题 2022华东师范大学计算机复试机试真题 2024华东师范大学计算机复试上机真题 2023华东师范大学计算机复试上机真题 2022华东师范大学计算机复试上机真题 在线评测&#xff1a;传动门&#xff1a;pgcode…

14.使用各种读写包操作 Excel 文件:辅助模块

一 各种读写包 这些是 pandas 在底层使用的各种读写包。无须安装 pandas&#xff0c;直接使用这些读写包就能够读写 Excel 工作簿。可以尽可能地使用 pandas 来解决这类问题&#xff0c;只在 pandas 没有提供你所需要的功能时才用到读写包。 表中没有 xlwings &#xff0c;因为…

Python数据分析之数据可视化

Python 数据分析重点知识点 本系列不同其他的知识点讲解&#xff0c;力求通过例子让新同学学习用法&#xff0c;帮助老同学快速回忆知识点 可视化系列&#xff1a; Python基础数据分析工具数据处理与分析数据可视化机器学习基础 四、数据可视化 图表类型与选择 根据数据特…

1、操作系统引论

一、操作系统 会使用linux系统 建议大家先学会linux的基础指令&#xff0c;可以看菜鸟教程网站进行学习。 1、各种定义 操作系统定义 管理计算机的 硬件 和软件资源&#xff0c; 能对各类作业进行调度&#xff0c;方便用户使用计算机的程序集合。操作系统运行在内核态&#xf…

HarmonyOS NEXT - 网络请求问题(http)

HTTP&#xff08;HyperText Transfer Protocal&#xff0c;超文本传输协议&#xff09;是一种用于传输超媒体文档&#xff08;如HTML&#xff09;的应用层协议&#xff0c;它是客户端和服务器之间通信的基础&#xff1b;无论是获取数据、提交表单、上传文件&#xff0c;HTTP都扮…

告别旧版本,功能全面升级!

小伙伴们&#xff0c;今天来给大家唠唠一款超经典的软件——格式工厂&#xff01;相信很多人都不陌生吧&#xff1f;它可是早期超多人用的视频格式转换工具呢&#xff01;但随着软件行业的发展&#xff0c;它慢慢被其他工具代替了&#xff0c;像万兴、小丸、AME这些新宠儿一出现…

Obsidian Copilot:打造你的专属 AI 笔记助手

Obsidian Copilot作为一款非常受欢迎的Obsidian插件&#xff0c;不仅极大地提升了用户的笔记管理和信息检索效率&#xff0c;还通过其多样化的AI功能为用户带来了前所未有的便捷体验。本文将详细介绍Obsidian Copilot的核心特点、使用方法及个人体验分享。 核心特点 Obsidian…

VPC4-通达oa-docker逃逸-shiro反序列化-hash传递-CrackMapExec喷射-历史ptt攻击-进程注入

由于本人是菜鸡&#xff0c;不会免杀&#xff0c;所有免杀的部分就直接跳过了 &#xff08;hhh) 靶场地址&#xff1a; 链接: https://pan.baidu.com/s/1Fh1Zg79n1yjCPe6rrQ2apA 提取码: qiag 第一台ubuntu(docker逃逸&#xff0c;shiro反序列化&#xff09; fscan扫到一…

C++类与对象——拷贝构造与运算符重载

拷贝构造函数和赋值运算符重载就是C类默认六个函数之二。 拷贝构造函数&#xff1a; 如果⼀个构造函数的第⼀个参数是自身类类型的引用&#xff0c;且任何额外的参数都有默认值&#xff0c;则此构造函数 也叫做拷贝构造函数&#xff0c;也就是说拷贝构造是⼀个特殊的构造函数…

疗养院管理系统设计与实现(代码+数据库+LW)

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装疗养院管理系统软件来发挥其高效地信息处理的作用&#xf…