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

news2024/9/23 16:30:00

 

🏡作者主页:点击! 

🐧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.gz

node-v8.2.1.tar.gz

phantomjs-2.1.1-linux-x86_64.tar.bz2

apache

 logstash-5.5.1.rpm

所有服务器上操作

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

systemctl stop firewalld && systemctl disable firewalld
setenforce 0


vim /etc/hosts


192.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.gz

rpm -ivh elasticsearch-5.5.0.rpm

编辑配置文件

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

vim /etc/elasticsearch/elasticsearch.yml

17 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_logs

chown elasticsearch:elasticsearch /data/elk_data/
chown elasticsearch:elasticsearch /var/log/elk_logs

systemctl start elasticsearch

 netstat -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.yml

 17 cluster.name: my-elk-cluster
 23 node.name: node2			//这里需要更改
 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
 68 discovery.zen.ping.unicast.hosts: ["node1", "node2"]   //或者输入IP地址

 systemctl daemon-reload
systemctl enable elasticsearch.service

vim /etc/elasticsearch/elasticsearch.yml 
mkdir -p /data/elk_data
mkdir -p /var/log/elk_logs

chown elasticsearch:elasticsearch /data/elk_data/
chown elasticsearch:elasticsearch /var/log/elk_logs

systemctl start elasticsearch


netstat -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.gz

tar zxf node-v8.2.1.tar.gz 
ls
node-v8.2.1
node-v8.2.1.tar.gz
 
cd  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 server

Running "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 ~]# ls
 logstash-5.5.1.rpm
rpm -ivh logstash-5.5.1.rpm

systemctl start logstash.service

ln -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: 5601
 7 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.conf


wq

chmod a+x /elk.sh

. /elk.sh &

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

http://192.168.192.113:9100/

回到kibana

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

总结

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

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

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

神秘泣男子

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

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

相关文章

Android发布Library至mavenCentral遇到 Received status code 401

一、由于我的AppUpdate 库最新的版本还是去年发布的,所以想着发布一个版本,可没想到什么都没有改动的情况下竟然返回401;检查了半天发现用户名和密码也没有错,百思不得解! 二、最后没想到竟然是sonatype那边改了&#…

常见的Markdown编辑器推荐!

工欲善其事,必先利其器。一款好用的 Markdown 编辑器能极大地提高我们的写作体验,本篇博客就来介绍一些好用的编辑器。 ‍ ‍ Markdown 编辑器的分类 根据 Markdown 编辑器的使用环境,可以简单分为四类: 在线编辑器&#xff…

类和对象(中 )C++

默认成员函数就是用户不显示实现,编译器会自动实现的成员函数叫做默认成员函数。一个类,我们在不写的情况下,编译器会自动实现6个默认成员函数,需要注意,最重要的是前4个,其次就是C11以后还会增加两个默认成…

SpringBoot 优雅实现超大文件上传

​ 博客主页: 南来_北往 系列专栏:Spring Boot实战 前言 文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传&…

hadoop学习笔记2-hdfs

3.HDFS 3.1HDFS两类节点 namenode:名称节点datanode:数据节点 1.namenode 1)namenode用来存储元数据,接收客户端的读写请求,namenode的元数据会分别保存在磁盘和内存中,保存到内存是为了快速查询数据信…

一文让你学会python:面向对象

面向对象编程(OOP) 一.类与实例 1.类: 是对现实世界描述的一种类型,是抽象的,是实例的模板,类名采用大驼峰,定义方式为 class 类名: pass 。 2.实例: 根据类创建的具体对象&…

昇思25天学习打卡营第25天 | Pix2Pix实现图像转换

Pix2Pix实现图像转换 Pix2Pix概述 Pix2Pix是一种基于条件生成对抗网络(cGAN, Condition Generative Adversarial Networks)的图像转换模型,由Phillip Isola等人在2017年提出。它能够将语义/标签图像转换为真实图片、灰度图转换为彩色图、航空…

永劫无间:排位赛游戏攻略大全!VMOS云手机辅助攻略!

在《永劫无间》中,排位赛和金乌玩法是提升实力和展示技巧的绝佳途径。以下是详细的攻略建议,帮助玩家在游戏中取得更好的成绩。 排位赛 英雄们齐聚“聚窟洲”,为争夺“不朽面具”展开激烈的战斗。排位赛是玩家展示实力的重要平台&#xff0c…

六方云笔试总结

1. (1)题目 外部变量,指的是处于函数外部的全局静态变量,所以选c (2)知识点 1. static (1)函数外部的全局变量 当一个变量在函数外部定义并使用static关键字修饰时,这…

函数的学习(二)

1.函数嵌套 在C语言中,函数的嵌套是指在一个函数内部调用另一个函数。通过函数的嵌套,可以将程序的功能细化,提高代码的可读性和可维护性。函数的嵌套可以是直接嵌套,也可以是间接嵌套。 直接嵌套是指一个函数直接在另一个函数内…

华彩38载 同心筑未来—中华财险客户节盛大启幕!

活动主题:华彩38载 同心筑未来—中华财险客户节金融知识有奖问答 活动时间:2024年7月26日至9月15日 参与方式:① 微信搜索并关注公众号“中华财险宁波分公司”进入答题活动页面,点击“开始答题”即可开始答题;②规定…

ComfyUI-MuseTalk部署依赖mmcv

ComfyUI-MuseTalk部署依赖mmcv ComfyUI-MuseTalk是MuseTalk基于ComfyUI的自定义节点插件。MMPose 是一款基于 PyTorch 的“人体姿态”分析的开源工具箱,是 OpenMMLab 项目的成员之一。OpenMMLab 团队致力于构建了深度学习时代最具影响力的开源计算机视觉算法系统&am…

【C++标准库】介绍及使用string类

string 一.string类介绍二.string类的静态成员变量三.string类的常用接口1.构造函数(constructor)2.析构函数(destructor)3.运算符重载(operator)1.operator2.operator[]3.operator4.operator 4.string的四…

SecureCrt设置豆沙绿

绿豆沙色能有效的减轻长时间用电脑的用眼疲劳! 色调:85,饱和度:123,亮度:205;RGB颜色红:199,绿:237,蓝:204; 十六进制颜色…

3步阐述搜索框做了什么事情

搜索功能是几乎每个产品的通用标配功能,一个看似简单的搜索框背后,其实隐含了大量的设计思考和技术壁垒。本文将从三个部分阐述,为何搜索框并不简单。 本文将从搜索场景的思考、基于步骤的搜索设计以及搜索数据的追踪3个部分,对产…

今日arXiv最热大模型论文:北京大学最新综述:视觉大模型中的漏洞与攻防对抗

近年来,视觉语言大模型(LVLM)在文本转图像、视觉问答等任务中大放异彩,背后离不开海量数据、强大算力和复杂参数的支撑。 但是!大模型看似庞大的身躯背后却有一颗脆弱的“心脏”,极易受到攻击。攻击者可以…

史上最全,网工必考证书大盘点,竟然有20多个?

最近很多朋友来咨询,作为网工能考什么证书?证书那么多要怎么选择?哪个性价比高、哪个回报大等等等等的问题。 不难看出,大家最近这个想要学习和提升的势头很猛,毕竟现在这个环境下,属实是不好过了&#xff…

FPGA开发——数码管的使用(二)

一、概述 在上一篇文章中我们针对单个数码管的静态显示和动态显示进行了一个设计和实现,这篇文章中我们针对多个数码管同时显示进行一个设计。这里和上一篇文章唯一不同的是就是数码管位选进行了一个改变,原来是单个数码管的显示,所以位选就直…

Android Studio运行报错:module java.base dose not “opens java.io“ to unnamed module

今天第一次使用Android Studio运行一个安卓工程,报如图错误,应该是环境问题。 解决: 右上角的设置图标->settings->Buid,Execution,Deployment->Build Tools->Gradle->Gradle JDK->选择本地环境的java_home jdk(怎么安装…

docker镜像不可用

现在阿里、163等docker镜像基本不能使用,不能pull镜像了。 1.腾讯云内部 腾讯云服务器内部可用镜像(当然,需要先有一个腾讯云服务器):https://mirror.ccs.tencentyun.com 配置方法,vi /etc/docker/daemon…