ELK 日志分析系统

ELK (Elasticsearch、Logstash、Kibana)日志分析系统的好处是可以集中查看所有服务器日志,减轻了工作量,从安全性的角度来看,这种集中日志管理可以有效查询以及跟踪服务器被攻击的行为。

Elasticsearch 是个开源分布式实时分析搜索引擎,建立在全文搜索引擎库Apache Lucene基 础上,同时隐藏了Apache Lucene的复杂性。Elasticsearch 将所有的功能打包成一个独立的服务,并提供了一个简单的RESTful API接口。它具有分布式、零配置、自动发现、索引自动分片、索引副本机制、RESTful 风格接口、多数据源,自动搜索负载等特点。

> Logstash 是一个完全开源的工具,主要用于日志收集,同时可以对数据处理,并输出给 Elasticsearch。

> Kibana 也是一个开源和免费的工具,Kibana可以为Logstash 和 ElasticSearch提供图形化的日志分析 Web 界面,可以汇总、分析和搜索重要数据日志。

进行日志处理分析,一般需要经过以下几个步骤。

(1) 将日志进行集中化管理。

(2) 将日志格式化(Logstash)并输出到 Elasticsearch。

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

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

 1. Elasticscarch介绍

       Elasticsearch是一个基于Lucene 的搜索服务器。它稳定、可靠、快速,而且具有比较好的水平扩展能力,为分布式环境设计,在云计算中被广泛应用。Elasticsearch提供了一个分布式多用户能力的全文搜索引擎,基于RESTful Web接口。通过该接口,用户可以通过浏览器和 Elasticsearch 通信, Elasticsearch 是用 Java 开发的,并作为Apache许可条款下的开放源码发布,Wikipedia、 Stack、Overflow、GitHub等都基于Elasticsearch 来构建搜索引擎,具有实时搜索、稳定,可靠、快速,安装使用方便等特点,

Elasticsearch的基础核心概念。

> 接近实时(NRT): Elasticsearch 是一个搜索速度接近实时的搜索平台,响应速度非常快,从 索引一个文档直到这个文档能够被搜索到只有一个轻微的延迟(通常是1s)。

> 群集(cluster):群集就是由一个或多个节点组织在一起,在所有的节点上存放用户数据并一起提供索引和搜索功能。通过选举产生主节点,并提供跨节点的联合索引和搜索的功能。每个群集都有一个唯一标示的名称,默认是Elasticsearch,每个节点是基于群集名字加 入到其群集中的。一个群集可以只有一个节点,为了具备更好的容错性,通常配置多个节 点,在配置群集时,建议配置成群集模式。

> 节点(node):是指一台单一的服务器,多个节点组织为一个群集,每个节点都存储数据并 参与群集的索引和搜索功能。和群集一样,节点也是通过名字来标识的,默认情况下,在节点启动时会随机分配字符名。也可以自定义。通过指定群集名字,节点可以加入到群集 中。默认情况,每个节点都已经加入 Elasticsearch群集。如果群集中有多个节点,它们将会 自动组建一个名为Elasticsearch 的群集。

> 索引 (index):类似于关系型数据库中的“库”。当索引一个文档后.就可以使用 Elasticsearch 搜索到该文档,也可以简单地将索引理解为存储数据的地方,可以方便地进行全文索引。 在 index下面包含存储数据的类型(Type),Type类似于关系型数据库中的“表”,用来存放具体数据,而Type 下面包含文档(Document),文档相当于关系型数据库的“记录”,一个 文档是一个可被索引的基础信息单元。

> 分片和副本(shards & replicas):Elasticsearch 将索引分成若干个部分,每个部分称为一个分片,每个分片就是一个全功能的独立的索引。分片的数量一般在索引创建前指定,且创建索引后不能更改。

分片的两个最主要原因如下。

* 水平分割扩展,增大存储量。

* 分布式并行跨分片操作,提高性能和吞吐量。

2. Logstash 介绍

      Logstash 的理念很简单,它只做三件事情:数据输入、数据加工(如过滤,改写等)以及数据输出。通过组合输入和输出,可以实现多种需求。Logstash 处理日志时,典型的部署架构围。

LogStash的主要组件如下。

> Shipper:日志收集者。负责监控本地日志文件的变化,及时收集最新的日志文件内容。通常,远程代理端(agent)只需要运行这个组件即可。

> Indexer:日志存储者。负责接收日志并写入到本地文件。

> Broker:日志Hub。负责连接多个Shipper和多个Indexer.

> Search and Storage:允许对事件进行搜索和存储。

> Web Interface:基于Web的展示界面。

3. Kibana介绍

      Kibana是一个针对Elasticsearch 的开源分析及可视化平台,主要设计用来和 Elasticsearch 一起工作,可以搜索,查看存储在Elasticsearch 索引中的数据,并通过各种图表进行高级数据分析及展示。 Kibana可以让数据看起来一目了然。它操作简单,基于浏览器的用户界面可以让用户在任何位置都可以实时浏览。Kibena可以快速创建仪表板(dashboard)实时显示Elasticsearch查询动态。Kibana使 用非常简单,只需要添加索引就可以监测Elasticsearch 索引数据。

Kibana的主要功能如下。

> Elasticsearch无缝之集成。Kibana架构是为Elasticsearch 定制的,可以将任何(结构化和非结 构化)数据加入Elasticsearch索引。Kibana还充分利用了 Elasticsearch 强大的搜索和分析功能。

> 整合数据。Kibana可以让海是数据变得更容易理解,根据数据内容可以创建形象的柱形图, 折线图、散点图、直方图、饼图和地图,以方便用户查看。

> 复杂数据分析。Kibana 提升了 Elasticsearch 的分析能力,能够更加智能地分析数据,执行数 学转换并且根据要求对数据切割分块,

> 让更多团队成员受益。强大的数据库可视化接口让各业务岗位都能够从数据集合受益。 接口灵活,分享更容易。使用Kibana可以更加方便地创建、保存、分享数据,并将可视化数据快速交流。

> 配置简单。Kibana的配置和启用非常简单,用户体验非常友好。Kibana自带Web服务器。 可以快速启动运行,

> 可视化多数据源。Kibana可以非常方便地把来自Logstash、ES-Hadoop、Beats 或第三方技术 的数据整合到 Elasticsearch,支持的第三方技术包括Apache Flume、Fluentd等,

> 简单数据导出。Kibana可以方便地导出感兴趣的数据,与其他数据集合并融合后快速建模分析,发现新结果。

实验环境

虚拟机 3台 centos7.9

网卡NAT模式 数量 1

组件包

elasticsearch-5.5.0.rpm            elasticsearch-head.tar.gz             node-v8.2.1.tar.gz       

phantomjs-2.1.1-linux-x86_64.tar.bz2            logstash-5.5.1.rpm       

kibana-5.5.1-x86_64.rpm

设备

IP

备注

Centos01

192.168.8.34

Node1  elasticsearch

Centos02

192.168.8.35

Node2  kibana

Centos03

192.168.8.36

Node3  logstash+httpd

初始化配置

都需安装 java运行环境jdk     192.168.8.34   192.168.8.35

yum -y install java  jcc  jcc-j++

安装elasticsearch

Node1 Node2 都配置    192.168.8.34   192.168.8.35

cat << EOF >> /etc/hosts
192.168.8.34 node1
192.168.8.35 node2
EOF

上传安装包 elasticsearch-5.5.0.rpm    192.168.8.34   192.168.8.35

rpm -ivh elasticsearch-5.5.0.rpm

编辑elasticsearch 配置文件    192.168.8.34   192.168.8.35

vim /etc/elasticsearch/elasticsearch.yml


cluster.name: my-elk-cluster		#群集名称
node.name: node1				#节点名称,不同节点修改编号
path.data: /data/elk_data		#日志收集目录
path.logs: /data/elk_log   		#日志存放路径
bootstrap.memory_lock: false	#不锁定内存
network.host: 0.0.0.0			#监听IP
http.port: 9200				#监听端口
discovery.zen.ping.unicast.hosts: ["node1", "node2"]  #单播实现群集


[root@node1 ~]# mkdir -p /data/elk_data && mkdir -p /data/elk_log
[root@node1 ~]# chown -R elasticsearch:elasticsearch /data


[root@node1 ~]# systemctl start elasticsearch

Node1 部署elasticearch-head插件      192.168.8.34 

上传安装包

node-v8.2.1.tar.gz

elasticsearch-head.tar.gz  

phantomjs-2.1.1-linux-x86_64.tar.bz2

tar zxf node-v8.2.1.tar.gz
cd node-v8.2.1
./configure && make && make install

安装phantomjs 组件      192.168.8.34 

yum -y install bzip2

[root@node1 ~]# tar jxf phantomjs-2.1.1-linux-x86_64.tar.bz2 
[root@node1 ~]# mv phantomjs-2.1.1-linux-x86_64 /usr/src/phantomjs2.1
[root@node1 ~]# ln -s /usr/src/phantomjs2.1/bin/* /usr/local/bin/

安装elasticsearch-head 组件    192.168.8.34 

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

[root@node1 ~]# cd elasticsearch-head
[root@node1 elasticsearch-head]# npm install
cat << EOF >> /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,Content-Type
EOF
systemctl restart elasticsearch
npm run start &

Node3上部署 httpd+ logstash          192.168.8.36

上传安装包  logstash-5.5.1.rpm

yum -y install httpd

rpm -ivh logstash-5.5.1.rpm

ln -s /usr/share/logstash/bin/logstash /usr/local/sbin/

编辑自定义提交日志配置          192.168.8.36

vim /etc/logstash/conf.d/httpd_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.8.34:9200"]
          index => "httpd_access-%{+YYYY.MM.dd}"
        }
     }
        if [type] == "error" {
        elasticsearch {
          hosts => ["192.168.8.34:9200"]
          index => "httpd_error-%{+YYYY.MM.dd}"
        }
     }
}

启动httpd         192.168.8.36


 systemctl start httpd

启动日志传递           192.168.8.36

nohup logstash -f /etc/logstash/conf.d/httpd_log.conf &

访问http://192.168.8.34:9200/

验证

Node2安装 kibana 图形化查看工具          192.168.8.35

上传安装包 kibana-5.5.1-x86_64.rpm

rpm -ivh kibana-5.5.1-x86_64.rpm

vim /etc/kibana/kibana.yml

cat << EOF >> /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://192.168.8.34:9200"
kibana.index: ".kibana"
EOF



systemctl enable kibana --now

验证

http://192.168.8.35:5601

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

酷柚易汛ERP - 采集助手使用文档说明

1、首先购买采集助手插件 2、管理员进入采集助手可配置对应的API KEY 3、到对应电商去复制商品链接&#xff0c;进行基础数据采集 4、采集成功后可对商品进行编辑&#xff0c;进行快速同步到ERP商品库中

CUDA环境配置在Ubuntu18

&#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;高性能&#xff08;HPC&#xff09;开发基础教程 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人生秘诀&#xff1a;学习的本质就是极致重复! 目录 1 NVIDIA CU…

FastAPI 学习笔记

FastAPI 学习笔记 0. 引言1. 快速开始2. 升级示例代码 0. 引言 在 Python 这个充满活力的生态系统中&#xff0c;FastAPI 应运而生&#xff0c;它是一个现代的、快速的 Web 框架&#xff0c;专注于构建 RESTful API。 无论你是一名有经验的 Python 开发人员&#xff0c;还是一…

ArcGIS学习(十四)OD分析

ArcGIS学习(十四)OD分析 1.上海市KFC与麦当劳的空间聚集度分析 本任务给大家带来的内容是网络节点关系分析。网络节点关系分析一般也叫OD分析。“O”指的是起点(ORIGIN),"D”指的是终点(DESTINATION),0D分析即为基于起点到终点的分析。 网络节点关系分析我们经常…

23-Java空对象模式 ( Null Object Pattern )

Java空对象模式 实现范例 在空对象模式&#xff08;Null Object Pattern&#xff09;中&#xff0c;一个空对象取代 NULL 对象实例的检查Null 对象不是检查空值&#xff0c;而是反应一个不做任何动作的关系&#xff0c;这样的 Null 对象也可以在数据不可用的时候提供默认的行为…

1. OSPF 基础实验(三):邻接关系和 LSA

1.3 OSPF 的邻接关系和 LSA 1.3.1 实验介绍 1.3.1.1 学习目标 1. 阐明在多路访问网络中接入多台路由器时的邻居关系建立过程 2. 控制 OSPF DR 的选举 3. 描述 5 种类型的 LSA 的内容&#xff0c;以及它们的作用 1.3.1.2 实验组网介绍 设备互联方式及 IP 地址规划如图所示…

NASA数据集——亚马逊盆地与其大气边界层之间各种气溶胶和气体交换率的估计值数据

简介 Pre-LBA ABLE-2A and ABLE-2B Expedition Data ABLE 2A 和 2B&#xff08;大气边界层实验&#xff09;数据包括亚马逊盆地与其大气边界层之间各种气溶胶和气体交换率的估计值&#xff0c;以及这些气溶胶和气体在边界层和自由对流层之间的移动过程。前言 – 人工智能教程…

【五】【算法分析与设计】双指针的初见

167. 两数之和 II - 输入有序数组 给你一个下标从 1 开始的整数数组 numbers &#xff0c;该数组已按 非递减顺序排列 &#xff0c;请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index(1)] 和 numbers[index(2)] &#xff0c;则 1 &…

Java项目源码基于springboot的家政服务平台的设计与实现

大家好我是程序员阿存&#xff0c;在java圈的辛苦码农。辛辛苦苦板砖&#xff0c;今天要和大家聊的是一款Java项目源码基于springboot的家政服务平台的设计与实现&#xff0c;项目源码以及部署相关请联系存哥&#xff0c;文末附上联系信息 。 项目源码&#xff1a;Java基于spr…

[计算机效率] 便笺的使用

2.4 便笺 便笺程序是一种方便用户记录、查看和编辑便签的简单应用程序。在Windows系统中&#xff0c;便笺通常作为系统自带的实用工具之一&#xff0c;可以帮助用户快速创建、编辑和组织便签&#xff0c;以便随时记录重要的信息、任务或提醒事项。 便笺程序通常具有以下特点&a…

岩土工程监测中振弦采集仪的选型指南与市场概况

岩土工程监测中振弦采集仪的选型指南与市场概况 振弦采集仪是岩土工程监测中常用的一种设备&#xff0c;用于测量土体的振动特性。它的选型指南和市场概况如下&#xff1a; 选型指南&#xff1a; 1. 测量参数&#xff1a;振弦采集仪可用于测量土体的振动振幅、频率、相位等参数…

美团2025春招第一次笔试题

第四题 题目描述 塔子哥拿到了一个大小为的数组&#xff0c;她希望删除一个区间后&#xff0c;使得剩余所有元素的乘积未尾至少有k个0。塔子哥想知道&#xff0c;一共有多少种不同的删除方案? 输入描述 第一行输入两个正整数 n,k 第二行输入n个正整数 a_i&#xff0c;代表…

OpenHarmony开发—购物示例应用

介绍 本示例展示在进场时加载进场动画&#xff0c;整体使用Tabs容器设计应用框架&#xff0c;通过TabContent组件设置分页面&#xff0c;在子页面中绘制界面。通过Navigation完成页面之间的切换。在详情页中通过 Video组件加载视频资源&#xff0c;使用CustomDialogController…

力扣刷题日记——L66.加一

1. 前言&#xff1a; 从今天开始打卡力扣&#xff0c;每天一道力扣题&#xff0c;然后将解题思路分享出来&#xff0c;纯原创。 2. 题目描述 给定一个由 整数 ****组成的 ****非空 数组所表示的非负整数&#xff0c;在该数的基础上加一。 最高位数字存放在数组的首位&#…

使用API有效率地管理Dynadot域名,使用API设置域名隐私保护

关于Dynadot Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮…

SiT技术报告阅读

论文链接&#xff1a;SiT: Exploring Flow and Diffusion-based Generative Models with Scalable Interpolant Transformers 报告链接&#xff1a;https://scalable-interpolant.github.io/ 文章目录 IntroFlow and DiffusionDiffusion-Based ModelsStochastic Interpolant an…

GPT出现Too many requests in 1 hour. Try again later.

换节点 这个就不用多说了&#xff0c;你都可以上GPT帐号了&#xff0c;哈…… 清除cooki 然后退出账号&#xff0c;重新登录即可

应用工程中获取Shapefile文件的图形信息并显示

本文用纯前端获取shp文件以及前后端交互的方式获取Shapefile文件中的图形信息 1.案例说明 在日常的WebGIS开发中&#xff0c;我们往往会面对&#xff0c;需要用户选择矢量数据&#xff0c;通过矢量数据中的空间范围信息&#xff0c;显示在界面上&#xff0c;并给用户的下一步…

wave库基本操作

wave 常见的语音信号处理python库有librosa, scipy, soundfile等等。wave库是python的标准库&#xff0c;对于python来说相对底层&#xff0c;wave不支持压缩/解压&#xff0c;但支持单声道/立体声语音的读取。 读取音频 import wavefile_path D:/ba.wav #文件路径 f wave…

数据库应用

约束 概念&#xff1a; 约束是一种限制&#xff0c;它通过对表的行或列的数据做出限制&#xff0c;来确保表的数据的正确性、完整性、有效性、唯一性。 分类&#xff1a; primary key&#xff1a;主键约束&#xff0c;指定某列的数据不能重复、唯一、非空。 not null&#…
最新文章