欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

项目实战14—ELK 企业内部日志分析系统

程序员文章站 2022-04-22 13:25:23
本文收录在Linux运维企业架构实战系列 一、els、elk 的介绍 1、els,elk els:ElasticSearch,Logstash,Kibana,Beats elk:ElasticSearch,Logstash,Kibana ① ElasticSearch 搜索引擎 ElasticSea ......

本文收录在Linux运维企业架构实战系列

一、els、elk 的介绍

1、els,elk

els:ElasticSearch,Logstash,Kibana,Beats

elk:ElasticSearch,Logstash,Kibana

① ElasticSearch 搜索引擎

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

② Logstash 接收,处理,转发日志的工具

  Logstash 是一个开源的服务器端数据处理流水线,它可以同时从多个数据源获取数据,并将其转换为最喜欢的"存储"(Ours is Elasticsearch, naturally.)

③ Beats:采集日志信息(加上beats 就是els),GO开发的,所以高效、很快

  Filebeat:Log Files

  Metricbeat:Metrics

  Packetbeat:Network Data

  Winlogbeat:Windows Event Logs

  Heartbeat:Uptime Monitoring

④ Kibana:独立的、美观的图形数据展示界面

  Kibana 让你可视化你的Elasticsearch数据并导航Elastic Stack,所以你可以做任何事情,从凌晨2:00分析为什么你得到分页,了解雨水可能对你的季度数字造成的影响。

项目实战14—ELK 企业内部日志分析系统

 

2、实验前准备

实验所需要的包(我用的是5.5.1版本),都放在我的网盘里了,需要的私聊 https://pan.baidu.com/s/1c2An0Co

① 环境准备

机器名称

IP配置

服务角色

els

192.168.1.101(私)

192.168.10.101(公)

elasticsearch(搜索引擎)

logstash

192.168.1.102(私)

192.168.10.102(公)

logstash(日志处理)

redis(缓冲队列)

filebeat

 

192.168.1.103(私)

192.168.10.103(公)

filebeat(日志收集)

httpd/mysql(生成日志)

kibana

192.168.1.104(私)

192.168.10.104(公)

kibana(展示界面)

② 修改主机名、hosts文件,确保节点直接能通过主机名连通

[root@els ~]# hostnamectl set-hostname els.along.com

[root@logstash ~]# hostnamectl set-hostname logstash.along.com

[root@filebeat ~]# hostnamectl set-hostname filebeat.along.com

[root@kibana ~]# hostnamectl set-hostname kibana.along.com

centos7 修改主机名:

[root@server1 ~]# hostnamectl set-hostname 主机名

 

③ 修改hosts

[root@server1 ~]# vim /etc/hosts

192.168.1.101 els.along.com

192.168.1.102 logstash.along.com

192.168.1.103 filebeat.along.com

192.168.1.104 kibana.along.com

互相测试

[root@els ~]# ping filebeat.along.com

 

④ 关闭防火墙、selinux

[root@server1 ~]# iptables -F

[root@server3 ~]# setenforce 0

 

⑤ 同步时间

[root@server1 ~]# systemctl restart chronyd

 

二、安装搭建elasticsearch 和head 插件

1、安装elasticsearch

  Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况

(1)官网下载,各种版本

https://www.elastic.co

项目实战14—ELK 企业内部日志分析系统

 

(2)安装java 环境

安装JDK,至少1.8 以上的版本

因为是java 语言编写的,需安装JDK

[root@server1 ~]# yum install java-1.8.0-openjdk-devel -y

 

(3)安装els

在网上找自己需要的版本,我下好了5.5.1 版本,在网盘里

[root@server1 ~]# rpm -ivh elasticsearch-5.5.1.rpm

 

2、配置elasticsearch

(1)修改JVM 的配置

[root@server1 ~]# vim /etc/elasticsearch/jvm.options 修改分配的空间大小

-Xms1g #初始化大小

-Xmx1g #最大大小

注意:不要超过32G,如果空间大,多跑几个实例,不要让一个实例太大内存

生产环境,建议都给32;为了实验方便,我直接改成了1g

 

(2)配置els

[root@els ~]# vim /etc/elasticsearch/elasticsearch.yml

cluster.name: alongels    #集群名字
node.name: els   #节点名
path.data: /els/data   #索引路径
path.logs: /els/logs    #日志存储路径
network.host: 192.168.10.101   #对外通信的地址,依次修改为自己机器对外的IP
#http.port: 9200    #默认端口

 

(3)创建出所需的路径,并修改权限

[root@els ~]# mkdir -pv /els/{data,logs} && chown -R elasticsearch.elasticsearch /els/*

 

(4)开启服务

[root@els ~]# systemctl start elasticsearch.service

 

(5)测试elasticsearch

① 开启服务,会打开9200 端口

项目实战14—ELK 企业内部日志分析系统

② [root@server1 ~]# curl 192.168.10.101:9200

项目实战14—ELK 企业内部日志分析系统

 

3、搭建elasticsearch 集群(自己选择)

我因机器缺少,所以没有做集群;若机器够用,建议做集群

(1)配置els

[root@server1 ~]# vim /etc/elasticsearch/elasticsearch.yml

cluster.name: alongels    #集群名字
node.name: server1   #节点名,依次修改为server2,server3
path.data: /els/data   #索引路径
path.logs: /els/logs    #日志存储路径
network.host: 192.168.10.101   #对外通信的地址,依次修改为自己机器对外的IP
#http.port: 9200    #默认端口
discovery.zen.ping.unicast.hosts: ["server1", "server2","server3"]   #发现方式,采用单播
discovery.zen.minimum_master_nodes: 2   #数量要大于集群中节点的半数

 

(2)创建出所需的路径,并修改权限

[root@server1 ~]# mkdir -pv /els/{data,logs} && chown -R elasticsearch.elasticsearch /els/*

[root@server2 ~]# mkdir -pv /els/{data,logs} && chown -R elasticsearch.elasticsearch /els/*

[root@server3 ~]# mkdir -pv /els/{data,logs} && chown -R elasticsearch.elasticsearch /els/*

 

(3)开启3个节点的服务

[root@server3 ~]# systemctl start elasticsearch.service

 

4、安装elasticsearch 的head插件(Web前端)

https://github.com/mobz/elasticsearch-head 这里有github上的详细步骤

(1)安装head 插件

① 下载git 环境

[root@server1 ~]$ cd /usr/local/

[root@server1 local]$ yum -y install git

 

② git 克隆

[root@server1 local]$ git clone git://github.com/mobz/elasticsearch-head.git

[root@server1 local]$ cd elasticsearch-head/

 

③ 安装npm 包

[root@server1 elasticsearch-head]$ yum -y install npm

 

④ 安装npm 的各种模块

[root@server1 elasticsearch-head]$ npm install

注意:需连网,安装需一段时间

项目实战14—ELK 企业内部日志分析系统

 

⑤ 中间会出错,提示解压一个包失败,手动解开就好

Error: Command failed: tar jxf /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2

解决办法:

bunzip2 /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2

tar -xvf /tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar

再次执行[root@server1 elasticsearch-head]$ npm install

成功

项目实战14—ELK 企业内部日志分析系统

 

(2)再次修改配置文件,在最后加一个配置段

[root@server1 ~]$ vim /etc/elasticsearch/elasticsearch.yml

# ------------------------ Enable CORS in elasticsearch -------------------------
http.cors.enabled: true
http.cors.allow-origin: "*"      #授所有权限

 

(3)运行head

① 重启elasticsearch 服务,打开了9100 端口

[root@server1 ~]$ service elasticsearch restart

 

② 启动head

[root@server1 ~]# cd /usr/local/elasticsearch-head/

[root@server1 elasticsearch-head]# npm run start 前端运行

[root@server1 elasticsearch-head]# nohup npm run start & 后台运行

[root@server1 elasticsearch-head]# jobs 查看后台运行的任务

[1]+ Running nohup npm run start &

 

5、测试elasticsearch-head

网页访问http://192.168.1.101:9100/

项目实战14—ELK 企业内部日志分析系统

 

6、elasticsearch-head 的全功能文本搜索引擎库:lucene

https://lucene.apache.org/core/ 下载地址

  Apache Lucene 是一个完全用Java编写的高性能,全功能的文本搜索引擎库。它几乎适用于任何需要全文搜索的应用程序,特别是跨平台的应用程序。

有经典的查询分析器语法结构,根据自己需要安装。

  

三、安装介绍logstash

1、介绍

(1)定义

查看官方文档 https://www.elastic.co/cn/products/logstash

① 官方介绍:Logstash is an open source data collection engine with real-time pipelining capabilities。简单来说logstash就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景。

 

② Logstash的事件(logstash将数据流中等每一条数据称之为一个event)处理流水线有三个主要角色完成:inputs –> filters –> outputs:

  • inpust:必须,负责产生事件(Inputs generate events),常用:File、syslog、redis、beats(如:Filebeats)
  • filters:可选,负责数据处理与转换(filters modify them),常用:grok、mutate、drop、clone、geoip
  • outpus:必须,负责数据输出(outputs ship them elsewhere),常用:elasticsearch、file、graphite、statsd

项目实战14—ELK 企业内部日志分析系统

 

(2)有自己的搜索模式,事先定义好的

所谓的搜索模式就是像变量一样,把用的较多的事先定义好,便于多次引用

[root@centos7-1 conf.d]# rpm -ql logstash |grep pattern

[root@centos7-1 conf.d]# less /usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-4.1.1/patterns/grok-patterns

项目实战14—ELK 企业内部日志分析系统

/usr/share/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-4.1.1/patterns

例如:httpd 的搜索模式

项目实战14—ELK 企业内部日志分析系统

 

(3)文档,有较详细的用法介绍

项目实战14—ELK 企业内部日志分析系统

选择对应版本

项目实战14—ELK 企业内部日志分析系统

① input

项目实战14—ELK 企业内部日志分析系统

② filter

项目实战14—ELK 企业内部日志分析系统

③ output

项目实战14—ELK 企业内部日志分析系统

 

2、下载安装

① 去官网下载对应版本的logstash ,我下载的是5.5.1版本

https://www.elastic.co/cn/downloads/logstash

[root@centos7-1 els]# rpm -ivh logstash-5.5.1.rpm

 

② 修改环境变量,可以直接使用logstash 命令

[root@centos7-1 els]# vim /etc/profile.d/logstash.sh

export PATH=$PATH:/usr/share/logstash/bin/

[root@centos7-1 els]# . /etc/profile.d/logstash.sh

 

四、logstash 演示用法

进入自配置文件的目录

[root@centos7-1 logstash]# cd /etc/logstash/conf.d/

 

1、示例1:标准输入输出

input => 标准输入

filter => 无

output => 标准输出

① 编辑配置文件

[root@centos7-1 conf.d]# vim test.conf

input {
        stdin {}
}

output {
        stdout {
                codec => rubydebug
        }
} 

② -t 测试语法,这个命令级慢

[root@centos7-1 conf.d]# logstash -f ./test.conf -t

项目实战14—ELK 企业内部日志分析系统

 

③ 执行

[root@centos7-1 conf.d]# logstash -f ./test.conf

项目实战14—ELK 企业内部日志分析系统

 

2、示例2:从文件输入数据,经grok 拆分插件过滤之后输出至标准输出

input => 标准输入

filter => grok、date 模块

  grok:拆分字段

  date:修改时间格式

output => 标准输出

 

(1)事前准备,生成日志

① 下载开启httpd 服务

[root@centos7-1 ~]# yum install httpd

[root@centos7-1 ~]# systemctl start httpd

 

② 生成一个主页

[root@centos7-1 ~]# vim /var/www/html/index.html

Home Page

 

③ 生成20个测试页面

[root@centos7-1 ~]# for i in {1..20}; do echo "Test Page ${i}" > /var/www/html/test${i}.html; done

项目实战14—ELK 企业内部日志分析系统

 

④ 测试页面正常访问

项目实战14—ELK 企业内部日志分析系统

 

⑤ 循环生成httpd 日志

[root@centos7-1 ~]# for i in {1..200}; do j=$[$RANDOM%20+1]; curl http://192.168.1.102:80/test${j}.html; done

 

(2)编辑配置文件

[root@centos7-1 conf.d]# vim test2.conf

input {
        stdin {}
}

filter {
    grok {    #拆分message 字段
         match => {      #指定匹配哪个字段
             "message" => "%{COMBINEDAPACHELOG}"   #引用定义好的搜索模式
         }
              remove_field => "message"    #删除message 字段
    }
    date {    #改变时间格式
              match => ["timestamp","dd/MMM/YYYY:H:m:s Z"]
              remove_field => "timestamp"    #删除原有的时间字段
    }
}

output {
        stdout {
                codec => rubydebug
        }
} 

(3)执行

[root@centos7-1 conf.d]# logstash -f test2.conf -t

[root@centos7-1 conf.d]# logstash -f test2.conf

项目实战14—ELK 企业内部日志分析系统

 

3、示例3:filter 的date、mutate 插件

input => 标准输入

filter => date、mutate 模块

  mutate:修改字段

output => 标准输出

① 编辑配置文件,由于input、output还是标准输入输出,就没有贴出

[root@centos7-1 conf.d]# vim test3.conf

filter {
        grok {
                match => {
                "message" => "%{HTTPD_COMBINEDLOG}"
        }
}
        date {
                match => ["timestamp","dd/MMM/YYYY:H:m:s Z"]
        }
        mutate {
                rename => {
                        "agent" => "user_agent"
                }
        }
} 

② 执行

[root@centos7-1 conf.d]# logstash -f test3.conf -t

[root@centos7-1 conf.d]# logstash -f test3.conf

项目实战14—ELK 企业内部日志分析系统

 

4、示例4:filter 的geoip 模块

input => 标准输入

filter => geoip 模块

  geoip:利用这个模块解析ip的地址,利于后边kibana 的地理位置展示图

output => 标准输出

(1)准备ip 数据库

  网上下载数据库,因为是记录世界的IP 地址,所以经常有变动,可以写一个计划任务,每隔一周去网上下载一次,解包,链接到maxmind 下

[root@centos7-1]# tar -xvf GeoLite2-City.tar.gz

[root@centos7-1]# mv GeoLite2-City_20170704/ /etc/logstash/

[root@centos7-1 logstash]# mv GeoLite2-City_20170704/ maxmind

 

(2)模拟一个公网ip 访问

[root@centos7-1 ~]# echo '112.168.1.102 - - [08/Feb/2018:15:28:53 +0800] "GET /test6.html HTTP/1.1" 200 12 "-" "curl/7.29.0"' >> /var/log/httpd/access_log

 

(3)执行

① 编辑配置文件,由于input、output还是标准输入输出,就没有贴出

[root@centos7-1 conf.d]# vim tes4.conf

filter {
        grok {
                match => {
                "message" => "%{HTTPD_COMBINEDLOG}"
        }
}
        geoip {
                source => "clientip"   #哪个源ip 字段,转换为地理位置
                target => "geoip"   #目标信息存储时的健名
                database => "/etc/logstash/maxmind/GeoLite2-City.mmdb"    #数据库路径
        }
}

 

② 执行

[root@centos7-1 conf.d]# logstash -f test4.conf -t

[root@centos7-1 conf.d]# logstash -f test4.conf

项目实战14—ELK 企业内部日志分析系统

 

③ 如果是内网地址,会显示失败

[root@centos7-1 ~]# echo '192.168.1.102 - - [08/Feb/2018:15:28:53 +0800] "GET /test6.html HTTP/1.1" 200 12 "-" "curl/7.29.0"' >> /var/log/httpd/access_log

项目实战14—ELK 企业内部日志分析系统

 

5、示例5:output 输出给elasticsearch

input => 来自httpd 的访问日志

filter => geoip 模块

output => 输出给elasticsearch

(1)执行

① 编辑配置文件

[root@centos7-1 conf.d]# vim test5.conf

input {
        file {
                path => ["/var/log/httpd/access_log"]
                start_position => "beginning"
        }
}

filter {
        grok {
                match => {
                "message" => "%{HTTPD_COMBINEDLOG}"
        }
}
        geoip {
                source => "clientip"
                target => "geoip"
                database => "/etc/logstash/maxmind/GeoLite2-City.mmdb"
        }
}

output {
        elasticsearch {  
                hosts => ["http://192.168.10.101:9200/"]   #主机
                index => "logstash-%{+YYYY.MM.dd}"   #索引
                document_type => "apache_logs"    #文档类型标识,自己定义
        }
}  

② 执行

logstash -f test5.conf

 

(2)验证

① 网页登录到elasticsearch,可以查看到

项目实战14—ELK 企业内部日志分析系统

② 搜索查询的演示

(a)基于2个字段CN 的搜索

项目实战14—ELK 企业内部日志分析系统

(b)响应码前缀搜索

项目实战14—ELK 企业内部日志分析系统

(c)范围搜索

项目实战14—ELK 企业内部日志分析系统

 

6、示例6:output 输出给redis

input => 来自httpd 的访问日志

filter => geoip 模块

output => 输出给redis

 

(1)准备redis 服务

[root@logstash]# vim /etc/redis.conf

bind 0.0.0.0   #监听所有端口

requirepass ilinux.io   #加密码,为了安全运行

其他一些优化配置:

① 只做队列,没必要持久存储,性能更好

② 把内存的淘汰策略关掉

③ 把内存空间最大,调大一点

④ 把所有持久化功能关掉:AOF 快照

 

开启redis

[root@centos7-1 conf.d]# systemctl start redis   打开6379 端口

 

(2)运行logstash

① 配置文件

[root@centos7-1 conf.d]# vim test6.conf

output {
        redis {
                batch => true    #批量写入
                host => "192.168.10.102"   #主机
                password => "ilinux.io"   #密码
                port => 6379  #端口
                #db => 0     #默认就是0号库
                data_type => "list"   #数据格式,列表
                key => "apachelogs"   #自己定义的键
        }       
}

②  [root@logstash]# logstash -f test6.conf

 

(3)测试

[root@centos7-1 ~]# redis-cli -a ilinux.io

127.0.0.1:6379> KEYS *

127.0.0.1:6379> LLEN apachelogs

127.0.0.1:6379> LINDEX apachelogs 1

项目实战14—ELK 企业内部日志分析系统

 

(4)注:logstash 开启的方法:

① logstash 指令指定配置文件启动

logstash -f test.conf

② systemctl start logstash  命令启动

此命令启动,要确保/etc/logstash/conf.d 目录下没有其他多余的配置文件。

 

五、Beats 轻量型数据采集器

Beats 平台集合了多种单一用途数据采集器。这些采集器安装后可用作轻量型代理,从成百上千或成千上万台机器向 Logstash 或 Elasticsearch 发送数据。

项目实战14—ELK 企业内部日志分析系统

1、下载

去官网下载对应版本

[root@centos7-1 ~]# rpm -ivh filebeat-5.5.1-x86_64.rpm

 

2、示例1:配置filebeats,目标elasticsearch

源 => 本机httpd 的日志

目标 => 直接给elasticsearch

(1)配置文件

[root@filebeat ~]# vim /etc/filebeat/filebeat.yml

#================= Filebeat prospectors =====================
filebeat.prospectors:
  paths:
    - /var/log/httpd/*log

#exclude_lines: ["^DBG"]    黑名单
#include_lines: ["^ERR", "^WARN"]   白名单

#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["192.168.10.101:9200"]    #主机和端口
  #protocol: "https"     #如果是https
  #username: "elastic"    #用户,如果elasticsearch设置的有的话
  #password: "changeme"    #密码

 

(2)启动服务

[root@centos7-1 filebeat]# systemctl start filebeat.service

 

(3)生成httpd 日志

① 下载开启httpd 服务

[root@centos7-1 ~]# yum install httpd

[root@centos7-1 ~]# systemctl start httpd

 

② 生成一个主页

[root@centos7-1 ~]# vim /var/www/html/index.html

Home Page

 

③ 生成20个测试页面

[root@centos7-1 ~]# for i in {1..20}; do echo "Test Page ${i}" > /var/www/html/test${i}.html; done

项目实战14—ELK 企业内部日志分析系统

 

④ 测试页面正常访问

项目实战14—ELK 企业内部日志分析系统

 

⑤ 循环生成httpd 日志

[root@centos7-1 ~]# for i in {1..20}; do j=$[$RANDOM%20+1]; curl http://192.168.1.102:80/test${j}.html; done

 

(4)测试

直接访问elasticsearch 页面,可以查看到

项目实战14—ELK 企业内部日志分析系统

 

3、示例2:完整的ELK —> 配置filebeat,目标给logstash

(1)配置filebeat

[root@filebeat ~]# vim /etc/filebeat/filebeat.yml

filebeat.prospectors:
- input_type: log
  paths:
    - /var/log/httpd/*log

output.logstash:
  hosts: ["192.168.10.102:5044"]

 

启动服务

[root@centos7-1 filebeat]# systemctl start filebeat.service

 

(2)在logstash 服务器上配置

input => 来自filebeat

filter => geoip 模块

output => 输出给elasticsearch

① 配置

[root@logstash conf.d]# vim /etc/logstash/conf.d/apachelogs.conf

input {
        beats {
                port => 5044
        }
}

filter {
        grok {
                match => {
                "message" => "%{HTTPD_COMBINEDLOG}"
                }
        }
}

output {
        elasticsearch {
                hosts => ["http://192.168.10.101:9200/"]
                index => "logstash-%{+YYYY.MM.dd}"
                document_type => "apache_logs"
        }
} 

② 运行logstash

[root@centos7-1 conf.d]# logstash -f apachelogs.conf -t 测试

重启filebeat

[root@centos7-1 filebeat]# systemctl restart filebeat.service

 

(3)测试

项目实战14—ELK 企业内部日志分析系统

 

4、示例3:完整的els搭建

(1)配置filebeat,目标给redis

[root@filebeat ~]# vim /etc/filebeat/filebeat.yml

filebeat.prospectors:
- input_type: log
  paths:
    - /var/log/httpd/*log
#----------------------------- Redis output --------------------------------
output.redis:
  hosts: ["192.168.10.102"]
  password: "ilinux.io"
  key: "httpdlogs"
  datatype: "list"
  db: 0
  timeout: 5

 

(2)redis 服务器查询测试

[root@centos7-1 conf.d]# redis-cli -a ilinux.io 查询有key值,有数据

项目实战14—ELK 企业内部日志分析系统

 

(3)配置logstash

input => 来自redis

filter => geoip 模块

output => 输出给elasticsearch

① 配置

[root@logstash conf.d]# vim /etc/logstash/conf.d/apachelogs.conf

input {
        redis {
                host => "192.168.10.102"
                port => "6379"
                password => "ilinux.io"
                data_type => "list"
                key => "httpdlogs"
                threads => 2
        }
}

filter {
        grok {
                match => {
                        "message" => "%{HTTPD_COMBINEDLOG}"
                }
        }
        date {
                match => ["timestamp","dd/MMM/YYYY:H:m:s Z"]
                remove_field => "timestamp"
        }
}

output {
        elasticsearch {
                hosts => ["http://192.168.10.101:9200/"]
                index => "logstash-%{+YYYY.MM.dd}"
                document_type => "apache_logs"
        }
} 

② 启动logstash

[root@filebeat ~]# systemctl start logstash

 

(4)用192.168.1.101 机器生成访问日志,测试

项目实战14—ELK 企业内部日志分析系统

 

六、kibana

1、介绍

  kibana 是您走进 Elastic Stack 的窗口,Kibana 让您能够可视化 Elasticsearch 中的数据并操作Elastic Stack,因此您可以在这里解开任何疑问:例如,为何会在凌晨 2:00 被传呼,雨水会对季度数据造成怎样的影响。

① 一张图片胜过千万行日志

  Kibana 让您能够*地选择如何呈现您的数据。或许您一开始并不知道自己想要什么。不过借助Kibana 的交互式可视化,您可以先从一个问题出发,看看能够从中发现些什么。

② 从基础入手

  Kibana 核心搭载了一批经典功能:柱状图、线状图、饼图、环形图,等等。它们充分利用了Elasticsearch 的聚合功能。

③ 将地理数据融入任何地图

  利用我们的 Elastic Maps Services 来实现地理空间数据的可视化,或者发挥创意,在您自己的地图上实现自定义位置数据的可视化。

④ 时间序列也在菜单之列

  您可以利用 Timelion,对您 Elasticsearch 中的数据执行高级时间序列分析。您可以利用功能强大、简单易学的表达式来描述查询、转换和可视化。

⑤ 利用 graph 功能探索关系

  凭借搜索引擎的相关性功能,结合 graph 探索,揭示您 Elasticsearch 数据中极其常见的关系。

 

2、安装搭建

(1)安装

从官网上下载对应的版本https://www.elastic.co/cn/downloads/kibana

[root@kibana ~]#rpm -ivh kibana-5.5.1-x86_64.rpm

(2)配置

vim /etc/kibana/kibana.yml

server.port: 5601
server.host: "0.0.0.0"
server.name: "kibana.along.com"
elasticsearch.url: "http://192.168.10.101:9200"

 

(3)开启服务

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

 

3、配置使用kibana

(1)打开网页 http://192.168.1.104:5601,选择logstash 发送的日志,就直接显示效果了

项目实战14—ELK 企业内部日志分析系统

 

(2)设置效果展示图

项目实战14—ELK 企业内部日志分析系统

 

① 可以创建各种图形,面积图,线装图,饼状图......

我以饼状图为例,创建top5 来源ip、top10 请求点击页面 的饼状图

项目实战14—ELK 企业内部日志分析系统

 

② 做出top5 来源ip 的饼状图

选择对什么进行聚合图形,我选择对自己设置的terms 词条进行聚合,再选择clientip.keyword 的key键值,最后展示

项目实战14—ELK 企业内部日志分析系统

 

③ 同理,做出top10 请求点击页面的饼状图

项目实战14—ELK 企业内部日志分析系统

 

④ 可以将多个图形呈现在一个仪表盘上

点击仪表盘,添加所需要展示的图形即可

项目实战14—ELK 企业内部日志分析系统

 

⑤ 根据ip 显示地理位置

项目实战14—ELK 企业内部日志分析系统

 

(3)其他字段都可进行设置,多种图案,也可将多个图形放在一起展示

项目实战14—ELK 企业内部日志分析系统

 

有什么问题,欢迎讨论~