骚操作之ELK日志分析系统

news/2024/7/3 11:37:29

文章目录

  • 前言
  • 一、ELK日志分析系统简介
      • 1、日志处理的步骤
      • 2、ELK日志分析系统三部分
      • 3、日志服务器
  • 二、Elasticsearch介绍
      • 1、Elasticsearch概述
      • 2、Elasticsearch的概念
      • 3、采用分片
      • 4、开启分片副本的主要原因
  • 三、Logstash介绍
      • 1、Logstash概述
      • 2、Logstash主要组件
  • 四、Kibana介绍
      • 1、Kibana概述
      • 2、Kibana主要功能
  • 五、配置ELK步骤
          • 1、关防火墙和系统安全机制
          • 2、配置elasticsearch环境(在node1和node2上)
          • 3、部署elasticsearch软件(在node1和node2上)
          • 4、安装logstash(在apache节点上)
          • 4、安装logstash(在apache节点上)
          • 5、安装kibana(在node1节点上)
  • 总结

前言

在规模较大的企业场景中,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问。所以企业中都会建立日志服务器,调高安全性、集中化管理,但是相应的大量的日志文件导致对日志分析困难。而今天介绍的ELK就是为了解决这一问题。

一、ELK日志分析系统简介

1、日志处理的步骤

1)将APP servers的日志进行集中化管理到Logstash agent。
2)将日志格式化(Logstash)并输出到Elasticsearch cluster
3)对格式化后的数据进行索引和存储(Elasticsearch)
4)前端数据的展示(Kibana)
5)可以在线查看界面化展示。

2、ELK日志分析系统三部分

(1)ELK是由Elasticsearch、Logstash、Kiban三个开源软件的组合。
(2)Logstash 收集APP server产生的log,然后存放到Elasticsearch集群节点中,kibana从Elasticsearch集群节点中查询数据生成图表,再返回给Brower。APPServer集群→logstash Agent采集器→ElasticSearch Cluster→Kibana Server→Browser

3、日志服务器

(1)提高安全性
(2)集中存放日志(缺陷:对日志的分析困难)

二、Elasticsearch介绍

1、Elasticsearch概述

(1)提供了一个分布式多用户能力的全文搜索引擎;
(2)是一个基于Lucene的搜索服务器;(3)基于restful web接口;
(4)使用java开发;
(5)作为apache许可条款下的开放源码发布,是第二流行的企业搜索引擎;
(6)被设计用于云计算中,能够达到实时搜索、稳定、可靠、快速、安装实用方便的需求。

2、Elasticsearch的概念

(1)接近实时(NRT)Elasticsearch是一个接近即时的搜索平台,从索引一个文档知道这个文档能够被搜索到的过程中有一个轻微的延迟(通常是1秒)

(2)集群(cluster)由一个及其以上的节点组织在一起,它们共同持有整个数据,并一起提供索引和搜索功能,其中一个节点为主节点,这个节点是可以通过选举产生,并提供跨节点的联合索引和搜索的功能,集群有一个唯一标识的名字,默认是elaticsearch,集群名字很重要,每个节点是基于集群名字加入到其集群中。因此,要确保集群的唯一性,在不同环境中使用不同的集群名字,一个集群只可以有一个节点,建议在配置elasticsearch时,配置成集群模式。

(3)节点(node)节点就是一台单一的服务器,是集群的一部分,存储数据并参与集群的索引和搜索功能,像集群一样,节点之间可是通过名字来标识区分,默认是在节点启动时随机分配的字符名。当然,你可以自己定义,该名字很重要,起到在集群中定位到对应的节点。节点可以通过指定集群名字来加入到集群中,默认情况下,每个节点被设置成加入到elasticsearch集群。如果启动了多个节点,假设能够自动发现对方,他们将会自动组建一个名为elastisearch的集群。

(4)索引(index)一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引、一个产品目录的索引、还有一个订单数据的索引。一个索引用一个名字来标识(必须全部是小写字母组合),并且当我们要对相应的索引中的文档进行索引、收缩、更新和删除的时候,都要用到这个名字。在一个集群中,可以定义多个索引。(索引相对于关系型数据库的库)

(5)类型(type)在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类分区,其寓意完全由你来定义。通常,会为具有一组共同字段的文档定义一个类型。比如:我们假设运营一个博客平台并且将所有的数据存储到一个索引中,在这个索引中,你可以为用户数据定义一个类型,为博客数据定义一个类型,也可以为评论数据定义另一个类型。(类型相对于关系型数据库的表)

(6)文档(Document)一个文档是一个可被索引的基础信息单元。比如:你可以拥有一个客户的文档,某一个产品的文档;文档以JSON(Javascript Object Notation)格式来表示,json是一个通用的互联网数据交互模式。在一个index/type内,你可以存储任意多的文档。注意:虽然一个文档在物理上位于一个索引内,但是实际上一个文档必须在一个索引内可以被索引和分配一个类型。(文档相对于关系型数据库的列)

(7)分片和副本 (shards & replicas)在实际情况下,索引存储的数据可能超过单个节点的硬件设置。比如十亿个文档需要1TB空间存储,可能不适合存储在单个节点上,读写被限制在单个节点;从单个节点搜索请求也太慢了。为了解决这个问题,elasticsearch集群提供将索引分割开,进行分片的功能。当创建索引时,可以定义想要分片的数量。每一个分片就是一个全功能的独立的索引,可以位于集群中的任何节点上。

3、采用分片

(1)可以进行水平分割横向扩展,增大存储量;(2)分布式并行跨分片操作,提高性能和吞吐量。

4、开启分片副本的主要原因

(1)高可用性,以应对分片或者节点故障,处于这个原因,分片副本要在不同节点上;

(2)提高I/O性能,增大吞吐量,搜索可以并行在所有副本执行。总之,每个索引可以被分成多个分片,一个索引也可以被复制0次或者多次。一旦复制了,每个索引就有了主分片(可以作为复制源的原始分片)和复制分片(主分片的拷贝)之分。分片和副本的数量可以在索引创建的时候指定,在索引创建之后,你可以在任何时候动态改变副本的数量,但是你事后无法改变分片的数量。默认情况下,Elasticsearch中的每个索引被分片为5个主分片和1个副本,这意味着,如果你的集群中至少有两个节点的情况下,你的索引将会有5个主分片和另外5个副本分片(1个完全拷贝),这样的话每个索引总共就有10个分片。

三、Logstash介绍

1、Logstash概述

(1)一款强大的数据处理工具,可以实现数据传输、格式处理、格式化输出;
(2)工作思路:数据输入(collect)、数据加工(如过滤、改写等enrich)以及数据输出(transport);
(3)由LRuby语言编写,基于消息(message-based)的简单架构,并运行在Java虚拟机(JVM)上;
(4)不同于分离的代理端(agent)或主机端(server),Logstash可配置单一的代理端(agent)与其他开源软件结合,以实现不同的功能。

2、Logstash主要组件

(1)Shipper:日志收集负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常,远程代理端(agent)只需要运行这个组件即可。
(2)Indexer:日志存储负责接受日志并写入到本地文件。
(3)Broker:日志hub负责链接多个shipper和对应数目的indexer。
(4)Search and Storage允许对事件进行搜索和存储。
(5)Web Interface基于web的展示界面。以上组件在Logstash架构中可以独立部署,因此提供了很好的集群扩展性

四、Kibana介绍

1、Kibana概述

(1)一个针对Elasticsearch的开源分析及可视化平台;
(2)搜索、查看存储在Elasticsearch索引中的数据;
(3)通过各种图标进行高级数据分析及展示;(4)让海量数据更容易理解;
(5)操作简单,基于浏览器地用户界面就可以快速创建仪表板(dashboard)实时显示Elasticsearch查询动态;
(6)设置安装Kibana非常简单,无需编写代码,几分钟内就可以完成Kibana安装并启动Elasticsearch监测。

2、Kibana主要功能

(1)Elasticsearch无缝之集成。Kibana架构为Elasticsearch定制,可以将任何结构化和非结构化数据加入Elasticsearch索引。Kibana还充分利用了Elasticsearch强大的搜索和分析功能。
(2)整合数据:Kibana能够更好地处理海量数据,并据此创建柱形图、折线图、散点图、直方图、饼图和地图。
(3)复杂数据分析:Kibana提升了Elasticsearch分析能力,能够更加智能地分析数据,执行数学转换并且根据要求对数据切割分块。
(4)让更多团队成员受益:强大的数据库可视化接口让各业务岗位都能够从数据集合受益。
(5)接口灵活,分享更容易:使用Kibana可以更加方便地创建、保存、分享数据,并将可视化数据快速交流。
(6)配置简单:Kibana的配置和启用非常简单,用户体验非常友好。Kibana自带Web服务器,可以快速启动运行。
(7)可视化多数据源:Kibana可以非常方便地把来自Logstash、ES-Hadoop、Beats或第三方技术的数据整合到Elasticsearch,支持的第三方技术包括Apache Flume、Fluentd等。
(8)简单数据导出:Kibana可以方便地导出感兴趣的数据,与其它数据集合并融合后快速建模分析,发现新结果。

五、配置ELK步骤

在这里插入图片描述

1、关防火墙和系统安全机制
2、配置elasticsearch环境(在node1和node2上)

node1
在这里插入图片描述

node2
在这里插入图片描述

3、部署elasticsearch软件(在node1和node2上)

(1)安装elasticsearch—rpm包
1、node1节点上
在这里插入图片描述
②在node2节点上
在这里插入图片描述
(2)加载系统服务
①在node1节点上
在这里插入图片描述
②在node2节点上
在这里插入图片描述
(3)更改elasticsearch主配置文件
Node1
在这里插入图片描述

在这里插入图片描述
②在node2节点上
在这里插入图片描述

在这里插入图片描述
①在node1节点上
在这里插入图片描述

②在node2节点上
在这里插入图片描述
(4)创建数据存放路径并授权
①在node1节点上
在这里插入图片描述
②在node2节点上
在这里插入图片描述
(5)启动elasticsearch是否成功开启

①在node1节点上
在这里插入图片描述
②在node2节点上
在这里插入图片描述
(6)查看节点信息(在windows上访问)
在这里插入图片描述
在这里插入图片描述
(7)检验集群健康状态(在windows上访问)
在这里插入图片描述
在这里插入图片描述
(8)查看集群状态(windows上访问)
在这里插入图片描述

在这里插入图片描述
3、安装elasticsearch-head插件安装elasticsearch-head插件,用于管理集群
(1)编译安装node组件依赖包(在node1和node2上)
yum -y install gcc gcc-c++ make
#上传软件包 node-v8.2.1.tar.gz 到/opt
cd /opt tar xzvf node-v8.2.1.tar.gz
cd node-v8.2.1/ ./configure && make && make install #这里耗时比较长估计20-30分钟

(2)安装phantomjs(前端框架)
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.tar.gz 到/opt
cd /opt
tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/
cd /usr/local/src/elasticsearch-head/
npm install

①在node1节点上
在这里插入图片描述
②在node2节点上
在这里插入图片描述

(4)修改主配置文件
①在node1节点上

在这里插入图片描述
②在node2节点上

在这里插入图片描述
(5)启动elasticsearch-head
①在node2节点上
在这里插入图片描述
②在node2节点上

在这里插入图片描述
(6)使用elasticsearch-head插件查看集群状态(windows上访问)
在这里插入图片描述

在这里插入图片描述
(7)创建索引(node1)
①创建索引为index-demo,类型为test
在这里插入图片描述
②打开浏览器输入地址,查看索引信息(windows上访问):http://192.168.199.136:9100,下图可以看见索引默认被分片5个,并且有一个副本。
在这里插入图片描述
③点击数据浏览–会发现在node1上创建的索引为index-demo,类型为test, 相关的信息
在这里插入图片描述

4、安装logstash(在apache节点上)

收集日志输出到elasticsearch中
(1)安装Apahce服务
在这里插入图片描述
(2)安装Java环境
在这里插入图片描述
(3)安装logstash
在这里插入图片描述
(4)测试logstash命令
②定义输入和输出流#输入采用标准输入,输出采用标准输出(类似管道)
logstash -e ‘input { stdin{} } output { stdout{} }’
在这里插入图片描述
#使用rubydebug显示详细输出,codec为一种编解码器
logstash -e ‘input { stdin{} } output { stdout{ codec=>rubydebug } }’
在这里插入图片描述
#使用Logstash将信息写入Elasticsearch中 logstash -e ‘input { stdin{} } output { elasticsearch { hosts=>[“192.168.199.136:9200”] } }’
在这里插入图片描述

在这里插入图片描述
④点击数据浏览查看响应的内容

在这里插入图片描述

4、安装logstash(在apache节点上)

收集日志输出到elasticsearch中
(1)安装Apahce服务
在这里插入图片描述

(2)安装Java环境
在这里插入图片描述
(2)安装logstash
在这里插入图片描述
(4)测试logstash命令
②定义输入和输出流#输入采用标准输入,输出采用标准输出(类似管道) logstash -e ‘input { stdin{} } output { stdout{} }’
在这里插入图片描述
#使用rubydebug显示详细输出,codec为一种编解码器 logstash -e ‘input { stdin{} } output { stdout{ codec=>rubydebug } }’
在这里插入图片描述
#使用Logstash将信息写入Elasticsearch中 logstash -e ‘input { stdin{} } output { elasticsearch { hosts=>[“192.168.199.136:9200”] } }’
在这里插入图片描述
③在windows上访问,查看索引信息,多出logstash-日期,http://192.168.199.136:9100
在这里插入图片描述
④点击数据浏览查看响应的内容
在这里插入图片描述
(5)在Apache主机上做对接配置Logstash配置文件主要由三部分组成:input、output、filter(根据需要)①给系统日志其他用户加“读”的权限
在这里插入图片描述
②便捷logstash配置文件
在这里插入图片描述

③重启服务④在windows上访问,查看索引信息,会多出system-日期,http://192.168.199.136:9100

在这里插入图片描述

在这里插入图片描述

5、安装kibana(在node1节点上)

①安装步骤
在这里插入图片描述
②修改配置文件
在这里插入图片描述
③重启、自开启服务systemctl start kibana.service systemctl enable kibana.service④在windows上访问192.168.199.136:5601,首次登录创建一个索引名字:system-*(这是对接系统日志文件),然后点最下面的出面的create 按钮创建。
在这里插入图片描述

⑤然后点最左上角的Discover按钮会发现system-*信息。
在这里插入图片描述
⑥然后点下面的host旁边的add会发现右面的图只有Time和host选项了这个比较友好。
在这里插入图片描述
(6)对接Apache主机的Apache日志文件,访问日志、错误日志(在apache节点上)①编写对接apache服务的配置文件。
在这里插入图片描述
在这里插入图片描述

②在windows上访问打开输入http://192.168.199.136,制造点访问记录。

在这里插入图片描述
③打开浏览器输入http://192.168.199.136:9100/查看索引信息,能发现apache_error-2021.11.18和apache_access-2021.11.18。
在这里插入图片描述
④打开浏览器输入http://192.168.32.11:5601,点击左下角有个management选项—index patterns—create index pattern,分别创建apache_error-*和 apache_access-*的索引。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

1、ELK是由Elasticsearch、Logstash、Kiban三个开源软件的组合;APPServer集群→logstash Agent采集器→ElasticSearch Cluster→Kibana Server→Browser。
2、Elasticsearch:提供了一个分布式多用户能力的全文搜索引擎;是一个基于Lucene的搜索服务器;基于restful web接口;使用java开发;作为apache许可条款下的开放源码发布,是第二流行的企业搜索引擎;被设计用于云计算中,能够达到实时搜索、稳定、可靠、快速、安装实用方便的需求。
3、Logstash:一款强大的数据处理工具,可以实现数据传输、格式处理、格式化输出;工作思路:数据输入(collect)、数据加工(如过滤、改写等enrich)以及数据输出(transport);由LRuby语言编写,基于消息(message-based)的简单架构,并运行在Java虚拟机(JVM)上;不同于分离的代理端(agent)或主机端(server),Logstash可配置单一的代理端(agent)与其他开源软件结合,以实现不同的功能。
4、Kibana:一个针对Elasticsearch的开源分析及可视化平台;搜索、查看存储在Elasticsearch索引中的数据;通过各种图标进行高级数据分析及展示;让海量数据更容易理解;操作简单,基于浏览器地用户界面就可以快速创建仪表板(dashboard)实时显示Elasticsearch查询动态;设置安装Kibana非常简单,无需编写代码,几分钟内就可以完成Kibana安装并启动Elasticsearch监测。


http://www.niftyadmin.cn/n/1978419.html

相关文章

nginx+lua(openresty) lua-mongodb 安装及使用(四)

前言 前章已经讲述 ua-protobuf 安装及使用 这章主要讲述 openresty 环境下 lua-mongodb 安装及使用 1:环境 ubuntu16(18) mongodb 3.6 2:安装mongodb 3.6 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 #创…

apahce启用http2

2019独角兽企业重金招聘Python工程师标准>>> 需要前置条件传送门 其实前置做完了,h2是很简单的事 1.apache启用http2_module 2.打开apche的配置文件,写上 Protocols h2 http/1.1 3.重启apache,打开浏览器看看吧 转载于:https://my.oschina.net/u/3470006/blog/20560…

Docker骚操作五十四话之docker基本介绍

文章目录前言一、虚拟化二、KVM虚拟化三、Docker1、docker是什么?2、docker的使用场景3、使用docker有什么意义4、docker的使用场景四、docker引擎五、docker和虚拟机的区别六、docker的核心概念1、镜像2、容器3、仓库前言 以linux而言,linux操作系统会…

手动关闭危险端口

我们手动关闭一些危险端口包括 3389 445 135 139 禁用NETBIOS 以下关闭关口方式是通过修改注册表来完成关闭445端口-----445端口是一个毁誉参半的端口,他和139端口一起是IPC$***的主要通道。有了它我们可以在局域网中轻松访问各种共享文件夹或共享打印机&#xff0c…

创建https服务

1. 安装tomcat 在有jdk的基础上,安装一个新的tomcat(这一步看个人习惯) 2. 申请免费证书 keytool -genkey -alias tomcat -keyalg RSA -keystore /root/apache-tomcat-8.5.24-wechat/conf/.keystore #使用证书 申请免费SSL证书&#xff0c…

Docker骚操作五十五话之docker安装部署

文章目录前言一、全虚和半虚二、docker安装部署1、关闭防火墙2、安装依赖包3、安装docker-ce社区版4、开启docker5、设置镜像加速6、网络优化7、相关命令8、用于显示docker的系统级信息,比如内核,镜像数,容器数9、这里引申一些配置文件的内容…

day8 笔记

文件操作的最简单步骤open():打开文件,将句柄赋值给一个变量 read()write()等:操作文件 close():关闭文件,一定要关闭文件…

图片的自动缩放(js收藏)

<script language"JavaScript" type"text/javascript"> <!-- // 说明&#xff1a;用 JavaScript 实现网页图片等比例缩放 function DrawImage(ImgD,maxwidth,maxheight){ var imagenew Image(); image.srcImgD.src; if(image.width>0 &&am…