热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ELK使用小技巧(第3期)

ELKTips主要介绍一些ELK使用过程中的小技巧,内容主要来源为Elastic中文社区。在6.0之

ELK Tips 主要介绍一些 ELK 使用过程中的小技巧,内容主要来源为 Elastic 中文社区。

一、Logstash

1、Filebeat 设置多个 output

在 6.0 之前,Filebeat 可以设置多个输出(必须是不同类型的输出);从 6.0 开始已经禁止多输出了,只能拥有一个输出,如果想实现多输出,可以借助 logstash 等中间组件进行输出分发。

二、Elasticsearch

1、ES 用户占用的内存大于为 ES 设置的 heapsize

ES 是 Java 应用,底层存储引擎是基于 Lucene 的,heapsize 设置的是 Java 应用的内存;而 Lucene 建立倒排索引(Inverted Index)是先在内存里生成,然后定期以段文件(segment file)的形式刷到磁盘的,因此 Lucene 也会占用一部分内存。

elasticsearch.cn/article/32

2、ES 使用别名插入数据

ES 可以通过索引的方式向索引插入数据,但是同时只能有一个索引可以被写入,而且需要手动设置,未设置的情况下会报错: no write index is defined for alias [xxxx] , The write index may be explicitly disabled using is_write_index=false or the alias points to multiple indices without one being designated as a write index。

POST /_aliases
{
    "actions" : [
        {
            "add" : {
                 "index" : "test",
                 "alias" : "alias1",
                 "is_write_index" : true
            }
        }
    ]
}

3、ES 设置 G1 垃圾回收

修改 jvm.options 文件,将下面几行:

-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly

改为

-XX:+UseG1GC
-XX:MaxGCPauseMillis=50

即可。

其中 -XX:MaxGCPauseMillis 是控制预期的最高 GC 时长,默认值为 200ms,如果线上业务特性对于 GC 停顿非常敏感,可以适当设置低一些。但是这个值如果设置过小,可能会带来比较高的 cpu 消耗。

4、ES 和 Zipkin 集成时设置验证信息

java -DKAFKA_ZOOKEEPER=10.14.123.117:2181 
-DSTORAGE_TYPE=elasticsearch 
-DES_HOSTS=http://10.14.125.5:9200 
ES_USERNAME=xxx ES_PASSWORD=xxx 
-jar zipkin.jar

5、ES 集群部署报错

问题 1 报错信息如下:

Received message from unsupported version:[2.0.0] minimal compatible version is:[5.6.0]

经排查是集群中存在低版本的 ES 实例,将低版本实例移除即可。

问题 2 报错信息如下:

with the same id but is a different node instance

删除对应节点 elsticsearch 文件夹下的 data 文件夹下的节点数据即可。

6、海量中文分词插件

海量分词是天津海量信息技术股份有限公司自主研发的中文分词核心,经测试分词效果还是不错的,值得一试。

github.com/HylandaOpen…

7、查询一个索引下的所有 type 名

通过下面的 API,即可获取全部的 type,下面的例子中 doc 就是 indexName 索引下的一个 type:

GET http://es127.0.0.1:9200/indexName/_mappings
-----------------------------------------------
{
    indexName: - {
        mappings: - {
            doc: - {
                _all: + {... },
                dynamic_date_formats: + [... ],
                dynamic_templates: + [... ],
                properties: + {... }
            }
        }
    }
}

8、索引模板中根据字段值设置别名

设置索引模板的时候,别名可以使用 Query 条件来进行匹配。

PUT _template/template_1
{
    "index_patterns" : ["te*"],
    "settings" : {
        "number_of_shards" : 1
    },
    "aliases" : {
        "alias2" : {
            "filter" : {
                "term" : {"user" : "kimchy" }
            },
            "routing" : "kimchy"
        },
        "{index}-alias" : {} 
    }
}

9、索引模板设置默认时间匹配格式

ES 默认是不会将 yyyy-MM-dd HH:mm:ss 识别为时间的,可以通过在索引模板进行如下设置实现多种时间格式的识别:

"mappings": {
"doc": {
  "dynamic_date_formats": ["yyyy-MM-dd HH:mm:ss||strict_date_optional_time||epoch_millis"],

10、ES 中 Merge 相关设置

Merge 是非常耗费 CPU 的操作;而且如果不是 SSD 的话,推荐将 index.merge.scheduler.max_thread_count 设置为 1;否则 ES 会启动 Math.min(3, Runtime.getRuntime().availableProcessors() / 2) 个线程进行 Merge 操作;这样大部分机械硬盘的磁盘 IO 都很难承受,就可能出现阻塞。

"index": {
  "refresh_interval": "5s",
  "number_of_shards": "3",
  "max_result_window": 10000,
  "translog": {
    "flush_threshold_size": "500mb",
    "sync_interval": "30s",
    "durability": "async"
  },
  "merge": {
    "scheduler": {
      "max_merge_count": "100",
      "max_thread_count": "1"
    }
  },

11、mapping 中 enabled store index 参数

  • enabled:默认是true,只用于 mapping 中的 object 字段类型;当设置为 false 时,其作用是使 es 不去解析该字段,并且该字段不能被查询和 store,只有在 source 中才能看到,设置 enabled 为 false,可以不设置字段类型,默认类型为 object;
  • store:默认 false,store 参数的功能和 source 有一些相似,我们的数据默认都会在 source 中存在,但我们也可以将数据 store 起来;当我们使用 copy_to 参数时, copy_to 的目标字段并不会在 source 中存储,此时 store 就派上用场了;
  • index:默认是 true,当设置为 false,表明该字段不能被查询,如果查询会报错。

12、ES 图片搜索

  • 可以借助局部敏感 LSH 或者 pHash 来实现: stackoverflow.com/questions/3…
  • Github 也有一个开源项目使用了多种 Hash 算法借助 ES 来实现图片搜索: github.com/usc-isi-i2/…

13、Term 聚合根据子聚合结果排序

GET /_search
{
    "aggs" : {
        "genres" : {
            "terms" : {
                "field" : "genre",
                "order" : { "playback_stats.max" : "desc" }
            },
            "aggs" : {
                "playback_stats" : { "stats" : { "field" : "play_count" } }
            }
        }
    }
}

三、社区文章精选

  • ET007 ElasticStack 6.5 介绍
  • CentOS 7.4 下安装 ES 6.5.1 搜索集群
  • Elastic Stack v6.5 新特性解读
  • Elasticsearch 史上最全最常用 工具 清单

Any Code,Code Any!

扫码关注『AnyCode』,编程路上,一起前行。

ELK 使用小技巧(第 3 期)

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 我们


推荐阅读
  • Druid读取Kafka数据的简单配置过程
    Druid的单机版安装参考:https:blog.51cto.com101202752429912Druid实时接入Kafka的过程下载、安装、启动kafka过程:wgethttp ... [详细]
  • 2018深入java目标计划及学习内容
    本文介绍了作者在2018年的深入java目标计划,包括学习计划和工作中要用到的内容。作者计划学习的内容包括kafka、zookeeper、hbase、hdoop、spark、elasticsearch、solr、spring cloud、mysql、mybatis等。其中,作者对jvm的学习有一定了解,并计划通读《jvm》一书。此外,作者还提到了《HotSpot实战》和《高性能MySQL》等书籍。 ... [详细]
  • druid接入kafka indexing service整个流程
    先介绍下我们的druid集群配置Overload1台Coordinator1台Middlemanager3台Broker3台Historical一共12台,其中cold6台,hot ... [详细]
  • Java开发面试问题,2021网易Java高级面试题及答案,实战案例
    前言大厂面试真题向来都是各大求职者的最佳练兵场,而今天小编带来的便是“HUAWEI”面经!这是一次真实的面试经历,虽然不是我自己亲身经历 ... [详细]
  • 简短的问题是:是否可以从远程服务器中提取日志(在日志文件中)并将其提取到 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • JavaScript简介及语言特点
    本文介绍了JavaScript的起源和发展历程,以及其在前端验证和服务器端开发中的应用。同时,还介绍了ECMAScript标准、DOM对象和BOM对象的作用及特点。最后,对JavaScript作为解释型语言和编译型语言的区别进行了说明。 ... [详细]
  • OpenCV4.5.0+contrib编译流程及解决错误方法
    本文介绍了OpenCV4.5.0+contrib的编译流程,并提供了解决常见错误的方法,包括下载失败和路径修改等。同时提供了相关参考链接。 ... [详细]
  • Windows简单部署Exceptionless
    部署准备Elasticsearch、Exceptionless.API、Exceptionless.UI、URLRewrite、.NET运行时 1、安装ElasticSearch1 ... [详细]
  • 前言折腾了一段时间hadoop的部署管理,写下此系列博客记录一下。为了避免各位做部署这种重复性的劳动,我已经把部署的步骤写成脚本,各位只需要按着本文把脚本执行完,整个环境基本就部署 ... [详细]
  • elasticssearch+kibanna入门(撰写中)
    elasticssearchkibanna入门(撰写中)看到一篇elasticssearchkibanna的文章,觉得很好, ... [详细]
  • 我这几年踩过的十个坑,每一条都是血泪教训
    “阅读本文大概需要3分钟。”一、不记录程序部署在哪里“我:他妈的,这个程序明明一直在正确产生日志,可它到底运行在哪里?怎么我 ... [详细]
  • 技术方案:Spark、kafka、opentsdb、Yahoo的egads模型静态训练:采用两种算法进行模型的训练:指数移动平均和HotWinters,模型一天训练一次,即每天0点开始训练, ... [详细]
  • ELK stack 学习记录
    ELK日志分析平台学习记录首先ELK主要指elasticsearch、logstash和kibana,三个开源软件组合而成的一套日志平台解决方案。可以将平时收集到的日志,通过前台展 ... [详细]
  • elasticsearch插件如何实现类
    这篇文章主要介绍“elasticsearch插件如何实现类”,在日常操作中,相信很多人在elasticsearch插件如何实现类问题上存在疑惑,小编查阅了各式资料 ... [详细]
author-avatar
惠嘟du
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有