开yun体育网数据会不会丢失?这里-开云官网登录入口 开云app官网入口

Logstash 开yun体育网
一 应用场景描述
当今比拟流行的ELK框架,即Elasticsearch,Logstash,Kibana三个开源软件的组合来构建日记平台。其中Elasticsearch用于日记搜索,Logstash用于日记的集聚,过滤,责罚等,Kibana用于日记的界面展示。
二 Logstash先容
Logstash是一款用于罗致,责罚并输出日记的器用。Logstash不错责罚多样各类的日记,包括系统日记,WEB容器日记如Apache日记和Nginx日记和Tomcat日记等,多样应用日记等。
三 Logstash简便使用
Logstash是用ruby话语编写,Jruby手脚ruby讲解器。是以运行Logstash只需要装配Java就行。本文示例使用的是logstash-5.1.1版块,条款java使用1.8版块。
由于logstash使用的是Jruby 是以需要装配java 运行环境。
下载后实施 tar zxvf logstash-5.1.1.tar.gz 解压。
Cd 到bin 目次 不错号召行实施
使用bin/logstash agent --help 检讨参数证据
-e 背面径直跟成立信息,而欠亨过-f 参数指定成立文献。不错用于快速测试
在号召交运行
$ bin/logstash -e 'input {stdin {}开yun体育网 } output {stdout {} }'
然后再输入一些信息
$ bin/logstash -e 'input {stdin {} } output {stdout {} }'
hello world
2015-01-31T12:02:20.438+0000 xxxxx hello world
这里通过stdin输入信息,然后通过stdout输出信息。在输入hello world后Logstash将责罚后的信息输出到屏幕
$ bin/logstash -e 'input {stdin {} } output {stdout { codec => rubydebug } }'
goodnight moon
{
"message" => "goodnight moon",
"@version" => "1",
"@timestamp" => "2015-01-31T12:09:38.564Z",
"host" => "xxxx-elk-log"
}
Elasticsearch
ElasticSearch是一个基于Lucene的搜索就业器。它提供了一个散播式多用户身手的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开导的。
一ElasticSearch架构旨趣
ElasticSearch 把从logtash新收到的数据写到新的索引文献里。
Lucene 把每次生成的倒排索引,叫作念一个段(segment)。然后另外使用一个
commit 文献,记载索引内悉数的 segment。而生成 segment 的数据起原,则是内
存中的 buffer。动态更新经过如下:
1. 刻下索引有 3 个 segment 可用。索引现象如图 2-1;
2. 新罗致的数据参预内存 buffer。
3. 内存 buffer 刷到磁盘,生成一个新的 segment,commit 文献同步更新
期骗磁盘缓存已矣的准及时检索
既然触及到磁盘,那么一个不可幸免的问题就来了:磁盘太慢了!对咱们要务及时
性很高的就业来说,这种责罚还不够。是以,在第 3 步的责罚中,还有一个中间状
态:
1. 内存 buffer 生成一个新的 segment,刷到文献系统缓存中,Lucene 即可检索
这个新 segment。
2. 文献系统缓存实在同步到磁盘上,commit 文献更新。达到图 2-3 中的现象。
这一步刷到文献系统缓存的步履,在 Elasticsearch 中,是默许诞生为 1 秒停止
的,关于大大齐应用来说,险些就极度于是及时可搜索了。Elasticsearch 也提供了
单独的 /_refresh 接口,用户如果对 1 秒停止还颓丧奋的,不错主动调用该接
口来保证搜索可见。
注:5.0 中还提供了一个新的肯求参数: ?refresh=wait_for ,不错在写入数据
后不彊制刷新但一直比及刷新才复返。
不外关于 Elastic Stack 的日记场景来说,刚巧违反,咱们并不需要如斯高的及时
性,而是需要更快的写入性能。是以,一般来说,咱们反而分解过 /_settings
接口大商定制 template 的样子,加大 refresh_interval 参数:
# curl -XPOST http://127.0.0.1:9200/logstash-2015.06.21/_setting
s -d'
{ "refresh_interval": "10s" }
'如果是导入历史数据的场所,那以致不错先十足关闭掉:
segment、buffer和translog对及时性的影响
# curl -XPUT http://127.0.0.1:9200/logstash-2015.05.01 -d'
{
"settings" : {
"refresh_interval": "-1"
}
}'
在导入完成以后,修改回想大约手动调用一次即可:
# curl -XPOST http://127.0.0.1:9200/logstash-2015.05.01/_refresh
translog 提供的磁盘同步范畴
既然 refresh 仅仅写到文献系统缓存,那么第 4 步写到本色磁盘又是有什么来范畴
的?如果这时间发生主机无理、硬件故障等特别情况,数据会不会丢失?
这里,其实有另一个机制来范畴。Elasticsearch 在把数据写入到内存 buffer 的同
时,其实还另外记载了一个 translog 日记。也即是说,第 2 步并不是图 2-2 的状
态,而是像图 2-5 这么:
在第 3 和第 4 步,refresh 发生的时辰,translog 日记文献也曾保合手原样,如图 2-
6:
也即是说,如果在这时间发生特别,Elasticsearch 会从 commit 位置开动,收复整
个 translog 文献中的记载,保证数据一致性。
比及实在把 segment 刷到磁盘,且 commit 文献进行更新的时辰, translog 文献才
清空。这一步,叫作念 flush。不异,Elasticsearch 也提供了 /_flush 接口。
关于 flush 操作,Elasticsearch 默许诞生为:每 30 分钟主动进行一次 flush,大约
当 translog 文献大小大于 512MB (老版块是 200MB)时,主动进行一次 flush。这两
个行为,不错辞别通过 index.translog.flush_threshold_period 和
index.translog.flush_threshold_size 参数修改。
如果对这两种范畴样子齐颓丧奋,Elasticsearch 还不错通过
index.translog.flush_threshold_ops 参数,范畴每收到些许条数据后 flush
一次。
二 ElasticSearch装配成立
ElasticSearch官方网站下载解压后bin目次 运行ElasticSearch 即可,ElasticSearch默许是使用9200端口。
ElasticSearch成立汉典机看望需要在elasticsearch.yml成立network.host: 0.0.0.0
Elasticsearch 启动的时辰不成使用 root用户,需要更换一个用户。
Kibana#elasticsearch#
1.Kibana先容
Kibana是一个基于浏览器页面的Elasticsearch前端展示器用。Kibana一谈使用HTML话语和Javascript编写的。Kibana的web 就业器使用的是nodejs。
2.装配成立Kibana
径直解压压缩包,启动bin目次下的 kibana. Kibana使用NodeJs,成立Kibana的web就业汉典机不错看望需要修改kibana.yml成立server.host: "0.0.0.0"。
ELK 散播式部署
在需要集聚日记的悉数就业机器上部署logstash,手脚logstash agent用于监控并过滤集聚日记,将过滤后的内容发送到Redis, 通过Kibana 页面展示。结构大体如下图。
装配部署步履
两台虚机一个是ubuntu 一个是centos,在ubuntu上装上logstash agent 让他监控 tomcat的log 日记然后把监控信息输出到 redis上,成立的 conf 如下图
启动
然后再装配一个 logstash 手脚index 将redis的集聚信息发送给 在centos上装配的 elasticsearch。手脚index的 logstash conf 成立 如下
Hosts 即是 elasticsearch 地点的ip。、
启动
在centos装配 kibana。
启动 elasticsearch。
启动kibana
在windows机上掀开 浏览器 看望 http://192.168.28.112:5601/
遵守如图
ELK 和soc整合
Kibana 在ELK中主如果作念前端展示作用,在和SOC整合时不错探讨只用elasticsearch 和logstash agent index 就不错。 Elasticsearch 的rest 通过 9200 端口不错用curl 大约 浏览器径直创建检索和查询遵守。 Elasticsearch提供java的 rest client ,咱们不错通过
rest client 提供的接口类来已矣索引的创建和查询
代码截图
索引查询
try {
response = restClient.performRequest("GET", "/logstash-2017.01.16/type_count/AVlt0OE5nZJjoveOa64F",
Collections.singletonMap("pretty", "true"));
System.out.println(EntityUtils.toString(response.getEntity()));
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
查询 index logstash-2017.01.16 type 为 type_count id为AVlt0OE5nZJjoveOa64F 一札记载 遵守 复返如下
{
"_index" : "logstash-2017.01.16",
"_type" : "type_count",
"_id" : "AVlt0OE5nZJjoveOa64F",
"_version" : 1,
"found" : true,
"_source" : {
"path" : "/work/apache-tomcat-7.0.73/logs/catalina.out",
"@timestamp" : "2017-01-16T07:17:23.149Z",
"@version" : "1",
"host" : "xia-VirtualBox",
"message" : "信息: Server startup in 1885 ms",
"type" : "type_count",
"tags" : [ ]
}
}
