用ELK打造可视化集中式日志

原文链接:https://yq.aliyun.com/articles/57420

摘要: Elk是Elastic search, Logstash和Kibana三者的简称。 Elastic search顾名思义是致力于搜索,它是一个弹性搜索的技术平台,与其相似的有Solr,二者的对比可参考下面这篇文章: Elastic search与Solr选型 总结一下就是,如果你不喜欢夜店咖还是喜欢忠实可靠的老婆,那选Elastic search准没错,何况他还有那么一点

Elk是Elastic search, Logstash和Kibana三者的简称。

Elastic search顾名思义是致力于搜索,它是一个弹性搜索的技术平台,与其相似的有Solr,二者的对比可参考下面这篇文章: 
Elastic search与Solr选型

总结一下就是,如果你不喜欢夜店咖还是喜欢忠实可靠的老婆,那选Elastic search准没错,何况他还有那么一点美。目前运用ES的案例也不少了,比如it屌丝们都爱的Git hub以及我D痛恨的Wiki。

Logstash,也可以顾名思义一下,stash的意思是藏匿处,所以……其实并不完全准确,Logstash是用来做日志采集,藏匿几乎就不由他管了,藏匿由谁管呢,聪明的看官肯定能猜到是ES了。但是这也不完全准确,在ELK的运维环境中肯定是ES没跑了,不过Logstash支持各种输出源,包括redis,s3,mongodb以及kafka,甚至对于情怀粉(不嘛,人家就喜欢刺刀,不要枪炮,拼刀才爷们)吧,还贴心的支持http的远程写文件方案。总之我们能想到的,作者也想到了,我们没能想到的,作者也想到了,如果有作者没能写到的,那也没关系,你可以自己写插件。什么?你写不出来?写不出来就不要瞎bb,找个现成能用的。相对应的,ES也支持各种输入源,从基本的stdin到file到redis到……

Kibana,呃,羔羊肉饼。估计作者是个洋鬼子北京情怀蜜吧,代码写多了,看着掉了一地的头发,想着要是能吃份东来顺的铜锅涮羊肉多好,然后取了这鬼名字吧。Kibana主要是用于ES分析和查询。Elk里本来完全可以不用带他的,用用ES的head和bigdesk插件也蛮好,不过Kibana的管理和查询用起来确实方便很多,人嘛,有枪炮用何必非要用刺刀,默默想到楼主的前东家。


那个奶妈形态的德鲁伊就是Logstash,agent只是Logstash承担的一个角色,与此对应的是indexer。agent会分别将各自获取的日志作为输入输出到一个消息代理(例如redis或者kafka),indexer会将消息代理作为输入再输出到ES上,由ES做indexing。其实Logstash在整个过程中只负责输入输出,对Logstash而言并没有agent和index之分。如果日志量小的话完全不需要设置indexer,直接将ES作为agent的输出源。

Elastic search

环境准备: 
Jdk7及以上,Logstash2.1明确只支持Jdk7。 
Elastic search, Kibana, Logstash下载地址 
ES不能以root权限启动。

楼主的环境; 
10.0.250.90 9200 9300 
10.0.250.90 9201 9301 
10.0.250.90 9200 9300 
第一个端口是对外提供http服务的接口,第二个端口是集群交换协议的端口。

cd /opt/elasticsearch-2.1.0/config
vim elasticsearch.yml

以10.0.250.90 9200 9300为例。 
修改集群名称,ES默认通过广播发现节点,所有在广播里声明为同一个集群名称的节点都会被自动加入集群中。

cluster.name: es

设置节点名称

node.name: es-node-2

````
此外可以通过node.master设置节点是否可以被推举为leader以及node.data设置节点是否保存索引数据。

节点的定制化属性信息,我把三个节点设成r1-r3

<div class="se-preview-section-delimiter"></div>

node.rack: r2

数据存储目录

<div class="se-preview-section-delimiter"></div>

path.data: /usr/local/data/

日志目录,默认生成的日志文件是${cluster.name}_xxx,可以通过logging.yml修改

<div class="se-preview-section-delimiter"></div>

path.logs: /var/log/es/

启动时是否就锁住内存,es是基于java,遵循java的内存回收,java内存分配一般会设定一个最小值(-Xms)和一个最大值(-Xmx),这样虽然能在空闲时节约内存,但是却会带来频繁的gc。所以es建议在启动时就锁定内存,并且es建议将主机一半可用内存分配给它。

<div class="se-preview-section-delimiter"></div>

bootstrap.mlockall: true

绑定网络地址,默认是127.0.0.1。可以通过transport.tcp.port设置项设置几圈交换协议的端口。

<div class="se-preview-section-delimiter"></div>

network.host: 10.0.250.91 
http.port: 9200

1. 设置初始化时的发现列表,新节点会通过单播的方式发现列表里的节点。
2. 设置有master资格的节点最小个数,低于这个个数可能会发生脑裂。es建议的个数是所有节点数/2+1。
所谓脑裂是指集群中有多个active的master节点,这样就导致多个节点接管集群服务。举个例子:
假设A,B,C三个节点都有master资格,A节点为active,其他未standby,但是A节点出了故障,这时B,C就要进行投票选出新的leader,此时的结果就可能会是B和C都互有两票,量个节点都分别active。
这里只是描述脑裂成因,和ES的脑裂成因并不完全一样,ES的投票机制应该是类似于redis先到先得的那种。不过配置上最好遵从es的建议。

<div class="se-preview-section-delimiter"></div>

discovery.zen.ping.unicast.hosts: [“10.0.250.90:9300”, “10.0.250.91:9300”] 
discovery.zen.minimum_master_nodes: 2

配置完以后,启动elastic

<div class="se-preview-section-delimiter"></div>

bin/elasticsearch 
curl http://10.0.250.91:9200 
curl http://10.0.250.91:9200/_nodes

通过curl命令查看下节点状态以及整个集群的节点状态。

推荐安装head插件,可以查看集群状态

<div class="se-preview-section-delimiter"></div>

bin/plugin install mobz/elasticsearch-head

bigdesk插件在当前版本上无法使用,因为ES通过Rest接口返回的json数据不标准,jquery会出parse错误。

通过浏览器访问http://10.0.250.91:9200/_plugin/head
![节点状态](http://img.blog.csdn.net/20151226175252443)

<div class="se-preview-section-delimiter"></div>

## Kibana ##
Kibana的安装也很简单,下载最新版本并安装。
我安装在251主机上。

<div class="se-preview-section-delimiter"></div>

vim config/kibana.yml

设置Kibana端口

<div class="se-preview-section-delimiter"></div>

server.port: 5601


设置提供rest查询服务的ES节点,设置了后Kibana就会通过这个节点查询信息了。

<div class="se-preview-section-delimiter"></div>

elasticsearch.url: “http://10.0.250.90:9200

设置Kibana自用索引,主要用来存储Kibana保存的一些内容,例如查询信息,报表等

<div class="se-preview-section-delimiter"></div>

kibana.index: “.eslogs”

启动Kibana

<div class="se-preview-section-delimiter"></div>

bin/kibana

访问Kibana,第一次使用时会让你建logstash的索引规则,默认为logstash-*,*代表日期,每天会生成一个新的索引。

<div class="se-preview-section-delimiter"></div>

## Logstash ##
Logstash的安装非常简单,下载最新版本并安装,我用的是2.1.1.

<div class="se-preview-section-delimiter"></div>

bin/logstash -e ”

-e ‘‘会默认以stdin作为输入,以stdout作为输出。
我在控制台输入11111,控制台就输出了格式化的输出。

<div class="se-preview-section-delimiter"></div>

11111 

“message” => “11111”, 
“@version” => “1”, 
“@timestamp” => “2015-12-26T10:00:23.422Z”, 
“type” => “stdin”, 
“host” => “0.0.0.0” 
}

接着,我们再测试一下以ES作为输出源,在ES根目录下:

<div class="se-preview-section-delimiter"></div>

mkdir config 
touch logstash-indexer.conf 
vim logstash-indexer.conf

修改logstash-indexer.conf定义输入源为stdin,输出为stdout以及ES.

<div class="se-preview-section-delimiter"></div>

input { 
stdin{ 
type=> “stdin-input” 


output { 
stdout { codec=> rubydebug } 
elasticsearch { 
hosts=> [“10.0.250.90:9200”] 
codec=> “json” 

}

启动Logstash

<div class="se-preview-section-delimiter"></div>

bin/logstash -f config/logstash-indexer.conf -l /var/log/logstash/logstash.log 
“` 
输入“hello this a test message”然后回车 

在Kibana那就能看到对应的日志信息 

时间: 2024-10-13 08:24:33

用ELK打造可视化集中式日志的相关文章

ELK+Filebeat+Nginx集中式日志解决方案(二)——添加ElasticSearch集群

一.使用说明: Elasticsearch插件:  Elasticsearch常用的几个插件为: # head # 地址  https://github.com/mobz/elasticsearch-head mobz/elasticsearch-head # kopf # 地址  https://github.com/lmenezes/elasticsearch-kopf lmenezes/elasticsearch-kopf # bigdesk # 地址 https://github.com

ELK + Filebeat +Nginx 集中式日志分析平台(一)

一.环境准备 本次我们采用 yum 官方仓库进行安装,之前采用 rpm 包安装的文档大家请看 http://blog.51cto.com/wzlinux/2175836 . 1.软件版本 Filebeat 6.5.1Logstash 6.5.1Elasticsearch 6.5.1Kibana 6.5.1JDK 1.8.0_181 2.服务器准备 IP 系统 角色 172.18.8.200 CentOS 7.5 Minimal Elasticsearch + Kibana 172.18.8.20

集中式日志分析平台 - ELK Stack - 安全解决方案 X-Pack

大数据之心 关注 0.6 2017.02.22 15:36* 字数 2158 阅读 16457评论 7喜欢 9 简介 X-Pack 已经作为 Elastic 公司单独的产品线,前身是 Shield, Watcher, Marvel, Graph, 和 reporting,先来说说这几个爸爸是做什么的吧: Shield: 提供对数据的 Password-Protect,以及加密通信.基于角色的权限控制,IP 过滤,审计,可以有效地: 防止未授权的访问:基于 Password-Protect,基于角

ELK+Filebeat 集中式日志解决方案详解

原文:ELK+Filebeat 集中式日志解决方案详解 链接:https://www.ibm.com/developerworks/cn/opensource/os-cn-elk-filebeat/index.html?ca=drs- ELK Stack 简介 ELK 不是一款软件,而是 Elasticsearch.Logstash 和 Kibana 三种软件产品的首字母缩写.这三者都是开源软件,通常配合使用,而且又先后归于 Elastic.co 公司名下,所以被简称为 ELK Stack.根据

安装logstash+kibana+elasticsearch+redis搭建集中式日志分析平台

本文是参考logstash官方文档实践的笔记,搭建环境和所需组件如下: Redhat 5.7 64bit / CentOS 5.x JDK 1.6.0_45 logstash 1.3.2 (内带kibana) elasticsearch 0.90.10 redis 2.8.4 搭建的集中式日志分析平台流程如下: elasticsearch 1.下载elasticsearch. wget https://download.elasticsearch.org/elasticsearch/elasti

集中式日志系统

1.复旦大学:集中式日志系统让数据挖掘更深入 http://www.edu.cn/zxz_6542/20140822/t20140822_1166702.shtml 2.基于Hadoop的携程集中式日志系统介绍 http://tech.it168.com/a2013/0418/1474/000001474008.shtml

集中式日志系统 ELK 协议栈详解

1.ELK介绍 1.1 elasticsearch 1.1.1 elasticsearch介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便. 1.1.2 elasticsearch几个重要术语 NRT elasticsea

集中式日志分析平台 Elastic Stack(介绍)

一.ELK 介绍 ELK 构建在开源基础之上,让您能够安全可靠地获取任何来源.任何格式的数据,并且能够实时地对数据进行搜索.分析和可视化. 最近查看 ELK 官方网站,发现新一代的日志采集器 Filebeat,他是 Beats 家族其中的一员,性能超越 logstash,部署简单,占用资源少,可以很方便的和 logstash,ES 对接. 从官方网站可以看出新一代 ELK 架构如下: 1.Beats Beats 平台集合了多种单一用途数据采集器.这些采集器安装后可用作轻量型代理,从成百上千或成千

ES 集中式日志分析平台 Elastic Stack(介绍)

一.ELK 介绍 ELK 构建在开源基础之上,让您能够安全可靠地获取任何来源.任何格式的数据,并且能够实时地对数据进行搜索.分析和可视化. 最近查看 ELK 官方网站,发现新一代的日志采集器 Filebeat,他是 Beats 家族其中的一员,性能超越 logstash,部署简单,占用资源少,可以很方便的和 logstash,ES 对接. 从官方网站可以看出新一代 ELK 架构如下: 1.Beats Beats 平台集合了多种单一用途数据采集器.这些采集器安装后可用作轻量型代理,从成百上千或成千