文章目录

  • 一、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、编译安装 node
          • 3.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、安装 logstash
          • 4.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 节点安装 kibana
          • 5.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:日志处理步骤

  1. 将日志进行集中化管理
  2. 将日志格式化(Logstash)并输出到Elasticsearch
  3. 对格式化后的数据进行索引和存储(Elasticsearch)
  4. 前端数据的展示(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和多个indexer
  • search 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/hosts
20.0.0.10   apache
20.0.0.11   node1
20.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.yml
cluster.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 侦听端口为9200
discovery.zen.ping.unicast.hosts: ["node1", "node2"]  # 68 集群发现通过单播实现

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

[root@node1 ~]# grep -v "^#" /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster
node.name: node1
path.data: /data/elk_data
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
discovery.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 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      54502/java     

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

node2 节点配置

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

2:过滤查看修改的配置

[root@node2 ~]# grep -v "^#" /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster
node.name: node2
path.data: /data/elk_data
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
discovery.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                                # 开启跨域访问支持,默认为false
http.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) task
Waiting forever...
Started connect web server on http://localhost:9100
4.0.2、查看状态
[root@node1 ~]# netstat -anpt | grep 9100
tcp        0      0 0.0.0.0:9100            0.0.0.0:*            LISTEN      101349/grunt
[root@node1 ~]# netstat -anpt | grep 9200
tcp6       0      0 :::9200                 :::*                 LISTEN      101608/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 -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)

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}www.baidu.com           # 输入
2021-01-07T01:04:14.008Z apache www.baidu.com      # 输出

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}www.baidu.com                                     # 输入
{"@timestamp" => 2021-01-07T01:11:16.829Z,     # 详细输出"@version" => "1","host" => "apache","message" => "www.baidu.com"
}          

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、输入
www.baidu.com
www.sina.com
www.google.com
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.conf
input {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.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.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 started
10: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来结合自定义搜索进行页面展示。

超详细 ELK 日志分析系统相关推荐

  1. 超详细部署ELK日志分析系统!每一步骤都有记录!ELK的详细使用!

    目录 一.ELK简介 二.Elasticsearch简介 三.Logstash简介 四.Kibana简介 五.ELK案例部署 5.1 案例环境 5.2 部署elasticsearch 5.3 部署Ap ...

  2. ELK日志分析系统 超详细!!理论+实操讲解!!

    文章目录 一.ELK日志分析系统简介 1.1日志处理的步骤 1.2 ELK日志分析系统三部分 1.3日志服务器(一般) 二.Elasticsearch介绍 2.1 Elasticsearch概述 2. ...

  3. 搭建ELK日志分析系统详解

    日志分析是运维工程师解决系统故障.发现问题的主要手段.日志包含多种类型,包括程序日志.系统日志以及安全日志等.通过对日志的分析,既可以做到未雨绸缪.预防故障的发生,又可以在故障发生时,寻找蛛丝马迹.快 ...

  4. ELK 日志分析系统和部署

    目录 前言 一.日志分析 1.1  我们需要收集哪些日志 1.2  日志收集后,如何展示(可视化) 1.3   日志收集展示出来后,怎么使用 1.4  我们要怎么收集日志 二.ELK 日志分析系统简介 ...

  5. ELK日志分析系统及相关

    目录 前言 一.ELK概述 1.ELK日志分析系统 2.ELK中日志处理步骤 二.Elasticsearch介绍 1.Elasticsearch的基础核心概念 2.mysql关系型数据库与Elasti ...

  6. ELK日志分析系统(企业级查看日志系统)

    一. ELK日志分析系统简介 ELK平台是一套完整的日志集中处理解决方案,将ElasticSearch.Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询.排序 ...

  7. 运维必备——ELK日志分析系统

    目录 一.ELK日志分析系统概述 (1)传统日志服务器的优点与缺点和为什么要使用ELK日志分析系统 (2)ELK日志分析系统日志的分类 (3)ELK日志分析系统的分类 --Elasticsearch: ...

  8. ELK 日志分析系统的部署

    文章目录 一.ELK前言 1.1 需要收集的日志 1.2 日志收集后,如何可视化 1.3 日志收集可视化后,怎么使用 1.4 要怎么收集日志 二.ELK简介 2.1 ElasticSearch介绍 2 ...

  9. 超实用的ELK日志分析系统

    文章目录 前言: 一.ELK日志分析系统简介 (一).日志服务器 (二).ELK日志分析系统 补充: (三).日志处理步骤 (四).Elasticsearch 介绍 (五).Logstash介绍 (六 ...

最新文章

  1. macbook所有型号大全_提高MacBook电池寿命的15个技巧
  2. 2020年度智能音箱主控方案汇总,涵盖15大芯片品牌推出的34款解决方案
  3. nowcoder 清楚姐姐的翅膀们 F 一般图的最大匹配
  4. 我是如何解决asp.net程序在dreamWeaver中布局乱码的问题
  5. cstring 不明确_股价不可预测明确时间点的涨跌
  6. 外链图片也有风险吗?
  7. ASP页面中访问基于.net的COM组件[转]
  8. 49 - 算法 - Leetcode-111 -二叉树的最小深度 -递归循环
  9. ES5_03_Object扩展
  10. 14. Longest Common Prefix【leetcode】
  11. LintCode—链表翻转(35)
  12. Perl脚本语言学习1:
  13. matlab vgg图像风格迁移,迁移网络的应用-图像风格迁移
  14. mac 右键 启动终端
  15. 布隆过滤器?好像有点局限啊,瞅一瞅布谷鸟过滤器
  16. 电场强度通量的高斯定理
  17. php写个发红包_PHP实现微信发红包程序
  18. lucene配置动态域_学位论文查重中如何使用Lucene全文检索
  19. 王爽汇编语言 实验7
  20. AV1代码学习:av1_foreach_transformed_block_in_plane函数

热门文章

  1. 摸鱼必备!3 个 Linux 命令行工具让你假装很忙!
  2. 基于红外传感器的雷达设计——通过Processing实现
  3. MyBatis之缓存机制
  4. 内审员和外审员哪个含金量高一点?
  5. Android-超好用的播放器——ijkplayer
  6. 关于java中int类型的取值范围等问题
  7. 怎样做一名“技术布道者”
  8. 使用BeautifulSoup模块获取糗事百科上的笑话
  9. mysql数据库迁移达梦_mysql数据库迁移达梦数据库
  10. lol现在哪个服务器有无限火力,LOL2018无限火力开放时间_国服无限火力模式什么时候出...