kibana使用geoip插件展示地图热力图
上图是我们最终的地图效果。
总体步骤:
一、使用logstash geoip插件解析IP字段;
二、配置geoip.location字段为geo_point类型。
三、使用kibana的Coordinate map作图。
具体步骤:
一、解析IP字段
使用logstash的geoip插件 logstash-filter-geoip 解析IP字段,需要在logstash的配置文件中配置geoip的解析配置,配置如下:
geoip {
source => "ip" //需要解析的IP地址
}
解析出的效果如下:
"geoip": {
"city_name": "Wuhan",
"timezone": "Asia/Shanghai",
"ip": "117.136.52.200",
"latitude": 30.5801,
"country_name": "China",
"country_code2": "CN",
"continent_code": "AS",
"country_code3": "CN",
"region_name": "Hubei",
"location": {
"lon": 114.2734,
"lat": 30.5801
},
"region_code": "42",
"longitude": 114.2734
}
备注:这个只是geoip的配置,解析日志的时候需要先解析出ip字段
二、配置geoip字段类型
IP经过logstash解析后就可以使用IP的所有解析信息了,但是如果想要在kibana中作图,就必须把geoip里面的相应信息配置成相应的字段类型,才能够被kibana识别,然后经过聚合作图。 需要配置的字段:geoip.location 需要配置的类型:geo_point 在mapping中的配置为:
"geoip" : {
"properties" : {
"location" : {
"type" : "geo_point",
"ignore_malformed": "true"
}
}
}
备注1: ignore_malformed 如果true,格式错误的地理位置被忽略。如果false(默认),格式错误的地理位置引发异常并拒绝整个文档。 此字段需要配置成true,以防地理格式错误导致文档被拒绝。 也可以在所以级别进行设置: "settings": { "index.mapping.ignore_malformed": true }
备注2:需要先设置mapping,再导入数据mapping才会生效,如果先导入数据,再设置mapping,则第二天八点后才会生效(北京时间)。
三、kibana作图
1、在kibana中打开visualize->coordinate map
2、选择相应的索引进行画图
3、选择geoip.location作为聚合字段,然后设置Options,调整地图效果即可。
上图是我们最终的地图效果。
总体步骤:
一、使用logstash geoip插件解析IP字段;
二、配置geoip.location字段为geo_point类型。
三、使用kibana的Coordinate map作图。
具体步骤:
一、解析IP字段
使用logstash的geoip插件 logstash-filter-geoip 解析IP字段,需要在logstash的配置文件中配置geoip的解析配置,配置如下:
geoip {
source => "ip" //需要解析的IP地址
}
解析出的效果如下:
"geoip": {
"city_name": "Wuhan",
"timezone": "Asia/Shanghai",
"ip": "117.136.52.200",
"latitude": 30.5801,
"country_name": "China",
"country_code2": "CN",
"continent_code": "AS",
"country_code3": "CN",
"region_name": "Hubei",
"location": {
"lon": 114.2734,
"lat": 30.5801
},
"region_code": "42",
"longitude": 114.2734
}
备注:这个只是geoip的配置,解析日志的时候需要先解析出ip字段
二、配置geoip字段类型
IP经过logstash解析后就可以使用IP的所有解析信息了,但是如果想要在kibana中作图,就必须把geoip里面的相应信息配置成相应的字段类型,才能够被kibana识别,然后经过聚合作图。 需要配置的字段:geoip.location 需要配置的类型:geo_point 在mapping中的配置为:
"geoip" : {
"properties" : {
"location" : {
"type" : "geo_point",
"ignore_malformed": "true"
}
}
}
备注1: ignore_malformed 如果true,格式错误的地理位置被忽略。如果false(默认),格式错误的地理位置引发异常并拒绝整个文档。 此字段需要配置成true,以防地理格式错误导致文档被拒绝。 也可以在所以级别进行设置: "settings": { "index.mapping.ignore_malformed": true }
备注2:需要先设置mapping,再导入数据mapping才会生效,如果先导入数据,再设置mapping,则第二天八点后才会生效(北京时间)。
三、kibana作图
1、在kibana中打开visualize->coordinate map
2、选择相应的索引进行画图
3、选择geoip.location作为聚合字段,然后设置Options,调整地图效果即可。
收起阅读 »elasticsearch.yml 个人解读
- 属性 cluster.name 如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。
- 属性 node.name 节点名可以忽略
- 属性 node.master 指定该节点是否有资格被选举成为node,默认是true
- 属性 index.number_of_shard 设置默认索引分片个数,默认为5片
- 属性 index.number_of_replica 设置默认索引副本个数,默认为1个副本
- 属性 path.conf 设置配置文件的存储路径,默认是es根目录下的config文件夹。
- 属性 path.data 设置索引数据的存储路径,默认是es根目录下的data文件夹
- 属性 path.work 设置临时文件的存储路径,默认是es根目录下的work文件夹
- 属性 path.logs 设置日志文件的存储路径,默认是es根目录下的logs文件夹
- 属性 path.repo 快照存储路径
- 属性 gateway.recover_after_nodes 设置集群中N个节点启动时进行数据恢复,默认为1
- 属性 network.host 映射出来的ip
- 属性 transport.tcp.port 设置节点间交互的tcp端口,默认是9300
- 属性 http.port: 9200 设置对外服务的http端口,默认为9200
- 属性 index.number_of_replicas 索引的复制副本数量
- 属性 indices.fielddata.cache.size fielddata缓存限制,默认无限制
- 属性 indices.breaker.fielddata.limit fielddata级别限制,默认为堆的60%
- 属性 indices.breaker.request.limit request级别请求限制,默认为堆的40%
- 属性 indices.breaker.total.limit 保证上面两者组合起来的限制,默认堆的70%
- 属性 discovery.zen.ping.multicast.enabled 是否广播模式,默认true,广播模式即同一个网段的ES服务只要集群名[cluster.name]一致,则自动集群
- 属性 discovery.zen.ping.unicast.hosts 手动指定,哪个几个可以ping通的es服务做集群,注意该设置应该设置在master节点上,data节点无效
----------------------------------------------------------------------------------------------------------------------------------
GC Logging
monitor.jvm.gc.young.warn: 1000ms
monitor.jvm.gc.young.info: 700ms
monitor.jvm.gc.young.debug: 400ms
monitor.jvm.gc.old.warn: 10s
monitor.jvm.gc.old.info: 5s
monitor.jvm.gc.old.debug: 2s
- 属性 cluster.name 如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。
- 属性 node.name 节点名可以忽略
- 属性 node.master 指定该节点是否有资格被选举成为node,默认是true
- 属性 index.number_of_shard 设置默认索引分片个数,默认为5片
- 属性 index.number_of_replica 设置默认索引副本个数,默认为1个副本
- 属性 path.conf 设置配置文件的存储路径,默认是es根目录下的config文件夹。
- 属性 path.data 设置索引数据的存储路径,默认是es根目录下的data文件夹
- 属性 path.work 设置临时文件的存储路径,默认是es根目录下的work文件夹
- 属性 path.logs 设置日志文件的存储路径,默认是es根目录下的logs文件夹
- 属性 path.repo 快照存储路径
- 属性 gateway.recover_after_nodes 设置集群中N个节点启动时进行数据恢复,默认为1
- 属性 network.host 映射出来的ip
- 属性 transport.tcp.port 设置节点间交互的tcp端口,默认是9300
- 属性 http.port: 9200 设置对外服务的http端口,默认为9200
- 属性 index.number_of_replicas 索引的复制副本数量
- 属性 indices.fielddata.cache.size fielddata缓存限制,默认无限制
- 属性 indices.breaker.fielddata.limit fielddata级别限制,默认为堆的60%
- 属性 indices.breaker.request.limit request级别请求限制,默认为堆的40%
- 属性 indices.breaker.total.limit 保证上面两者组合起来的限制,默认堆的70%
- 属性 discovery.zen.ping.multicast.enabled 是否广播模式,默认true,广播模式即同一个网段的ES服务只要集群名[cluster.name]一致,则自动集群
- 属性 discovery.zen.ping.unicast.hosts 手动指定,哪个几个可以ping通的es服务做集群,注意该设置应该设置在master节点上,data节点无效
----------------------------------------------------------------------------------------------------------------------------------
GC Logging
monitor.jvm.gc.young.warn: 1000ms
monitor.jvm.gc.young.info: 700ms
monitor.jvm.gc.young.debug: 400ms
monitor.jvm.gc.old.warn: 10s
monitor.jvm.gc.old.info: 5s
monitor.jvm.gc.old.debug: 2s 收起阅读 »
Elasticsearch mapping 配置个人解读
配置详解
文件中"mapping":{}中的内容,即为创建索引的mappingsource 如:
"mappings": {
"_default_" : { //@1
"_all" : {"enabled" : true}, //@2
"properties" : { //@3
"tableType" : {"type" : "string", "index" : "no", "include_in_all" : false, "store": true}, //@4
"caption" : {"type" : "string", "index" : "no", "include_in_all" : false, "store": true},
"code" : {"type" : "string", "index" : "no", "include_in_all" : false, "store": true},
"description" : {"type" : "string", "index" : "no", "include_in_all" : false, "store": true},
"perm" : {"type" : "string", "index" : "not_analyzed", "include_in_all" : false}
}
},
"ec02_goodsinfo" : { //@5
"_all" : {"enabled" : true}, //@6
"properties" : { //@7
"tableType" : {"type" : "string", "index" : "no", "include_in_all" : false, "store": true},
"caption" : {"type" : "string", "index" : "no", "include_in_all" : false, "store": true},
"code" : {"type" : "string", "index" : "no", "include_in_all" : false, "store": true},
"description" : {"type" : "string", "index" : "no", "include_in_all" : false, "store": true},
"perm" : {"type" : "string", "index" : "not_analyzed", "include_in_all" : false},
"bill":{ //@8
properties" : {
"CreateYear" : {"type" : "string", "index" : "not_analyzed", "include_in_all" : true} //@9
}
}
}
}
}- @1 _default_所有单据默认的创建索引的配置
- @2 _all{} 每个单据下所有的字段配置,"enabled" : true 所有字段创建索引,false 所有字段禁止创建索引,[*注意]除非properties指定的字段,默认字段类型将自动匹配
- @3 properties {},每个单据下字段或者properties的指定配置
- @4 properties {}中指定了属性(properties):"tableType"的检索配置,type:string > 类型字符串,include_in_all:false > 改字段或者属性不包含在单据的所有字段中,"store": true > 储存在数据库中
- @5 ec02_goodsinfo 表示对单据 "ec02_goodsinfo" 的特定检索配置
- @6 _all{} 只对"ec02_goodsinfo"单据下所有的字段配置
- @7 properties {},只对"ec02_goodsinfo"单据下字段或者properties的指定配置
- [*注意]@8,@9 bill在单据中额字段都会包括一层bill,所以如果要对单据中某个字段指定需要套一层bill{}
-----------------------------------------------------------------------------------------------------------------------------------------
属性解说
版本5.X以前
- index 可选值为analyzed(默认)和not_analyzed,如果是字段是字符串类型的,则可以是not_analyzed
- store 可选值为yes或no,指定该字段的原始值是否被写入索引中,默认为no,即结果中不能返回该字段。
- boost默认为1,定义了文档中该字段的重要性,越高越重要
- null_value 如果一个字段为null值(空数组或者数组都是null值)的话不会被索引及搜索到,null_value参数可以显示替代null values为指定值,这样使得字段可以被搜索到。
- include_in_all 指定该字段是否应该包括在_all字段里头,默认情况下都会包含。
- type 可以指定String,long,int,doulbe,floot,boolean,等
版本5.X以后
- 原本type string,其index 可选值为analyzed(默认)和not_analyzed,现在直接拆违type text( index analyzed),type keyword(index not_analyzed)
- store 可选值为enable或false,指定该字段的原始值是否被写入索引中,默认为enable,即结果中不能返回该字段。
- index 表示是否用于检索默认enable,可选false
-------------------------------------------------------------------------------------------------------------------------------
字段的数据类型
- 简单类型string(指定分词器)
- date(默认使用UTC保持,也可以使用format指定格式)
- 数值类型(byte,short,integer,long,float,double)
- boolean
- binary(存储在索引中的二进制数据的base64表示,比如图像,只存储不索引)
- ip(以数字形式简化IPV4地址的使用,可以被索引、排序并使用IP值做范围查询)注意string是5.x以前的,5.x之后被分裂为text,keyword
有层级结构的类型,比如object 或者 nested.
特殊类型
- geo_point
- geo_shape
- completion
配置详解
文件中"mapping":{}中的内容,即为创建索引的mappingsource 如:
"mappings": {
"_default_" : { //@1
"_all" : {"enabled" : true}, //@2
"properties" : { //@3
"tableType" : {"type" : "string", "index" : "no", "include_in_all" : false, "store": true}, //@4
"caption" : {"type" : "string", "index" : "no", "include_in_all" : false, "store": true},
"code" : {"type" : "string", "index" : "no", "include_in_all" : false, "store": true},
"description" : {"type" : "string", "index" : "no", "include_in_all" : false, "store": true},
"perm" : {"type" : "string", "index" : "not_analyzed", "include_in_all" : false}
}
},
"ec02_goodsinfo" : { //@5
"_all" : {"enabled" : true}, //@6
"properties" : { //@7
"tableType" : {"type" : "string", "index" : "no", "include_in_all" : false, "store": true},
"caption" : {"type" : "string", "index" : "no", "include_in_all" : false, "store": true},
"code" : {"type" : "string", "index" : "no", "include_in_all" : false, "store": true},
"description" : {"type" : "string", "index" : "no", "include_in_all" : false, "store": true},
"perm" : {"type" : "string", "index" : "not_analyzed", "include_in_all" : false},
"bill":{ //@8
properties" : {
"CreateYear" : {"type" : "string", "index" : "not_analyzed", "include_in_all" : true} //@9
}
}
}
}
}- @1 _default_所有单据默认的创建索引的配置
- @2 _all{} 每个单据下所有的字段配置,"enabled" : true 所有字段创建索引,false 所有字段禁止创建索引,[*注意]除非properties指定的字段,默认字段类型将自动匹配
- @3 properties {},每个单据下字段或者properties的指定配置
- @4 properties {}中指定了属性(properties):"tableType"的检索配置,type:string > 类型字符串,include_in_all:false > 改字段或者属性不包含在单据的所有字段中,"store": true > 储存在数据库中
- @5 ec02_goodsinfo 表示对单据 "ec02_goodsinfo" 的特定检索配置
- @6 _all{} 只对"ec02_goodsinfo"单据下所有的字段配置
- @7 properties {},只对"ec02_goodsinfo"单据下字段或者properties的指定配置
- [*注意]@8,@9 bill在单据中额字段都会包括一层bill,所以如果要对单据中某个字段指定需要套一层bill{}
-----------------------------------------------------------------------------------------------------------------------------------------
属性解说
版本5.X以前
- index 可选值为analyzed(默认)和not_analyzed,如果是字段是字符串类型的,则可以是not_analyzed
- store 可选值为yes或no,指定该字段的原始值是否被写入索引中,默认为no,即结果中不能返回该字段。
- boost默认为1,定义了文档中该字段的重要性,越高越重要
- null_value 如果一个字段为null值(空数组或者数组都是null值)的话不会被索引及搜索到,null_value参数可以显示替代null values为指定值,这样使得字段可以被搜索到。
- include_in_all 指定该字段是否应该包括在_all字段里头,默认情况下都会包含。
- type 可以指定String,long,int,doulbe,floot,boolean,等
版本5.X以后
- 原本type string,其index 可选值为analyzed(默认)和not_analyzed,现在直接拆违type text( index analyzed),type keyword(index not_analyzed)
- store 可选值为enable或false,指定该字段的原始值是否被写入索引中,默认为enable,即结果中不能返回该字段。
- index 表示是否用于检索默认enable,可选false
-------------------------------------------------------------------------------------------------------------------------------
字段的数据类型
- 简单类型string(指定分词器)
- date(默认使用UTC保持,也可以使用format指定格式)
- 数值类型(byte,short,integer,long,float,double)
- boolean
- binary(存储在索引中的二进制数据的base64表示,比如图像,只存储不索引)
- ip(以数字形式简化IPV4地址的使用,可以被索引、排序并使用IP值做范围查询)注意string是5.x以前的,5.x之后被分裂为text,keyword
有层级结构的类型,比如object 或者 nested.
特殊类型
- geo_point
- geo_shape
- completion
收起阅读 »
社区日报 第184期 (2018-02-09)
https://elasticsearch.cn/slides/
2、Elasticsearch理性加速清单
http://t.cn/RRv93KH
3、Elasticsearch这5个错误,要避免!
http://t.cn/RRv9dw9
编辑:铭毅天下
归档:https://elasticsearch.cn/article/491
订阅:https://tinyletter.com/elastic-daily
https://elasticsearch.cn/slides/
2、Elasticsearch理性加速清单
http://t.cn/RRv93KH
3、Elasticsearch这5个错误,要避免!
http://t.cn/RRv9dw9
编辑:铭毅天下
归档:https://elasticsearch.cn/article/491
订阅:https://tinyletter.com/elastic-daily 收起阅读 »
社区新增幻灯片分享功能
https://elasticsearch.cn/slides/
对不起,来晚了!
应该是期待已久的功能!
社区年年都有很多的精彩的分享(感谢所有参与社区分享的同学,赞),以前的资料都丢在百度网盘里面,大家还能凑合着用,谁知道前段时间,网盘居然把所有的链接都弄失效了,分享出去没多久就自动失效了。
国外的 slides share、speakerdeck,统统不能用,哎。国内的幻灯片分享平台实在没有找到合适的。
经常有同学私下问我要 PPT,什么时候分享啊,什么的。
看个幻灯片,太麻烦啊。
这次终于忍不了了。
自己动手、丰衣足食。
于是抽空几天为社区开发了幻灯片分享功能。
使用 PDF.js 做前端展现,pdf 传上去就能直接查看,目前只在 chrome 和 Firefox 下测试是 OK 的,抱歉了,IE 我已放弃。
封面使用 ImageMagick 做一个 pdf 到 png 的转换即可,上传完 PDF 同步就开始转,咱这个功能社区自己用,没什么压力。
目前还没给所有人开放上传分享的功能(主要现在还没有做修改和删除的功能,[捂脸])。
已上传完本社区的历史分享的小 100 个 PPT,重复的分享没有传,也可能存在漏掉和遗忘的,大家可以帮忙查漏补缺。
今年线下交流活动继续走起,欢迎大家踊跃报名分享,
分享提交链接:http://elasticsearch.mikecrm.com/A6QbFvU。
农历新年马上到了,祝大家新年愉快,工作顺利!
https://elasticsearch.cn/slides/
对不起,来晚了!
应该是期待已久的功能!
社区年年都有很多的精彩的分享(感谢所有参与社区分享的同学,赞),以前的资料都丢在百度网盘里面,大家还能凑合着用,谁知道前段时间,网盘居然把所有的链接都弄失效了,分享出去没多久就自动失效了。
国外的 slides share、speakerdeck,统统不能用,哎。国内的幻灯片分享平台实在没有找到合适的。
经常有同学私下问我要 PPT,什么时候分享啊,什么的。
看个幻灯片,太麻烦啊。
这次终于忍不了了。
自己动手、丰衣足食。
于是抽空几天为社区开发了幻灯片分享功能。
使用 PDF.js 做前端展现,pdf 传上去就能直接查看,目前只在 chrome 和 Firefox 下测试是 OK 的,抱歉了,IE 我已放弃。
封面使用 ImageMagick 做一个 pdf 到 png 的转换即可,上传完 PDF 同步就开始转,咱这个功能社区自己用,没什么压力。
目前还没给所有人开放上传分享的功能(主要现在还没有做修改和删除的功能,[捂脸])。
已上传完本社区的历史分享的小 100 个 PPT,重复的分享没有传,也可能存在漏掉和遗忘的,大家可以帮忙查漏补缺。
今年线下交流活动继续走起,欢迎大家踊跃报名分享,
分享提交链接:http://elasticsearch.mikecrm.com/A6QbFvU。
农历新年马上到了,祝大家新年愉快,工作顺利!
收起阅读 »
社区日报 第183期 (2018-02-08)
-
假如我来设计scroll-Elasticsearch的遍历操作分析。 http://t.cn/RYGZyUD
-
剖析Lucene底层原理及基于他开发搜索引擎网站。 http://t.cn/R8rHNZY
- elasticsearch shard split 分析--系列文章。 http://t.cn/R8rHOjJ
-
假如我来设计scroll-Elasticsearch的遍历操作分析。 http://t.cn/RYGZyUD
-
剖析Lucene底层原理及基于他开发搜索引擎网站。 http://t.cn/R8rHNZY
- elasticsearch shard split 分析--系列文章。 http://t.cn/R8rHOjJ
elasticsearch-php中文文档
Master为最新版本的文档,其余版本的文档后续再补全。
Github地址:https://github.com/Mosongxing/elasticsearch-php
文档地址(个人测试版):http://doc.songsong.net.cn/elasticsearch-php/
Master为最新版本的文档,其余版本的文档后续再补全。
Github地址:https://github.com/Mosongxing/elasticsearch-php
文档地址(个人测试版):http://doc.songsong.net.cn/elasticsearch-php/
收起阅读 »社区日报 第182期 (2018-02-07)
-
XPack6.1引入数据可视化和机器学习模块。 http://t.cn/R8utVL8
-
从Elasticsearch来看分布式系统架构设计。 http://t.cn/R8utVLR
- 通过Function Score Query优化Elasticsearch搜索结果。 http://t.cn/R6rrjOt
-
XPack6.1引入数据可视化和机器学习模块。 http://t.cn/R8utVL8
-
从Elasticsearch来看分布式系统架构设计。 http://t.cn/R8utVLR
- 通过Function Score Query优化Elasticsearch搜索结果。 http://t.cn/R6rrjOt
社区日报 第181期 (2018-02-06)
http://t.cn/R8YF5nv
2.使用logstash分析腾讯cdn日志的配置文件详解。
http://t.cn/R8Ykegn
3.(自备梯子)视频讲解大数据分析利器之Spark与Elasticsearch。
http://t.cn/R8YklfE
编辑:叮咚光军
归档:https://elasticsearch.cn/article/485
订阅:https://tinyletter.com/elastic-daily
http://t.cn/R8YF5nv
2.使用logstash分析腾讯cdn日志的配置文件详解。
http://t.cn/R8Ykegn
3.(自备梯子)视频讲解大数据分析利器之Spark与Elasticsearch。
http://t.cn/R8YklfE
编辑:叮咚光军
归档:https://elasticsearch.cn/article/485
订阅:https://tinyletter.com/elastic-daily
收起阅读 »
社区日报 第180期 (2018-02-05)
http://t.cn/R8OKXzT
2.kibana 插件开发指南
http://t.cn/R8ONWsN
3.kibana 汉化项目:一秒钟让你kibana焕然一新。
http://t.cn/R8Opez4
编辑:cyberdak
归档:https://elasticsearch.cn/article/483
订阅:https://tinyletter.com/elastic-daily
http://t.cn/R8OKXzT
2.kibana 插件开发指南
http://t.cn/R8ONWsN
3.kibana 汉化项目:一秒钟让你kibana焕然一新。
http://t.cn/R8Opez4
编辑:cyberdak
归档:https://elasticsearch.cn/article/483
订阅:https://tinyletter.com/elastic-daily
收起阅读 »
社区日报 第179期 (2018-02-04)
http://t.cn/R8KkCkj
2.如何记录日志:应用程序日志记录最佳实践。
http://t.cn/R8aW8ug
3.(自备梯子)使用Pandas和Seaborn了解我的浏览模式。
http://t.cn/R8aO7S1
编辑:至尊宝
归档:https://elasticsearch.cn/article/482
订阅:https://tinyletter.com/elastic-daily
http://t.cn/R8KkCkj
2.如何记录日志:应用程序日志记录最佳实践。
http://t.cn/R8aW8ug
3.(自备梯子)使用Pandas和Seaborn了解我的浏览模式。
http://t.cn/R8aO7S1
编辑:至尊宝
归档:https://elasticsearch.cn/article/482
订阅:https://tinyletter.com/elastic-daily 收起阅读 »
社区日报 第178期 (2018-02-03)
-
新手营:es模板的用法 https://elasticsearch.cn/article/335
-
关于ELK的由时区引发的问题 http://t.cn/R8aSQCS
- 一周热点:只用200行Go代码写一个自己的区块链! http://t.cn/R8clX3M
-
新手营:es模板的用法 https://elasticsearch.cn/article/335
-
关于ELK的由时区引发的问题 http://t.cn/R8aSQCS
- 一周热点:只用200行Go代码写一个自己的区块链! http://t.cn/R8clX3M
社区日报 第177期 (2018-02-02)
http://t.cn/R8i2ws4
2、Elasticsearch聚合性能优化实战
http://t.cn/R8xdCra
3、Python福音|Elasticsearch 6.1 DSL 核心知识点(可下载)
http://t.cn/R8xuJC1
编辑:铭毅天下
归档:https://elasticsearch.cn/publish/article/480
订阅:https://tinyletter.com/elastic-daily
http://t.cn/R8i2ws4
2、Elasticsearch聚合性能优化实战
http://t.cn/R8xdCra
3、Python福音|Elasticsearch 6.1 DSL 核心知识点(可下载)
http://t.cn/R8xuJC1
编辑:铭毅天下
归档:https://elasticsearch.cn/publish/article/480
订阅:https://tinyletter.com/elastic-daily
收起阅读 »
Elastic 中文社区运维监控实战 (2) - 总体方案
接上一篇:Elastic 中文社区运维监控实战 (1) - 序
本文为系列文章第二篇,主要介绍如何把 Elastic 中文社区的网站服务器监控起来,对有同样想了解如何使用 Elastic Stack 来做运维监控的同学,可以作为一个很好的参考和入门资料,学习门槛定义为入门级。
本节内容
在深入到具体的监控指标收集的细节之前,今天先主要介绍一下 Elastic 中文社区的总体方案。这样我们在动手之前会有一个总体的思路和对所用工具有一个大致的了解。
技术选型
工欲善其事必先利其器
前面已经提到我们要对服务器进行各项性能指标的监控以及日志的监控。
看起来很复杂,因为有很多信息需要收集。 好在我们有 Elastic Stack,使用它们来作为我们的监控工具,整个工作就变得简单了,我们结合我们社区监控的这个场景,具体来看的话,需要的工具主要是如下几个:
- 监控数据存储:Elasticsearch
Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎。简单易用,用户众多,性能优良,久经考验,支持单节点部署到虚拟机,并可随着业务增长无缝伸缩扩容至上千个节点规模的集群,PB 级别数据也不在话下。
日志数据和指标监控数据都能放,通过集中式存储所有的这些时序型数据,可以快速方便的对这些数据进行分析和关联,实在是排障运维和性能调优的不二选择,你如果还不知道 Elasticsearch,那我只能说你真的是 out 了。
- 日志数据收集:Filebeat
Elastic Beats 家族的一员,Go 语言编写,轻量级,无依赖,这样就可以很方便的完成收集端的部署,所以如果你的场景和我一样, 可以优先使用 Filebeat 代替 Logstash 来收集日志,当然如果有日志的进一步加工,可以让 Filebeat 把数据发送给 Logstash,然后 Logstash 处理完之后再发送给 Elasticsearch。
Filebeat 使用很灵活,可以指定你的日志路径来进行收集,还可以对数据进行预过滤,对于一些常见的监控需求,Filebeat 以模块的方式替你打包好了一切,如:日志路径配置、解析规则、机器学习的任务,甚至还自带 Dashboard,简单几个操作,就可以完成从数据收集到最终可视化分析的所有工作。
- 指标数据收集:Metricbeat
我们这次需要监控的服务器都是一些常规的指标,而 Metricbeat 刚好都支持这些指标的收集,你说这不巧了不是。
Metricbeat 同样也是 Elastic Beats 家族的一员,同样也是开源的。定位是一个轻量级的监控指标采集器,采用 Go 语言编写,同样提供的是一个很小的无依赖的二进制文件包,能够收集服务器(Linux、Windows、Mac)本身的运行指标,如: CPU 使用率、内存、文件系统、磁盘 IO 和网络 IO 统计数据等,还能获取服务器上面的各项服务的运行指标,常见的如: Apache、NGINX、MongoDB、MySQL、PostgreSQL、Prometheus、Redis 等都有直接支持,并且内置了 Elasticsearch 索引和 mapping 设置,以及 Ingest pipeline 设置,还提前预置了不少 Kibana 的 Dashboard,开箱即用、即分析。
- 数据分析展现:Kibana
和 Elasticsearch 工作的最佳拍档,结合 Elasticsearch 的实时分析能力,可以非常方便的对各种数据进行搜索和分析,你可以灵活的自定义的各种图形展现和 Dashboard,不用编写一行代码,即可进行数据分析,除了分析,还整合了 Elastic Stack 的各个产品的管理功能,作为 Elastic Stack 的图形交互终端。
除了上面这些工具,后续我们还可以考虑使用 Auditbeat 来收集服务器的安全行为日志,使用 Heartbeat 来监控各个服务的端口是否正常,我们先完成基本的监控之后,再慢慢将这些加上。
可以看到,我们没有用到 Logstash,是的,这个规模的监控,可以不考虑 Logstash,这样我们可以做到架构简单和足够的轻量级。
上面列的这些软件都是 Elastic 家族的产品,并且都是开源的,所有的源码都在:https://github.com/elastic/ 。
部署方案
在收集数据之前,我们需要明确我们数据放在哪里,毫无疑问,所有的数据都将放在 Elasticsearch 里面,不过 Elasticsearch 不能部署在 Elastic 中文社区的这台服务器上面,一个是资源的限制,另外一个是基于安全的考虑,如果 Elastic 社区的服务器挂了,数据不光收不到,连什么时候挂的都不知道。所以我们需要把 Elasticsearch 服务搭建在别的地方,有多种选择:
- 使用 Elastic Cloud,很方便就能开通,缺点国内访问速度慢,暂时还没开放机器学习的功能。
- 使用阿里云的 Elasticsearch,Elastic 官方合作伙伴,国内唯一包含 X-Pack 的完整功能的 Elasticsearch 云服务,国内访问速度快。
- 自己搭建的 Elasticsearch 集群。
使用阿里云的 Elasticsearch 无疑很方便,不过我家里刚好有一台服务器,型号 HP Gen8,16GB 内存,上面运行了 SmartOS,跑几个 zone 很轻松,每天用来备份社区的数据库,再来起一个 Elasticsearch 服务也很方便,通过路由器将内网 IP 映射出去,让社区服务器将监控数据发送到这台服务器上面来,安全上面,需要保证这台服务器不被黑客攻击,需要做一些必要的访问控制,可以使用 X-Pack 的身份验证,结合 IP 白名单功能,只允许内网和 Elastic 中文社区服务器的 IP 访问。
我们将之命名为:Ops Center,方便后面招呼。
可以看到,Elastic 社区服务器除了启动 Filebeat 和 Metricbeat 之外,不需要额外做什么服务器本身的设置。
这里画一个简单的部署拓扑图,方便理解:
今天主要写到这里,后面将具体介绍它们的安装部署过程。
接上一篇:Elastic 中文社区运维监控实战 (1) - 序
本文为系列文章第二篇,主要介绍如何把 Elastic 中文社区的网站服务器监控起来,对有同样想了解如何使用 Elastic Stack 来做运维监控的同学,可以作为一个很好的参考和入门资料,学习门槛定义为入门级。
本节内容
在深入到具体的监控指标收集的细节之前,今天先主要介绍一下 Elastic 中文社区的总体方案。这样我们在动手之前会有一个总体的思路和对所用工具有一个大致的了解。
技术选型
工欲善其事必先利其器
前面已经提到我们要对服务器进行各项性能指标的监控以及日志的监控。
看起来很复杂,因为有很多信息需要收集。 好在我们有 Elastic Stack,使用它们来作为我们的监控工具,整个工作就变得简单了,我们结合我们社区监控的这个场景,具体来看的话,需要的工具主要是如下几个:
- 监控数据存储:Elasticsearch
Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎。简单易用,用户众多,性能优良,久经考验,支持单节点部署到虚拟机,并可随着业务增长无缝伸缩扩容至上千个节点规模的集群,PB 级别数据也不在话下。
日志数据和指标监控数据都能放,通过集中式存储所有的这些时序型数据,可以快速方便的对这些数据进行分析和关联,实在是排障运维和性能调优的不二选择,你如果还不知道 Elasticsearch,那我只能说你真的是 out 了。
- 日志数据收集:Filebeat
Elastic Beats 家族的一员,Go 语言编写,轻量级,无依赖,这样就可以很方便的完成收集端的部署,所以如果你的场景和我一样, 可以优先使用 Filebeat 代替 Logstash 来收集日志,当然如果有日志的进一步加工,可以让 Filebeat 把数据发送给 Logstash,然后 Logstash 处理完之后再发送给 Elasticsearch。
Filebeat 使用很灵活,可以指定你的日志路径来进行收集,还可以对数据进行预过滤,对于一些常见的监控需求,Filebeat 以模块的方式替你打包好了一切,如:日志路径配置、解析规则、机器学习的任务,甚至还自带 Dashboard,简单几个操作,就可以完成从数据收集到最终可视化分析的所有工作。
- 指标数据收集:Metricbeat
我们这次需要监控的服务器都是一些常规的指标,而 Metricbeat 刚好都支持这些指标的收集,你说这不巧了不是。
Metricbeat 同样也是 Elastic Beats 家族的一员,同样也是开源的。定位是一个轻量级的监控指标采集器,采用 Go 语言编写,同样提供的是一个很小的无依赖的二进制文件包,能够收集服务器(Linux、Windows、Mac)本身的运行指标,如: CPU 使用率、内存、文件系统、磁盘 IO 和网络 IO 统计数据等,还能获取服务器上面的各项服务的运行指标,常见的如: Apache、NGINX、MongoDB、MySQL、PostgreSQL、Prometheus、Redis 等都有直接支持,并且内置了 Elasticsearch 索引和 mapping 设置,以及 Ingest pipeline 设置,还提前预置了不少 Kibana 的 Dashboard,开箱即用、即分析。
- 数据分析展现:Kibana
和 Elasticsearch 工作的最佳拍档,结合 Elasticsearch 的实时分析能力,可以非常方便的对各种数据进行搜索和分析,你可以灵活的自定义的各种图形展现和 Dashboard,不用编写一行代码,即可进行数据分析,除了分析,还整合了 Elastic Stack 的各个产品的管理功能,作为 Elastic Stack 的图形交互终端。
除了上面这些工具,后续我们还可以考虑使用 Auditbeat 来收集服务器的安全行为日志,使用 Heartbeat 来监控各个服务的端口是否正常,我们先完成基本的监控之后,再慢慢将这些加上。
可以看到,我们没有用到 Logstash,是的,这个规模的监控,可以不考虑 Logstash,这样我们可以做到架构简单和足够的轻量级。
上面列的这些软件都是 Elastic 家族的产品,并且都是开源的,所有的源码都在:https://github.com/elastic/ 。
部署方案
在收集数据之前,我们需要明确我们数据放在哪里,毫无疑问,所有的数据都将放在 Elasticsearch 里面,不过 Elasticsearch 不能部署在 Elastic 中文社区的这台服务器上面,一个是资源的限制,另外一个是基于安全的考虑,如果 Elastic 社区的服务器挂了,数据不光收不到,连什么时候挂的都不知道。所以我们需要把 Elasticsearch 服务搭建在别的地方,有多种选择:
- 使用 Elastic Cloud,很方便就能开通,缺点国内访问速度慢,暂时还没开放机器学习的功能。
- 使用阿里云的 Elasticsearch,Elastic 官方合作伙伴,国内唯一包含 X-Pack 的完整功能的 Elasticsearch 云服务,国内访问速度快。
- 自己搭建的 Elasticsearch 集群。
使用阿里云的 Elasticsearch 无疑很方便,不过我家里刚好有一台服务器,型号 HP Gen8,16GB 内存,上面运行了 SmartOS,跑几个 zone 很轻松,每天用来备份社区的数据库,再来起一个 Elasticsearch 服务也很方便,通过路由器将内网 IP 映射出去,让社区服务器将监控数据发送到这台服务器上面来,安全上面,需要保证这台服务器不被黑客攻击,需要做一些必要的访问控制,可以使用 X-Pack 的身份验证,结合 IP 白名单功能,只允许内网和 Elastic 中文社区服务器的 IP 访问。
我们将之命名为:Ops Center,方便后面招呼。
可以看到,Elastic 社区服务器除了启动 Filebeat 和 Metricbeat 之外,不需要额外做什么服务器本身的设置。
这里画一个简单的部署拓扑图,方便理解:
今天主要写到这里,后面将具体介绍它们的安装部署过程。
收起阅读 »







