Elk使用笔记(坑)(2017-02-17更新)

主要记录使用过程终于到的一些坑和需要注意的地方,有些坑想不起来了,以后再完善补上

elk版本


  • elasticsearch: 2.4.1
  • kibana: 4.6.3
  • logstash: 2.4.1

问题


Elasticseasrch报错,Request Timeout after 30000ms,log中无日志

一般重启elasticsearch即可,重启后节点状态状态Elasticsearch is still initializing the kibana index,这时候是elasticsearch在恢复数据(恢复数据时间可以自定义,具体看我另外一篇关于集群配置的介绍传送门),再等待几秒再观察节点状态

service elasticsearch restart 

Elasticseasrch查询list大于10000条报错,Result window is too large

貌似是2.x才有的问题,修改max_result_window默认配置,调大默认值

curl -XPUT http://{ip:port}/{mapping}/_settings -d '{ "index" : { "max_result_window" : 500000}}'

Elasticsearch服务service方式启动fail

让人着急的是日志没有信息,这时候大多是与内存有关,毕竟Es是个能吃内存的货。去安装目录bin下执行启动脚本,报Cannot allocate memory`不能分配内存。
解决:修改脚本bin/elasticsearch,注释或调小之前加的内存配置,具体看我之前写的一篇内存优化,就不往这迁移了(主要是懒)

Elasticsearch-PHP报错Elasticsearch\Common\Exceptions\NoNodesAvailableException No alive nodes found in your cluster

首先是觉得集群节点挂了,检查集群,检查节点,包括elk都正常,坑了我一圈,发现是Elasticsearch-PHP包的配置问题,官方文档中标明hosts可以写ip:port,ip,domains:port,domains的格式,结果现实并不是这样,因为我es绑定了内网地址,外网要访问,我用Nginx的domains 80端口将外网请求代理转发到内网的9200端口上,然后在Elasticsearch-PHP中就省去了80,只写了一个hosts上绑定的domains。所以只要在配置中把端口带上就好了domains:80,还没来得及看源码,应该扩展包检测没有配置端口就默认指定了9200端口,所以才连接不上

(2017年02月17日更新) 手动迁移副本,迁移成功后,原有节点的分片又跑了

例索引有两个分片1,2分别在两个节点A,B上,将分片1迁移到节点B的时候,虽然成功了,但是节点B上原有的分片2却自动移到了节点A上,因为没有开启这个配置项

curl -XPUT ip:9200/_cluster/settings -d'{
"transient":{
"cluster.routing.allocation.disable_allocation":true
}
}'

优化


统一大小写

  • 操作: 在logstash中将所有字符串数据转换为小写,查询dsl语句中统一使用小写
  • 原因kibana中查询貌似是不区分大小写的,然而有些查询聚合语句系统默认是区分了大小写,比如aggsterms.exclude
  • 执行: 应该在es的mapping template模板中设置也可以,暂还没找到具体执行办法,有知道的看官跪求告知
# logstash conf
filter{
# 如果有json转换配置需要放置在json前
mutate {
lowercase => "message"
}
}

常用命令


查询 curl -GET {command}
增改 curl -PUT {command}
删除 curl -DELETE {command}
url末尾加?pretty会自动美化结果的json数据,方便命令行下查看,例如:curl -GET "http://localhost:9200/_nodes/stats?pretty"查看节点状态

  • 查询集群状态(强烈推荐使用es的head插件管理集群)
/_cluster/health?pretty
  • 查看es节点状态
/_nodes/stats
  • 添加索引别名
/index1/_alias/index_alias
*/_alias/index_alias
  • es清理缓存(发现没什么卵用,理论上清理后第二次查询和第一次查询的速度一样慢,结果并不是,怀疑没清掉)
curl -XPOST "localhost:9200/_cache/clear"
  • es设置mapping模板
curl -XPUT 'http://{ip}:{port}/_template/eslog?pretty' -d@/tmp/mylog.template.json

扩展资料

  • logstash和kafka的整合传送
  • elkkafka的配置字段部分说明 传送
  • elasticsearch配置文件说明 传送
  • elasticsearch数据导出导入,有个elasticdump工具,还没有试验过,我推荐一个网友分享的python脚本,自己根据需求改一下就好了,elasticdump安装npm install elasticdump -g使用说明

标签: Elasticsearch

 

最新文章

  1. STL学习之vector
  2. Socket之TCP连接_time_wait状态
  3. linux下进程权限分析
  4. 【BZOJ1012】 【JSOI2008】最大数maxnumber
  5. Web端测试和移动端测试的区别
  6. tomcat, jdk, eclipse, ant的安装,设置及常见问题
  7. HDU 3555 Bomb (数位DP-记忆化搜索模板)
  8. 【PHPsocket编程专题(实战篇①)】php-socket通信演示
  9. log4j 日志大小限制 分成30一个 不按日期分日志 按大小分成 按生产日期
  10. zookeeper学习(上)
  11. jquery ui sortable 实现table,row的拖动。(Make Table Rows Sortable Using jQuery UI Sortable)
  12. macOS apache配置及开启虚拟服务器的开启,apache开启重写模式
  13. (数字IC)低功耗设计入门(一)
  14. jsp自动编译机制
  15. Java反编译工具(Java Decompiler)
  16. mysql数据库备份_可执行文件
  17. Djangoorm的多表建立与queryset对象的合并
  18. 关于windows注册表
  19. [转] Java DecimalFormat 用法
  20. iOS - Reveal逆向分析任意iOS应用的UI界面

热门文章

  1. Linux中基于hadoop安装hive(CentOS7+hadoop2.8.0+hive2.1.1)
  2. SpringMVC基于代码的配置方式(零配置,无web.xml)直接继承WebMvcConfigurerAdapter
  3. [AngularJS] ng-change vs $scope.$watch
  4. centos版本7以上网卡名修改
  5. Failed to initialize storage module: user 的解决方式
  6. thinkphp session如何取数组
  7. ORA-16014 与 ORA-00312
  8. 【转帖】云平台发现服务构建:为什么不使用ZooKeeper
  9. .net core webapi参数绑定处理
  10. Linux-软件包管理-yum在线管理-光盘yum源