ELK日志分析系统概述及部署

这篇具有很好参考价值的文章主要介绍了ELK日志分析系统概述及部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、ELK日志分析系统

1、ELK的组成部分

E: Elasticsearch

L: Logstash

K: Kibana

2、日志服务器

优点

  • 提高安全性
  • 集中化管理

缺点

  • 对日志分析困难

3、日志处理步骤

①将日志进行集中化管理

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

③对格式化后的数据进行索引和存储

④前端数据的展示(Kibana)

二、Elastticsearsh概述

  • 提供了一个分布式多用户能力的全文搜索引擎

1、Elasticsearch特性

Elasticsearch的核心概念

接近时实(NRT)

  • 搜索速度非常的快,轻微的延迟。

集群(cluster)

  • 将一个或多个节点组织在一起,组成一个cluster集群。
  • 集群有一个唯一标志的名字,默认Elasticasearch,每个节点基于集群名字加入到集群中,且在集群中使用自己的名字来身份标识。

节点(node)

  • 每一个节点就是一台单台服务器。

索引(index)

  • 一个索引由一个名字来标识(必须全部是小写字母),并且当我们要多对应这个索引中的文档进行索引、更新、删除的时候,都要使用到这个名字。

类型(type)

  • 在一个索引中,你可以定义一个或多种类型。
  • 比如:当我们存储一个购物平台的数据时,可以定义一个用户数据类型,产品数据类型等

文档(document)

  • 一个文档是一个可被索引的基础信息单元
#索引(库)----》类型(表)------》文档(记录)

2、分片和副本

什么是分片?

  • 索引存储的数据可能超过单个节点的硬件限制。
  • 为了解决这个问题,ES提供了将索引分成多个分片的功能,当在创建索引时,可以定义想要的分片数量,每一个分片就是一个全功能独立的索引。

为什么要分片?

  • 水平分割扩展,增大存储量
  • 分布式并跨越分片操作, 提高性能和吞吐量

什么是副本?

  • 为了健壮性,高可用性,可以故障切换。
  • es将分片复制一份或多份放在不同的节点主机上,称为分片副本。

什么是副本?

  • 为了健壮性,高可用性,可以故障切换。
  • es将分片复制一份或多份放在不同的节点主机上,称为分片副本。

3、es和传统数据库的区别

①结构名称不同

  • 关系型数据库:数据库–>表–>行—>列
  • Elasticsearch:索引—>类型—>文档---->字段

②ES分布式,传统数据库遍历式索引

  • ES支持分片和复制,从而方便水平分割和扩展,复制保证可es的高可用与高吞吐。
  • 在es中,当你创建一个索引(数据库)的时候,你可以指定你想要的分片的数量,每个分片本身也是一个功能完善并且独立的索引(数据库),索引可以被防止到集群中的任何节点上。

分片的优点

1、允许你水平分割/扩展你的内容容量
2、允许你在分片之上进行分布式的,并行的操作,进而提高性能/吞吐量
3、分片的分布,它的文档怎么聚合回搜索请求,完全有Elasticsearch管理

③ES采用倒排索引,传统数据库采用B+树索引

  • 正排索引:id---->values
  • 倒排索引:values—>id

④ES没有用户验证和权限控制

⑤ES没有事务的概念,不支持回滚,误删不能恢复

⑥ES免费,完全开源,传统的数据库部分免费

二、Logstash概述

  • 一款强大的数据处理工具
  • 可实现数据传输、格式处理、格式化输出
  • 数据输入、数据加工(过滤、改写等)以及数据输出

由三个组件组成:Input、Output、Filter Plugin

  • Input:获取日志
  • Output:输出日志
  • Filter Plugin:过滤日志、格式处理

1、Log Stash主要组件

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

  • **Indexer(日志存储):**负责接收日志并写入到本地文件

  • **Broker(日志Hub):**负责连接多个Shipper和多个Indexer

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

  • **Web Interface:**基于Web的展示界面

三、Kibana 概述

  • 一个针对Elastcsearch的开源分析及可视化平台
  • 搜索、查看存储在ES 索引中的数据
  • 通过各种图标进行高级数据分析及展示

1、Kibana主要功能

①Elasticsearch无缝之集成

  • kibana架构为ES 定制,可以将任意结构和非结构加入到ES索引

②整合数据

  • 更好的对ES 数据进行分析处理 。能够处理海量数据,智能的分析数据。

③让更多团队成员收益

④接口灵活,分享容易

  • 使用Kibana可以更加方便地创建、保存、分享数据,并将可视化数据快速交流。

⑤配置简单

  • 自带web服务器,快速启动运行

⑥可视化多数据源

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

⑦简单数据导出

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

四、ELK的优点

**1、处理方式灵活:**Elasticsearch是全文索引,具有强大的搜索能力

**2、配置相对简单,**Kibana的配置非常简单,Eslasticsearch则全部使用Json接口,配置也不复杂,Logstash的配置使用模块的方式,配置也相对简单。

**3、检索性高,**ELK架构通常可以达到百亿数据的查询秒级响应

**4、集群线性扩展,**Elasticsearch本身没有单点的挂念,自动默认集群模式,Elasticsearch和Logstash都可以

5、灵活扩展

6、页面美观。

5、灵活扩展

6、页面美观。

1、部署环境

1.1 了解架构部署

主机名 ip地址 主要软件 系统
node1 20.0.0.55 ElasticSearh、Kibana centos7.5
node2 20.0.0.56 ElasticSearh centos7.5
node2 20.0.0.56 ElasticSearh centos7.5

日志分析系统原理

  • 首先有Apache产生大量的日志在本机中,那么Logstash就会input获取日志,然后进行Filter Plugin(过滤日志和格式处理),最后将处理好的日志outpu发送日志到ES的cluster集群中。

  • ES将收到的日志进行索引和存储。

  • 最后可以使用Kibana进行查看分析日志。

1.2 关闭防火墙、修改主机名(所有主机)

systemctl disable --now firewalld
setenforce 0 

hostnamectl set-hostname {名字}

3、部署ElasticSearch(node1、node2)

3.1 安装ES服务

node1和node2配置基本类似,唯一区别就是在配置文件中主机名不一样。下面以node1为例配置。

#安装JDK,默认的是open jdk,不建议使用(ES是java开发的)。上传jdk的rpm包到/opt目录下安装

cd /opt
tar -zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local

vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

source /etc/profile

java -version
===============配置本机主机名解析=================
echo "20.0.0.55 node1" >> /etc/hosts
echo "20.0.0.56 node2" >> /etc/hosts

==============安装Elsaticsearch================
#上传rpm包到/opt目录下
cd /opt
rpm -ivh elasticsearch-5.5.0.rpm

systemctl daemon-reload
systemctl enable elasticsearch.service
#安装好后,生成的配置文件路径为:/etc/elasticsearch/elasticsearch.yml

cp /etc/elasticsearch/elasticsearch.yum{,.bak}

vim /etc/elasticsearch/elasticsearch.yum
##17行,取消注释,指定群集名称
cluster.name: my-elk-cluster
##23行,取消注释,指定节点名称(node1节点为node1,node2节点为node2)
node.name: node1
##33行,取消注释,指定数据存放路径
path.data: /data/elk_data
##37行,取消注释,指定日志存放路径
path.logs: /var/log/elasticsearch/
##43行,取消注释,不在启动的时候锁定内存(前端缓存,与IOPS-性能测试方式,每秒读写次数相关)
bootstrap.memory_lock: false
##55行,取消注释,设置监听地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
##59行,取消注释,ES服务的默认监听端口为9200
http.port: 9200
##68行,取消注释,集群发现通过单播实现,指定要发现的节点node1、node2
discovery.zen.ping.unicast.hosts: ["node1", "node2"]
grep -v "^#" /etc/elasticsearch/elasticsearch.yml

mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/

systemctl start elasticsearch

netstat -antp |grep 9200

3.2 真机访问,查看节点信息

20.0.0.55:9200
20.0.0.56:9200

3.3 真机检测集群健康,查看集群状态

20.0.0.55:9200/_cluster/health?pretty
20.0.0.56:9200/_cluster/health?pretty

4、安装Elasticsearch-head插件(node1、node2)

为什么要安装这个插件?

  • 因为上述查看集群的方式,非常不方便,所以可以通过安装这个插件,来管理集群。
  • 安装 Elasticsarch-head 需要提前安装好依赖软件 node 和 phantomjs。

注意:两台机器安装步骤一样,这边还是以node1为例

4.1 编译安装node

node是一个基于 Chrome V8 引擎的 JavaScript 运行环境。

yum -y install gcc gcc-c++ make 

cd /opt

tar xzvf node-v8.2.1.tar.gz

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

4.2 安装phantomjs

phantomjs是一个基于 webkit 的 JavaScriptAPI,可以理解为一个隐形的浏览器,任何基于 webkit 浏览器做的事情,它都可以做到

#上传安装包上传到/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

4.3 安装 Elasticsearch-head 数据可视化工具

上面两个插件安装好后,就可以安装ElasticSearch-head可视化工具

#将包上传到/opt目录下

tar -zxvf elasticsearch-head.tar.gz -C /usr/local/src/
cd /usr/local/src/elasticsearch-head
npm install

4.4 修改Elasticsearch主配置文件

vim /etc/elasticsearch/elasticsearch.yml

##末行添加以下内容
http.cors.enabled: true			##开启跨域访问支持,默认为false
http.cors.allow-origin: "*"		##指定跨域访问允许的域名地址为所有

systemctl restart elasticsearch
netstat -natp |grep 9200

4.5 启动elasticsearch-head服务

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

netstat -natp |grep 9100

4.5 通过Elasticsearch-head 查看ES信息

浏览器访问:20.0.0.55:9100地址并连接群集,如果看到群集的健康值为green,代表群集很健康

20.0.0.55:9100
20.0.0.56:9100

4.6 插入索引

curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

#插入索引

4.8 浏览器查看索引信息

浏览器访问 20.0.0.55:9100 查看索引信息,可以看见索引默认被分片为 5 个,并且有一个副本。

点击 数据浏览,会发现在 node1 上创建的索引为 index-demo,类型为 test 的相关信息。

5、部署 Logstash服务(Apache节点操作)

  • Logstash 一般部署在需要监控其日志的服务器。在本案例中,Logstash 部署在 Apache 服务器上,用于收集 Apache 的日志信息并发送到 Elasticsearch。

5.1 安装logstash

yum -y install httpd
systemctl start httpd

5.2 安装java环境(jdk)

#将jdk包上传至/opt目录下

cd /opt
tar -zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local

vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

source /etc/profile

java -version

5.3 安装logstash

#上传压缩包到/opt目录下
cd /opt
rpm -ivh logstash-5.5.1.rpm

systemctl start logstash
systemctl enable logstash

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

5.4 测试logstash(端口5044)

①logstasg命令常用选项

常用选项 说明
-f 通过这个选项可以指定logstash的配置文件,根据配置文件配置logstash的输入和输出
-e 从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当做logstash的配置(如果是空,则默认使用stdin作为输入,stdout作为输出)
-t 测试配置文件是否正确,然后退出

②定义输入和输出流

  • 标准输入、输出: 输入财通标准输入,输出采用标准输出(类似管道)
logstash -e 'input { stdin{} } output { stdout{} }'
  • rubydebug 输出: 使用rubydebug输出详细格式显示.
  • codec: 为一种解码器。将内容解码后输出
logstash -e 'input { stdin{} } output { stdout { codec=>rubydebug} }'

③ 使用logstash将信息写入Elasticsearch中,输入输出对接

logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["20.0.0.55:9200"] } }'

结果不在标准输出显示,而是发送至 ES,可浏览器访问 http://20.0.0.55:9100 查看索引和数据

5.5 做对接配置(logstas—>ES)

#修改配置文件,让其收集系统日志/var/log/messgaes,并将其输入到ES中
chmod +r /var/log/messages

vim /etc/logstash/conf.d/system.conf

input {
    file{
        path =>"/var/log/messages"
        ##指定要收集的日志的位置
        type =>"system"
         ##自定义日志类型标识
        start_position =>"beginning"
         ##表示从开始处收集
    }
}
output {
    elasticsearch{
        ##输出到ES
        hosts =>["20.0.0.55:9200", "20.0.0.56:9200"]
        ##指定ES服务器的地址和端口,为避免单机故障,建议写全
        index =>"system-%{+YYYY.MM.dd}"
        ##指定输出到ES的索引格式
    }
}
systemctl restart logstash.service

5.6 访问测试

浏览器访问 20.0.0.55:9100 查看索引信息

6、部署Kibana(在node1节点上操作)

6.1 安装kibana

#将安装包上传/opt目录下
rpm -ivh kibana-5.5.1-x86_64.rpm

6.2 修改kibana的主配置文件

cp /etc/kibana/kibana.yml{,.bak}

vim /etc/kibana/kibana.yml

##2行,取消注释,kibana服务的默认监听端口为5601
server.port: 5601
##7行,取消注释,设置kibana的监听地址,0.0.0.0代表所有地址
server.host: "0.0.0.0"
##21行,取消注释,设置和ES建立连接的地址和端口
elasticsearch.url: "http://20.0.0.55:9200"
##30行,取消注释,设置在ES中添加.kibana索引
kibana.index: ".kibana"

6.3 启动kibana服务

systemctl start kibana.service 
systemctl enable kibana.service 

netstat -natp | grep 5601

6.4 验证kibana

浏览器访问:20.0.0.55:5601

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

点击 create 创建

索引添加完成后,点击 Discover 按钮可查看图表信息及日志信息

数据展示可以分类显示,例如:在 Available Fileds 中的 host

6.5 将Apache服务器日志(访问的、错误的)添加到ES并通过Kibaba显示apache服务器

在apache服务器上操作

 
[root@apache opt]# 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 => ["20.0.0.55:9200", "20.0.0.56:9200"]
            index => "apache_access-%{+YYYY.MM.dd}"
        }
    }
	if [type] == "error" {
        elasticsearch {
            hosts => ["20.0.0.55:9200", "20.0.0.56:9200"]
            index => "apache_error-%{+YYYY.MM.dd}"
        }
    }
}
[root@apache opt]# cd /etc/logstash/conf.d
[root@apache conf.d]# /usr/share/logstash/bin/logstash -f apache_log.conf

6.6 浏览器访问

浏览器访问20.0.0.55:9100 查看索引是否创建

浏览器访问20.0.0.55:5601 登录kibana,添加apache_access-*和apache_error-*索引,查看日志信息。文章来源地址https://www.toymoban.com/news/detail-600753.html

到了这里,关于ELK日志分析系统概述及部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 源码部署ELK日志分析管理系统

    日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。 通常,日志被分散在储存不同的设备上

    2024年02月09日
    浏览(46)
  • ELK 企业级日志分析系统的概念、ELK Elasticsearch 集群部署

    1、ELK 简介 ELK平台是一套完整的日志集中处理解决方案,将 ==ElasticSearch、Logstash 和 Kiabana ==三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。 ElasticSearch 是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。 E

    2024年02月16日
    浏览(51)
  • ELK日志分析系统的详细介绍与部署

    ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch 、 Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的 用户对日志的查询、排序、统计需求 。 集中化管理日志后,日志的统计和检索的效率降低。 ELK 提供了一个 完整的日志管理和分析解决方案 ,能够帮助用户

    2024年02月07日
    浏览(35)
  • 部署ELK+Kafka+Filebeat日志收集分析系统

    ELK是三个软件的统称,即Elasticsearch、Logstash和Kibana三个开源软件的缩写。这三款软件都是开源软件,通常配合使用,并且都先后归于Elastic.co企业名下,故被简称为ELK协议栈。ELK主要用于部署在企业架构中,收集多台设备上多个服务的日志信息,并将其统一整合后提供给用户。

    2024年02月16日
    浏览(41)
  • 【ELK企业级日志分析系统】部署Filebeat+Kafka+Logstash+Elasticsearch+Kibana集群详解(EFLFK)

    参见安装与部署ELK详解 参见安装与部署EFLK详解 参见安装与部署Zookeeper集群详解 1.1.1 为什么需要消息队列(MQ) MQ(Message Queue)主要原因是由于 在高并发环境下,同步请求来不及处理,请求往往会发生阻塞 。比如大量的并发请求,访问数据库,导致行锁表锁,最后请求线程会

    2024年02月16日
    浏览(49)
  • [ELK] ELK企业级日志分析系统

    1.1 ELK 简介与组件 ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。 ●ElasticSearch:是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日

    2024年01月21日
    浏览(73)
  • ELK 日志分析系统

    目录 一、日志管理方案 二、完整日志系统基本特征 三、ELK 简介 ELK组件: 1、ElasticSearch 2、Logstash 3、Kibana  可以添加的其它组件:  1、Filebeat 2、缓存/消息队列(redis、kafka、RabbitMQ等) 3、Fluentd 三、ELK 的工作原理 四、ELK部署 1、Elasticsearch部署  ①关闭防火墙和安全机制  

    2024年01月21日
    浏览(43)
  • ELK日志监控分析系统

    那么,ELK 到底是什么呢? “ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”

    2024年02月15日
    浏览(38)
  • 简单认识ELK日志分析系统

    ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。 好处 : (1)提高安全性 (2)集中存放日志 (3)缺陷:对日志的分析困难 1 、ElasticSearch 概述 (1)提供了一个分布式

    2024年02月14日
    浏览(35)
  • Linux--ELK日志分析系统

            ELK是一套针对日志数据做解决方案的框架,分别代表了三款产品: - E: ElasticSearch(ES),负责日志的存储和检索; - L:Logstash,负责日志的收集,过滤和格式化; - K:Kibana,负责日志的展示统计和数据可视化; ElasticSearch ElasticSearch是一个基于Lucene的搜索服务器。它

    2023年04月27日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包