600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 超详细 ELK 日志分析系统

超详细 ELK 日志分析系统

时间:2021-02-21 00:53:39

相关推荐

超详细 ELK 日志分析系统

文章目录

一、ELK日志分析系统简介1:ELK日志分析系统组成2:日志处理步骤二:三款软件简介1:Elasticsearch(1)Elasticsearch的概述(2)Elasticsearch核心概念2:Logstash(1)Logstash介绍(2)Logstash的主要组件3:Kibana(1)Kibana介绍(2)Kibana主要功能三:ELK日志分析系统部署1:拓扑图2:实验环境3:部署步骤node1 节点配置3.1、3台服务器关闭防火墙3.2、3台服务器域名映射3.3、部署elasticsearch软件3.4、更改elasticsearch主配置文件3.5、创建数据存放路径并授权3.6、启动elasticsearch是否成功开启3.7、查看节点信息,用谷歌浏览器查看node2 节点配置3.7、集群检查健康和状态3.8、安装elasticsearch-head插件3.8.1、编译安装 node3.8.2、安装phantomjs 前端框架3.8.3、安装 elasticsearch-head 数据可视化工具3.9、修改 elasticsearch 主配置文件3.9.1、重新启动服务4.0、启动 elasticsearch-head 服务4.0.1、启动服务4.0.2、查看状态4.1、谷歌浏览器登录查看4.1.1、登录前端框架4.2、新建索引4.2.1、谷歌浏览器新建索引4.2.2、node1 节点创建索引4.2.3、进入谷歌浏览器刷新4.3、apache 服务器配置4.3.1、安装 apache 服务4.3.2、开启 apache 服务4.4、检查 java 环境4.5、安装 logstash4.5.4、解压缩4.5.2、启动服务4.5.3、建立 logstash 软连接4.6、输入采用标准输入,输出采用标准输出4.7、使用rubydebug显示详细输出4.8、使用logstash将信息写入elasticsearch中4.8.1、写入4.8.2、输入4.8.3、谷歌浏览器对接查看4.9、apache 服务器收集系统日志4.9.1、对日志文件授权4.9.2、创建配置文件,系统日志收集4.9.1、创建配置文件4.9.2、重启服务4.9.3、谷歌浏览器查看索引5.0、在node1 节点安装 kibana5.0.1、安装并修改配置文件5.0.2、开启 kibana 服务5.1、谷歌浏览器登录 kibana 展示页面5.2、在 apache 服务器创建 apache 日志配置5.2.1、指定 apache_log.conf 配置文件收集日志5.2.2、查看日志5.2.3、谷歌浏览器查看5.3、创建 apache 的 access 和 error 日志索引总结工作原理

一、ELK日志分析系统简介

ELK日志分析系统是Logstash、Elastcsearch、Kibana开源软件的集合,对外是作为一个日志管理系统的开源方案,它可以从任何来源、任何格式进行日志搜索、分析与可视化展示

1:ELK日志分析系统组成

elasticsearch (es) :通过搭建群集;存储日志数据,索引日志数据logstash :收集日志,收集到了后给es存储kibana :视图形式展现日志信息,更加人性化

2:日志处理步骤

将日志进行集中化管理将日志格式化(Logstash)并输出到Elasticsearch对格式化后的数据进行索引和存储(Elasticsearch)前端数据的展示(Kibana)

二:三款软件简介

1:Elasticsearch

(1)Elasticsearch的概述

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

(2)Elasticsearch核心概念

(1)接近实时(NRT)

elasticsearch是一个接近实时的搜索平台,这意味着,从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是1秒)

(2)集群(cluster)

一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能。其中一个节点为主节点,这个主节点是可以通过选举产生的,并提供跨节点的联合索引和搜索的功能。集群有一个唯一性标示的名字,默认是elasticsearch,集群名字很重要,每个节点是基于集群名字加入到其集群中的。因此,确保在不同环境中使用不同的集群名字。—个集群可以只有一个节点。强烈建议在配置elasticsearch时,配置成集群模式。es具有集群机制,节点通过集群名称加入到集群中,同时在集群中的节点会有一个自己的唯一身份标识(自己的名称)

(3)节点(node)

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

(4)索引 (type)

在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类!分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。比如说,我们假设你运营一个博客平台并且将你所有的数据存储到一个索引中。在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型,当然,也可以为评论数据定义另一个类型。

类型相对于关系型数据库的表 ——》索引(库)-》类型(表)-》文档(记录)

(6)文档(document)

一个文档是一个可被索引的基础信息单元。比如,你可以拥有某一个客户的文档,某一个产品的一个文档,当然,也可以拥有某个订单的一个文档。文档以SON

(Javascript Object Notation))格式来表示,而JSON是一个到处存在的互联网数据交互格式。在一个index/type里面,只要你想,你可以存储任意多的文档。注意,虽然一个文档在物理上位于一个索引中,实际上一个文档必须在一个索引内被索引和分配一个类型。文档相对于关系型数据库的列。

(7)分片和副本(shards & replicas)

在实际情况下,索引存储的数据可能超过单个节点的硬件限制。如一个10亿文档需1TB空间可能不适合存储在单个节点的磁盘上或者从单个节点搜索请求太慢了。为了解决这个问题,elasticsearch提供将索引分成多个分片的功能。当在创建索引时,可以定义想要分片的数量。每一个分片就是一个全功能的独立的索引,可以位于集群中任何节点上。

分片的两个最主要原因

a.水平分割扩展,增大存储量

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

分布式分片的机制和搜索请求的文档如何汇总完全是有elasticsearch控制的,这些对用户而言是透明的。

网络问题等等其它问题可以在任何时候不期而至,为了健壮性,强烈建议要有一个故障切换机制,无论何种故障以防止分片或者节点不可用。为此,elasticsearch让我们将索引分片复制一份或多份,称之为分片副本或副本。

副本也有两个最主要原因

a.高可用性,以应对分片或者节点故障。出于这个原因,分片副本要在不同的节点上。

b.×××能,增大吞吐量,搜索可以并行在所有副本上执行。

2:Logstash

(1)Logstash介绍

—款强大的数据处理工具可实现数据传输、格式处理、格式化输出数据输入(从业务输入)、数据加工(如过滤、改写等)以及数据输出(输出到Elasticsearch群集)

(2)Logstash的主要组件

shipper:日志收集者,负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常,远程代理端(agent)只需要运行这个组件即可indexer:日志存储者,负责接收日志并写入到本地文件broker:日志hub,负责连接多个shipper和多个indexersearch and storage:允许对事件进行搜索和存储web interface:基于wWeb的展示界面

3:Kibana

(1)Kibana介绍

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

(2)Kibana主要功能

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

三:ELK日志分析系统部署

1:拓扑图

2:实验环境

3:部署步骤

node1 节点配置

3.1、3台服务器关闭防火墙

[root@apache ~]# systemctl stop firewalld[root@apache ~]# setenforce 0

3.2、3台服务器域名映射

[root@apache ~]# vi /etc/hosts20.0.0.10 apache20.0.0.11 node120.0.0.12 node2

3.3、部署elasticsearch软件

(1)安装elasticsearch-rpm包

[root@node1 ~]# rpm -ivh elasticsearch-5.5.0.rpm

(2)加载系统服务

[root@node1 ~]# systemctl daemon-reload # 守护进程重载,重新识别[root@node1 ~]# systemctl enable elasticsearch.service # 开机自启动

3.4、更改elasticsearch主配置文件

(1)拷贝文件备份

[root@node1 ~]# cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak

(2)修改配置文件

[root@node1 ~]# vi /etc/elasticsearch/elasticsearch.ymlcluster.name: my-elk-cluster# 17 集群名字node.name: node1 # 23 节点名字path.data: /data/elk_data # 33 数据存放路径,退出后需要单独创建path.logs: /var/log/elasticsearch # 37 日志存放路径bootstrap.memory_lock: false# 43 不在启动的时候锁定内存network.host: 0.0.0.0 # 55 提供服务绑定的IP地址,0.0.0.0代表所有地址http.port: 9200 # 59 侦听端口为9200discovery.zen.ping.unicast.hosts: ["node1", "node2"] # 68 集群发现通过单播实现

(3)过滤查看修改的配置

[root@node1 ~]# grep -v "^#" /etc/elasticsearch/elasticsearch.ymlcluster.name: my-elk-clusternode.name: node1path.data: /data/elk_datapath.logs: /var/log/elasticsearchbootstrap.memory_lock: falsenetwork.host: 0.0.0.0http.port: 9200discovery.zen.ping.unicast.hosts: ["node1", "node2"]

3.5、创建数据存放路径并授权

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

3.6、启动elasticsearch是否成功开启

[root@node1 ~]# systemctl start elasticsearch.service# 启动慢[root@node1 ~]# netstat -anpt | grep 9200tcp6 00 :::9200 :::*LISTEN54502/java

3.7、查看节点信息,用谷歌浏览器查看

node2 节点配置

1:与 node1 节点操作相同,只需更改 elasticsearch主配置文件的节点名字为 node2

2:过滤查看修改的配置

[root@node2 ~]# grep -v "^#" /etc/elasticsearch/elasticsearch.ymlcluster.name: my-elk-clusternode.name: node2path.data: /data/elk_datapath.logs: /var/log/elasticsearchbootstrap.memory_lock: falsenetwork.host: 0.0.0.0http.port: 9200discovery.zen.ping.unicast.hosts: ["node1", "node2"]

3:查看节点信息,用谷歌浏览器查看

3.7、集群检查健康和状态

(1)检查群集健康情况

(2)检查群集状态信息

3.8、安装elasticsearch-head插件

上述查看集群的方式,及其不方便,我们可以通过安装elasticsearch-head插件后,来管理集群

node1 节点与 node2 节点操作相同

3.8.1、编译安装 node
解压缩

[root@node1 ~]# tar zxvf node-v8.2.1.tar.gz

配置编译安装

[root@node1 node-v8.2.1]# ./configure[root@node1 node-v8.2.1]# make && make install

3.8.2、安装phantomjs 前端框架
解压缩

[root@node1 ~]# tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2

拷贝文件

[root@node1 ~]# cp phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/

3.8.3、安装 elasticsearch-head 数据可视化工具
解压缩

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

安装

[root@node1 ~]# cd elasticsearch-head/[root@node1 elasticsearch-head]# npm install

3.9、修改 elasticsearch 主配置文件

[root@node1 ~]# vi /etc/elasticsearch/elasticsearch.yml # 配置文件末尾添加http.cors.enabled: true # 开启跨域访问支持,默认为falsehttp.cors.allow-origin: "*" # 跨域访问允许的域名地址

3.9.1、重新启动服务

[root@node1 ~]# systemctl restart elasticsearch.service

4.0、启动 elasticsearch-head 服务

4.0.1、启动服务

[root@node1 ~]# cd elasticsearch-head/[root@node1 elasticsearch-head]# npm run start & # 切换到后台启动[1] 101339[root@node1 elasticsearch-head]# > elasticsearch-head@0.0.0 start /root/elasticsearch-head> grunt serverRunning "connect:server" (connect) taskWaiting forever...Started connect web server on http://localhost:9100

4.0.2、查看状态

[root@node1 ~]# netstat -anpt | grep 9100tcp 00 0.0.0.0:9100 0.0.0.0:* LISTEN101349/grunt [root@node1 ~]# netstat -anpt | grep 9200tcp6 00 :::9200 :::* LISTEN101608/java

4.1、谷歌浏览器登录查看

4.1.1、登录前端框架

4.2、新建索引

4.2.1、谷歌浏览器新建索引
4.2.2、node1 节点创建索引
创建

[root@node1 ~]# curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"lisi","mesg":"hello world"}'

完成

{"_index" : "index-demo", # 索引名称"_type" : "test",# 索引类型"_id" : "1","_version" : 1,"result" : "created",# 创建"_shards" : {"total" : 2, # 总量"successful" : 2,"failed" : 0},"created" : true}

4.2.3、进入谷歌浏览器刷新

4.3、apache 服务器配置

4.3.1、安装 apache 服务

[root@apache ~]# yum -y install httpd

4.3.2、开启 apache 服务

[root@apache ~]# systemctl start httpd

4.4、检查 java 环境

[root@apache ~]# java -versionopenjdk 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)

4.5、安装 logstash

4.5.4、解压缩

[root@apache ~]# rpm -ivh logstash-5.5.1.rpm

4.5.2、启动服务

[root@apache ~]# systemctl start logstash.service [root@apache ~]# systemctl enable logstash.service

4.5.3、建立 logstash 软连接

[root@apache ~]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

4.6、输入采用标准输入,输出采用标准输出

[root@apache ~]# logstash -e 'input { stdin{} } output { stdout{} }' 省略09:02:20.499 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port=>9600} # 输入-01-07T01:04:14.008Z apache # 输出

4.7、使用rubydebug显示详细输出

[root@apache ~]# logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'省略The stdin plugin is now waiting for input:09:10:19.822 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port=>9600} # 输入{"@timestamp" => -01-07T01:11:16.829Z,# 详细输出"@version" => "1","host" => "apache","message" => ""}

4.8、使用logstash将信息写入elasticsearch中

4.8.1、写入

[root@apache ~]# logstash -e 'input { stdin{} } output { elasticsearch{ hosts=>["20.0.0.11:9200"] } }'省略The stdin plugin is now waiting for input:09:15:23.436 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port=>9600}

4.8.2、输入

4.8.3、谷歌浏览器对接查看

4.9、apache 服务器收集系统日志

4.9.1、对日志文件授权

(1)查看日志文件

[root@apache ~]# ll /var/log | grep messages-rw------- 1 root root 218981 1月 7 09:33 messages

(2)授权

[root@apache ~]# chmod o+r /var/log/messages[root@apache ~]# ll /var/log | grep messages-rw----r-- 1 root root 241485 1月 7 09:37 messages

4.9.2、创建配置文件,系统日志收集

4.9.1、创建配置文件

[root@apache ~]# vi /etc/logstash/conf.d/system.confinput {file{path => "/var/log/messages"type => "system"start_position => "beginning"}}output {elasticsearch {hosts => ["20.0.0.11:9200"]index => "system-%{+YYYY.MM.dd}"}}

4.9.2、重启服务

[root@apache ~]# systemctl restart logstash.service

4.9.3、谷歌浏览器查看索引

5.0、在node1 节点安装 kibana

5.0.1、安装并修改配置文件

[root@node1 ~]# rpm -ivh kibana-5.5.1-x86_64.rpm [root@node1 ~]# vi /etc/kibana/kibana.yml server.port: 5601 # 2 kibana 打开的端口server.host: "0.0.0.0" # 7 kibana 侦听的地址elasticsearch.url: "http://20.0.0.11:9200" # 21 和elasticsearch 建立联系kibana.index: ".kibana"# 30 在elasticsearch中添加.kibana索引

5.0.2、开启 kibana 服务

[root@node1 ~]# systemctl start kibana.service [root@node1 ~]# systemctl enable kibana.service

5.1、谷歌浏览器登录 kibana 展示页面

5.2、在 apache 服务器创建 apache 日志配置

[root@apache ~]# cd /etc/logstash/conf.d/[root@apache conf.d]# vi apache_log.confinput {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.11:9200"]index => "apache_access-%{+YYYY.MM.dd}"}}if [type] == "error" {elasticsearch {hosts => ["20.0.0.11:9200"]index => "apache_error-%{+YYYY.MM.dd}"}}}

5.2.1、指定 apache_log.conf 配置文件收集日志

[root@apache conf.d]# logstash -f apache_log.conf省略10:22:49.702 [[main]-pipeline-manager] INFO logstash.pipeline - Pipeline main started10:22:49.744 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port=>9601}

5.2.2、查看日志

[root@apache ~]# ls /etc/httpd/logs/access_log error_log

5.2.3、谷歌浏览器查看

5.3、创建 apache 的 access 和 error 日志索引

总结

工作原理

在需要收集日志的所有服务上部署logstash,其中logstash agent ( logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到 logstash indexer ,logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch ,可以用Elasticsearch进行自定义搜索,通过Kibana来结合自定义搜索进行页面展示。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。