关于kibana:探析ElasticSearch-Kibana在测试工作中的实践应用-京东物流技术团队

一. 为什么应用ES Kibana离线数据测试中最重要的就是数据验证,一部分须要测试es存储数据的正确性,另一部分就须要验证接口从es取值逻辑的正确性。而为了验证es取值逻辑的正确性,就须要用到Kibana, 它能帮忙测试同学更加疾速高效的执行es数据的查问,大大提高测试效率。 二. 什么是ES和Kibana咱们平时所说的ELK指的就是Elasticsearch、Logstash和Kibana,这三个技术的组合是大数据畛域中一个很奇妙的设计,是一种很典型的MVC思维,模型长久层,视图层和管制层。 Logstash负责管制层的角色,负责收集和过滤数据。 Elasticsearch负责数据长久层的角色,负责贮存数据,是一个实时的分布式存储、搜寻、剖析的引擎,实用于所有类型的数据,包含文本、数字、天文空间、结构化和非结构化数据,相较于Mysql来说更长于百万数据量的检索。 而咱们这次讲的Kibana负责视图层角色,它是一个为Logstash和ElasticSearch提供的日志剖析的Web接口。可应用它对日志进行高效的搜寻、可视化、剖析等各种操作,是一个开源的数据分析与可视化平台,与Elasticsearch搜索引擎一起应用。您能够用Kibana搜寻、查看、交互寄存在Elasticsearch索引中的数据,也能够应用Kibana以图表、表格、地图等形式展现数据,从而达到高级的数据分析与可视化的目标。 本次将介绍Kibana中的Dev Tools中sql查问 , Visualize(可视化数据) 两个性能的应用。 三. Dev Tools 中的sql查问ES和MYSQL的区别: MysqlElasticSearchDatabaseindexTableTypeRowDocumentColumnFieldSchemaMappingIndexEverything is indexedSQLQuery DSLSELECT * FROM ...GET http://...UPDATE table SET...PUT http://...在数据库中的增insert、删delete、改update、查select操作等价于ES中的增PUT/POST、删Delete、改_update、查GET。对于这些简单的查问,es应用Query DSL都能够实现。 POST /index111/_search{ "query": { "bool": { "must": [ {"term":{"user": "张三"}}, {"term":{"timeStamp": "2022-08-04 00:00:00"}} ] } }}然而相比拟来说,咱们更加相熟sql语句,所以es也提供了sql语句的开发,让咱们通过sql语句即可实现ES的查问。在es版本6.3之前都不反对sql语句的开发,如果须要应用sql语句来开发es的数据查问,那么咱们须要手动的本人装置插件。 然而在6.3版本之后,es自带就装置了sql的插件,集成在_xpack上面,咱们能够间接通过sql语句的形式实现es当中的数据查问 以下为应用sql语句查问的步骤: 进入Dev Tools - Console(控制台)POST /_xpack/sql{ "query": "select * from index111 "}输出以上语句,默认返回格局为json 2.能够自定义返回的格局,如想返回文本格式, /_xpack/sql 后加上?format=txt 较为简单的分类聚合计算的sql语句,也是反对的。 应用该性能,可能帮忙测试同学较为方便快捷的查问es的数据,进步测试效率。 四. Visualize(可视化数据) 应用应用下面的sql语句,可能较快的查问到数据,但该sql语句无奈保留,等下次验证回归该内容,查问同样数据时,还需再次输出sql语句,就可能呈现须要从新理解查问逻辑,缩短回归工夫的问题。而应用Visualize(可视化数据)能够将es索引内容通过聚合,通过图表等多种形式保留并显示进去,可能更加间接浏览es的数据,同时产品业务也可用于进行数据分析,创立数据看板。 ...

September 20, 2023 · 1 min · jiezi

关于kibana:Centos-7-安装系列11Kibana

一、零碎环境操作系统:Centos 7已装置环境:ElasticSearch 8.6.2 二、装置须要留神的是:Kibana的版本须要和Elasticsearch保持一致。 2.1 下载并解压安装包cd /optyum install -y wgetwget https://artifacts.elastic.co/downloads/kibana/kibana-8.6.2-linux-x86_64.tar.gztar -zxvf kibana-8.6.2-linux-x86_64.tar.gzmv kibana-8.6.2 kibana2.2 批改配置文件vi /opt/kibana/config/kibana.yml 批改内容如下,也能够间接在文件开端加上: server.port: 5601server.host: "0.0.0.0"elasticsearch.hosts: ["http://192.168.88.159:9200"] 2.3 启动配置文件夹权限 chown -R es:es /opt/kibana切换用户启动 kibana su escd /opt/kibananohup ./bin/kibana > logs/kiban.log 2>&1 & 2.4 凋谢端口exitfirewall-cmd --zone=public --add-port=5601/tcp --permanentfirewall-cmd --reload此时仍无法访问kibana 。为什么?因为kibana 启动时就与es 进行通信,而咱们并没有为kibana 设置es 的账号密码。 2.5 配置ES 账号密码咱们须要为ES 的 kibana 账号设置明码 cd /opt/elasticsearch/bin/kibana 账号:领有 kibana_system 角色,用户 kibana 用来连贯 elasticsearch 并与之通信。Kibana 服务器以该用户身份提交申请以拜访集群监督 API 和 .kibana 索引。不能拜访 index。 ...

May 10, 2023 · 1 min · jiezi

关于kibana:elasticsearch学习本地kibana通过安全证书连接远程elasticsearch

1. 须要的证书文件1.1 前情提要起因是阿里云服务器内存资源无限,切实是养不起kibana,所以只在阿里云部署es,在本地计算机启动一个kibana来连贯;当然也能够是elasticsearch-head或者elasticvue浏览器插件的. 1.2 须要的3个文件kibana通过证书拜访近程es须要这3个文件:crt/csr/key次要是本地kibana须要这三个配置, 所以前面生成这3个文件之后, 要下载下来, 放到本地kibana/config目录下,配置上全门路: elasticsearch.ssl.certificate: d:/xxx/kiana/config/kibana.crtelasticsearch.ssl.key: d:/xxx/kiana/config/kibana.keyelasticsearch.ssl.certificateAuthorities: [ "d:/xxx/kiana/config/elasticsearch-ca.pem" ]2. 证书的生成csr/key/crt生成都需在es所在服务器上!2.1 生成csr/key证书bin/elasticsearch-certutil csr -name kibana -dns myhost#会在es的根目录下生成 csr-bundle.zip 文件, `unzip csr-bundle.zip`解压开:#会有2个文件: kibana/kibana.csrkibana/kibana.key2.2 生成crt证书openssl x509 -req -in kibana.csr -signkey kibana.key -out kibana.crt# 会生成crt文件:kibana.crt3. 本地kibana配置文件server.port: 5601server.host: "localhost"elasticsearch.hosts: ["https://myhost.com:9200"]#不能应用elastic账号,elastic账号是管理员账号#能够通过`bin/elasticsearch-certutil -u kibana -i`自定义一对账密elasticsearch.username: "kibana"elasticsearch.password: "mypassword"#配置上面3个证书文件(服务器es上生成的crt/key/pem)elasticsearch.ssl.verificationMode: noneelasticsearch.ssl.certificate: D:/_tmp/kibana-8.5.2/config/kibana.crtelasticsearch.ssl.key: D:/_tmp/kibana-8.5.2/config/kibana.keyelasticsearch.ssl.certificateAuthorities: [ "D:/_tmp/kibana-8.5.2/config/elasticsearch-ca.pem" ]下面就是本地kibana.yml的全副配置, 而后间接启动即可连贯.4. 备注服务器hostname=myhost服务器域名=myhost.com

December 30, 2022 · 1 min · jiezi

关于kibana:kibana-判断-doc-是不是存在

国内的互联网真的是瘠薄的不行 kibanba 查看一个 index 有多少 doc GET _cat/indices/test_renmin_meta_new?v kibanba 查看一个 index 内的所有 doc GET _cat/indices/test_renmin_meta_new?v 参考:How To Return All Documents From An Index In Elasticsearch kibana 判断 doc 是不是存在

October 26, 2022 · 1 min · jiezi

关于kibana:解决-浏览器访问kibana报错Kibana-server-is-not-ready-yet

大家好,我是无名小歌!!!明天分享一个浏览器拜访 Kibana 是呈现的问题及解决办法。 以下操作针对 kibana-8.2.2 版本 举荐学习ELK搭建:【Elastic Stack】 搭建最新 ELK 日志剖析零碎 8.2.2版 报错: Kibana server is not ready yet.(Kibana服务器尚未就绪) 解决办法: 批改配置重启服务解除正文:server.port、server.host,其余参数不做批改server.host:填写本人主机ip sudo /bin/systemctl daemon-reloadsudo systemctl restart kibana.servicekibana-8.2.2配置文件kibana.yml中的elasticsearch.hosts字段不须要填写 kibana-8.2.2连贯Elasticsearch的办法,生成一个注册令牌,最初web拜访kibana时填入即可连贯。生成一个注册令牌命令 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

June 4, 2022 · 1 min · jiezi

关于kibana:kibana去重统计和分组统计

新建可视化统计 抉择数据表格展示形式 抉择数据源 去重统计举例:这里统计的是24小时内,申请config门路返回401的手机号数量 数据筛选条件数据时间段条件Aggregation:统计类型,抉择 unique Count,去重统计Field: 统计字段,这里统计手机号执行统计操作显示统计后果 分组统计举例:在下面的根底上,对申请版本字段进行分组 基于下面一个的手机号去重统计后果,也能够不须要。分组统计指标Aggregation:聚合类型,抉择terms依据条数Field:分组字段,这里抉择appver,版本号Order by:排序字段Order:排序类型,Descending:从大到小,Ascending,从小到大。Size:展现条数,返回排序前几条执行操作展现后果

July 17, 2021 · 1 min · jiezi

1Kibana-环境搭建

Mac OS$ tar -zxvf ~/dev/doc/kibana-6.7.1-darwin-x86_64.tar.gz -C ~/dev/tools/$ ln -s ~/dev/tools/kibana-6.7.1-darwin-x86_64/ ~/dev/tools/kibana$ vim ~/dev/tools/kibana/config/kibana.yml # 指定elasticsearch实例这是默认的我没有改 elasticsearch.hosts: ["http://localhost:9200"] $ vim ~/.bash_profile export KIBANA_HOME=/Users/baozi/dev/tools/kibana export PATH=$PATH:$KIBANA_HOME/bin$ kibanahttp://localhost:5601/app/kibana

April 27, 2019 · 1 min · jiezi

centos7 安装ELK做日志收集(elasticsearch,logstash,kibana)

关于elk不用说,大家多多少少都听过,最近我搭建了一套用作收集日志,供大家参考:一.安装elasticsearch,logstash,kibana强烈建议安装去es的官网安装: 今天是2019.4.9,目前最新的版本是6.7.1,三个都装6.7.1版本(版本最好一致,否则会有各种疑难杂症)elasticsearch: https://www.elastic.co/downlo...logstash: https://www.elastic.co/cn/dow...kibana:https://www.elastic.co/cn/dow…其中es的安装教程我在这篇文章里面已经写了:https://segmentfault.com/a/11…,下面介绍logstash和kibana的安装过程1.logstash: 下载后##进入安装包所在目录,解压tar -xf logstash-6.7.1.tar.gz##切换到bin目录cd /logstash-6.7.1/bin##编辑或者创建一个启动的配置文件,到时候用这个配置文件启动vim input_flter_output.confinput { file{ path=> “/crawler/jenkins/.log” ##生成日志的目录 type=> “cml” ##索引的类型 start_position=> “beginning” ##一开始就输入原来的日志信息 } stdin{}}filter{ }output{ elasticsearch{ action=> “index” hosts=> “www.iamcrawler.cn:9500” ##输出到elasticsearch上面 index=> “log-%{+yyyy.MM.dd}” ##生成一个log-时间的索引 }} #最后保存退出 ##在bin目录下再编写一个启动bat vim run.bat sh logstash -f input_flter_output.conf & #最后保存退出 然后运行run.bat即可 [root@iamcrawler bin]# sh run.bat ##正常会出现以下情况: [root@iamcrawler bin]# Sending Logstash logs to /crawler/logstash/logstash-6.7.1/logs which is now configured via log4j2.properties [2019-04-09T13:11:40,120][WARN ][logstash.config.source.multilocal] Ignoring the ‘pipelines.yml’ file because modules or command line options are specified [2019-04-09T13:11:40,138][INFO ][logstash.runner ] Starting Logstash {“logstash.version”=>“6.7.1”} [2019-04-09T13:11:50,041][INFO ][logstash.pipeline ] Starting pipeline {:pipeline_id=>“main”, “pipeline.workers”=>2, “pipeline.batch.size”=>125, “pipeline.batch.delay”=>50} [2019-04-09T13:11:50,697][INFO ][logstash.outputs.elasticsearch] Elasticsearch pool URLs updated {:changes=>{:removed=>[], :added=>[http://www.iamcrawler.cn:9500/]}} [2019-04-09T13:11:51,065][WARN ][logstash.outputs.elasticsearch] Restored connection to ES instance {:url=>“http://www.iamcrawler.cn:9500/"} [2019-04-09T13:11:51,191][INFO ][logstash.outputs.elasticsearch] ES Output version determined {:es_version=>6} [2019-04-09T13:11:51,196][WARN ][logstash.outputs.elasticsearch] Detected a 6.x and above cluster: the type event field won’t be used to determine the document _type {:es_version=>6} [2019-04-09T13:11:51,232][INFO ][logstash.outputs.elasticsearch] Using default mapping template [2019-04-09T13:11:51,253][INFO ][logstash.outputs.elasticsearch] New Elasticsearch output {:class=>“LogStash::Outputs::ElasticSearch”, :hosts=>[”//www.iamcrawler.cn:9500"]} [2019-04-09T13:11:51,287][INFO ][logstash.outputs.elasticsearch] Attempting to install template {:manage_template=>{“template”=>“logstash-”, “version”=>60001, “settings”=>{“index.refresh_interval”=>“5s”}, “mappings”=>{"default"=>{“dynamic_templates”=>[{“message_field”=>{“path_match”=>“message”, “match_mapping_type”=>“string”, “mapping”=>{“type”=>“text”, “norms”=>false}}}, {“string_fields”=>{“match”=>"", “match_mapping_type”=>“string”, “mapping”=>{“type”=>“text”, “norms”=>false, “fields”=>{“keyword”=>{“type”=>“keyword”, “ignore_above”=>256}}}}}], “properties”=>{"@timestamp"=>{“type”=>“date”}, “@version”=>{“type”=>“keyword”}, “geoip”=>{“dynamic”=>true, “properties”=>{“ip”=>{“type”=>“ip”}, “location”=>{“type”=>“geo_point”}, “latitude”=>{“type”=>“half_float”}, “longitude”=>{“type”=>“half_float”}}}}}}}} [2019-04-09T13:11:51,399][INFO ][logstash.outputs.elasticsearch] Installing elasticsearch template to _template/logstash [2019-04-09T13:11:51,783][INFO ][logstash.inputs.file ] No sincedb_path set, generating one based on the “path” setting {:sincedb_path=>"/crawler/logstash/logstash-6.7.1/data/plugins/inputs/file/.sincedb_6677650ec826fa62a735f6625357dead", :path=>["/crawler/jenkins/.log"]} [2019-04-09T13:11:51,896][INFO ][logstash.pipeline ] Pipeline started successfully {:pipeline_id=>“main”, :thread=>"#<Thread:0x729fdee9 run>"} [2019-04-09T13:11:52,010][INFO ][filewatch.observingtail ] START, creating Discoverer, Watch with file and sincedb collections [2019-04-09T13:11:52,033][INFO ][logstash.agent ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]} [2019-04-09T13:11:52,723][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600} 2.kibana的安装 kibana安装比较简单,下载后,进入安装目录的config目录,如: cd /crawler/kibana/kibana-6.7.1-linux-x86_64/configvim kibana.yml##添加如下命令server.host: 0.0.0.0elasticsearch.url: “http://localhost:9500” #这里是es的http地址##进入kibana目录,执行以下命令,后台运行kibana./bin/kibana &二.kibana的使用可以参照网上的很多教程,这里就不过多的描述了 ...

April 9, 2019 · 2 min · jiezi

Elasticsearch 导入 kibana 的样例数据

下载数据下载地址2. 根据官方页面说明建立相关索引3. 将数据导入Elasticsearch必须在文件目录下执行导入命令,windows下需要将单引号替换为双引号curl -H “Content-Type: application/json” -XPOST “localhost:9200/bank/account/_bulk?pretty&refresh” –data-binary “@accounts.json"curl -H “Content-Type: application/x-ndjson” -XPOST “localhost:9200/_bulk?pretty” –data-binary @logs.jsonlcurl -H “Content-Type: application/x-ndjson” -XPOST “localhost:9200/shakespeare/doc/_bulk?pretty” –data-binary @shakespeare_6.0.jsonWindows的cmd没有curl功能,我是在 cmder 中执行的

March 17, 2019 · 1 min · jiezi

ELK(Elasticsearch,Logstash,Kibana) 搭建 同步 MySQL 及 用户权限安全设置

本文章用的elastic相关组件版本: 6.4.1一, 准备ElasticsearchLogstashKibanajdk 8 (主要根据logstash的版本)下载mysql-connector-java.jar找对应MySQL的版本具体每个插件的安装方式请查看官方文档, 很简单的, WIN下的都是绿色版, Linux的安装目录基本是在/usr/share/对应软件,配置文件目录在/etc/对应软件下面.二, 配置1, Logstash的配置input的配置https://www.elastic.co/guide/…增量更新的主要几个参数use_column_value => true //是否使用自定义标记列tracking_column => “id” //指定的列record_last_run => true //是否记录最后运行的指标last_run_metadata_path => “[path]” //记录的指标存储路径, 当多个input的时候, 这个是必须要设置的, 否则多个input会共用一个jdbc_paging_enabled => true //是否启用分页查询jdbc_page_size => “[number]” //每次查询多少statement => “SELECT * FROM db_name WHERE id > :sql_last_value” //记住这里的 :sql_last_value多个input的时候, 需要这个配置 后面的output用用if else时候需要作为判断依据type => ““output配置mappingshttps://www.elastic.co/guide/…template => “mappings配置的路径, 一般json格式"template_name => ““template_overwrite => trueoutput的判断语法if EXPRESSION { //…} else if EXPRESSION { //…} else { //…}2, 安全设置(用户认证相关设置)修改Elasticsearch设置修改elasticsearch.yml, 添加两个配置项:xpack.security.enabled: truexpack.security.transport.ssl.enabled: true在下面更新license的时候, 请将以上设置为false(也可以不设置为false, 影响可能不大)X-PACK设置:不过在用这个命令之前, 是需要依赖x-pack模块的, Elastic 6.3.x后面的版本, 就内置了这个模块,这个模块的使用, 不是免费的, 是收费的, 免费和收费的区别, 网上有破解版, 我暂时用破解版做演示, 请大家还是使用正版吧. 破解版替换完原版文件后, 需要自己去官网申请一个basic授权的license文件, 这是一个json文件, 修改里面的type为platinum,expiry_date_in_millis为2855980923000, 然后再在Kibana的Management的License Management的地方上传修改后的License文件.初始化用户及密码命令:elastic/bin/elastic-set-password这个命令只有两个参数 auto 和 interactive 一个是自动, 一个是交互, 交互的方式就是可以自己设置密码, 自动的我没用过, 这个命令会设置5个用户的密码:elastic,kibana,logstash_system,beats_system,apm_system_users,其中elastic这个用户的权限最大.在完成以上步骤后, 记得重启Elasticsearch和Kibana, 在重启Kibana的时候, 会遇到一些warning和error,先不管error,有两个warning需要先解决, 后面的error自然就没有了. 这两个应该是关于xpack.reporting.encryptionKey和xpack.security.encryptionKey的.参考https://www.elastic.co/guide/… 和 https://www.elastic.co/guide/...xpack.reporting.encryptionKey: “a_random_string"xpack.security.encryptionKey: “something_at_least_32_characters"再重启应该就没有error了, 这个时候就可以用之前设置密码的那几个账号登录了, 用elastic账号登录, 还可以设置其他几个账号的权限了.三, 运行Logstashlogstash -f [指定配置文件的路径.conf] ...

February 14, 2019 · 1 min · jiezi

elasticsearch入门

这篇教程主要是对在入门的elasticsearch的一个记录。ES 集群安装安装环境基于 Dokcer ,单机安装 Docker 版集群。使用版本如下:Elasticsearch 5.3.2Kibana 5.3.2JDK 8整个安装步骤分成三部分:安装 ES 集群实例 elasticsearch001安装 ES 集群实例 elasticsearch002安装 Kibana 监控安装 ES 集群实例安装过程中镜像拉取事件过长,这里笔者将docker镜像上传到阿里的docker仓库中。安装 ES 集群实例 elasticsearch001:docker run -d -p 9200:9200 \ -p 9300:9300 \ –name elasticsearch001 -h elasticsearch001 \ -e cluster.name=lookout-es \ -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \ -e xpack.security.enabled=false \ registry.cn-hangzhou.aliyuncs.com/dingwenjiang/elasticsearch:5.3.2命令解释如下:docker run: 会启动一个容器实例,如果本地没有对应的镜像会去远程registry上先下载镜像。-d: 表示容器运行在后台-p [宿主机端口]:[容器内端口]: 比如-p 9200:9200 表示把宿主机的9200端口映射到容器的9200端口–name : 设置容器别名-h : 指定容器的hostname-e: 设置环境变量。这里关闭 x-pack 的安全校验功能,防止访问认证。通过curl http://localhost:9200/_cat/health?v=pretty来验证elasticsearch001是否启动成功,如下:设置环境变量的时候,我们指定了-e cluster.name=lookout-es,用于后续关联集群用。node为1 表示只有一个实例。默认 shards 分片为主备两个。status 状态是我们要关心的,状态可能是下列三个值之一:green:所有的主分片和副本分片都已分配,集群是 100% 可用的。yellow:所有的主分片已经分片了,但至少还有一个副本是缺失的。不会有数据丢失,所以搜索结果依然是完整的。高可用会弱化把 yellow 想象成一个需要及时调查的警告。red:至少一个主分片(以及它的全部副本)都在缺失中。这意味着你在缺少数据:搜索只能返回部分数据,而分配到这个分片上的写入请求会返回一个异常。也可以访问 http://localhost:9200/ ,可以看到成功运行的案例,返回的 JSON 页面。如图:继续搭建elasticsearch002:docker run -d -p 9211:9200 \ -p 9311:9300 –link elasticsearch001 \ –name elasticsearch002 \ -e cluster.name=lookout-es \ -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \ -e xpack.security.enabled=false \ -e discovery.zen.ping.unicast.hosts=elasticsearch001 \ registry.cn-hangzhou.aliyuncs.com/dingwenjiang/elasticsearch:5.3.2启动elasticsearch002的时候增加了几个参数,–link [其他容器名]:[在该容器中的别名]: 添加链接到另一个容器, 在本容器 hosts 文件中加入关联容器的记录。-e: 设置环境变量。这里额外指定了 ES 集群的 cluster.name、ES 集群节点淡泊配置 discovery.zen.ping.unicast.hosts 设置为实例 elasticsearch001。再次执行curl http://localhost:9200/_cat/health?v=pretty,结果如图:对比上面检查数值可以看出,首先集群状态为 green , 所有的主分片和副本分片都已分配。你的集群是 100% 可用的。相应的 node 、shards 都增加。安装 Kibana 监控接着安装Kibana,对elasticsearch进行监控,安装命令如下:# 启动kibanadocker run -d –name kibana001 \ –link elasticsearch001 \ -e ELASTICSEARCH_URL=http://elasticsearch001:9200 \ -p 5601:5601\ registry.cn-hangzhou.aliyuncs.com/dingwenjiang/kibana:5.3.2其中-e 设置环境变量。这里额外指定了 ELASTICSEARCH_URL 为搜索实例地址。打开网页访问 127.0.0.1:5601,默认账号为 elasti,密码为 changeme。会出现如下的截图:Spring Boot 整合 Elasticsearch这里只是简单整合下,开发一个web接口,实现数据存储以及查询功能。开发的思路还是传统的三层架构,controller、service、dao,这里利用spring data来简化对es的curd操作。项目的repo地址:https://github.com/warjiang/d…整个项目的结构如下所示:入口文件为:Application类,其中也是大家熟悉的spring-boot的用法。controller主要在api包下,这里会暴露出两个API接口,分别是/api/contents用于写入内容、/api/content/search用于查询service主要在service包下,与controller对应,需要实现写入和查询两个方法dao主要在repository包下,继承ElasticsearchRepository,实现curd。这里需要注意的时候,读写的bean用的是entity包下的ContentEntity,实际上services中操作的的bean是bean包下的ContentBean。后续具体的实现在这里不再赘述。项目运行起来后,可以发送写入和查询的请求来测试功能的正确性。写入请求:可以通过curl 或者postman构造一个请求如下:POST /api/contents HTTP/1.1Host: 127.0.0.1:8080Content-Type: application/jsonCache-Control: no-cache[ { “id”:1, “title”:"《见识》", “content”:“摩根说:任意让小钱从身边溜走的人,一定留不住大钱”, “type”:1, “category”:“文学”, “read”:999, “support”:100 }, { “id”:2, “title”:"《态度》", “content”:“人类的幸福不是来自偶然的幸运,而是来自每天的小恩惠”, “type”:2, “category”:“文学”, “read”:888, “support”:88 }, { “id”:3, “title”:"《Java 编程思想》", “content”:“Java 是世界上最diao的语言”, “type”:2, “category”:“计算”, “read”:999, “support”:100 }]请求成功会返回如下所示:{ “code”: 0, “message”: “success”, “data”: true}写入成功后可以到kibana中查看写入结果,打开网页访问 localhost:5601,在 Kibana 监控中输入需要监控的 index name 为 content。如下图,取消打钩,然后进入:进入后,会得到如图所示的界面,里面罗列了该索引 content 下面所有字段:打开左侧 Discover 栏目,即可看到可视化的搜索界面及数据:随便打开一个json如下:{ “_index”: “content”, “_type”: “content”, “_id”: “2”, “_score”: 1, “_source”: { “id”: 2, “title”: “《态度》”, “content”: “人类的幸福不是来自偶然的幸运,而是来自每天的小恩惠”, “type”: 2, “category”: “文学”, “read”: 888, “support”: 88 }}_index 就是索引,用于区分文档成组,即分到一组的文档集合。索引,用于存储文档和使文档可被搜索。_type 就是类型,用于区分索引中的文档,即在索引中对数据逻辑分区。比如索引 project 的项目数据,根据项目类型 ui 项目、插画项目等进行区分。_id 是该文档的唯一标示,代码中我们一 ID 作为他的唯一标示。查询请求:可以通过curl 或者postman构造一个请求如下:POST /api/content/search HTTP/1.1Host: 127.0.0.1:8080Content-Type: application/jsonCache-Control: no-cache{ “searchContent”:“Java”, “type”:2, “pageSize”:3, “pageNumber”:0}对应结果如下:{ “code”: 0, “message”: “success”, “data”: { “pageNumber”: 0, “pageSize”: 3, “totalPage”: 1, “totalCount”: 1, “result”: [ { “id”: 3, “title”: “《Java 编程思想》”, “content”: “Java 是世界上最diao的语言”, “type”: 2, “category”: “计算”, “read”: 999, “support”: 100 } ] }}这里根据 searchContent 匹配短语 +type 匹配单个字段,一起构建了搜索语句。用于搜索出我们期待的结果,就是《Java 编程思想》。 ...

January 12, 2019 · 2 min · jiezi

使用Docker快速部署ELK分析Nginx日志实践(二)

Kibana汉化使用中文界面实践一、背景笔者在上一篇文章使用Docker快速部署ELK分析Nginx日志实践当中有提到如何快速搭建ELK分析Nginx日志,但是这只是第一步,后面还有很多仪表盘需要配置,而对于大部分人来说,英文并不是那么好,但Kibana都是英文界面,这就阻碍了笔者熟悉Kibana的一些操作;所以笔者思考能不能将其汉化,在搜索引擎中找到了一些文章,发现汉化相对来说成本还算比较低,因此进行了一番实践,整个操作流程即便是将前人的汉化包拿过来使用,但使用的过程汉化包的作者并没有过多的讲解,本文主要是讲解如何使用汉化包以及操作过程的记录。笔者上一篇文章使用Docker快速部署ELK分析Nginx日志实践URL地址:https://segmentfault.com/a/11…二、操作概述汉化包下载运行环境安装汉化效果演示三、汉化包下载笔者所使用的汉化包项目名称为Kibana_Hanization,在Github上进行了开源,URL地址如下https://github.com/anbai-inc/Kibana_Hanization在上一篇文章当中笔者已经将/Users/song/dockerFile/挂载在容器的/data当中,因此可以直接在宿主机中通过git拉取汉化包,然后去容器里面运行它,参考命令如下cd /Users/song/dockerFile/ && git clone https://github.com/anbai-inc/Kibana_Hanization.git四、运行环境安装安装汉化包,需要完成三个步骤,首先需要有执行汉化包里面工具的Python2.7环境,然后需要找到Kibana的安装目录,最后才能执行安装,具体操作如下4.1 安装Python2.7笔者直接运行汉化包的时候发现此汉化工具依赖于Python2.7,而ELK中默认安装的是Python3,因此笔者需要先安装Python2.7的运行环境,操作如下首先需要拉取Python仓库地址apt update然后执行安装,参考命令如下apt install python2.74.2 查找安装位置安装好Python的运行环境之后,笔者还需要找到kibana的安装位置,参考命令如下所示find / -iname kibana命令执行后返回的结果/opt/logstash/x-pack/modules/azure/configuration/kibana/opt/logstash/x-pack/modules/arcsight/configuration/kibana/opt/logstash/modules/netflow/configuration/kibana/opt/logstash/modules/fb_apache/configuration/kibana/opt/kibana/opt/kibana/src/core_plugins/kibana/opt/kibana/node_modules/x-pack/plugins/ml/server/models/data_recognizer/modules/apache2/kibana/opt/kibana/node_modules/x-pack/plugins/ml/server/models/data_recognizer/modules/nginx/kibana/opt/kibana/node_modules/x-pack/plugins/monitoring/server/lib/kibana/opt/kibana/node_modules/x-pack/plugins/monitoring/server/lib/metrics/kibana/opt/kibana/node_modules/x-pack/plugins/monitoring/server/routes/api/v1/kibana/opt/kibana/node_modules/x-pack/plugins/monitoring/public/views/kibana/opt/kibana/node_modules/x-pack/plugins/monitoring/public/components/kibana/opt/kibana/node_modules/x-pack/plugins/monitoring/public/directives/kibana/opt/kibana/node_modules/@kbn/pm/src/utils/fixtures/kibana/opt/kibana/bin/kibana/etc/logrotate.d/kibana/etc/init.d/kibana根据返回结果和以往的经验,大致猜测出安装位置在/opt/kibana下,在得到安装目录之后,现在笔者需要进入此前在宿主机通过git下载的汉化包目录,因为运行elk容器的时候已经将宿主机目录挂载进去,因此容器中可以进入,参考吗命令如下cd /data/Kibana_Hanization4.2 汉化包安装执行汉化命令python2.7 main.py /opt/kibana/返回结果文件[/opt/kibana/optimize/bundles/kibana.bundle.js]已翻译。文件[/opt/kibana/optimize/bundles/commons.bundle.js]已翻译。文件[/opt/kibana/optimize/bundles/login.bundle.js]已翻译。文件[/opt/kibana/optimize/bundles/ml.bundle.js]已翻译。文件[/opt/kibana/optimize/bundles/monitoring.bundle.js]已翻译。文件[/opt/kibana/optimize/bundles/timelion.bundle.js]已翻译。文件[/opt/kibana/optimize/bundles/vendors.bundle.js]已翻译。文件[/opt/kibana/optimize/bundles/apm.bundle.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/ui_setting_defaults.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/index.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/translations/en.json]已翻译。文件[/opt/kibana/src/core_plugins/kibana/server/tutorials/docker_metrics/index.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/server/tutorials/netflow/elastic_cloud.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/server/tutorials/netflow/on_prem_elastic_cloud.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/server/tutorials/netflow/on_prem.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/server/tutorials/netflow/common_instructions.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/server/tutorials/kubernetes_metrics/index.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/server/tutorials/apache_metrics/index.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/server/tutorials/redis_metrics/index.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/server/tutorials/apm/apm_server_instructions.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/server/tutorials/apm/apm_client_instructions.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/server/tutorials/nginx_metrics/index.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/server/tutorials/system_metrics/index.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/server/tutorials/system_logs/index.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/server/tutorials/apache_logs/index.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/server/tutorials/nginx_logs/index.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/server/tutorials/redis_logs/index.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/server/tutorials/mysql_metrics/index.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/server/tutorials/mysql_logs/index.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/common/tutorials/filebeat_instructions.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/common/tutorials/metricbeat_instructions.js]已翻译。文件[/opt/kibana/src/core_plugins/kibana/public/dashboard/index.js]已翻译。文件[/opt/kibana/src/core_plugins/timelion/index.js]已翻译。文件[/opt/kibana/src/core_plugins/kbn_vislib_vis_types/public/line.js]已翻译。文件[/opt/kibana/src/core_plugins/kbn_vislib_vis_types/public/area.js]已翻译。文件[/opt/kibana/src/core_plugins/kbn_vislib_vis_types/public/heatmap.js]已翻译。文件[/opt/kibana/src/core_plugins/kbn_vislib_vis_types/public/horizontal_bar.js]已翻译。文件[/opt/kibana/src/core_plugins/kbn_vislib_vis_types/public/histogram.js]已翻译。文件[/opt/kibana/src/ui/public/chrome/directives/global_nav/global_nav.js]已翻译。恭喜,Kibana汉化完成!笔者执行这条命令时间大约在10秒钟左右。五、汉化效果演示经过上一步操作,已经完成了汉化包的安装,现在笔者进入Kibana的主页来验证汉化的效果,Kibana主页的URL地址如下http://localhost:5601/app/kibana#/home?_g=()但在实际汉化后发现并没有完全汉化,笔者所使用的ELK版本为6.4.0,效果如下图所示而汉化包中介绍的汉化效果效果却如下图所示笔者猜测可能是自己使用的ELK版本比较新,而汉化包还没用跟上节奏所导致,不过效果已经很棒了;笔者接着又打开了几个页面,发现汉化效果大都在80%左右,视图创建URL地址如下http://localhost:5601/app/kibana#/visualize/new?_g=()在浏览器中打开视图创建页面后,展现汉化如下图所示作者:汤青松微信:songboy8888日期:2018-08-31

September 1, 2018 · 1 min · jiezi