ELK搭建

ELK

一:介绍

ELK平台是一套完整的日志集中处理解决方案,它不是一个单独的服务,是一系列服务,由(Elasticsearch、Logstash、Kibana)组成,完成更强大的用户对日志的查询、排序、统计需求

日志服务器

提高安全性

集中存放日志

缺陷

对日志的分析困难

日志处理步骤

1:将日志进行集中管理

2:将日志进行格式化(logstash)并输出到(elasticsearch)

3:对格式化后的数据进行索引和存储(Elasticsaerch)

4:前端数据的展示(Kibana)

elasticsearch

clasticsearch:是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。

Elasticsearch是用Java开发的,可通过RESTful Web接口,让用户可以通过浏览器与Elasticsearch通信。

Elasticsearch是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大容量的日志数据,也可用于搜索许多不同类型的文档

Kibana:一个针对Elasticsearch的开源分析及可视化平台

搜索、查看存储在es索引中的数据

通过各种图表进行高级数据分析及展示

主要功能

整个数据,复杂数据分析

让更多团队成员收益

接口灵活、分享更容易

配置简单,可视化多数据源

简单数据导出

Kibana通常与Elasticsearch一起部署,Kibana是Elasticsearch的一个功能强大的数据可视化Dashboard,Kibana提供图形化的web界面来浏览E1 asticsearch日志数据,可以用来汇总、分析和搜索重要数据。

Logstash:是一款强大的数据处理工具,可实现数据传输、格式处理、格式化输出

数据输入、数据加工(过滤、改写)以及数据输出

主要组成

shipper

lndexer

broker

search and storage

web interface

作为数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置,一般会发送给Elasticsearch

Logstash由Ruby语言编写,运行在Java虚拟机(JvN)上,是一款强大的数据处理工具,
可以实现数据传输、格式处理、格式化输出。Logstash具有强大的插件功能,常用于日志处理。

image-20220829162850674

可以添加的其它组件
Filebeat:轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户湍安装Filebeat,并指定目录与日志格式,Filebeat就能快速收集数据,并发送给logstash进行解析,或是直接发给Elasticsearch存储,性能上相比运行于JVN上的logstash优势明显,是对它的替代。常应用于EFK架构当中。
filebeat结合1 ogstash带来好处:
1)通过Logstash具有基于磁盘的自适应缓冲系统,该系统将吸收传入的吞吐量,从而减轻Elasticsearch持续写入数据的压力

2)从其他数据源(例如数据库,s3对象存储或消息传递队列)中提取

3)将数据发送到多个目的地,例如s3,HDFS(Hadoop分布式文件系统)或写入文件

4)使用条件数据流逻辑组成更复杂的处理管道

缓存/消息队列(redis、kafka、RabbitMQ等):可以对高并发日志数据进行流量削峰和缓冲,这样的缓冲可以一定程度的保护数据不丢失,还可以对整个架构进行应用解耦。

·Fluentd:是一个流行的开源数据收集器。由于Logstash太重量级的缺点,Logstash性能低、资源消耗比较多等问题,随后就有Fluentd的出现。相比较logstash,Fluentd更易用、资源消耗更少、性能更高,在数据处理上更高效可靠,受到企业欢迎,成为logstash的一种替代方案,常应用于EFK架构当中。在Kubernetes集群中也常使用EFK作为日志数据收集的方案。

在Kubernetes集群中一般是通过Daemonset来运行Fluentd,以便它在每个Kubernetes工作节点上都可以运行一个Pod.它通过获取容器日志文件、过滤和转换日志数据,然后将数据传递到E1 asticsearch集群,在该集群中对其进行索引和存储。

核心概念

接近实时

集群

节点

索引

​ 索引(库)—》类型(表)–》文档(记录)

分片和副本

image-20220829171751735

3、完整日志系统基本特征
收集:能够采集多种来源的日志数据
传输:能够稳定的把日志数据解析过滤并传输到存储系统
存储:存储日志数据
分析:支持UI分析
警告:能够提供错误报告,监控机制
4、ELK的工作原理:
(1)在所有需要收集日志的服务器上部署Logstash:或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署Logstash。
(2)Logstash收集日志,将日志格式化并输出到Elasticsearch群集巾。
(3)Elasticsearch对格式化后的数据进行索引和存储。
(4)Kibana从Es群集中查询数据生成图表,并进行前端数据的展示。
总结:logstash作为日志搜集器,从数据源采集数据,并对数据进行过滤,格式化处理,然后交由Elasticsearch存储,kibana对日志进行可视化处理。

搭建

image-20220829165459432

名称ip部署
node1192.168.64.20es/kibana
node2192.168.64.15es
Apacha192.168.64.16logstash

一:环境准备

更改主机名,关闭防火墙

hosenamectl set-hostname node1
hosenamectl set-hostname node2
hosenamectl set-hostname logstash
systemctl stop firewalld

node节点配置

配置域名解析

vim /etc/hosts

image-20220829171340052

下载Java环境

yun install -y java

把包拖进去

image-20220829173354696

把包复制给node2

image-20220829173422813

两边同时进行

image-20220829173516244

两边同时进行

image-20220829173536982

image-20220829173722243

image-20220829174132827

修改配置文件node1

vim /etc/elasticsearch/elasticsearch.yml

image-20220829184404996

image-20220829184601980

image-20220829184640967

image-20220829184713838

image-20220829184812819

查看node1配置,反向过滤以#开头的配置

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

image-20220829184856776

配置node2节点的配置文件

image-20220829185152931

image-20220829185215210

image-20220829185437023

image-20220829185445439

node1和node2 只有第23行不一样,其他都一样

查看node2配置文件

image-20220829185605260

node1和node2创建数据存放路径并授权

mkdir -p /data/elk_data  
#与我们刚刚在配置文件中修改的第33行一样
 chown elasticsearch:elasticsearch /data/elk_data/
#设置属主属组

image-20220829190020098

开启服务,并查看端口9200

systemctl start elasticsearch.service 
netstat -natp | grep 9200

image-20220829190651519

这个端口需要等一段时间才能看到,所以不要着急,可以先看看服务有没有起来,起来了就等一等就会好了

image-20220829190751526

浏览器访问node1的信息

image-20220829190938861

image-20220829191312827

浏览器访问node2信息

image-20220829191011705

image-20220829191245340

安装Elasticsearch-haed插件

Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作为独立服务进行安装,需要使用npm工具(NodeJS的包管理工具)安装。
安装 Elasticsearch-head 需要提前安装好依赖软件 node 和 phantomjs。
node:是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
phantomjs:是一个基于 webkit 的JavaScriptAPI,可以理解为一个隐形的浏览器,任何基于 webkit 浏览器做的事情,它都可以做到。
node1节点 192.168.64.20

node2节点 192.168.64.15

编译安装node

上传软件包 node-v8.2.1.tar.gz 到/opt
yum install gcc gcc-c++ make -y

cd /opt
tar zxf node-v8.2.1.tar.gz

cd node-v8.2.1/
./configure
make -j2 && make install

image-20220829192032229

image-20220829192300806

编译安装时会花费很长时间,建议把cpu调大,直接上j8!

安装phantomjs

#上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到
cd /opt
tar jxf 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

image-20220829200136760

image-20220829200358874

(3)#安装 Elasticsearch-head 数据可视化工具

#上传软件包 elasticsearch-head.tar.gz 到/opt
cd /opt
tar zxf elasticsearch-head.tar.gz -C /usr/local/src/
cd /usr/local/src/elasticsearch-head/
npm install

image-20220829201153857

(4)#修改 Elasticsearch 主配置文件

vim /etc/elasticsearch/elasticsearch.yml

直接跳到最后

image-20220829204740771

重启服务

systemctl restart elasticsearch

image-20220829201742801

(5)启动 elasticsearch-head 服务
#必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败

cd /usr/local/src/elasticsearch-head/
npm run start &

image-20220829202253572

在node1上监听端口

image-20220829202351768

node2上监听端口

image-20220829202428660

浏览器访问

image-20220829202535429

image-20220829202654954

插入索引

node1上插入索引测试

#通过命令插入一个测试索引,索引为 index-demo,类型为 test。
curl -X PUT '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
}

image-20220829205006570

node2

image-20220829205032862

在浏览器上验证

image-20220829205254723

查看索引

image-20220829205336830

ELK Logstash 部署(在 Apache 节点上操作)

安装Logstash

修改主机名

hostnamectl set-hostname apache
su

安装httpd并启动

yum install -y httpd
systemctl start httpd

image-20220829230500511

安装Java环境

yum install -y java
java -version

image-20220829230653267

安装logstash

cd /opt
rpm -ivh logstash-5.5.1.rpm                           
systemctl start logstash.service                     
systemctl enable logstash.service
cd /usr/share/logstash/
ls
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

image-20220829230916143

image-20220829231011414

image-20220829231243735

测试 Logstash(Apache)与elasticsearch(node)功能是否正常,做对接

Logstash这个命令测试
字段描述解释:
● -f 通过这个选项可以指定logstash的配置文件,根据配置文件配置logstash
● -e 后面跟着字符串 该字符串可以被当做logstash的配置(如果是“空”则默认使用stdin做为输入、stdout作为输出)
● -t 测试配置文件是否正确,然后退出

logstash -f 配置文件名字 去连接elasticsearch

(1)#输入采用标准输入 输出采用标准输出---登录192.168.59.115  在Apache服务器上
logstash -e 'input { stdin{} } output { stdout{} }'

image-20220829231733090

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

image-20220829232050630

(3)##使用logstash将信息写入elasticsearch中
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.59.115:9200"] } }'

image-20220829232623703

定义 logstash配置文件

Logstash 配置文件基本由三部分组成:input、output 以及 filter(可选,根据需要选择使用

(1)#给日志目录可读权限
chmod o+r /var/log/messages					#让 Logstash 可以读取日志

image-20220829232856982

修改 Logstash 配置文件,让其收集系统日志/var/log/messages,并将其输出到 elasticsearch 中。

vim /etc/logstash/conf.d/system.conf
input {
    file{
        path =>"/var/log/messages"						#指定要收集的日志的位置
        type =>"system"									#自定义日志类型标识
        start_position =>"beginning"					#表示从开始处收集
    }
}
output {
    elasticsearch {										#输出到 elasticsearch
        hosts => ["192.168.59.115:9200"]	#指定 elasticsearch 服务器的地址和端口
        index =>"system-%{+YYYY.MM.dd}"		#指定输出到 elasticsearch 的索引格式
    }
}

image-20220829233430663

重启服务

systemctl restart logstash

image-20220829233714435

打开浏览器,查看索引信息

image-20220829233802065

查看索引对应日志文件

image-20220829233846773

部署KIBANA(在node1上)

安装软件包

image-20220829234032223

image-20220829234053958

设置kibana的主配置文件

vim /etc/kibana/kibana.yml

image-20220829234546358

image-20220829234706705

image-20220829234813166

启动服务

systemctl start kibana
systemctl enable kibana
netatat -natp | grep 5601

image-20220829234954327

验证kibana,浏览器访问连接的主机加上kibana端口号

image-20220829235110238

第一次登录需要添加一个 Elasticsearch 索引

image-20220829235249416

image-20220829235318811

将 Apache 服务器的日志(访问的、错误的)添加到 Elasticsearch 并通过 Kibana 显示

apache服务器(192.168.64.16)

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 => ["192.168.64.20:9200"]
            index => "apache_access-%{+YYYY.MM.dd}"
        }
    }   
        if [type] == "error" {
        elasticsearch {
            hosts => ["192.168.64.20:9200"]
            index => "apache_error-%{+YYYY.MM.dd}"
        }
    }
    }

image-20220830000031034

cd /etc/logstash/conf.d/
/usr/share/logstash/bin/logstash -f apache_log.conf	将 Apache 服务器的日志(访问的、错误的)添加到 Elasticsearch 并通过 Kibana 显示

进入kibana的界面,可以看到多了两个索引信息

image-20220830000527709

浏览器访问node1的5601端口

添加索引apache_error-*

image-20220830000716962

就可以看到相对应的了
image-20220830000819859

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ELK是指Elasticsearch、Logstash和Kibana这三个开源软件的组合,用于构建实时数据分析和可视化的日志收集系统。ELK平台的搭建可以在Windows环境下进行。根据引用\[1\],在Windows 11环境下,可以使用logstash 8.0.0、elasticsearch 8.0.0和kibana 8.0.0进行搭建。 首先,需要下载elasticsearch、logstash、kibana和filebeat。根据引用\[2\],这些软件可以免费下载并使用。 接下来,打开一个新的shell,并执行命令切换到elk软件的安装目录。根据引用\[3\],可以使用类似以下命令切换到kibana的安装目录: ``` cd F:\soft\elk .\kibana-7.16.0-windows-x86_64\kibana-7.16.0-windows-x86_64\bin\kibana.bat ``` 以上是在Windows系统下搭建ELK平台的简要步骤。具体的配置和使用方法可以参考相关文档或教程。 #### 引用[.reference_title] - *1* [Windows环境下搭建完整的ELK平台](https://blog.csdn.net/m0_52403371/article/details/129894030)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [ELK搭建开源日志系统(window版本)—图文详细](https://blog.csdn.net/likewiehyou/article/details/124438761)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值