行动是治愈恐惧的良药,而犹豫、拖延将不断滋养恐惧。

es routing查询问题

Elasticsearchyyppdd 回复了问题 • 6 人关注 • 4 个回复 • 9346 次浏览 • 2016-06-15 19:51 • 来自相关话题

Packetbeat协议扩展开发教程(1)

Beatsmedcl 发表了文章 • 1 个评论 • 9543 次浏览 • 2015-12-30 21:02 • 来自相关话题

Packetbeat(https://www.elastic.co/products/beats/packetbeat
是一个开源的网络抓包与分析框架,内置了很多常见的协议解析,如HTPP、MySQL、Thrift等。但是网络协议有很多,如何扩展一个自己的协议呢,本文将为您介绍如何在Packetbeat基础上扩展实现您自己的协议。

开发环境:
1.Go语言
Packetbeat是由Go语言编写,具有高性能和易部署的特点,有关Go语言的更多信息请访问:https://golang.org/
2.Git
源码管理,相信大家都比较熟悉了。
3.Tcpdump
*nix下的抓包分析,可选,用于调试。
4.Mac本一台
Windows太伤,不建议。
5.IDE
推荐idea,其它只要你顺手都行。

这个教程给大家介绍的是编写一个SMTP协议的扩展,SMTP就是我们发邮件使用的协议,加密的比较麻烦,为了方便,本教程使用不加密的名文传输的SMTP协议,默认对应端口是25。

A.源码签出
登陆Github打开https://github.com/elastic/beats 

fork后得到你自己的仓库,比如我的:https://github.com/medcl/packetbeat 
#创建相应目录
mkdir -p $GOPATH/src/github.com/elastic/ 
cd $GOPATH/src/github.com/elastic

#签出源码
git clone https://github.com/elastic/beats.git
cd beats

#修改官方仓库为upstream源,设置自己的仓库为origin源
git remote rename origin upstream
git remote add origin git@github.com:medcl/packetbeat.git

#获取上游最新的代码,如果是刚fork的话可不用管
git pull upstream master

#签出一个名为smtpbeat的分支,用于开发这个功能
git checkout -b smtpbeat

#切换到packetbeat模块
cd packetbeat

#获取依赖信息
(mkdir -p $GOPATH/src/golang.org/x/&&cd $GOPATH/src/golang.org/x &&git clone https://github.com/golang/tools.git )
go get github.com/tools/godep

#编译
make

编译出来的文件:packetbeat就在根目录
现在我们测试一下
修改etc/packetbeat.yml,在output下面的elasticsearch下面添加enabled: true,默认是不启用的,另外如果你的Elasticsearch安装了Shield,比如我的Elasticsearch的用户名和密码都是tribe_user,哦,忘了说了,我们的Elasticsearch跑在本机。
packetbeat.yml的详细配置可参见:https://www.elastic.co/guide/e ... .html 
output:
elasticsearch:
enabled: true
hosts: ["localhost:9200"]
username: "tribe_user"
password: "tribe_user"

现在可以运行命令启动packetbeat了,默认会监听所有内置的协议,如HTTP、DNS等。
./packetbeat -e -c etc/packetbeat.yml  -d "publish"

介绍一下常用的参数:
-N dry run模式,不实际output存储日志
-e 控制台输出调试日志
-d 仅显示对应logger的日志

好的,我们打开几个网页,控制台会有相应的输出,如下:
2015/12/29 14:24:39.965037 preprocess.go:37: DBG  Start Preprocessing
2015/12/29 14:24:39.965366 publish.go:98: DBG Publish: {
"@timestamp": "2015-12-29T14:24:39.709Z",
"beat": {
"hostname": "medcls-MacBook.local",
"name": "medcls-MacBook.local"
},
"bytes_in": 31,
"bytes_out": 115,
"client_ip": "192.168.3.10",
"client_port": 53669,
"client_proc": "",
"client_server": "",
"count": 1,
"direction": "out",
"dns": {
"additionals_count": 0,
"answers": [
{
"class": "IN",
"data": "www.a.shifen.com",
"name": "sp2.baidu.com",
"ttl": 333,
"type": "CNAME"
}
],
"answers_count": 1,
"authorities": [
{
"class": "IN",
"data": "ns1.a.shifen.com",
"expire": 86400,
"minimum": 3600,
"name": "a.shifen.com",
"refresh": 5,
"retry": 5,
"rname": "baidu_dns_master.baidu.com",
"serial": 1512240003,
"ttl": 12,
"type": "SOA"
}
],
"authorities_count": 1,
"flags": {
"authoritative": false,
"recursion_allowed": true,
"recursion_desired": true,
"truncated_response": false
},
"id": 7435,
"op_code": "QUERY",
"question": {
"class": "IN",
"name": "sp2.baidu.com",
"type": "AAAA"
},
"response_code": "NOERROR"
},
"ip": "192.168.3.1",
"method": "QUERY",
"port": 53,
"proc": "",
"query": "class IN, type AAAA, sp2.baidu.com",
"resource": "sp2.baidu.com",
"responsetime": 18,
"server": "",
"status": "OK",
"transport": "udp",
"type": "dns"
}
2015/12/29 14:24:39.965774 preprocess.go:94: DBG Forward preprocessed events
2015/12/29 14:24:39.965796 async.go:42: DBG async forward to outputers (1)
2015/12/29 14:24:40.099973 output.go:103: DBG output worker: publish 2 events

然后Elasticsearch应该就会有数据进去了,我们看看:
curl http://localhost:9200/_cat/indices\?pretty\=true -u tribe_user:tribe_user
yellow open packetbeat-2015.12.29 5 1 135 0 561.2kb 561.2kb

至此,packetbeat源码的build成功,我们整个开发流程已经跑通了,下一节正式开始介绍SMTP协议的扩展。

关于es内存配置的问题,怎么解决隔几天es内存占用激增的问题。

Elasticsearchjiaofuyou 回复了问题 • 4 人关注 • 1 个回复 • 12281 次浏览 • 2015-12-31 09:04 • 来自相关话题

ES冷热分离(读写分离) hot, stale 场景

Elasticsearchjiaofuyou 回复了问题 • 14 人关注 • 6 个回复 • 23733 次浏览 • 2016-01-13 13:36 • 来自相关话题

本机安装es后dsl查询不起作用

Elasticsearchmedcl 回复了问题 • 2 人关注 • 1 个回复 • 4127 次浏览 • 2015-12-29 19:35 • 来自相关话题

在kibana4中修改默认地图为高德地图后页面地图显示成了白板

Kibanabird 回复了问题 • 17 人关注 • 9 个回复 • 17430 次浏览 • 2017-01-23 17:00 • 来自相关话题

关于提示TooManyClauses[maxClauseCount is set to 1024]的问题。

Elasticsearchatomyliu 发表了文章 • 0 个评论 • 11925 次浏览 • 2015-12-29 16:26 • 来自相关话题

今天头一次出现的,其实也不算什么问题。
通过数据库获取到了1126个条件数据,然后叠加进bool进行查询,直接抛出个异常:
TooManyClauses[maxClauseCount is set to 1024]
问了Medcl大神,得知是超过默认搜索条件大小的问题,可以通过参数修改
index.query.bool.max_clause_count: 4096
M大也说,太BT了。。。 这么多条件查询。。。
我也觉得挺BT的,自己想想都有点小激动,太佩服自己了。。。
今天头一次出现的,其实也不算什么问题。
通过数据库获取到了1126个条件数据,然后叠加进bool进行查询,直接抛出个异常:
TooManyClauses[maxClauseCount is set to 1024]
问了Medcl大神,得知是超过默认搜索条件大小的问题,可以通过参数修改
index.query.bool.max_clause_count: 4096
M大也说,太BT了。。。 这么多条件查询。。。
我也觉得挺BT的,自己想想都有点小激动,太佩服自己了。。。

elasticsearch使用river同步mysql数据,schedule设置问题

Elasticsearchznketophawk 回复了问题 • 1 人关注 • 2 个回复 • 4793 次浏览 • 2015-12-29 16:46 • 来自相关话题

我用RPM包安装,但凡安装插件后,ES就连接不上

Elasticsearchmedcl 回复了问题 • 2 人关注 • 1 个回复 • 4261 次浏览 • 2015-12-29 14:22 • 来自相关话题

license更新失败

回复

Elasticsearchrece 发起了问题 • 2 人关注 • 0 个回复 • 8440 次浏览 • 2015-12-28 22:42 • 来自相关话题

es复杂聚合问题

回复

Elasticsearch匿名用户 发起了问题 • 1 人关注 • 0 个回复 • 4189 次浏览 • 2015-12-28 17:07 • 来自相关话题

ES查询增加排序效率低下

Elasticsearchzttech 回复了问题 • 5 人关注 • 4 个回复 • 10326 次浏览 • 2016-01-04 21:00 • 来自相关话题

Day24: Elasticsearch添加Shield后TransportClient如何连接?

Adventmedcl 发表了文章 • 6 个评论 • 7703 次浏览 • 2015-12-28 12:13 • 来自相关话题

Shield是Elasticsearch一个安全防护插件,提供了权限访问控制和日志审计功能,企业可以很方便的和LDAP或是ActiveDirectory进行集成,重用现有的安全认证体系.

shield-triad.png


Elasticsearch使用了Shield后,Elasticsearch就需要权限才能访问了,和默认的调用方式有些不同,下面简单介绍一下HTTP和TCP两种方式的连接.

关于Shield的安装和配置我这里不就具体介绍,创建了一个用户名和密码都是tribe_user的用户,权限是admin.

1.HTTP方式
现在直接访问es的http接口就会报错

curl http://localhost:9200

{"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication token for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"shield\""}}],"type":"security_exception","reason":"missing authentication token for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"shield\""}},"status":401}

shield支持HttpBasic验证,所以正确的访问姿势是:

curl -u tribe_user:tribe_user http://localhost:9200 { "name" : "Melter", "cluster_name" : "elasticsearch", "version" : { "number" : "2.1.1", "build_hash" : "805c528f3167980046f224310f9147fa745e5371", "build_timestamp" : "2015-12-09T20:23:16Z", "build_snapshot" : false, "lucene_version" : "5.3.1" }, "tagline" : "You Know, for Search" }

如果是浏览器访问的话,第一次访问会弹出验证窗口,后续只要不关闭这个浏览器保持这个session就能一直访问.
注意http basic是不安全的认证方式,仅供开发调试使用,生产环境还需要结合HTTPS的加密通道使用.

2.TransportClient方式的访问Shield加防的Elasticsearch,稍微麻烦点,需要依赖Shield的包,步骤如下:
2.1 如果你是maven管理的项目,在pom.xml文件里添加Elasticsearch的maven仓库源,如下:

<repositories> 
<repository> 
<id>elasticsearch-releases</id> 
<url>https://maven.elasticsearch.or ... gt%3B 
<releases> <enabled>true</enabled> </releases> 
<snapshots> <enabled>false</enabled> </snapshots> 
</repository> 
</repositories>

2.2 添加依赖的配置

<dependency> 
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>shield</artifactId>
<version>2.1.1</version>
</dependency

2.3 构建TransportClient的地方增加访问用户的配置

import org.elasticsearch.shield.ShieldPlugin; import org.elasticsearch.shield.authc.support.SecuredString; import static org.elasticsearch.shield.authc.support.UsernamePasswordToken.basicAuthHeaderValue;

String clusterName="elasticsearch"; String ip= "127.0.0.1"; 
Settings settings = Settings.settingsBuilder()   
.put("cluster.name", clusterName)
 .put("shield.user", "tribe_user:tribe_user") 
.build(); 
try { client = TransportClient.builder() 
.addPlugin(ShieldPlugin.class) 
.settings(settings).build() 
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(ip),9300)); 
String token = basicAuthHeaderValue("tribe_user", new SecuredString("tribe_user".toCharArray()));   client.prepareSearch()
.putHeader("Authorization", token).get();   } 
catch (UnknownHostException e) 
{ logger.error("es",e); }
 
现在的编辑器贴代码有点恶心,可以看这里:
http://log.medcl.net/item/2015 ... -1252

感谢elastic送来的圣诞礼物!

默认分类atomyliu 发表了文章 • 2 个评论 • 3894 次浏览 • 2015-12-28 10:01 • 来自相关话题

圣诞节收到了elastic圣诞老人medcl送来的圣诞礼物,在此特别感谢!
发个赞吧!
晒图@!

IMG_0245.JPG


IMG_0246.JPG


IMG_0247.JPG


IMG_0248.JPG


IMG_0249.JPG


IMG_0250.JPG


IMG_0251.JPG

居然有个瓶起子,看来不喝一台是不行了。。。
sugru据说是什么都能粘的‘硅胶’。。。
elastic的周边越来越强大了。
特别感谢medcl大神对中国地区elastic用户的关照!

大家好我用elasticsearch mapper-attachment然后查询很慢,我把返回的字段都限制了还是很慢,有没得人知道啊

Elasticsearchpaopao 回复了问题 • 3 人关注 • 2 个回复 • 4443 次浏览 • 2015-12-28 10:46 • 来自相关话题