1、ELK介绍

 
 

ELK不是一款软件,而是elasticsearch+Logstash+kibana三款开源软件组合而成的日志收集处理套件,堪称神器。其中Logstash负责日志收集,elasticsearch负责日志的搜索、统计,而kibana则是ES的展示神器,前端炫丽,点几下鼠标简单配置,就可以完成搜索、聚合功能,生成华丽的报表。

目前我们的日志方案:

  • flume负责收集,服务写日志到文件,flume收集日志文件
  • flume汇总到数据通道kafka,供其他服务消费
  • 日志搜索:从kafka读取日志写入到solr cloud提供搜索
  • 日志统计:将kafka的日志写到hdfs,使用spark、hive来做统计
  • 日志展示:开发的java-web,读取数据库生成统计报表

当前日志方案问题分析:

  • 需要预先编程才能使用,开发工作量大
  • 不够灵活,新需求需要改代码
  • 离线统计,实时性不高
  • 未提供基于搜索结果的统计功能
  • 系统方案较为复杂,需要了解多项技术,学习维护成本高
  • ……
  • 新增需求都是泪,开发出来后变动很少

通过调研ELK,发现真是解救目前问题的一个神器,大部分问题都可以迎刃而解。

2、ELK安装

 
 

默认需要先安装jdk1.8,自行安装即可

2.1、安装ES

2.1.1 下载ES

 
 

下载地址:https://www.elastic.co/downloads/elasticsearch

最新版本是2.28发布的5.2.2版本

 
 

windows选择ZIP,linux选择tar,ubuntu选择DEB

测试服务器是ubuntu,直接下载deb包,然后安装即可

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.2.deb

sudo dpkg -i elasticsearch-5.2.2.deb

2.1.2 配置

如果使用deb包安装的,配置文件路径如下:

类型

描述

默认路经

Setting

home

Elasticsearch home directory or $ES_HOME

/usr/share/elasticsearch

  

bin

Binary scripts including elasticsearch to start a node and elasticsearch-plugin to install plugins

/usr/share/elasticsearch/bin

  

conf

Configuration files including elasticsearch.yml

/etc/elasticsearch

path.conf

conf

Environment variables including heap size, file descriptors.

/etc/default/elasticsearch

  

data

The location of the data files of each index / shard allocated on the node. Can hold multiple locations.

/var/lib/elasticsearch

path.data

logs

Log files location.

/var/log/elasticsearch

path.logs

plugins

Plugin files location. Each plugin will be contained in a subdirectory.

/usr/share/elasticsearch/plugins

  

repo

Shared file system repository locations. Can hold multiple locations. A file system repository can be placed in to any subdirectory of any directory specified here.

Not configured

path.repo

script

Location of script files.

/etc/elasticsearch/scripts

path.scripts

 
 

修改/etc/elasticsearch/elasticsearch.yml即可

测试使用,主要设置网络:

network.host: 192.168.86.108

http.port: 9200

 
 

ES的集群配置比较方便,设置cluster.name就可以:

cluster.name: es-log

 
 

2.1.3 启动ES

 
 

由于我们使用的deb安装的,因此可以用服务方式启动:

service elasticsearch start

 
 

如果使用的压缩包,执行 bin/elasticsearch (or bin\elasticsearch.bat on Windows)即可

 
 

然后,打开
curl http://192.168.86.108:9200/ 测试(ip换成配置的ip)

 
 

2.2 安装 Logstash

 
 

现在收集处理框架非常多,像 facebook 出品的scribe ,apache 基金会的亲儿子flume,Logstash也是一个非常出名的日志框架,使用jruby开发,可以运行在jvm之上实现跨平台,具体的介绍可以到官网http://logstash.net查看。

 
 

Logstash安装比较简单,下载压缩包、解压、配置,启动即可。

2.2.1 下载安装

wget https://artifacts.elastic.co/downloads/logstash/logstash-5.2.2.tar.gz

tar zxvf logstash-5.2.2.tar.gz

ln -s logstash-5.2.2 logstash

 
 

2.2.2 配置

 
 

Logstash 和flume比较类似,有input和output的概念。不过logstash社区通常习惯用 shipper,broker 和 indexer 来描述数据流中不同进程各自的角色。

 
 

我们来看怎么配置logstash。

 
 

创建一个配置文件nginxlog2es.conf,读取nginx日志,输出到elasticsearch 。具体的配置格式参见官方文档。

input {

file {

path => "/var/log/nginx/access.log_json"

codec => "json"

}

}

filter {

mutate {

split => [ "upstreamtime", "," ]

}

mutate {

convert => [ "upstreamtime", "float" ]

}

}

output {

stdout { codec => rubydebug }

elasticsearch {

hosts => ["192.168.86.108:9200"]

index => "logstash-nginx-%{+YYYY.MM.dd}"

document_type => "%{type}"

flush_size => 20000

idle_flush_time => 10

sniffing => true

template_overwrite => true

}

}

 
 

这里简单说明下,input是file类型,/var/log/nginx/access.log_json每行是一个json数据,codec => "json"指定按json解析。

output 配置了两个,stdout 是控制台输出,elasticsearch 则是输出到前面配置的es服务器,index 索引名称为logstash-nginx-日期,这样每天为一个索引。

 
 

Nginx 直接生成json日志可以通过指定logformat,拼接为json:

配置logformat:

log_format json '{"@timestamp":"$time_iso8601",'

'"host":"$server_addr",'

'"clientip":"$remote_addr",'

'"size":$body_bytes_sent,'

'"responsetime":$request_time,'

'"upstreamtime":"$upstream_response_time",'

'"upstreamhost":"$upstream_addr",'

'"http_host":"$host",'

'"url":"$uri",'

'"xff":"$http_x_forwarded_for",'

'"referer":"$http_referer",'

'"agent":"$http_user_agent",'

'"status":"$status"}';

然后使用:

access_log /var/log/nginx/access.log_json json;

这样nginx的日志就变为:

 
 

2.2.3 启动logstash

 
 

使用-f指定配置文件

 
 

bin/logstash -f nginxlog2es.conf

 
 

启动成功后就能看到收集到的日志:

 
 

2.3 kibana

 
 

2.3.1 安装

kibana安装也比较简单,下载,解压,配置即可

wget https://artifacts.elastic.co/downloads/kibana/kibana-5.2.2-linux-x86_64.tar.gz

解压后建立软连接

ln -s kibana-5.2.2-linux-x86_64 kibana

cd kibana

修改配置文件

vim config/kibana.yml

修改

server.host: "192.168.86.108"

elasticsearch.url: "http://192.168.86.108:9200"

然后启动:

bin/kibana

2.3.2 配置报表

启动后打开http://192.168.86.108:5601,就能看到日志了,在输入框里还可以输入关键词进行搜索,并且自带流量统计。

 
 

 
 

下面来看如何生成报表,比如搞个响应时间折线图,进入visualize,选择折线图

 
 

分别配置X和y轴,Y为平均响应时间,X为时间,最后保存即可。

 
 

再来配置一个表格报表,通产各个url的访问量

 
 

Metrics 配置使用count作为聚合函数

 
 

buckets增加rows,字段选url

再增加一个状态码:

 
 

这样就完成了一个漂亮的表格

 
 

2.3.3 将报表添加到dashboard

 
 

在dashboard点add,将两个报表加入即可

3、总结

简单的介绍就到这里为止了,更多的功能后面继续挖掘。

总结下,借助ELK可以快速搭建日志收集、日志搜索和统计分析平台,可以不写一行代码完成漂亮的统计报表,简直是开发和运维的福音,是不是心动了?如果是,快行动起来吧!

ELK日志套件安装与使用的更多相关文章

  1. 【ELK】ELK日志套件安装与使用

    ELK日志套件安装与使用   1.ELK介绍 ELK不是一款软件,而是elasticsearch+Logstash+kibana三款开源软件组合而成的日志收集处理套件,堪称神器.其中Logstash负 ...

  2. ELK日志解决方案安装配置与使用

    官方网站:https://www.elastic.co/products/elasticsearch logstash,elasticsearch,kibana作用如下: logstash:分布在每一 ...

  3. ELK日志监控平台安装部署简介--Elasticsearch安装部署

    最近由于工作需要,需要搭建一个ELK日志监控平台,本次采用Filebeat(采集数据)+Elasticsearch(建立索引)+Kibana(展示)架构,实现日志搜索展示功能. 一.安装环境描述: 1 ...

  4. elk日志分析平台安装

    ELK安装 前言 什么是ELK? 通俗来讲,ELK是由Elasticsearch.Logstash.Kibana 三个开源软件的组成的一个组合体,这三个软件当中,每个软件用于完成不同的功能,ELK 又 ...

  5. ELK日志分析之安装

    ELK日志分析之安装 1.介绍: NRT elasticsearch是一个近似实时的搜索平台,从索引文档到可搜索有些延迟,通常为1秒. 集群 集群就是一个或多个节点存储数据,其中一个节点为主节点,这个 ...

  6. ELK日志分析系统之Kibana7.x最新版安装与配置

    3.Kibana的简介 Kibana 让您能够自由地选择如何呈现自己的数据.Kibana 核心产品搭载了一批经典功能:柱状图.线状图.饼图.旭日图等等. 3.1.软件包下载地址:https://www ...

  7. ElasticSearch实战系列九: ELK日志系统介绍和安装

    前言 本文主要介绍的是ELK日志系统入门和使用教程. ELK介绍 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件.新增了一 ...

  8. 快速搭建ELK日志分析系统

    一.ELK搭建篇 官网地址:https://www.elastic.co/cn/ 官网权威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/ ...

  9. ELK 日志分析体系

    ELK   日志分析体系 ELK 是指 Elasticsearch.Logstash.Kibana三个开源软件的组合. logstash                       负责日志的收集,处 ...

随机推荐

  1. linux学习笔记----权限与命令之间的关系(极重要)

    一.权限与命令之间的关系 二.文件与目录的默认权限与隐藏权限 1)umask为默认的权限(通过umask -S)查看你的系统的默认权限. umask的分数是指该默认值需要减掉的权限,比如说umask= ...

  2. 11g oracle 用户密码过期问题

    Oracle 11g 之前默认的用户时是没有密码过期的限制的,在Oracle 11g 中默认的profile启用了密码过期时间是180天.如下:select * from dba_profiles w ...

  3. NodeJS Stream 四:Writable

    什么是可写流 可写流是对数据流向设备的抽象,用来消费上游流过来的数据,通过可写流程序可以把数据写入设备,常见的是本地磁盘文件或者 TCP.HTTP 等网络响应. 看一个之前用过的例子 process. ...

  4. delphi 预览图片2 (MouseUP)

    这个是自己项目在使用的,所以带有些业务功能的代码. 逻辑上使用的大多是 mouseup ,MouseMove,Mousedown.使用recttangle容器实现滑动.网上有这个下载demo. 另外移 ...

  5. XCode中设置字体大小

    XCode中设置字体大小 1)打开Preferences,快捷键是“Command + ,”(注意,是三个键,按住command键,然后再快速地按“+”和“,”两个键即可) 2)选择“Fonts &a ...

  6. Hadoop权威指南:压缩

    Hadoop权威指南:压缩 [TOC] 文件压缩的两个好处: 减少储存文件所需要的磁盘空间 加速数据在网络和磁盘上的传输 压缩格式总结: 压缩格式 工具 算法 文件扩展名 是否可切分 DEFLATE ...

  7. Unity3d Hololens MR开发入门

    一.Hololens概述 Hololens有以下特性 1.空间映射借助微软特殊定制的全息处理单元(HPU),HoloLens 实现了对周边环境的快速扫描和空间匹配.这保证了 HoloLens能够准确地 ...

  8. react+redux构建淘票票首页

    react+redux构建淘票票首页 描述 在之前的项目中都是单纯的用react,并没有结合redux.对于中小项目仅仅使用react是可以的:但当项目变得更加复杂,仅仅使用react是远远不够的,我 ...

  9. pwnable.kr-fd-Writeup

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  10. C# 基于DotRas的VPN管理

    由于工作环境有部分网址被公司屏蔽,特意做了个VPN管理工具,在想访问公司被屏蔽的网址时就开启连接,不用时就关掉.对于做安卓开发的或者.net core类库更新还是很方便的,现在把运行效果展示一下: 点 ...