• [基础组件] ElasticSearch 单节点入库性能测试
    【验收目的】 验证Elasticsearch单节点入库性能指标 【前置条件】 1.集群已经安装完成并正常运行。 2.每个实例分配内存30G,且单节点所有实例内存不超过节点内存的一半(比如节点为128内存,则部署2个实例)。 3.客户端安装在管理控制节点(例安装目录为“/opt/client"),客户端数量与数据节点数量保持一致。 4.获取相应测试工具,解压后对应目录获取Elasticsearch性能工具esarrayGA.rar,解压esarrayGA.rar,解压后将esarrayGA上传到所有客户端节点 (例如目录为“/opt/client",其中用于性能测试的jar包为es-sec-1K.jar、es-sec-5K.jar)。 【测试过程】 1.在Elasticsearch集群创建索引,每个客户端创建1个索引,如:myindex-001、myindex-002和myindex-003,设置索引mapping信息,mapping设 置请参考附件esperf-mapping.txt , 根据不同性能指标创建索引时修改esperf-mapping.txt文件中对应参数。 number_of_replicas:副本数 enabled:是否存储原始数据。 2.在FusionInsight Manager界面选择“系统 > 权限 > 用户 > 添加用户”,创建用户estest,加入elasticsearch、supergroup组,主组为 supergroup。 3.使用root用户登录客户端所在节点,进入客户端安装目录执行 cd /opt/client source bigdata_env kinit estest,初始化及修改密码 4.“系统 > 权限 > 用户 > 更多”,下载estest用户凭证。 5.解压用户凭证,上传至“/opt/client/esarrayGA/conf” 6.修改测试工具esarrayGA的配置文件/opt/esarrayGA/conf/espara.properties。 isindex:设置为1,表示写入索引 httpUrl:指定实例IP和端口及索引信息(IP和端口,每个节点选择一个即可) index:写入的索引名称,各客户端节点中工具分别设置为myindex-001到myindex-003 issecurity:设置为1,表示为安全模式 threadNum:并发线程数,可以逐步增加线程数,工具运行后CPU达到100%为最佳 processRecordNum:写入的索引数量,设置为2亿 其他设置不需要修改。 7.修改测试工具esarrayGA的配置文件/opt/esarrayGA/conf/jaas.conf principal:用户名,修改为estest@HADOOP.COM keyTab:用户凭证目录,修改为"/opt/esarrayGA/conf/user.keytab" 8.在每个客户端节点同时执行java -jar es-sec-1K.jar或java -jar es-sec-5K.jar启动工具写入,数据写入完成后会输出写入耗时。 9.写入完成后,执行,统计3个索引的store.size,记录写入索引的总大小(X.X.X.X修改为集群的Elasticsearch节点IP)。 curl --tlsv1.2 --negotiate -k -v -u: -XGET https://X.X.X.X:24102/_cat/indices?v 10.单节点文件大小写入速率(MB/Sec/Node):所有索引写入数据大小/客户端写入时间的平均值/数据节点数。 11.单节点文件数写入速率(doc/Sec/Node):所有索引写入数据总条数/客户端写入时间平均值/数据节点数。 【测试结果】 1.成功写入数据,记录写入耗时 2.成功查看写入索引总的大小 curl -XGET --tlsv1.2 --negotiate -k -u : 'https://10.24.102.14:24100/_cat/indices?v' (https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202102/23/110423tiibgjvw5qmln5dn.png) 3.计算得到Elasticsearch单节点文件大小写入速率。 所有索引写入数据大小/客户端写入时间的平均值/数据节点数: 3.3 x 1024 x 1024 / 8430.008 / 6 = 68.4123M/Sec 4.计算得到Elasticsearch单节点文件数写入速率。 600000000/8430.008/6 = 11862.385 doc/Sec
  • [赋能学习] pyspark数据处理完毕后写入ES案例
    ## 一、背景 版本:FusionInsight HD 安全集群,版本6.5.1 或者 8.0.2 场景:数据保存在HDFS上,使用python语言开发spark应用,数据处理完毕后写入ElasticSearch 如下步骤使用的 elasticsearch-spark-20_2.11-*.jar 获取链接如下 https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch-spark-20 其中 FI 6.5.1版本下载 6.7.1,FI 8.0.2版本下载 7.6.0 说明:如下使用都是python3.7.8,其他python版本未验证 ## 二、ES单独关闭安全场景 关闭方法:服务端修改参数 ELASTICSEARCH_SECURITY_ENABLE 为 false,后重启ES服务​ Spark客户端已安装部署到/opt/client目录,Demo步骤如下,都在客户端部署节点上执行 1. 创建测试目录,例如 /home/haosuwei/spark_to_es 2. 将 elasticsearch-spark-20_2.11-*.jar 上传到该目录 3. 将 test.txt文件上传到HDFS的/tmp/haosuwei目录,其中test.txt文件内容参考如下 ``` 11,aa 2222,bbb ``` 4. 创建import.py文件,内容参考如下 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202012/21/20342977qf3ylcztrmc34h.png) 5. 将提交spark认证用户的秘钥文件user.keytab上传到该目录 6. 提交任务 ``` spark-submit --master yarn --deploy-mode client --keytab ./user.keytab --principal developuser --jars elasticsearch-spark-20_2.11-7.6.0.jar import.py ``` ## 三、ES仍为安全模式 检查服务端修改参数 ELASTICSEARCH_SECURITY_ENABLE 为 true 其他步骤同上,唯一不同点在于python文件,修改部分参考如下 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202012/21/204322h7jlisfdwtza7nto.png) 通过curl命令检查basic认证参考如下: ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202012/21/204536rq2nxun4vbndile3.png)
  • [赋能学习] MRS3.0.2版本 二次开发(24/27): Spark读写ElasticSearch样例
    # 视频在本帖二楼 ## 一、Spark简介 Spark是分布式批处理框架,提供分析挖掘与迭代式内存计算能力,支持多种语言(Scala/Java/Python)的应用开发。 适用以下场景: - 数据处理(Data Processing):可以用来快速处理数据,兼具容错性和可扩展性。 - 迭代计算(Iterative Computation):支持迭代计算,有效应对多步的数据处理逻辑。 - 数据挖掘(Data Mining):在海量数据基础上进行复杂的挖掘分析,可支持各种数据挖掘和机器学习算法。 - 流式处理(Streaming Processing):支持秒级延迟的流式处理,可支持多种外部数据源。 - 查询分析(Query Analysis):支持标准SQL查询分析,同时提供DSL(DataFrame), 并支持多种外部输入。 ## 二、样例背景 在Spark应用中,用户可以通过Elasticsearch的原生接口,以及elasticsearch-spark工具提供的接口,实现索引的创建、查询、删除等操作。 ## 三、样例调试 1. 前提:Linux环境有安装集群客户端,环境准备,参考第一课 2. 数据规划 首先需要把数据文件放置在HDFS系统里。 1. 获取测试数据文件,获取样例代码data目录中的people.json文件; 2. 在HDFS上建立一个文件夹“spark-on-es”,并将上一步得到的people.json文件上传到hdfs的/user/spark-on-es目录下面,命令如下: 1. 在HDFS客户端,执行如下命令获取安全认证。 cd /opt/hadoopclient kinit 用于认证的业务用户> 2. 在Linux系统HDFS客户端使用命令hadoop fs -mkdir /user/spark-on-es(hdfs dfs命令有同样的作用),创建对应目录。 3. 在Linux系统HDFS客户端使用命令hadoop fs -put people.json /user/spark-on-es,上传数据文件。 3. 比对“本地时间和Linux机器时间”与集群时间误都不能超过5分钟 4. 检查linux环境的JDK版本为1.8 5. 配置linux环境的/etc/hosts文件 6. 检查 C:\Windows\System32\drivers\etc\hosts文件中是否包含所有集群节点的域名IP映射信息 7. 在IDEA打开样例代码的SparkOnEsJavaExample目录,检查SDK配置 8. 默认自动加载依赖,如未加载,则打开后选中pom.xml文件,右键点击“Add As Maven Project”后等待项目自动将依赖下载完毕 9. 在Linux环境新建目录,例如“/opt/spark-on-es/” 10. 从Manager界面下载用户认证凭据后,解压缩获取秘钥文件user.keytab和krb5.conf,将这两个文件放到Linux环境新建的目录中例如“/opt/spark-on-es” 11. 修改样例代码conf中esParams.properties文件,可以参考es客户端下es-rest-client-example.properties文件 需要修改用户名principal与密码userPassword,其他项可参考es-rest-client-example.properties文件 12. 在IDEA主页面,选择“View->Tool Windows->Maven”打开“Maven”工具窗口。 13. 在Maven工具窗口,选择clean生命周期,执行Maven构建过程。 14. 在Maven工具窗口,选择package生命周期,执行Maven构建过程。 15. 从IDEA项目目录下的target文件夹中获取到Jar包,拷贝到Spark运行环境下(即Spark客户端),如“/opt/spark-on-es”。 16. 通过如下maven指令构建样例工程依赖jar包到lib目录,注意--settings后客户使用自己的本地目录 mvn dependency:copy-dependencies -DoutputDirectory=lib --settings D:\tools\apache-maven-3.6.3\conf\settings.xml 17. 在“/opt/spark-on-es”目录下新建子目录"libs",将步骤16所打的jar包中如下包拷贝到子目录"libs"下 - elasticsearch-7.6.0-hw-ei.jar - elasticsearch-core-7.6.0-hw-ei.jar - elasticsearch-rest-client-7.6.0-hw-ei.jar - elasticsearch-rest-high-level-client-7.6.0-hw-ei.jar - elasticsearch-spark-20_2.11-7.6.0.jar - elasticsearch-x-content-7.6.0-hw-ei.jar - lang-mustache-client-7.6.0-hw-ei.jar - log4j-api-2.12.0.jar - log4j-core-2.12.0.jar - lucene-core-8.4.0-hw-ei.jar - rank-eval-client-7.6.0-hw-ei.jar 18. 从IDEA项目conf目录下esParams.properties拷贝到“/opt/spark-on-es” 19. kinit认证后,运行命令分别如下(类名与文件名等请与实际代码保持一致,此处仅为示例) 1. client模式运行任务 ``` cd /opt/spark-on-es spark-submit --class com.huawei.bigdata.spark.examples.SparkOnEs --master yarn --deploy-mode client --conf spark.driver.userClassPathFirst=true --jars $(files=(/opt/spark-on-es/libs/*.jar); IFS=,; echo "${files<li>}") ./SparkOnEs-1.0.jar ``` 其中“/opt/spark-on-es/libs/”是外部依赖的jar包路径。 2. cluster模式运行任务 ``` cd /opt/spark-on-es spark-submit --class com.huawei.bigdata.spark.examples.SparkOnEs --master yarn --deploy-mode cluster --conf spark.driver.userClassPathFirst=true --jars $(files=(/opt/spark-on-es/libs/*.jar); IFS=,; echo "${files[*]}") --files ./user.keytab,./krb5.conf,./esParams.properties ./SparkOnEs-1.0.jar ``` 其中--files参数用来指定程序运行时需要的配置文件,多个文件要以半角逗号“,”分隔。 20. 查询Elasticsearch中的数据。 ``` # kinit认证后,查看Elasticsearch中的index: curl -XGET --tlsv1.2 --negotiate -k -u : 'https://10.10.10.11:24100/_cat/indices?v' # 通过下述命令对people索引中的数据进行范围查询: curl -XPOST --tlsv1.2 --negotiate -k -u : 'https://10.10.10.11:24100/people/_search?pretty' -H 'Content-Type:application/json' -d '{ "query": { "range": { "createdTime": {"gte": "2010-01-01T00:00:00Z", "lt": "2015-12-31T23:59:59Z"} } }}' ``` 21. 查询HDFS中的文件。 ``` # kinit认证后,查看保存到HDFS中的分组结果文件: hdfs dfs -ls /user/spark-on-es/group-result # 查看某个文件中的内容,比如查看文件part-00001: hdfs dfs -cat /user/spark-on-es/group-result/part-00001 ``` ## 四、问题互动渠道 FusonInsight 论坛入口 https://bbs.huaweicloud.com/forum/forum-1103-1.html
  • [技术干货] MySQL+NodejS+ES的全文搜索实战
    一、Elasticsearch单独使用1、Elasticsearch安装(建议Linux系统):步骤一:安装较新版本的Java,确保环境变量配置正确,JDK版本不能低于1.7_55。步骤二:安装Elasticsearch:https://www.elastic.co/cn/downloads/elasticsearch    Linux版本$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.0-linux-x86_64.tar.gz $ tar -xzf elasticsearch-7.10.0-linux-x86_64.tar.gz    windows版本:官网下载windows版本安装包,解压。2、Elasticsearch启动$ cd elasticsearch-7.10.0/$ ./bin/elasticsearch (Linux版本) $ .\bin\elasticsearch.bat (windows版本)运行成功后,浏览器访问http://localhost:9200/?pretty页面出现如下信息意味着启动成功了!!!或者打开另一个终端 执行:curl 'http://localhost:9200/?pretty' ,与上一种方式启动成功信息显示一致。(windows可以安装cURL)。可以搭配图形用户界面一起使用,安装kibana(https://www.elastic.co/guide/en/kibana/4.6/index.html), 与 elasticsearch 版本对应即可。二、Node连接MySQL1、安装ES模块$ npm install elasticsearch --save2、安装MySQL驱动$ npm install mysql --save3、这里的框架使用的是koa,先写配置文件,代码如下:4、插入数据,测试数据使用 [Faker-zh-cn.js](https://github.com/layerssss/Faker-zh-cn.js) 生成。5、使用ES全文高亮搜索,代码如下:
  • [问题求助] elasticsearch7.9.0版本存在,kibana7.9.0确木有找到
  • [问题求助] 华为云elasticsearch集群有没有自定义词库管理接口
    【功能模块】elasticsearch词库管理【操作步骤&问题现象】希望能够调用某个api能够更新elasticsearch词库,如主词库文件、停用词等【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] 【es产品】【分片功能】这种每天存一点数据 ,创建一个索引有什么优化方案吗?
    【功能模块】【操作步骤&问题现象】1、默认单节点1000,分片满了该如何存储,(考虑不增加节点的)2、数据量很小3. 这种场景建议如何创建索引【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [交流吐槽] Elasticsearch 求更新
    目前官网已经有 Elasticsearch 7.8.1 7.9.0 7.9.1 ,而目前华为镜像站最新版为 7.8.0请大佬们有空更新一下~
  • [技术干货] [问题案例] 客户端连接 ES出现Connection reset by peer问题
    **客户问题** ``` 客户反馈使用spring boot服务使用ES RestHighLevelClient链接ES运行一段时间 就会出现Connection reset by peer,TCP连接中断,业务数据写入失败。 连接关闭有很多原因,是ES服务器端不能完全控制的 有可能关闭了连接,有可能有防火墙,交换机,vpn等,也有可能是keepalive设置问题,更换了连接服务器节点,网络不稳定等。 ``` **我们先回顾下TCP知识** TCP长连接和短连接 ``` TCP协议中有长连接和短连接之分。短连接在数据包发送完成后就会自己断开,长连接在发包完毕后, 会在一定的时间内保持连接,即我们通常所说的Keepalive(存活定时器)功能。 ``` TCP保活机制 ``` 保活机制是由一个保活计时器实现的。当计时器被激发,连接一段将发送一个保活探测报文, 另一端接收报文的同时会发送一个ACK作为响应。 如果客户端无响应服务器将中断连接,否则会重置保活计时器。 服务器端Keepalive设置时间30m,Linux有三个参数可以控制保活时间 tcp_keepalive_time(开启keepalive的闲置时长) tcp_keepalive_intvl(keepalive探测包的发送间隔) tcp_keepalive_probes (如果对方不予应答,探测包的发送次数) ``` http-keepalive http-keepalive 是保证一个tcp连接尽可能传递多的报文,每次交互一个报文后就会更新http-keepalive时间,如果http-keepalive时间超时,意味这个这段时间client和server没有报文交互,本端会主动关闭释放连接。 注意tcp-keepalive是一种探测tcp连接状态的保活机制,tcp连接建立后如果不主动关闭,client和server没有发生异常,这个连接理论上是一直存在的, http-keep是保证一个tcp连接上尽可能传递更多的报文,如果http-keepalive时间内没有报文交互是会主动关闭连接的。 客户的建议修复方案。 方式1 ``` 修改RestHighLevelClient连接请求的超时时间 默认1000ms可以尝试增加到10000ms RestClientBuilder builder = RestClient.builder(new HttpHost(endpoint, port)) .setHttpClientConfigCallback(httpClientBuilder-> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider)) .setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder.setConnectTimeout(10000).setSocketTimeout(60000)); return new RestHighLevelClient(builder); 单个请求修改:request.timeout(TimeValue.timeValueSeconds(60)); ``` 方式2 ``` 可以尝试在spring boot创建一个定时器定期探测下es保持keepAlive @Scheduled(fixedRate = 60000, initialDelay = 60000) public void keepConnectionAlive() { log.debug("Trying to ping Elasticsearch"); try { final long noOfSportsFacilities = restHighLevelClient.status(); log.debug("Ping succeeded for SportsFacilityViewRepository, it contains {} entities", noOfSportsFacilities); } catch (Exception e) { log.debug("Ping failed for SportsFacilityViewRepository"); } } ``` 方式3 ``` 设置RestHighLevelClient keepalive时间,这个实际设置到15分钟 ``` 方式4 ``` 代码层面捕获异常,重试请求 ``` 参考: https://segmentfault.com/a/1190000021057175 https://discuss.elastic.co/t/restclient-connection-reset-by-peer/235134 https://github.com/elastic/elasticsearch/issues/44546 https://stackoverflow.com/questions/52997697/how-to-get-around-connection-reset-by-peer-when-using-elasticsearchs-restclie
  • [技术干货] 【转载】不当使用scroll导致elasticsearch内存暴涨的问题
    某天发现es集群堆内存暴涨,持续在90%以上,并且一直降不下去,持续告警。这种问题首先就是怀疑内存泄漏,但是没有定位出来哪里泄漏了,用jmap dump了一个20G的内存文件下来,使用MAT打开问题分析可以看到SearchService里的ConcurrentHashMap占了78%的内存,打开SearchService的源码,只能是这个activeContexts了:private final ConcurrentMapLong<SearchContext> activeContexts = ConcurrentCollections.newConcurrentMapLongWithAggressiveConcurrency();问题已经有一点眉目了,是用户执行了某些查询导致的内存使用率上升。首先大致了解一下es的search流程,search可以简单理解为分成两个阶段:query和fetch。client节点接收到search请求后,根据查询的索引的shard所在的节点,将search请求异步转发给每个shardquery阶段在每个shard上执行查询,将这个shard上满足条件的doc id和评分的topN返回给client节点,这样client实际拿到了 topN * shard个数 条记录client汇总每个shard返回的doc id和评分,把这些topN再次排序获取到整个查询的topNclient再将 这些topN的doc id发送给对应的shard节点去获取原文,这个过程是fetch(elasticsearch 源码解析与优化实战)ES在query阶段会构造SearchContext,里面保存着这次查询的query语句、排序字段,以及查询过程中需要用到的IndexReader、IndexSearcher等信息。因为fetch阶段也需要通过IndexReader来读取doc id对应的原文,所以在执行完query节点后,searchContext并不会马上释放,而是被放到了 内存中的 activeContexts,也就是造成客户节点内存暴涨的这个ConcurrentHashMap。那这些放在activeContexts中的SearchContext是在什么时候释放的呢?正常情况下是执行完fetch阶段以后就会释放。有两种特殊的情况:第一种: 在执行完query以后,client节点就挂了,后面的fetch就没执行,那不是就没机会释放了么?这么简单的异常处理es肯定是有的,在SearchService的构造中就 启动了一个Reaper(收割机)来清理过期残留的SearchContextthis.keepAliveReaper = threadPool.scheduleWithFixedDelay(new Reaper(), keepAliveInterval, Names.SAME);在Reaper里面把已经超过keepalive的时间还没有使用的SearchContextfree掉这个keepalive的时间可以通过 search.default_keep_alive 设置,默认值5分钟第二种特殊情况 是scroll,如果查询是个scroll查询,那在fetch阶段执行完成后也不能释放SearchContext,因为Scroll还会有下一次fetch来获取下一页的内容,那Scroll查询的SearchContext是在什么时候释放的呢?有两种方式,第一种用户在scroll完了以后主动调用delete接口释放:DELETE /_search/scroll {     "scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==" }第二种方式是等待scroll超时,scroll超时时间是通过发送的scroll请求来决定的,如下面的这个例子,超时时间设置成了1分钟:POST /twitter/_search?scroll=1m {     "size": 100,     "query": {         "match" : {             "title" : "elasticsearch"         }     } }通过以上的分析,activeContexts大量未释放的SearchContext只能有两种可能:1. es社区代码就有bug,在某种特定场景下有泄漏。2. 客户在执行scroll,并且将超时时间设置的巨长。第一点不太好找,先看第二点吧,我们已经dump了堆内存了,未释放SearchContext都能看到,那不就好办了么。首先看到SearchContext里的ScrollContext不是Null,好的,确实是个scroll请求:接下来得看下超时时间了,240分钟!!整整四个小时。问题结论:到这,问题基本已经清楚了,es里并没有内存泄漏,而是客户在使用scroll的时候将超时时间设置成了四个小时,并且在scroll完了以后并没有主动删除context,导致大量SearchContext无法释放。进一步思考:这么容易触发es服务端故障的问题es竟然防不住,有点说不过去啊,新版本是否有改进呢?找了找社区的issue,果然有。1. 增加一个正在执行的scroll context的限制,虽然有点强盗逻辑,但是至少能防住这个问题https://github.com/elastic/elasticsearch/issues/252442. 在scroll完了以后自动将SearchContext释放,不过目前这个还在讨论中,暂未实现,好几年没动静了 ==||https://github.com/elastic/elasticsearch/issues/23269
  • [内容拦截申诉] 论坛[问题求助] 【ES搜索集群】【搜索功能】指定语句无法查询到对应数据
    发文的版块名:云社区 论坛 全部版块 EI企业智能 云搜索服务发文的标题名:[问题求助] 【ES搜索集群】【搜索功能】指定语句无法查询到对应数据帖子内容链接:https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=72312&page=1&extra=#pid314515
  • [内容拦截申诉] [问题求助] 【ES搜索集群】【搜索功能】指定语句无法查询到对应数据
    【功能模块】原帖被误拦截,请尽快恢复【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] 【ES搜索集群】【搜索功能】指定语句无法查询到对应数据
    【功能模块】使用ES集群服务存储数据 iMaster MAE-TOOL(SetBaseLine)V100R021C10SPC100B008,存储到ES后,在kibana显示iMaster后面的空格变成了一个红色的小点,该点影响正常的wildcard查询,导致结果错误,请相关人员帮忙尽快定位下原因。(该红点无法复制到外面,会自动变成空格),如有结果,联系ywx830750【操作步骤&问题现象】1、2、【截图信息】具体图片看文档附件【日志信息】(可选,上传日志内容或者附件)
  • [生态对接] FusionInsight Elasticsearch对接Kibana
    ## 对接场景 Kibana提供了图形化操作界面,通过可视化界面对Elasticsearch进行索引构建、查询、分析等操作。 本指导适用FusionInsight HD 6.5.1版本 ## 前提条件 已下载安装Kibana。 - 下载Kibana安装包“kibana-oss-6.7.1-linux-x86_64.tar.gz”并上传至任意EsMaster实例所在节点,例如`/opt`目录下。 开源社区下载地址:https://www.elastic.co/cn/downloads/past-releases/kibana-oss-6-7-1。 - 解压安装包,并进入对应解压目录。 ``` cd /opt tar -zxvf kibana-oss-6.7.1-linux-x86_64.tar.gz cd kibana-6.7.1-linux-x86_64/ ``` > - 使用Dev Tools功能的用户,需要在elasticsearch组内。 > - 使用其他功能的用户,需要在supergroup组内。 ## 操作步骤 修改配置并启动Kibana。 - 如果当前系统为TaiShan服务器,需要下载Nodejs的ARM版本替换kibana解压目录下的node目录 下载node-v10.15.2-linux-arm64.tar.gz,解压后替换kibana-6.7.1-linux-x86_64下的node。下载地址:https://nodejs.org/dist/v10.15.2/ ``` tar -zxvf node-v10.15.2-linux-arm64.tar.gz -C /opt rm -rf /opt/kibana-6.7.1-linux-x86_64/node/* mv /opt/node-v10.15.2-linux-arm64/* /opt/kibana-6.7.1-linux-x86_64/node/ ``` - 修改`config/kibana.yml`配置,示例如下: ``` #Kibana在Elasticsearch中使用的索引名称。 #若需要启动多个Kibana,请确保不同用户的该配置项内容不重复。 kibana.index: ".kibana" #Kibana服务端口。 server.port: 5601 #当前节点ip,默认localhost。 server.host: "10.1.1.1" #需要访问的Elasticsearch节点IP及端口号,建议配置EsNode1实例的IP和端口号。普通模式下,请将https修改为http。 elasticsearch.hosts: ["https://10.1.1.1:24100"] #直接填写none即可。 elasticsearch.ssl.verificationMode: none #修改xxxxxx为“用户名:密码”的base64转码结果;普通模式不需要此项配置。 elasticsearch.customHeaders: {"custom-proxy-username":"xxxxxx"} #Kibana日志目录,根据实际场景自定义即可,请提前手动创建该文件。 logging.dest: /opt/kibana-6.7.1-linux-x86_64/log/kibana.log #Kibana健康检查周期,请根据实际使用场景合理填写,单位ms。 elasticsearch.healthCheck.delay: 60000 ``` > - elasticsearch.hosts禁止配置EsMaster节点的IP和Port。EsMaster实例为重要的管理进程,为确保Elasticsearch集群稳定性,不允许配置EsMaster节点IP和Port。 > - 因部分java库仍遵循RFC的Base64规定,在进行加密时会增加换行符,请保证elasticsearch.customHeaders配置项中的信息无换行符。 > - 可下载Elasticsearch客户端,导入RestClient二次开发样例,使用com.huawei.fusioninsight.elasticsearch.example.util.Base64Utils工具类进行Base64加密。 > - 请确保Base64转码结果在填写时,只替换“xxxxxx”部分。 例如,当前用户名为test,密码为123,“test:123”转base64后为“dGVzdDoxMjM=”,则配置项填写为:elasticsearch.customHeaders: {"custom-proxy-username":"dGVzdDoxMjM="} - 使用命令`./bin/kibana`启动Kibana > 如需后台运行,可执行如下命令`nohup ./bin/kibana &`启动Kibana: - 查看Kibana日志,确认启动成功后,登录Kibana界面。 在配置的Kibana日志文件中,找到如下类似日志,即表明Kibana已经启动成功,在浏览器输入日志中打印的链接即可,如http://10.1.1.1:5601。 ``` "type":"log","@timestamp":"2019-06-07T07:07:32Z","tags":["status","plugin:elasticsearch@6.7.1","info"],"pid":44252,"state":"green","message":"Status changed from yellow to green - Ready","prevState":"yellow","prevMsg":"Waiting for Elasticsearch"} {"type":"log","@timestamp":"2019-06-07T07:07:32Z","tags":["listening","info"],"pid":44252,"message":"Server running at http://10.1.1.1:5601"} ``` > - create index pattern等操作,Kibana会创建相关索引,默认为".kibana"开头。 > - Kibana会根据健康检查状态进行信息反馈,如果在healthCheck周期内,信息发生变化(例如切换登录用户),可能需要等到下一次healthCheck的反馈结果才会生效;同时,健康检查会发送多个http请求到Elasticsearch,为防止增加Elasticsearch集群的压力,请根据使用场景,合理配置kibana.yml中的健康检查周期,即参数elasticsearch.healthCheck.delay。
  • [分享交流] Grafana和ES打造的Nginx的仪表盘 ———————————————— 版权声明:本文为CSDN博主「CrissCha
    grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库,官网(http://docs.grafana.org/).我们想要打造一套监控平台,因此我在逐渐的完善我的DashBoard系列文章。如果你也对这部分感兴趣那么欢迎来和我一起构建这个仪表盘。监控指标针对入口Nginx,我设计了如下的监控指标:最近的24小时内访问量Top10的国家最近24小时最受欢迎的页面200状态码和404状态码的比例最受欢迎的世界题图展示构建你的DashBoard再开始构建前,我需要先介绍一下都用到了什么基础软件,Nginx,Redis,Logstash,Elasticsearch,Grafana,Pormetheus。那么,要构建这个DashBoard,我们首先要把Elasticsearch作为数据源配置到Grafana中。打开如下地址,然后输入Grafana的管理员用户名和密码进配置。http://grafana服务ip:3000进入配置页面,在左侧选择数据源,选择添加数据源,选择Elasticsearch后,完成配置。配置完成数据后,我们就要选择dashboard的模板了。我们进入dashboard的配置,我们使用 https://grafana.com/grafana/dashboards/11190,模板。接下啦,我们需要输入dashboard的名字,选择Elasticsearch和Prometheus的数据源就可以看到你的监控数据了。看看我们的DashBoard你需要知道的内容上面看完了,那么下面我介绍一下我系统中用到的这些软件的链接关系。Nginx 会将我们定义的log_format写入/var/log/nginx/access_json.log文件,Filebeat会将其作为输入项。Filebeat会将数据输出到RedisLogstash作为Redis数据的过滤将数据存储ElasticsearchGrafana读取Elasticsearch数据源
总条数:146 到第
上滑加载中