`
Donald_Draper
  • 浏览: 955559 次
社区版块
存档分类
最新评论

ELK日志收集系统搭建

    博客分类:
  • ELK
阅读更多
1. 日志平台的结构示意图




说明:
多个独立的agent(Shipper)负责收集不同来源的数据,一个中心agent(Indexer)负责汇总和分析数据,在中心agent前 的Broker(使用redis实现)作为缓冲区,中心agent后的ElasticSearch用于存储和搜索数据,前端的Kibana提供丰富的图表 展示。Shipper表示日志收集,使用LogStash收集各种来源的日志数据,可以是系统日志、文件、redis、mq等等;Broker作为远程agent与中心agent之间的缓冲区,使用redis实现,一是可以提高系统的性能,二是可以提高系统的可靠性,当中心agent提取数据失败时,数据保存在redis中,而不至于丢失;中心agent也是LogStash,从Broker中提取数据,可以执行相关的分析和处理(Filter);ElasticSearch用于存储最终的数据,并提供搜索功能;Kibana提供一个简单、丰富的web界面,数据来自于ElasticSearch,支持各种查询、统计和展示;
2. 搭建部署
环境:

本机(192.168.132.126)上部署:redis, 中心agent(LogStash), ElasticSearch以及Kibana
远程测试机(192.168.132.128)上部署:独立agent(LogStash)
Redis版本:3.0.0-rc1
LogStash版本;logstash-1.4.2
ElasticSearch版本:elasticsearch-1.4.3
Kibana版本:kibana-3.1
.1

2.1 部署redis

部署一个redis单机实例:
$ wget https://github.com/antirez/redis/archive/3.0.0-rc1.tar.gz
$ tar zxvf 3.0.0-rc1.tar.gz -C /usr/local
Cd /usr/local
Make
Make PREFIX=/usr/local/redis-3.0.5


redis.conf配置文件为:
include ../redis.conf
daemonize yes 
pidfile /var/run/redis_6379.pid
port 6379
logfile /opt/logs/redis/6379.log
appendonly yes 

启动Redis:
$ redis.server redis.conf

ip为192.168.132.126, 端口为6379
2.2 部署中心LogStash
下载并解压:
$ wget https://download.elasticsearch.org/logstash/logstash/logstash-1.4.2.tar.gz
$ tar zxvf logstash-1.4.2.tar.gz -C /usr/local/
$ cd /usr/local/logstash-1.4.2
$ mkdir conf logs


配置文件conf/central.conf:
input {
	redis {
		host => "127.0.0.1"
		port => 6379 
		type => "redis-input"
		data_type => "list"
		key => "key_count"
	}   
}

output {
	stdout {}
	elasticsearch {
		cluster => "elasticsearch"
		codec => "json"
		protocol => "http"
	}   
}

启动Logstash 代理:
$ bin/logstash agent --verbose --config conf/central.conf --log logs/stdout.log


配置文件表示输入来自于redis,使用redis的list类型存储数据,key为”key_count”;输出到elasticsearch,cluster的名称为”elasticsearch”;
2.3 部署ElasticSearch
下载并解压:
$ wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.4.3.tar.gz
$ tar zxvf elasticsearch-1.4.3.tar.gz -C /usr/local


elasticsearch使用默认配置即可,默认的cluster name为:elasticsearch;
修改配置文件conf/elasticsearch.yml
添加一下语句
http.cors.allow-origin: "/.*/"
http.cors.enabled: true


否者会报错Your elasticsearch server is down or unreachable

启动ES:
$ bin/elasticsearch -d

2.4 部署远程LogStash
与部署中心LogStash的步骤是类似的,只是配置文件不一样,使用新的配置文件启动即可;
配置文件conf/shipper.conf的内容为:
input {
	file {
		type => "type_count"
		path => ["/data/logs/count/stdout.log", "/data/logs/count/stderr.log"]
		exclude => ["*.gz", "access.log"]
	}   
}

output {
	stdout {}
	redis {
		host => "192.168.132.126"
		port => 6379
		data_type => "list"
		key => "key_count"
	}   
}

配置文件表示输入来自于目录/data/logs/count/下的stdout.log和stderr.log两个文件,且排除该目录下所 有.gz文件和access.log;(这里因为path没有使用通配符,所以exclude是没有效果的);输出表示将监听到的event发送到 redis服务器,使用redis的list保存,key为”key_count”,这里的data_type属性和key属性应该与中心agent的配置一致;
2.5 部署Kibana
下载并安装:
$ wget https://download.elasticsearch.org/kibana/kibana/kibana-3.1.1.tar.gz
$ tar zxvf kibana-3.1.1.tar.gz 


修改配置文件config.js,仅需要配置elasticsearch的地址即可:
elasticsearch: "http://192.168.132.126:9200"


将目录kibana-3.1.1拷贝到jetty的webapp目录下,并启动jetty:
$ mv kibana-3.1.1 /usr/local/jetty-distribution-9.2.1.v20140609/webapps/
$ bin/jetty start


浏览器访问:
http://192.168.132.126:8080/kibana-3.1.1/
1.
简单测试
2.
打开LogStash的远程agent和中心agent的日志:
$ tail -f logs/stdout.log

远程agent的数据是以rpush操作将event推送到redis的list中,中心agent通过blpop命令从redis的list中提取数据,因此,测试时由于数据量小,通过命令llen key_count的返回结果很可能为空,因此为了观察redis中数据流的变化,可以使用monitor命令:
$ redis-cli -p 6379 monitor

现在,我们向/data/logs/count目录下的stdout.log和stderr.log各发送一条数据:
$ echo "stdout: just a test message" >> stdout.log
$ echo "stderr: just a test message" >> stderr.log

远程agent和中心agent都会收到event消息,如远程agent的日志为:
{:timestamp=>"2016-11-01T09:30:40.323000+0800", :message=>"Received line", :path=>"/data/logs/count/stdout.log", :text=>"stdout: just a test message", :level=>:debug, :file=>"logstash/inputs/file.rb", :line=>"134"}
{:timestamp=>"2016-11-01T09:30:40.325000+0800", :message=>"writing sincedb (delta since last write = 52)", :level=>:debug, :file=>"filewatch/tail.rb", :line=>"177"}
......
{:timestamp=>"2014-10-31T09:30:49.350000+0800", :message=>"Received line", :path=>"/data/logs/count/stderr.log", :text=>"stderr: just a test message", :level=>:debug, :file=>"logstash/inputs/file.rb", :line=>"134"}
{:timestamp=>"2016-11-01T09:30:49.352000+0800", :message=>"output received", :event=>{"message"=>"stderr: just a test message", "@version"=>"1", "@timestamp"=>"2016-11-01T01:30:49.350Z", "type"=>"type_count", "host"=>"dn1", "path"=>"/data/logs/count/stderr.log"}, :level=>:debug, :file=>"(eval)", :line=>"19"}


我们可以观察到redis的输出:
1414714174.936642 [0 192.168.132.128:54010] "rpush" "key_count" "{\"message\":\"stdout: just a test message\",\"@version\":\"1\",\"@timestamp\":\"2016-11-01T00:10:04.530Z\",\"type\":\"type_count\",\"host\":\"dn1\",\"path\":\"/data/logs/count/stdout.log\"}"
1414714174.939517 [0 127.0.0.1:56094] "blpop" "key_count" "0"
1414714198.991452 [0 192.168.132.128:54010] "rpush" "key_count" "{\"message\":\"stderr: just a test message\",\"@version\":\"1\",\"@timestamp\":\"2016-11-01T00:10:28.586Z\",\"type\":\"type_count\",\"host\":\"dn1\",\"path\":\"/data/logs/count/stderr.log\"}"
1414714198.993590 [0 127.0.0.1:56094] "blpop" "key_count" "0"


从elasticsearch中执行如下的简单查询:
$ curl 'localhost:9200/_search?q=type:type_count&pretty'
{
  "took" : 3,
  "timed_out" : false,
  "_shards" : {
	"total" : 6,
	"successful" : 6,
	"failed" : 0
  },
  "hits" : {
	"total" : 2,
	"max_score" : 0.5945348,
	"hits" : [ {
	  "_index" : "logstash-2016-11-01",
	  "_type" : "type_count",
	  "_id" : "w87bRn8MToaYm_kfnygGGw",
	  "_score" : 0.5945348,
	  "_source":{"message":"stdout: just a test message","@version":"1","@timestamp":"2016-11-01T08:10:04.530+08:00","type":"type_count","host":"dn1","path":"/data/logs/count/stdout.log"}
	}, {
	  "_index" : "logstash-2016-11-01",
	  "_type" : "type_count",
	  "_id" : "wwmA2BD6SAGeNsuYz5ax-Q",
	  "_score" : 0.5945348,
	  "_source":{"message":"stderr: just a test message","@version":"1","@timestamp":"2016-11-01T08:10:28.586+08:00","type":"type_count","host":"dn1","path":"/data/logs/count/stderr.log"}
	} ]
  }
}

再切换到Kibana的web界面:http://192.168.132.126:8080/kibana-3.1.1

4. 后续工作

使用LogStash的Filter对日志数据进行过滤和分析;
使用Redis的Cluster模式替换单机模式;
在elasticsearch中对数据进行高级的分析和查询;
熟悉Kibana的展示组件以及查询语法;
  • 大小: 42 KB
分享到:
评论

相关推荐

    elk日志收集搭建教程,最详细的教程,无套路

    elk日志收集搭建教程,最详细的教程,真心推荐

    霍城延-ELK实时日志收集系统搭建.pdf

    通过ELK系统实时收集日志到ES系统。详细的安装和使用步骤。

    elk日志收集系统集群搭建资源包

    elasticsearch+kibana+logstash

    StirngBoot+ELK+Kafka记录日志,超详细搭建过程!

    实现功能 1.可视化展示日志 2.根据日记等级,日志内容,时间匹配日志 ...3.最后kibana将elasticsearch收集的日志进行展示 下面详细讲解搭建过程,分成部分 一.环境准备 二 .SpringBoot+logback配置 三.ELK环境搭建 四.

    Elk+filebeat搭建日志系统1

    1、Filebeat负责收集应用写到磁盘上的日志,并将日志发送给logstash 2、logstash处理来自filebeat的日志,并将处理后的日志保存ela

    Docker构建ELK Docker集群日志收集系统

    为了在Docker集群中更好的管理查看日志 我们使用Docker 来搭建集群的ELK日志收集系统,这篇文章介绍了Docker构建ELK Docker集群日志收集系统的相关资料,需要的朋友可以参考下

    ELK详细搭建及使用笔记word文档

    一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。 Kibana:Web前端,可以将ElasticSearch检索后的日志转化为各种...

    搭建日志服务器ELK

    ELK这三个开源工具的关系,简单来说就是logstatsh 收集日志,存到elasticserach (存储,产生索引,搜索),再由kibana展现(view)。

    3.1 ELK环境搭建和使用1

    第一章 部署准备1.1 目的使用 ELK 搭建日志收集和分析系统,将所有的应用日志、系统日志等做统一收集、存储、查询、分析等管理动作,提供 API 和 web

    ELK搭建手册

    收集-能够采集多种来源的日志数据 传输-能够稳定的把日志数据传输到中央系统 存储-如何存储日志数据 分析-可以支持 UI 分析 警告-能够提供错误报告,监控机制 ELK提供了一整套解决方案,并且都是开源软件,之间...

    elk搭建测试文档

    ELK(Elasticsearch + Logstash + Kibana)是一套开源的日志管理方案,分析网站的访问情况时我们一般会借助... Logstash:负责日志的收集,处理和储存; Elasticsearch:负责日志检索和分析; Kibana:负责日志的可视化。

    使用ELK搭建日志集中分析平台实践

    Elasticsearch+Logstash+Kibana(ELK)是一套开源的日志管理方案,分析网站的访问情况时我们...Logstash:负责日志的收集,处理和储存Elasticsearch:负责日志检索和分析Kibana:负责日志的可视化ELK(Elasticsearch+

    linu 搭建ELK(es+kibana+logstash)安装包

    新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。 Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、...

    ELK+Redis 收集tomcat日志文件

    centos6.7 成功搭建并运行elk+redis 按照文档来基本都能成功。

    详解利用ELK搭建Docker容器化应用日志中心

    本文即将阐述如何利用ELK日志中心来收集容器化应用程序所产生的日志,并且可以用可视化的方式对日志进行查询与分析,其架构如下图所示: 架构图 镜像准备 镜像准备 ElasticSearch镜像 Logstash镜像 Kibana镜像...

    Docker安装ELK并实现JSON格式日志分析的方法

    ELK是elastic公司提供的一套完整的日志收集以及前端展示的解决方案,是三个产品的首字母缩写,分别是ElasticSearch、Logstash和Kibana。 其中Logstash负责对日志进行处理,如日志的过滤、日志的格式化等;Elastic...

    ELK7.1.1+FileBeat 收集日志.pdf

    基础ElasticSearch7.1.1版本搭建日志收集框架;采用FileBeat采集log日志,通过logstash过滤后导入ES

    ELK6.2.4搭建

    Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。 Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web ...

Global site tag (gtag.js) - Google Analytics