当前位置: 首页 > news >正文

LinuxCentos中ELK日志分析系统的部署(详细教程8K字)附图片

 

🏡作者主页:点击! 

🐧Linux基础知识(初学):点击!

🐧Linux高级管理防护和群集专栏:点击!

🔐Linux中firewalld防火墙:点击!

⏰️创作时间:2024年7月30日15点15分


目录

1.实验环境

2.环境准备

部署Elasticsearch

Node1

Node2

3.查看节点信息

4.查看群集的健康情况

5.查看群集的状态信息

安装Elasticsearch-head插件

1.安装node

2.安装phantomjs

3.创建索引

Logstash安装及使用方法

安装Kibana

添加system索引

添加apache日志

总结


日志分析已成为企业监控、故障排查和性能优化的重要组成部分。ELK(Elasticsearch、Logstash 和 Kibana)堆栈作为一种强大的开源解决方案,提供了高效的日志收集、存储和可视化功能,使用户能够快速获取关键业务洞察。本文将详细介绍如何在 CentOS 系统中部署 ELK 日志分析系统,

1.实验环境

配置ELK日志分析集群

使用logstash收集日志

使用kibana分析日志

2.环境准备

所需安装包

node1

elasticsearch-5.5.0.rpm v8.2.1.tar.gz
kibana-5.5.1-x86_64.rpm 
elasticsearch-head.tar.gznode-v8.2.1.tar.gzphantomjs-2.1.1-linux-x86_64.tar.bz2

apache

 logstash-5.5.1.rpm

所有服务器上操作

关闭防火墙和Selinux 配置hosts文件

systemctl stop firewalld && systemctl disable firewalld
setenforce 0vim /etc/hosts192.168.192.113 node1
192.168.192.114 node2
192.168.192.116 apache                    yum install -y lrzsz

部署Elasticsearch

在 Node1 和 Node2 节点上都需要部署 lasticsearch 

Node1

检测java环境

[root@node1 ~]# java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode)

如果没有java的话安装

yum install -y java-openjdk

上传安装包

[root@node1 ~]# ls
elasticsearch-5.5.0.rpm v8.2.1.tar.gzrpm -ivh elasticsearch-5.5.0.rpm

编辑配置文件

自己打开配置文件一个个比对找,行数我已经标出

vim /etc/elasticsearch/elasticsearch.yml17 cluster.name: my-elk-cluster       # 集群名称
23 node.name: node1                    # 节点名称
33 path.data: /data/elk_data           # 数据存储路径
37 path.logs: /var/log/elk_logs         # 日志存储路径
43 bootstrap.memory_lock: false         # 是否锁定内存以避免交换
55 network.host: 0.0.0.0                # 监听所有网络接口
59 http.port: 9200                      # HTTP 服务端口
68 discovery.zen.ping.unicast.hosts: ["node1", "node2"]  # 发现其他节点的地址也可以填写ip地址

重新加载系统管理器配置,设置 Elasticsearch 服务为开机自启。

systemctl daemon-reload
systemctl enable elasticsearch.service

创建数据和日志目录

将数据和日志目录的所有权更改为 elasticsearch 用户,以确保 Elasticsearch 有权限访问这些目录

mkdir -p /data/elk_data
mkdir -p /var/log/elk_logschown elasticsearch:elasticsearch /data/elk_data/
chown elasticsearch:elasticsearch /var/log/elk_logssystemctl start elasticsearchnetstat -nultp | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      1264/java 

启动 Elasticsearch 服务。

Node2

方法一样不过多介绍

[root@node1 ~]# java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode)
yum install -y java-openjdk

这里需改更改节点为node2

vim /etc/elasticsearch/elasticsearch.yml17 cluster.name: my-elk-cluster23 node.name: node2			//这里需要更改33 path.data: /data/elk_data37 path.logs: /var/log/elk_logs43 bootstrap.memory_lock: false55 network.host: 0.0.0.059 http.port: 920068 discovery.zen.ping.unicast.hosts: ["node1", "node2"]   //或者输入IP地址

 systemctl daemon-reload
systemctl enable elasticsearch.servicevim /etc/elasticsearch/elasticsearch.yml 
mkdir -p /data/elk_data
mkdir -p /var/log/elk_logschown elasticsearch:elasticsearch /data/elk_data/
chown elasticsearch:elasticsearch /var/log/elk_logssystemctl start elasticsearchnetstat -nultp | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      1384/java  

3.查看节点信息

 Web 链接 http://192.168.192.113:9200,可以查看节点Node1 的信息

node2

检查群集的健康状态,可以看到status为绿色表示节点健康运行

在浏览器中输入 

4.查看群集的健康情况
http://192.168.192.113:9200/_cluster/health?pretty

5.查看群集的状态信息
http://192.168.192.113:9200/_cluster/state?pretty

安装Elasticsearch-head插件

在Node1上安装

安装 Elasticsearch-head 需要提前安装 node 和 phantomjs

1.安装node

编译安装node 时间可以有多久 大概20分钟左右

yum install -y gzip
ls
node-v8.2.1.tar.gztar zxf node-v8.2.1.tar.gz 
ls
node-v8.2.1
node-v8.2.1.tar.gzcd  node-v8.2.1
./configure && make && make install

2.安装phantomjs
[root@node1 ~]# ls
elasticsearch-head.tar.gz   node-v8.2.1.tar.gz
elasticsearch-5.5.0.rpm     node-v8.2.1
phantomjs-2.1.1-linux-x86_64.tar.bz2[root@node1 ~]# tar -jxf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
[root@node1 ~]# cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin/
[root@node1 bin]# ls
phantomjs
[root@node1 bin]# cp phantomjs /usr/local/bin

开始安装

cd
[root@node1 ~]# tar -zxf elasticsearch-head.tar.gz 
[root@node1 ~]# cd elasticsearch-head
[root@node1 elasticsearch-head]# npm install

修改Elasticsearch 主配置文件

vim /etc/elasticsearch/elasticsearch.yml 
//加入一下内容
90 http.cors.enabled: true                # 启用 CORS
91 http.cors.allow-origin: "*"            # 允许所有来源的请求systemctl restart elasticsearch

执行命令npm run start &

cd elasticsearch-head		//必须进入这个目录执行命令
[root@node1 elasticsearch-head]# npm run start &
[6] 51980
[root@node1 elasticsearch-head]# 
> elasticsearch-head@0.0.0 start /root/elasticsearch-head
> grunt serverRunning "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100

elasticsearch-head 监听的端口是 9100

通过Elasticsearch-head 查看 Elasticsearch信息。可以看到群集很健康,健康值为 green 绿色。单击数据浏览,可以查螺引信息,此时索引为空

浏览器访问

http://192.168.192.113:9100/

3.创建索引

 Elasticsearch 中的 index-demo 索引添加了一个文档

curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'Content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
{"_index" : "index-demo","_type" : "test","_id" : "1","_version" : 1,"result" : "created","_shards" : {"total" : 2,"successful" : 2,"failed" : 0},"created" : true
}

"_index":文档所在的索引。
"_type":文档的类型。
"_id":文档的唯一标识符。
"_version":文档的版本号。
"result":操作结果,表示文档已成功创建。
"_shards":分片信息,显示总分片数、成功的分片数和失败的分片数。
"created":布尔值,表示文档是否被创建。

刷新浏览器可以看到创建成功的目录

点击概述 ,还可以看到索引默认被分片成5个篇,且存在一个副本

Logstash安装及使用方法

logstash 一般部署在需要监控其日志的服务器中,在本案例中,Logsiash 部署在 Apache 服务器上解收集 Apsche 服务器的日志信息并发送到 Elasticserch 中,

安装在被监控端,

本案例安装在apache服务器上,用于收集apache服务器的日志信息发送到Elasticsearch中

以下在apache服务器中安装

1.检测java环境

[root@node1 ~]# java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode)
yum install -y java-openjdk

报错解决

root@apache ~]# rpm -ivh logstash-5.5.1.rpm 
警告:logstash-5.5.1.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...1:logstash-1:5.5.1-1               ################################# [100%]
Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME.
警告:%post(logstash-1:5.5.1-1.noarch) 脚本执行失败,退出状态码为 1

下载java即可

2.上传rpm包

[root@apache ~]# lslogstash-5.5.1.rpm
rpm -ivh logstash-5.5.1.rpmsystemctl start logstash.serviceln -s /usr/share/logstash/bin/logstash /usr/local/bin/

测试 Logstash

logstash -e 'input { stdin{} } output { stdout{} }'logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'

在Elsticsearch 中查看Logstesh 新增加的索引

配置 Logstash 以读取系统日志

 cd /etc/logstash/conf.d/[root@apache conf.d]# chmod o+r /var/log/messages
[root@apache conf.d]# ll /var/log/messages
-rw----r--. 1 root root 41906 7月  26 13:44 /var/log/messages
[root@apache conf.d]# touch system.conf
[root@apache conf.d]# vim system.conf 
 vim system.conf input {file {path => "/var/log/messages"type =>  "system"start_position => "beginning"}
}output {elasticsearch{hosts => ["192.168.192.113:9200"]index => "system-%{+YYYY.MM.dd}"}} 
systemctl restart logstash
ls
system.conf

这时候系统日志信息就添加进来了

完成后,通过浏览器查看Elasticsearch 的信息

安装Kibana

Kibana 是一个开源的分析和可视化平台,通常与 Elasticsearch 和 Logstash 一起使用,形成 ELK 堆栈。它允许用户通过图形界面轻松地探索和可视化存储在 Elasticsearch 中的数据。

在Node1上安装

首先上传rpm包

kibana-5.5.1-x86_64.rpm rpm -ivh kibana-5.5.1-x86_64.rpm systemctl enable kibana

设置主配置文件

vim /etc/kibana/kibana.yml 2 server.port: 56017 server.host: "0.0.0.0"21 elasticsearch.url: "http://192.168.192.113:9200"30 kibana.index: ".kibana"

验证 Kibana、通过浏览器访问 

http://192.168.192.113:5601

添加system索引

添加一个

这时候就可以查看图表和 系统有关的日志信息了

添加apache日志

将 apache 服务器的日志添加到 Elasticsearch 并通过 Kibana 显示

ip地址记得更换

cd /etc/logstash/conf.d/vim apache_log.conf
//加入一下内容input {file {path => "/var/log/httpd/access_log"type =>  "access"start_position => "beginning"}file {path => "/var/log/httpd/error_log"type =>  "error"start_position => "beginning"}}
output {if [type] == "access" {elasticsearch {hosts => ["192.168.192.113:9200"]index => "apache_access-%{+YYYY.MM.dd}"}}if [type] == "error" {elasticsearch {hosts => ["192.168.192.113:9200"]index => "apache_error-%{+YYYY.MM.dd}"} }}

4.编写脚本

用于启动 Logstash 并加载指定的配置文件。

通过这个脚本快速启动 Logstash 处理 Apache 日志了。

vim /elk.sh
#!/bin/bash/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/apache_log.confwqchmod a+x /elk.sh. /elk.sh &

访问查看索引是否创建成功

http://192.168.192.113:9100/

回到kibana

如果想要添加其他服务的日志信息也是一样的!

总结

通过本教程,我们详细探讨了在 CentOS 系统中部署 ELK 日志分析系统的各个步骤。我们从环境准备、组件安装到配置与实际应用,全面覆盖了这一强大工具的使用方法。ELK 堆栈不仅提升了日志管理的效率,也为数据分析提供了丰富的可视化手段。希望本文能够帮助您更好地理解和应用 ELK 系统,助力您的业务决策和性能优化。

成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"

"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"

神秘泣男子

相关文章:

LinuxCentos中ELK日志分析系统的部署(详细教程8K字)附图片

🏡作者主页:点击! 🐧Linux基础知识(初学):点击! 🐧Linux高级管理防护和群集专栏:点击! 🔐Linux中firewalld防火墙:点击! ⏰️创作…...

Vscode ssh Could not establish connection to

错误表现 上午还能正常用vs code连接服务器看代码,中午吃个饭关闭vscode再重新打开输入密码后就提示 Could not establish connection to xxxx 然后我用终端敲ssh的命令连接,结果是能正常连接。 解决方法 踩坑1 网上直接搜Could not establish con…...

数字陷波器的设计和仿真(Matlab+C)

目录 一、数字陷波器的模型 二、Matlab仿真 1. 示例1 2. 示例2 三、C语言仿真 1. 由系统函数计算差分方程 2. 示例代码 一、数字陷波器的模型 二、Matlab仿真 1. 示例1 clear clc f0=100;%滤掉的100Hz fs=1000;%大于两倍的信号最高频率 r=0.9; w0=2*pi*f0/fs;%转换到…...

[玄机]流量特征分析-常见攻击事件 tomcat

题目网址【玄机】:https://xj.edisec.net/ Tomcat是一个开源的Java Servlet容器,它实现了Java Servlet和JavaServer Pages (JSP) 技术,提供了一个运行这些应用程序的Web服务器环境。Tomcat由Apache软件基金会的Jakarta项目开发,是…...

【TOOLS】Project 2 Maven Central

发布自己的项目到maven中央仓库 Maven Central Account 访问:https://central.sonatype.com/,点击右上角,根据提示注册账号 构建User token ,用于访问中央仓库的API: 点击右上角,查看账户点击Generate Us…...

【Opencv】模糊

消除噪声 用该像素周围的平均值代替该像素值 4个函数 blur():最经典的 import os import cv2 img cv2.imread(os.path.join(.,dog.jpg)) k_size 7 #窗口大小,数字越大,模糊越强 img_blur cv2.blur(img,(k_size,k_size)) #窗口是正方形&#xff…...

函数式编程范式

文章目录 函数式编程范式不可变性(Immutable)纯函数(Pure Functions)函数作为一等公民(First-Class Functions)高阶函数(Higher-Order Functions函数组合(Function Composition&…...

特征缩放的秘籍:sklearn中的数据标准化技术

特征缩放的秘籍:sklearn中的数据标准化技术 在机器学习中,特征缩放(Feature Scaling)是数据预处理的重要步骤,它确保了不同量纲和范围的特征在模型训练中具有相同的重要性。Scikit-learn(简称sklearn&…...

hdfs文件系统

简述什么是HDFS,以及HDFS作用 ? HDFS在Hadoop中的作用是为海量的数据提供了存储,能提供高吞吐量的数据访问,HDFS有高容错性的 特点,并且设计用来部署在低廉的硬件上;而且它提供高吞吐量来访问应用程序的数…...

基于STM32设计的个人健康检测仪(华为云IOT)(191)

基于STM32设计的个人健康检测仪(华为云IOT)(191) 文章目录 一、设计需求1.1 设计需求总结1.2 设计思路【1】整体设计思路【2】整体构架【3】ESP8266模块配置【4】上位机开发思路【5】供电方式1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】课题研究的意义【…...

面试:CUDA Tiling 和 CPU tiling 技术详解

目录 一、CUDA Tiling 和 CPU Tiling 技术概述 (一)技术原理 (二)应用场景 (三)优势和劣势 二、Tiling 技术在深度学习中的应用 三、Tiling 技术的缺点 一、CUDA Tiling 和 CPU Tiling 技术概述 Til…...

SQL语句中,`TRUNCATE` 和 `DELETE`的区别

TRUNCATE 和 DELETE 是 SQL 中用于删除表中数据的两种命令,它们有一些关键区别: 1. 基本区别 DELETE: 删除表中的数据,但不会删除表结构和索引。可以使用 WHERE 子句来删除特定的记录,也可以不使用 WHERE 子句来删除所有记录。会…...

【Git】.gitignore全局配置与忽略匹配规则详解

设置全局配置 1)在C:/Users/用户名/目录下创建.gitignore文件,在里面添加忽略规则。 如何创建 .gitignore 文件? 新建一个.txt文件,重命名(包括后缀.txt)为 .gitignore 即可。 2)将.gitignore设…...

基于 YOLO V10 Fine-Tuning 训练自定义的目标检测模型

一、YOLO V10 在本专栏的前面几篇文章中,我们使用 ultralytics 公司开源发布的 YOLO-V8 模型,分别 Fine-Tuning 实验了 目标检测、关键点检测、分类 任务,实验后发现效果都非常的不错,但它已经不是最强的了。最新的 YOLO-V10 已经…...

Java学习2

1 如果要使用Long类型的变量,在数据值的后面加上L为后缀(可以是大写也可以是小写),例如 Long i9999999L; 2 如果要使用float类型的变量,在数据值的后面加上F为后缀(可以是大写也可以是小写)&a…...

CSS、less、 Sass、

1 CSS 1.1 css中.a.b 与 .a .b(中间有空格)的区别 区别: .a.b是获取同时含有a和b的元素.a .b(中间有空格),是获取.a元素下的所有.b元素<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name=&quo…...

北京大学:利用好不确定性,8B小模型也能超越GPT-4

大模型有一个显著的特点&#xff0c;那就是不确定性——对于特定输入&#xff0c;相同的LLM在不同解码配置下可能生成显著不同的输出。 比如问一问chatgpt“今天开心吗&#xff1f;”&#xff0c;可以得到两种不同的回答。 常用的解码策略有两种&#xff0c;一个是贪婪解码&am…...

​​​​​​​哪些云服务商已通过了等保2.0合规性评估?​​​​​​​

已通过等保2.0合规性评估的云服务商 根据最新的搜索结果&#xff0c;以下是已通过等保2.0合规性评估的云服务商&#xff1a; 阿里云&#xff1a;阿里云的“电子政务云平台系统”是全国首个通过等保2.0国标测评的云平台&#xff0c;显示了其在云计算领域的安全合规能力。华为云…...

PHP在线加密系统源码

历时半年&#xff0c;它再一次迎来更新[飘过] 刚刚发的那个有点问题&#xff0c;重新修了一下 本次更新内容有点多 1. 更新加密算法&#xff08;这应该是最后一次更新加密算法了&#xff0c;以后主要更新都在框架功能上面了&#xff09; 2. 适配php56-php74 3. 取消批量加…...

OpenCV学习笔记 比较基于RANSAC、最小二乘算法的拟合

一、RANSAC算法 https://skydance.blog.csdn.net/article/details/134887458https://skydance.blog.csdn.net/article/details/134887458 二、最小二乘算法 https://skydance.blog.csdn.net/article/details/115413982...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

高防服务器价格高原因分析

高防服务器的价格较高&#xff0c;主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因&#xff1a; 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器&#xff0c;因此…...

ArcPy扩展模块的使用(3)

管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如&#xff0c;可以更新、修复或替换图层数据源&#xff0c;修改图层的符号系统&#xff0c;甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...

ZYNQ学习记录FPGA(二)Verilog语言

一、Verilog简介 1.1 HDL&#xff08;Hardware Description language&#xff09; 在解释HDL之前&#xff0c;先来了解一下数字系统设计的流程&#xff1a;逻辑设计 -> 电路实现 -> 系统验证。 逻辑设计又称前端&#xff0c;在这个过程中就需要用到HDL&#xff0c;正文…...

基于Java项目的Karate API测试

Karate 实现了可以只编写Feature 文件进行测试,但是对于熟悉Java语言的开发或是测试人员,可以通过编程方式集成 Karate 丰富的自动化和数据断言功能。 本篇快速介绍在Java Maven项目中编写和运行测试的示例。 创建Maven项目 最简单的创建项目的方式就是创建一个目录,里面…...