All posts by 龙生

【Kibana】Kibana入门教程

一、Kibana简介及下载安装 Kibana是专门用来为ElasticSearch设计开发的,可以提供数据查询,数据可视化等功能。 下载地址为:https://www.elastic.co/downloads/kibana#ga-release,请选择适合当前es版本的Kibana。 本教程使用Kibana4.5.4版本,以及es2.3.5版本。假定你已经具有es基本的知识。 1.1 安装步骤 安装步骤比较简单。 下载完后解压到任意目录。 启动es 配置config目录下的kibana.yml的elasticsearch.url指向es地址 运行bin目录下的kibana 如果没有修改配置文件的端口,那么在浏览器中输入http://localhost:5601 启动Kibana后,Kibana会自动在配置的es中创建一个名为.kibana的索引,用来存储数据,注意不要删除了。 1.2 数据准备 启动后如果显示如下界面: 说明Kibana没有在es中找到合适的index用来展示,如果es中没有数据,那么可以导入官方测试数据,用来学习操作。 如果你的es中已经有可以用来测试的数据,那么可以略过本节。 首先下载三个数据文件: 莎士比亚完整的作品,shakespeare.json 虚构的随机的账目数据,accounts.zip 随机的日志文件,logs.jsonl.gz 下载后解压最后两个压缩包:

设置莎士比亚的mapping,有三个index,因为假定是三天的日志,按天来生成索引:

设置日志的mapping:

最后将数据导入es:

导入后,输入以下命令检查结果,当然如果导入的过程中没有报错也表明导入成功:

应该输出下面的结果,当然容量也有可能有些差别。

这样的话数据就准备完毕了。 1.3 配置index 一般情况下,当启动Kibana的时候会自动搜索可用来展示的索引,如果你需要的没有被搜到,或者如上面新增的数据的索引没有检测到,那么key手动添加索引。配置index的位置为: 这样我们把刚才新增的数据的索引配置进去。 1.3.1 不带时间戳,或者没有字段表示时间戳 不要勾选包含时间的选项,输入index的名称,可以使用通配符,如果Create是灰色的,那么表明输入的索引不正确,请检查拼写。 点击创建后,会出现当前索引的所有字段,可对这些字段进行一些属性编辑,具体不再本文介绍。按同样的方式把bank配置进去。 1.3.2 带时间戳的 继续新增index,这次是带时间戳的,至于带不带时间戳会有什么不一样的,后面介绍就会明白了。 勾选包含时间,索引使用通配符,代表上面三个日志索引,时间字段选择@timestamp。点击创建就可以了。 这样基本工作就做好了,下面进入Kibana的实际讲解。 二、Kibana使用教程 首先看一下Kibana的主界面: 按照顺序讲解。 2.1 查询 查询是在指定索引的情况下查询,可以通过索引右侧下三角来选择其他索引。如果选择了logstash-*,没有数据也不要着急,后面会讲到。 2.1.1 查询语法 查询语法就是指明查询条件,用于过滤数据用的。 单纯的数据一个字符串,表明在当前索引的所有字段中,搜索包含当前字符串的记录: 如果要指定在某个字段中搜索,则使用filedname:searchtext的格式: 这样查询到一条数据,也可以使用区间,格式为filedname:[start TO end],如下面的语法就查询到10条数据。 也可以使用逻辑表达式并且可以带上括号,表达式符号为AND OR NOT。 表明在1000行内,有12行中包含love。  2.1.2 隐藏的时间查询限定条件 如果配置索引的时候选择了带时间戳,那么查询条件会默认加上一个时间条件,选择那样的索引后,右上角会出现时间条件: 所以,这个时候需要设置需要的时间: 因为时间可以设置为绝对时间,也可以设置为相对时间。当设置为相对时间时,数据其实是不断发生变化的,比如设置为上一个小时,那么当前查询的数据结果,在下一分钟有可能就不是正常的,所以此时可以指定一个刷新时间,用来不断显示新的数据。 刷新时间默认不是开启的,需要手动开启,根据选择的时间范围来选择刷新间隔,相对时间范围越窄则刷新间隔应该越短。 2.1.3 指定显示查询结果 默认情况下,查询结果显示所有字段,即_source的内容: 可以有时候只想关注一些指定的字段,那么可以将鼠标移动到索引下面的字段上,然后选在add即可,同样的移动上面已经选择的字段选择remove进行移除: 选择后,展示的结果就会以表格的形式进行展示: 2.1.4 复杂查询 通过搜索框进行查询的语法很多时候满足不了我们的要求,有时候我们需要使用自定义语法,在讲解复杂查询之前,先来讲另一个可玩的特性,就是说当我们点击某一个字段时,会把当前字段数量最多的前5个值及占比显示出来: 点击右侧的+号可以将当前值做为一个条件附加到搜索框的搜索条件上: 这个条件是在上面搜索结果的基础上继续进行筛选,鼠标移到上面会显示: 基本功能如图例所示,重点讲解最后一个即编辑,点击编辑后: 会出现熟悉的语法界面,在此处即可完成复杂的语法编写。 2.1.5 查询结果的保存 […]

龙生   29 May 2019
View Details

ElasticSearch使用

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。说白了就是一个搜索引擎。 环境安装 1.安装JDK环境 我使用的是以下方式安装,但是貌似yum库里最高只有到JDK1.8的版本。截止笔者发稿前,如想体验JDK10的自行去java官网下rpm包去安装

2.安装ElasticSearch 我采用的是rpm安装方式,按照官方文档即可正常安装 Installing from the RPM repository 什么?英文不好? 让老哥来教你。 如上图所示,在/etc/yum.repos.d目录里新建一个叫作elasticsearch.repo这个文件,把大框里的东西复制进去, 然后执行sudo yum install elasticsearch 启动的命令就是 sudo -i service elasticsearch start sudo -i service elasticsearch stop 3.安装Kibana Kibana 是一个开源的分析和可视化平台,旨在与 Elasticsearch 合作。Kibana 提供搜索、查看和与存储在 Elasticsearch 索引中的数据进行交互的功能。开发者或运维人员可以轻松地执行高级数据分析,并在各种图表、表格和地图中可视化数据。 我是用yum install kibana一键安装好的 安装完成以后修改配置文件 vim config/kibana.yml 将默认配置改成如下: server.port: 5601 server.host: “0.0.0.0” elasticsearch.url: “http://192.168.2.41:9200” kibana.index: “.kibana” 4.安装ElasticSearch-head 通过以下命令行安装 yum install -y npm cd /usr/local/src/ git clone git://github.com/mobz/elasticsearch-head.git cd elasticsearch-head/ npm install grunt -save ll node_modules/grunt #确认生成文件 npm install #执行安装 npm run start & #后台启动服务 5.安装IK中文分词 https://github.com/medcl/elasticsearch-analysis-ik cd /usr/share/elasticsearch/ 执行命令(将6.2.3替换成你的elasticsearch的版本) ./bin/elasticsearch-plugin […]

龙生   29 May 2019
View Details

Elasticsearch-基础介绍及索引原理分析

最近在参与一个基于Elasticsearch作为底层数据框架提供大数据量(亿级)的实时统计查询的方案设计工作,花了些时间学习Elasticsearch的基础理论知识,整理了一下,希望能对Elasticsearch感兴趣/想了解的同学有所帮助。 同时也希望有发现内容不正确或者有疑问的地方,望指明,一起探讨,学习,进步。 介绍 Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作: 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。 实时分析的分布式搜索引擎。 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。 基本概念 先说Elasticsearch的文件存储,Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档,用JSON作为文档序列化的格式,比如下面这条用户数据:

  用Mysql这样的数据库存储就会容易想到建立一张User表,有balabala的字段等,在Elasticsearch里这就是一个文档,当然这个文档会属于一个User的类型,各种各样的类型存在于一个索引当中。这里有一份简易的将Elasticsearch和关系型数据术语对照表:

  一个 Elasticsearch 集群可以包含多个索引(数据库),也就是说其中包含了很多类型(表)。这些类型中包含了很多的文档(行),然后每个文档中又包含了很多的字段(列)。Elasticsearch的交互,可以使用Java API,也可以直接使用HTTP的Restful API方式,比如我们打算插入一条记录,可以简单发送一个HTTP的请求:

  更新,查询也是类似这样的操作,具体操作手册可以参见Elasticsearch权威指南 索引 Elasticsearch最关键的就是提供强大的索引能力了,其实InfoQ的这篇时间序列数据库的秘密(2)——索引写的非常好,我这里也是围绕这篇结合自己的理解进一步梳理下,也希望可以帮助大家更好的理解这篇文章。 Elasticsearch索引的精髓: 一切设计都是为了提高搜索的性能 另一层意思:为了提高搜索的性能,难免会牺牲某些其他方面,比如插入/更新,否则其他数据库不用混了。前面看到往Elasticsearch里插入一条记录,其实就是直接PUT一个json的对象,这个对象有多个fields,比如上面例子中的name, sex, age, about, interests,那么在插入这些数据到Elasticsearch的同时,Elasticsearch还默默1的为这些字段建立索引--倒排索引,因为Elasticsearch最核心功能是搜索。 Elasticsearch是如何做到快速索引的 InfoQ那篇文章里说Elasticsearch使用的倒排索引比关系型数据库的B-Tree索引快,为什么呢? 什么是B-Tree索引? 上大学读书时老师教过我们,二叉树查找效率是logN,同时插入新的节点不必移动全部节点,所以用树型结构存储索引,能同时兼顾插入和查询的性能。因此在这个基础上,再结合磁盘的读取特性(顺序读/随机读),传统关系型数据库采用了B-Tree/B+Tree这样的数据结构: 为了提高查询的效率,减少磁盘寻道次数,将多个值作为一个数组通过连续区间存放,一次寻道读取多个数据,同时也降低树的高度。 什么是倒排索引? 继续上面的例子,假设有这么几条数据(为了简单,去掉about, interests这两个field):

  ID是Elasticsearch自建的文档id,那么Elasticsearch建立的索引如下: Name:

  Age:

  Sex:

  Posting List Elasticsearch分别为每个field都建立了一个倒排索引,Kate, John, 24, Female这些叫term,而[1,2]就是Posting List。Posting list就是一个int的数组,存储了所有符合某个term的文档id。 看到这里,不要认为就结束了,精彩的部分才刚开始… 通过posting list这种索引方式似乎可以很快进行查找,比如要找age=24的同学,爱回答问题的小明马上就举手回答:我知道,id是1,2的同学。但是,如果这里有上千万的记录呢?如果是想通过name来查找呢? Term Dictionary Elasticsearch为了能快速找到某个term,将所有的term排个序,二分法查找term,logN的查找效率,就像通过字典查找一样,这就是Term Dictionary。现在再看起来,似乎和传统数据库通过B-Tree的方式类似啊,为什么说比B-Tree的查询快呢? Term Index B-Tree通过减少磁盘寻道次数来提高查询性能,Elasticsearch也是采用同样的思路,直接通过内存查找term,不读磁盘,但是如果term太多,term dictionary也会很大,放内存不现实,于是有了Term Index,就像字典里的索引页一样,A开头的有哪些term,分别在哪页,可以理解term index是一颗树: 这棵树不会包含所有的term,它包含的是term的一些前缀。通过term index可以快速地定位到term dictionary的某个offset,然后从这个位置再往后顺序查找。 所以term index不需要存下所有的term,而仅仅是他们的一些前缀与Term Dictionary的block之间的映射关系,再结合FST(Finite State Transducers)的压缩技术,可以使term […]

龙生   29 May 2019
View Details

CMMI

CMMI全称是Capability Maturity ModelIntegration,即软件能力成熟度模型集成,是由美国国防部与卡内基-梅隆大学和美国国防工业协会共同开发和研制的,其目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。其所依据的想法是:只要集中精力持续努力去建立有效的软件工程过程的基础结构,不断进行管理的实践和过程的改进,就可以克服软件开发中的困难。CMMI为改进一个组织的各种过程提供了一个单一的集成化框架,新的集成模型框架消除了各个模型的不一致性,减少了模型间的重复,增加透明度和理解,建立了一个自动的、可扩展的框架。因而能够从总体上改进组织的质量和效率。CMMI主要关注点就是成本效益、明确重点、过程集中和灵活性四个方面。 CMMI分5个级别  CMMILevel 1,完成级。在完成级水平上,企业对项目的目标与要做的努力很清晰,项目的目标得以实现。但是由于任务的完成带有很大的偶然性,企业无法保证在实施同类项目的时候仍然能够完成任务。企业在一级上的项目实施对实施人员有很大的依赖性。  CMMILevel 2,管理级。在管理级水平上,企业在项目实施上能够遵守既定的计划与流程,有资源准备,权责到人,对相关的项目实施人员有相应的培训,对整个流程有监测与控制,并与上级单位对项目与流程进行审查。企业在二级水平上体现了对项目的一系列的管理程序。这一系列的管理手段排除了企业在一级时完成任务的随机性,保证了企业的所有项目实施都会得到成功。  CMMILevel 3,定义级。在定义级水平上,企业不仅能够对项目的实施有一整套的管理措施,并保障项目的完成;而且,企业能够根据自身的特殊情况以及自己的标准流程,将这套管理体系与流程予以制度化这样,企业不仅能够在同类的项目上升到成功的实施,在不同类的项目上一样能够得到成功的实施。科学的管理成为企业的一种文化,企业的组织财富。 CMMILevel 4,量化管理级。在量化管理级水平上,企业的项目管理不仅形成了一种制度,而且要实现数字化的管理。对管理流程要做到量化与数字化。通过量化技术来实现流程的稳定性,实现管理的精度,降低项目实施在质量上的波动。 CMMILevel5,优化级。在优化级水平上,企业的项目管理达到了最高的境界。企业不仅能够通过信息手段与数字化手段来实现对项目的管理,而且能够充分利用信息资料,对企业在项目实施的过程中可能出现的次品予以预防。能够主动地改善流程,运用新技术,实现流程的优化。企业在实施CMMI的时候,路要一步一步地走。一般地讲,应该先从二级入手。在管理上下功夫。争取最终实现CMMI的第五级。 CMMI历史背景SEI的Watts Humphrey在1987年发布了过程成熟度模型(Process Maturity Model).1991年SEI发布了软件的能力成熟度模型SW-CMM(v1.0)可以视为CMM的领域的起点。自此以后,人们开发了各种CMM模型,譬如美国联邦航空管理局(FAA)开发了FAA-iCMM,集成了其三个模型的所有特征和实践。1993年SEI正式发布SW-CMM1.1。2001年12月发布CMMI1.0。2005年CMMI1.1全面替换1.0。目前普遍在使用的是CMMI1.2的标准,正在审批阶段的是CMMI1.3的标准,它们改进的主要方向是完善定义以及可实施性。

龙生   22 May 2019
View Details

Spring Boot学习笔记之IntelliJ IDEA将应用打包发布

1.在pom文件添加一行打包的配置

  再添加一个spring-boot-maven-plugin打包插件

  由于我的8080端口已经被占用了 ,所以我要先改下项目端口,如果你的8080端口没被占用不需要改 打开Run/Debug Configurations对话框添加一个Maven打包配置,如图 然后运行mvn就可以生成jar包 在项目的target目录可以看到生成的jar包 打开cmd,到jar 包所在目录 运行命令 java -jar springboot-0.0.1-SNAPSHOT.jar 浏览器访问结果 使用eclipse打成jar包 1.项目右键 debug as-> Debug Configurations 点击Debug即可。 当然你也可以选择打成war包,需要把pom里的jar改成war,打包后放到Tomcat的webapp下启动Tomcat就可以了。但是必须使用1.8的jdk和8.0以上的Tomcat ,且必须配置JAVA_HOME环境变量,这里我就不演示了。   from:https://blog.csdn.net/wya1993/article/details/79582014

龙生   22 May 2019
View Details

jar中没有主清单属性【解决办法】

在pom文件中,添加如下即可:

  from:https://blog.csdn.net/qq_18769269/article/details/83095012

龙生   22 May 2019
View Details

SpringBoot – 配置文件加载位置与优先级

【1】项目内部配置文件 spring boot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件

即如下图所示: 以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级配置内容。 SpringBoot会从这四个位置全部加载主配置文件,如果高优先级中配置文件属性与低优先级配置文件不冲突的属性,则会共同存在—互补配置。 我们也可以通过配置spring.config.location来改变默认配置。

  项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置。 指定配置文件和默认加载的这些配置文件共同起作用形成互补配置。 【2】外部配置加载顺序 SpringBoot也可以从以下位置加载配置:优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置。 1.命令行参数 所有的配置都可以在命令行上进行指定; 多个配置用空格分开; –配置项=值

  2.来自java:comp/env的JNDI属性 3.Java系统属性(System.getProperties()) 4.操作系统环境变量 5.RandomValuePropertySource配置的random.*属性值 6.jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件 7.jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件 8.jar包外部的application.properties或application.yml(不带spring.profile)配置文件 9.jar包内部的application.properties或application.yml(不带spring.profile)配置文件

  10.@Configuration注解类上的@PropertySource 11.通过SpringApplication.setDefaultProperties指定的默认属性 参考官网地址 官网图示如下:   from:https://blog.csdn.net/j080624/article/details/80508606

龙生   22 May 2019
View Details

设置PHP脚本执行超时时间的方法

设置PHP脚本执行超时的时间有下面这样一些方法: php.ini 中限定程序的最长执行时间是 30 秒,这是由 php.ini 配置文件中的 max_execution_time 变量指定,倘若你有一个需要颇多时间才能完成的程序代码,代码会由于超时而执行失败,例如要发送很多电子邮件给大量收件者,或者要进行繁重的数据分析工作,服务器会在 30 秒后强行中止正在执行的程序,如何解决这个问题呢。 一、在php.ini里面设置 max_execution_time = 1800; 二、通过PHP的ini_set 函数设置 ini_set("max_execution_time", "1800"); 三、通过set_time_limit 函数设置 set_time_limit(1800) ; ——————— 作者:YOYOYOHUI 来源:CSDN 原文:https://blog.csdn.net/yoyoyohui/article/details/83009250 版权声明:本文为博主原创文章,转载请附上博文链接!

龙生   21 May 2019
View Details

yarn的安装和使用

yarn的简介: Yarn是facebook发布的一款取代npm的包管理工具。 yarn的特点: 速度超快。 Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。 超级安全。 在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。 超级可靠。 使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。 yarn的安装: 下载node.js,使用npm安装 npm install -g yarn 查看版本:yarn --version 安装node.js,下载yarn的安装程序: 提供一个.msi文件,在运行时将引导您在Windows上安装Yarn Yarn 淘宝源安装,分别复制粘贴以下代码行到黑窗口运行即可 yarn config set registry https://registry.npm.taobao.org -g yarn config set sass_binary_site http://cdn.npm.taobao.org/dist/node-sass -g yarn的常用命令: 安装yarn npm install -g yarn 安装成功后,查看版本号: yarn --version 创建文件夹 yarn md yarn 进入yarn文件夹 cd yarn 初始化项目 yarn init // 同npm init,执行输入信息后,会生成package.json文件 yarn的配置项: yarn config list // 显示所有配置项 yarn config get <key> //显示某配置项 yarn config delete <key> //删除某配置项 yarn config set <key> <value> [-g|--global] //设置配置项 安装包: yarn install //安装package.json里所有包,并将包及它的所有依赖项保存进yarn.lock yarn install […]

龙生   21 May 2019
View Details
1 150 151 152 434