超详细! ELK日志分析系统——理论+实验

本文介绍如何搭建ELK(Elasticsearch、Logstash、Kibana)日志分析系统,涵盖各组件的工作原理、配置及应用实例,助力运维工程师高效解决系统故障。

案列概述

日志分析是运维工程师解决系统故障,发现问题的主要手段。日志主要包括系统日志、应用程序日志和安全日志

Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤,并将其存储,供以后使用,比如搜索

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

ELK工作原理

在这里插入图片描述
图为完整的日志系统

首先appserver跑业务的(nginx或者apache等),它的日志被logstash收集,logstash定时去检索appserver的日志,
收集完了之后,传给es,es做两件事,第一重组日志,第二快速定位日志的内容,es在里面充当中央枢纽,当我需要让它展现出相关的信息时,通过kibana展示,在网页的页面中展现

简单来说,进行日志处理分析,一般需要经过以下几个步骤:
将日志进行集中化管理(beats)
将日志格式化(logstash)
对格式化后的数据进行索引和存储(elasticsearch)
前端数据的展示(kibana)

1.知识拓展

在这里插入图片描述
同时还有个轻量级别的filebeat
有些化是在logstash前面加上filebeat,filebeat处理


kagka是一个消息队列工具

像电商的级别基本都是百亿级别的pv量
基本其他的基本都是百万pv和千万pv,那这种级别离不开消息队列

现在基本上市场全是kafka,因为是java开发的,java是老大啊,你得考虑它

2.Elasticsearch介绍

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便

Elasticsearch的基础核心概念:
接近实时(NRT):轻微的延迟(通常是1秒)
集群(cluster):一个或多个节点组织在一起
节点(node):节点就是一台单一的服务器
索引(index):一个索引就是一个拥有几分相似特征的文档的集合
类型(type):在一个索引中,你可以定义一种或多种类型
分片和副本(shards & replicas):
分片:解决单个节点搜索请求太慢, 副本:解决应对分片或者节点故障

3.Logstash介绍

Logstash由JRuby语言编写,基于消息的简单架构,并运行在Java虚拟机上。不同于分离的代理端或主机端,LogStash可配置单一的代理端与其它开源软件结合,以实现不同的功能。

Logstash是一款强大的数据处理工具,可以实现数据传输、格式出来i、格式化输出
数据输出(Collect),数据加工(Enrich),如过滤、改写等,以及数据输出(Transport)

3.1LogStash的主要组件

主要组件:

Shipper:日志收集者 ,负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来
Indexer:日志存储者,负责接收日志并写入到本地文件
Broker:日志Hub,负责连接多个Shipper和多个Indexer
Search and Storage:允许对事件进行搜索和存储
Web Interface:基于Web的展示界面

4.Kibana介绍

Kibana是一个针对Elasticsearch的开源分析及可视化平台。用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。

Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard)实时显示Elasticsearch查询动态。设置Kibana非常简单。无需编写代码,几分钟内就可以完成Kibana安装并启动Elasticsearch索引监测

4.1主要功能

主要功能:

Elasticsearch无缝之集成
整合数据,复杂数据分析
让更多团队成员受益
接口灵活,分享更容易
配置简单,可视化多数据源
简单数据导出

配置ELK

1.底层环境

20.0.0.21 elasticsearch node1
20.0.0.22 elasticsearch node2
20.0.0.23 logstatsh
20.0.0.24 kibanna
网关 20.0.0.1
系统环境 Centos7.4 防火墙和核心防护全关

2.部署elasticsearch软件

######配种node1######
[root@node1 ~]# vi /etc/hosts 
20.0.0.21 node1
20.0.0.22 node2

##查看JAVA环境##
[root@node1 ~]# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

【部署elasticsearch软件】
##上传elasticsearch-5.5.0.rpm到opt##
[root@node1 ~]# cd /opt/
[root@node1 opt]# rpm -ivh elasticsearch-5.5.0.rpm


###加载系统服务##
[root@node1 opt]# systemctl daemon-reload
[root@node1 opt]# systemctl enable elasticsearch.service


###修改elasticsearch配置文件
[root@node1 opt]# cd /etc/elasticsearch/
[root@node1 elasticsearch]# cp elasticsearch.yml elasticsearch.yml.bak
[root@node1 elasticsearch]# vim elasticsearch.yml

###修改以下行内容:

17   cluster.name: my-elk-cluster              ###更改集群名字
23   node.name: node1                          ###节点名字
33   path.data: /data/elk_data                 ###数据存放路径
37   path.logs: /var/log/elasticsearch/        ###日志存放路径
43   bootstrap.memory_lock: false              ###不在启动的时候锁定内存:锁定物理内存地址,防止es内存被交换出去
55   network.host: 0.0.0.0                     ###提供服务绑定的IP地址,0.0.0.0代表所有地址
60   http.port: 9200                                         ###监听端口开启
69   discovery.zen.ping.unicast.hosts: ["node1", "node2"]    ###群集发现通过单播实现


##创建配置文件指定的目录,并给权限####
[root@node1 elasticsearch]# cd ~
[root@node1 ~]# mkdir -p /data/elk_data
[root@node1 ~]# id elasticsearch
uid=990(elasticsearch) gid=985(elasticsearch) groups=985(elasticsearch)
[root@node1 ~]# chown elasticsearch.elasticsearch /data/elk_data/

[root@node1 ~]# ll /data/
drwxr-xr-x 2 elasticsearch elasticsearch 6 Oct 28 22:50 elk_data

[root@node1 ~]# systemctl start elasticsearch.service 
[root@node1 ~]# netstat -anutp | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      39182/java          
######配种node2######
[root@node2 ~]# vi /etc/hosts 
20.0.0.21 node1
20.0.0.22 node2

##查看JAVA环境##
[root@node2 ~]# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

【部署elasticsearch软件】
##上传elasticsearch-5.5.0.rpm到opt##
[root@node2 ~]# cd /opt/
[root@node2 opt]# rpm -ivh elasticsearch-5.5.0.rpm


###加载系统服务##
[root@node2 opt]# systemctl daemon-reload
[root@node2 opt]# systemctl enable elasticsearch.service


###修改elasticsearch配置文件
[root@node2 opt]# cd /etc/elasticsearch/
[root@node2 elasticsearch]# cp elasticsearch.yml elasticsearch.yml.bak
[root@node2 elasticsearch]# vim elasticsearch.yml

###修改以下行内容:

17   cluster.name: my-elk-cluster              ###更改集群名字
23   node.name: node2                          ###节点名字
33   path.data: /data/elk_data                 ###数据存放路径
37   path.logs: /var/log/elasticsearch/        ###日志存放路径
43   bootstrap.memory_lock: false              ###不在启动的时候锁定内存:锁定物理内存地址,防止es内存被交换出去
55   network.host: 0.0.0.0                     ###提供服务绑定的IP地址,0.0.0.0代表所有地址
60   http.port: 9200                                         ###监听端口开启
69   discovery.zen.ping.unicast.hosts: ["node1", "node2"]    ###群集发现通过单播实现


##创建配置文件指定的目录,并给权限####
[root@node2 elasticsearch]# cd ~
[root@node2 ~]# mkdir -p /data/elk_data
[root@node2 ~]# id elasticsearch
uid=990(elasticsearch) gid=985(elasticsearch) groups=985(elasticsearch)
[root@node2 ~]# chown elasticsearch.elasticsearch /data/elk_data/

[root@node2 
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值