ELK日志套件安装与使用
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日志套件安装与使用的更多相关文章
- 【ELK】ELK日志套件安装与使用
ELK日志套件安装与使用 1.ELK介绍 ELK不是一款软件,而是elasticsearch+Logstash+kibana三款开源软件组合而成的日志收集处理套件,堪称神器.其中Logstash负 ...
- ELK日志解决方案安装配置与使用
官方网站:https://www.elastic.co/products/elasticsearch logstash,elasticsearch,kibana作用如下: logstash:分布在每一 ...
- ELK日志监控平台安装部署简介--Elasticsearch安装部署
最近由于工作需要,需要搭建一个ELK日志监控平台,本次采用Filebeat(采集数据)+Elasticsearch(建立索引)+Kibana(展示)架构,实现日志搜索展示功能. 一.安装环境描述: 1 ...
- elk日志分析平台安装
ELK安装 前言 什么是ELK? 通俗来讲,ELK是由Elasticsearch.Logstash.Kibana 三个开源软件的组成的一个组合体,这三个软件当中,每个软件用于完成不同的功能,ELK 又 ...
- ELK日志分析之安装
ELK日志分析之安装 1.介绍: NRT elasticsearch是一个近似实时的搜索平台,从索引文档到可搜索有些延迟,通常为1秒. 集群 集群就是一个或多个节点存储数据,其中一个节点为主节点,这个 ...
- ELK日志分析系统之Kibana7.x最新版安装与配置
3.Kibana的简介 Kibana 让您能够自由地选择如何呈现自己的数据.Kibana 核心产品搭载了一批经典功能:柱状图.线状图.饼图.旭日图等等. 3.1.软件包下载地址:https://www ...
- ElasticSearch实战系列九: ELK日志系统介绍和安装
前言 本文主要介绍的是ELK日志系统入门和使用教程. ELK介绍 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件.新增了一 ...
- 快速搭建ELK日志分析系统
一.ELK搭建篇 官网地址:https://www.elastic.co/cn/ 官网权威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/ ...
- ELK 日志分析体系
ELK 日志分析体系 ELK 是指 Elasticsearch.Logstash.Kibana三个开源软件的组合. logstash 负责日志的收集,处 ...
随机推荐
- PHPcms 把盛大登陆换成人人网登陆
首先要确保你的 phpcms是比较新的版本, v9.3以后的吧 这里说明一个函数 rawurlencode() 本函数将字符串编码成 URL 的字符串专用格式,特殊的字符会转换成百分比符号后面加上二个 ...
- shell 命令合并文本
之前想把代码打印出来看来着,后来合并完之后放在word里发现有2000多页,然后放弃了~anyway,这个命令还是挺有用的. 比如我有文本a001.dat, a002.dat, a003.dat .. ...
- C++中的RAII技法
Resource Acquisition Is Initialization or RAII, is a C++ programming technique which binds the life ...
- Oracle to_char格式化函数 显示毫秒
racle如何显示毫秒 date类型只能精确到秒,要想精确到毫秒,需要使用timestamp类型. 应用举例: 举例1: select to_char(systimestamp,'yy ...
- mybatis springmvc调用oracle存储过程,返回记录集
参考: http://bbs.csdn.net/topics/390866155 辅助参考: http://www.2cto.com/kf/201307/226848.html http://blog ...
- [nRF51822] 16、nRF51822的随机数生成器,及随机数生成器的一些知识(可以帮您补补随机数发生器的知识)
1.前言 随机数生成器在通信.加密.图像传输等领域应用广泛,且一般起到关键性作用.我在最近设计的一个近场射频通信协议的碰撞避退算法的过程中,便对此有深深体会. 2.伪随机数发生器 随机数发生器一般包括 ...
- [随笔]利用云虚拟机和学校VPN实现校外访问校内站点(反向代理)
探究背景简介: 大学校内站点一般不对外开放,个人认为原因有二: 一是站点内容受众就是大学师生: 二是站点基本无防御措施,在公网环境下容易发生意外情况. 至于为何不对外开放,不是这篇随笔探讨的重点,利用 ...
- Redis系列二(yum切换为网易163)
这个可能和Redis没有直接的关系... 是我在yum install的时候发现centos的yum实在是太慢,上网查了下.网易163有个yum镜像,为了让CentOS6使用速度更快的YUM更新源,可 ...
- android ExpandableListView实现不同的布局
最近有一个需求要实现listview的不同布局!因为有好几上header,就想到了ExpandableListView! 这个是我的需求模型:看图(自己画的) 然后百度~google~发帖~总算有点效 ...
- FTP与TFTP
文件传输协议如今有了很大的广泛,他屏蔽了计算机内部的实现细节,因为可以适用于各种计算机之间文件的传输. 文件咋网络中传输其实是一件很复杂的事情,涉及的问题有很多,比如 (1)计算机存储数据的格式不同 ...