• flume+es+kibana日志系统


    上个公司做了个日志系统,其实之间断断续续搞了三套方案,一套就是前边说的hadoop方案,网上也有但是不全,自己搞了下发现太庞大不适合小型项目,这次搞了flume+ES+kibana方案,感觉非常不错哦,es的存储性能很高啊,kibana其实后期可以自己改的也非常不错。自己写了份文档,在这给大家分享下。(其实后来又搞了个logstash+redis的方案也是很不错,解决了延迟等问题,因为他们都是自己家的产品吗,所以兼容性非常好)

    ==我是华丽的分割线=============================================

    目录

    1.??? 概述… 3

    2. 应用架构… 3

    3. flume搭建… 3

    3.1 创建flume 账户… 3

    3.2 配置环境变量… 3

    3.3? Hadoop连接配置(暂时不用)… 4

    3.4 修改config配置文件… 4

    3.4.1 配置配置文件(此处为以hadoop作为存储的配置文件)… 5

    3.4.2 此处是以es作为存储的配置文件… 6

    3.5 修改源码… 8

    3.6 启动命令… 8

    注意修改文件夹权限… 8

    4. Elasticsearch 搭建… 9

    4.1 创建es账户… 9

    4.2 修改配置文件… 9

    4.3 集群启动… 9

    4.4 Plugins. 9

    4.4.1 Bigdesk插件… 10

    4.4.2 head插件… 13

    4.4.3 jdbc插件… 13

    4.5 创建索引… 17

    4.6 创建模版… 17

    5. Kibana集群搭建… 18

    5.1 Kibana关键特性… 18

    5.2 开始… 19

    5.3??? 生产环境使用 Kibana 的时候… 21

    6. Hadoop集群(暂时不用)… 23

    6.1 建立用户haddop. 23

    6.2 配置环境变量… 23

    6.3 准备ssh. 23

    6.4 修改hadoop配置文件… 24

    6.5 格式化文件系统… 28

    6.6 启动、停止服务… 34

    6.7 创建HDFS目录… 35

    6.8 验证… 35

    7. 用sqoop同步到mysql(暂时不用)… 38

    8.日志系统用法说明… 38

    1? Discover 标签页… 38

    2.??? Visualize 标签页… 43

    3.??? Dashboard标签页… 45

    4.??? 配置… 50

    1.??? 概述

    为了项目做日志监控,日至查询分析

    目前SIT IP

    http://10.16.0.151:9200/_plugin/head/ 监控ES存储健康(相当于NOSQL数据库)

    http://10.16.0.151:9200/_plugin/bigdesk 监控ES集群性能

    http://10.16.0.151:5601/ 日志查看页面

    2. 理念

    采用了flume elasticsearch kibana 组合

    机器配置:

    10.16.0.150(es)

    10.16.0.151(es)

    10.16.0.152(es)

    10.16.10.40(flume)

    3. Elasticsearch 搭建

    ES作为数据存储仓库所以先搭建ES集群

    3.1 创建es账户

    useradd es

    passwd es

    下载压缩包elasticsearch-1.5.0

    在linux系统上,elasticsearch默认使用hybrid mmapfs / niofs来存储索引文件,因此操作系统主要会通过mmap来限制存储的空间,因此如果存储空间满了,那么会抛出异常,我们可以使用如下命令来更改设置

    ?

    1

    sysctl?-w?vm.max_map_count=262144

    3.2 修改配置文件

    解压修改conf下的配置文件elasticsearch.yml

    将node.name的值设置为“ebbc-node1”,表示当前这个es服务节点名字为ebbc-node1。

    修改cluster.name的值为ebbc

    3.3 集群启动

    启动ES。进入ES安装目录,执行命令:bin/elasticsearch -d,然后在浏览器输入http://ip:9200/,查看页面信息,是否正常启动。status=200表示正常启动了,还有一些es的版本信息,name为配置文件中node.name的值。

    在另外一台机器上,安装同样的步骤安装ES,因为至少2台服务才算集群嘛!注意,在配置时,将node.name的值设置为ebbc-node2,总之必须和之前配置值不同。

    两台es服务同时起来,因为配置文件中均默认cluster.name=ebbc,所以这两台机器自动构建成一个集群,集群名字为ebbc。

    3.4 Plugins

    3.4.1 Bigdesk插件

    bigdesk是elasticsearch的一个集群监控工具,可以通过它来查看es集群的各种状态,如:cpu、内存使用情况,索引数据、搜索情况,http连接数等。项目git地址:https://github.com/lukas-vlcek/bigdesk。和head一样,它也是个独立的网页程序,使用方式和head一样。

    插件安装运行:

    方法1:

    1.bin/plugin-installlukas-vlcek/bigdesk

    2.运行es

    3.打开http://localhost:9200/_plugin/bigdesk/

    当然,也可以直接下载源码运行index.html

    方法2:

    1.https://github.com/lukas-vlcek/bigdesk下载zip解压

    2.建立elasticsearch-1.0.0pluginsigdesk_site文件

    3.将解压后的bigdesk-master文件夹下的文件copy到_site

    4.运行es

    5.打开http://localhost:9200/_plugin/bigdesk/

    同样是输入ip地址和端口后连接,界面如下。加星的表示主节点。

    下面介绍下各个图表。

    系统监控

    这里包含系统方面的一些状态,左起分别为:cpu,内存,交换区和平均负载的情况

    jvm:

    显示jvm的一些状态,左起分别为:jvm heap内存使用情况,蓝色的为已使用内存;非heap使用内存;线程数;gc情况(次数和时间);

    进程:

    下面四张图主要显示es的进程对系统资源的使用情况,左起分别为:进程打开文件数,内存使用情况,cpu时间和进程的cpu使用率

    ps:

    内存使用情况中的

    Totalvirtual指linux下虚拟内存,它包括virtual memory map中的所有数据量之和。包括:程序类+程序数据+jar包空间+jre占用空间等。

    residentmemory指程序实际占用的物理内存。

    通讯:

    这里可以查看tcp和http链接的一些数据。

    索引:

    这里可以查看索引数据和搜索的一些情况。

    左上起:每秒索引请求,搜索时间,每秒取数据请求,取数据时间。

    左下起:缓存大小,缓存失效个数,每秒索引请求,索引时间。

    文件系统:

    显示硬盘的读写情况

    3.4.2 head插件

    elasticsearch-head是一个elasticsearch的集群管理工具,它是完全由html5编写的独立网页程序,你可以通过插件把它集成到es。

    安装命令:bin/plugin -install mobz/elasticsearch-head

    安装完成后plugins目录下会有head的文件夹。

    进入http://localhost:9200/_plugin/head/如下图

    3.4.3jdbc插件

    如果需要从数据库同步数据,则需要安装此插件

    Installation

    ./bin/plugin–install jdbc --url http://xbib.org/repository/org/xbib/elasticsearch/plugin/elasticsearch-river-jdbc/1.5.0.0/elasticsearch-river-jdbc-1.5.0.0.zip

    最新版本请查看当前githubhttps://github.com/jprante/elasticsearch-jdbc

    Documentation

    Twoflavors: river or feeder

    The plugin can operate as a river in “pull mode” or as a feederin “push mode”. In feeder mode, the plugin runs in a separate JVM andcan connect to a remote Elasticsearch cluster.

    River or feeder

    The plugin comes in two flavors, river or feeder. Hereare the differences. Depending on your requirements, it is up to you to make areasonable choice.

    Note, the JDBC river code wraps the feeder code, thereis no reinvention of anything. Main difference is the different handling bystarting/stopping the process by a separate JVM in the feeder flavor.

    River

    Feeder

    standard method of Elasticsearch to connect to external sources and pull data

    method to connect to external sources for pushing data into Elasticsearch

    multiple river instances, many river types

    no feeder types, feeder instances are separate JVMs

    based on an internal index_riverto keep state

    based on a feeder document in the Elasticsearch index for maintaining state

    does not scale, single local node only

    scalable, not limited to single node, can connect to local or remote clusters

    automatic failover and restart after cluster recovery

    no failover, no restart

    hard to supervise single or multi runs and interruptions

    command line control of feeds, error exit code 1, crontab control

    no standard method of viewing river activity from within Elasticsearch

    feed activity can be monitored by examining separate JVM

    about to be deprecated by Elasticsearch core team

    Feeder API provided by xbib, using advanced features supported by xbib libraries only. Part of upcoming “gatherer” API to support coordinated data harvesting by multiple ES nodes

    4.4.3.1 JDBC-ORACLE

    拷入OJDBC的jar包

    创建索引需要

    curl –XPUT localhost:9200/ ebbc-operate

    创建mapping

    curl -XPUT’http://localhost:9200/ebbcoperate/operate/_mapping’ -d ’

    {

    “operate”: {

    “_id” : {

    “path” : “ID”

    },

    “_ttl” : { “enabled” : true,

    “default” :“1d”

    },

    “properties”: {

    “ID”: {

    “type”:“string”,

    “store”:“yes”

    }

    }

    }

    }’

    创建plugin 连接oracle

    一定要注意转义字符

    curl -XPUT ‘localhost:9200/_river/my_oracle_river/_meta’-d '{

    “type” : “jdbc”,

    “jdbc” : {

    “threadpoolsize” : 1,

    “url” : “jdbc:oracle:thin:@//10.16.10.54:1521/ebbc”,

    “user” :“ebbc”,

    “password” :“ebbc”,

    “sql” :“select * from T_GNR_OPERATE_LIST ORDER BY OPER_TIMEDESC”,

    “index” :“ebbcoperate”,

    “type” :“operate”,

    “schedule” :“00/30* * *”

    }

    }’

    查询

    ==search=

    curl localhost:9200/ebbc-operate_search

    ========delete

    curl -XDELETE localhost:9200/_river/my_oracle_river

    3.5 创建索引

    所以就相当于我们平时的数据库,类型就相当于我们的表,要想在kibana展示,必须要创建

    一个索引,而我们在flume里面已经配置了自动创建的规则,所以这里只是 展示几个命令

    我们可以获得节集群中的节点列表:
    curl ‘localhost:9200/_cat/nodesv’

    要检查集群健康,我们将使用_cat API。需要事先记住的是,我们的节点HTTP的端口是9200:
    curl ‘localhost:9200/_cat/healthv’

    让我们看一下我们的索引:
    curl ‘localhost:9200/_cat/indicesv’

    现在让我们创建一个叫做“customer”的索引,然后再列出所有的索引:
    curl -XPUT ‘localhost:9200/customerpretty’
    curl ‘localhost:9200/_cat/indicesv’

    3.6 创建模版

    为了方便每次不重新书写_mapping,所以我觉得创建一个模版,模版对于懒人有着很直接的效果

    下面我们创建一个简单模版

    curl -XPUT localhost:9200/_template/ebbc-template-d ’

    {

    “template”: “ebbc-*”,

    “mappings”: {

    “*”: {

    “_source”: {

    “enabled”: false

    },

    “_ttl”: {

    “enabled”: true,

    “default”:“3d”

    },

    “properties”: {

    “body”: {

    “type”:“string”

    },

    “date”: {

    “type”:“date”,

    “format”:“dateOptionalTime”

    }

    }

    }

    }

    }’

    当然,我们也可以给他配置在config下,可以参考官方文档

    附录查询 ,删除命令

    curl-XDELETE localhost:9200/_template/template_1

    curl-XGET localhost:9200/_template/ebbc-templatepretty

    这下,每次自动创建index时就会根据我的要求来咯

    4.flume搭建

    4.1 创建flume 账户

    [hadoop@ebdev10~]$ su -

    Password:

    [root@ebdev10~]# useradd flume

    [root@ebdev10~]# passwd flume

    Changingpassword for user flume.

    Newpassword:

    BADPASSWORD: it is too short

    BADPASSWORD: is too simple

    Retypenew password:

    passwd:all authentication tokens updated successfully.

    [root@ebdev10~]#

    上传flume压缩包 ,版本apache-flume-1.5.0.1-bin.tar.gz

    解压tar -zxvf apache-flume-1.5.0.1-bin.tar.gz

    4.2 配置环境变量

    简单配置

    ################FLUME_CONF############

    export FLUME_HOME=/home/flume/apache-flume-1.5.0.1

    export FLUME_CONF_DIR=$FLUME_HOME/conf

    export PATH= P A T H : PATH: PATH:FLUME_HOME/bin

    完整配置

    ################JAVA_HOME#############

    export JAVA_HOME=/usr/java/jdk1.7.0_71

    exportCLASSPATH=.: J A V A _ H O M E / l i b / t o o l s . j a r : JAVA\_HOME/lib/tools.jar: JAVA_HOME/lib/tools.jar:JAVA_HOME/lib/dt.jar

    ################HADOOP_HOME###########

    export HADOOP_HOME=/home/hadoop/hadoop-2.5.1

    ################FLUME_CONF############

    exportFLUME_HOME=/home/flume/apache-flume-1.5.0.1

    exportFLUME_CONF_DIR=$FLUME_HOME/conf

    ################ant###################

    export ANT_HOME=/usr/apache-ant-1.9.4

    export PATH= P A T H : PATH: PATH:JAVA_HOME/bin: H A D O O P _ H O M E / b i n : HADOOP\_HOME/bin: HADOOP_HOME/bin:ANT_HOME/bin:$FLUME_HOME/bin

    ###########Alias for hadoop###########

    alias hdfs=‘hadoop fs’

    4.3 ?Hadoop连接配置(暂时不用)

    ===========如果需要连接hadoop需要以下配置

    注意如果本机器没有配置hadoop需要拷贝一些jar

    若将采集的数据上传到hdfs中 该机器没有安装hadoop需要将一下jar拷贝过来

    将hadoop 的/share/hadoop/common/hadoop-common-2.4.1.jar拷贝到flume的lib下

    将hadoop 的/share/hadoop/common/lib/commons-configuration-1.6.jar拷贝到flume的lib下

    将hadoop 的/share/hadoop/common/lib/hadoop-auth-2.4.1.jar拷贝到flume的lib下

    将hadoop 的/share/hadoop/hdfs/hadoop-hdfs-2.4.1.jar拷贝到flume的lib下

    将hadoop 的/etc/core-site.xml拷贝到flume的conf下

    将hadoop 的/etc/hdfs-site.xml拷贝到flume的conf下

    ===========如果需要连接hadoop需要以上配置

    4.4 修改config配置文件

    mv flume-env.sh.template flume-env.sh

    vi flume-env.sh

    修改JAVA_HOME

    JAVA_HOME=/usr/java/jdk1.7.0_71

    JAVA_OPTS=“-Xms512m –Xmx1024m-Dcom.sun.management.jmxremote”

    mv flume-conf.properties.templateflume-master.conf

    vi flume-master.conf

    注意:要想抓取日志需要修改appsvr用户权限chmod o+rx appsvr

    拷贝的话需要给flume启动程序附权限chmod u+x flume-ng

    4.4.1配置配置文件(此处为以hadoop作为存储的配置文件)

    # Finally, now that we’ve defined all ofour components, tell

    # agent1 which ones we want to activate.

    agent1.channels = ch1

    agent1.sources = avro-source1

    agent1.sinks = sink1

    # Define a memory channel called ch1 onagent1

    agent1.channels.ch1.type = memory

    agent1.channels.ch1.capacity = 100000

    agent1.channels.ch1.transactionCapacity =100000

    agent1.channels.ch1.keep-alive = 30

    # Define an Avro source called avro-source1on agent1 and tell it

    # to bind to 0.0.0.0:41414. Connect it tochannel ch1.

    #agent1.sources.avro-source1.channels = ch1

    #agent1.sources.avro-source1.type = avro

    #agent1.sources.avro-source1.bind = 0.0.0.0

    #agent1.sources.avro-source1.port = 41414

    #agent1.sources.avro-source1.threads = 5

    #define source monitor a file

    agent1.sources.avro-source1.type = exec

    agent1.sources.avro-source1.shell =/bin/bash -c

    agent1.sources.avro-source1.command =tail -F /home/flume/testData/test.log

    agent1.sources.avro-source1.channels = ch1

    agent1.sources.avro-source1.threads = 5

    # Define a logger sink that simply logs allevents it receives

    # and connect it to the other end of thesame channel.

    agent1.sinks.sink1.channel = ch1

    agent1.sinks.sink1.type = hdfs

    agent1.sinks.sink1.hdfs.minBlockReplicas=1

    agent1.sinks.sink1.hdfs.useLocalTimeStamp=true

    agent1.sinks.sink1.hdfs.path =hdfs://10.16.0.151:9000/home/hadoop/pactera/%y-%m-%d

    agent1.sinks.sink1.hdfs.writeFormat = Text

    agent1.sinks.sink1.hdfs.fileType =DataStream

    agent1.sinks.sink1.hdfs.filePrefix = ebc_

    agent1.sinks.sink1.hdfs.idleTimeout = 25

    agent1.sinks.sink1.hdfs.callTimeout = 50

    agent1.sinks.sink1.hdfs.round = true

    agent1.sinks.sink1.hdfs.rollCount = 10000

    agent1.sinks.sink1.hdfs.rollSize = 10240000

    agent1.sinks.sink1.hdfs.rollInterval=15

    agent1.sinks.sink1.hdfs.rollTimerPoolSize=20

    4.4.2此处是以es作为存储的配置文件

    # Finally, now that we’ve defined all ofour components, tell

    # agent1 which ones we want to activate.

    agent1.channels = ch1 ch2

    agent1.sources = source1 source2

    agent1.sinks = sink1 sink2

    # Define a memory channel called ch1 onagent1

    agent1.channels.ch1.type = memory

    agent1.channels.ch1.capacity = 100000

    agent1.channels.ch1.transactionCapacity =100000

    agent1.channels.ch1.keep-alive = 30

    # Define an Avro source called source1 onagent1 and tell it

    # to bind to 0.0.0.0:41414. Connect it tochannel ch1.

    #agent1.sources.source1.channels = ch1

    #agent1.sources.source1.type = avro

    #agent1.sources.source1.bind = 0.0.0.0

    #agent1.sources.source1.port = 41414

    #agent1.sources.source1.threads = 5

    #define source monitor a file

    agent1.sources.source1.type = exec

    agent1.sources.source1.shell = /bin/bash -c

    agent1.sources.source1.command = tail -F /home/appsvr/logs/ebc-dao-service/ebc-dao-serviceAll.log

    agent1.sources.source1.channels = ch1

    agent1.sources.source1.threads = 5

    # Define a logger sink that simply logs allevents it receives

    # and connect it to the other end of thesame channel.

    #agent1.sinks.sink1.channel = ch1

    #agent1.sinks.sink1.type = hdfs

    #agent1.sinks.sink1.hdfs.minBlockReplicas=1

    #agent1.sinks.sink1.hdfs.useLocalTimeStamp=true

    #agent1.sinks.sink1.hdfs.path =hdfs://10.16.0.151:9000/home/hadoop/pactera/%y-%m-%d

    #agent1.sinks.sink1.hdfs.writeFormat = Text

    #agent1.sinks.sink1.hdfs.fileType =DataStream

    #agent1.sinks.sink1.hdfs.filePrefix = ebc_

    #agent1.sinks.sink1.hdfs.idleTimeout = 25

    #agent1.sinks.sink1.hdfs.callTimeout = 50

    #agent1.sinks.sink1.hdfs.round = true

    #agent1.sinks.sink1.hdfs.rollCount = 10000

    #agent1.sinks.sink1.hdfs.rollSize =10240000

    #agent1.sinks.sink1.hdfs.rollInterval=15

    #this is elasticsearch sink

    agent1.sinks.sink1.type = elasticsearch

    agent1.sinks.sink1.hostNames =10.16.0.151:9300,10.16.0.150:9300,10.16.0.151:9300

    agent1.sinks.sink1.indexName = ebbc-dao

    agent1.sinks.sink1.indexType = logs

    agent1.sinks.sink1.clusterName = ebbc

    agent1.sinks.sink1.batchSize = 2000

    agent1.sinks.sink1.ttl = 5d

    agent1.sinks.sink1.serializer =org.apache.flume.sink.elasticsearch.ElasticSearchDynamicSerializer

    agent1.sinks.sink1.channel = ch1

    ##########################################ebc-gateway-client-host#####################################################

    # Define a memory channel called ch1 onagent1

    agent1.channels.ch2.type = memory

    agent1.channels.ch2.capacity = 100000

    agent1.channels.ch2.transactionCapacity =100000

    agent1.channels.ch2.keep-alive = 30

    #define source monitor a file

    agent1.sources.source2.type = exec

    agent1.sources.source2.shell = /bin/bash -c

    agent1.sources.source2.command = tail -F/home/appsvr/logs/ebc-gateway-client-host/ebc-gateway-client-hostAll.log

    agent1.sources.source2.channels = ch2

    agent1.sources.source2.threads = 5

    #this is elasticsearch sink

    agent1.sinks.sink2.type = elasticsearch

    agent1.sinks.sink2.hostNames =10.16.0.151:9300,10.16.0.150:9300,10.16.0.151:9300

    agent1.sinks.sink2.indexName =ebc-gateway-client-host

    agent1.sinks.sink2.indexType = logs

    agent1.sinks.sink2.clusterName = ebbc

    agent1.sinks.sink2.batchSize = 2000

    agent1.sinks.sink2.ttl = 5d

    agent1.sinks.sink2.serializer =org.apache.flume.sink.elasticsearch.ElasticSearchDynamicSerializer

    agent1.sinks.sink2.channel = ch2

    4.5 修改源码

    修改源码类,按需求修改sink规则

    4.6 启动命令

    注意修改文件夹权限

    nohupbin/flume-ng agent -c ./conf/ -f conf/flume-master.conf -n agent1-Dflume.root.logger=INFO,console &

    到此,日志的抓取存储已经简单完成,下面进行精细处理

    5. Kibana集群搭建

    5.1 Kibana关键特性

    全新的数据搜索和发现界面

    统一的可视化构建器,用以构建你喜欢和新加入的那些图表:

    区块图

    数据表格

    折线图

    Markdown 文本挂件

    饼图(包括甜圈图)

    原始文档挂件

    单数值挂件

    贴片地图

    垂直柱状图

    可拖拽的仪表板构建方式,让你可以快速添加,删除可视化,已经修改其大小和长宽比

    基于聚合接口的高级分析能力,现在支持:

    去重统计(cardinality)

    非时间的直方图

    范围统计(Ranges)

    关键词(Significant terms)

    百分比(Percentiles)

    基于 Lucene Expressions 的脚本化字段让你可以完成临时计算任务

    优化

    可以保存搜索和可视化,这样你可以再多个仪表板上链接和使用同一个搜索构建的可视化

    可视化支持不限次数的层叠聚合,这样你可以生成新的可视化样式,比如双层甜圈图

    替换模板化和脚本化仪表板需求的新 URL 格式

    更好的移动端体验

    更快的仪表板加载速度,因为我们消减了发出的 HTTP 请求数量

    客户端请求和发往 Elasticsearch 的请求都可以有 SSL 加密

    搜索结果高亮

    可以很容易访问和导出可视化背后的数据:

    可以在表格中查看,也可以用 JSON 格式

    导出成 CSV 格式

    查看 Elasticsearch 请求和响应

    跟仪表板一样,可以分享和嵌入独立的可视化部分

    其他细节

    自带网页服务器,用 Node.js 作为后端—— 发布有 Linux,Windows 和 Mac OS 的二进制文件分发

    用 D3 框架做可视化效果

    5.2 开始

    你可以在几分钟内安装好 Kibana 然后开始探索你的 Elasticsearch 索引。你要的就是:

    Elasticsearch 1.4.4 或者更新的版本

    一个现代浏览器 -支持的浏览器列表.

    有关你的 Elasticsearch 集群的信息:

    你想要连接 Elasticsearch 实例的URL

    你想搜索哪些 Elasticsearch 索引

    如果你的 Elasticsearch 是被Shield保护着的,阅读Shield with Kibana4学习额外的安装说明。

    安装并启动 kibana

    要安装启动 Kibana:

    1. 下载对应平台的Kibana 4 二进制包

    2. 解压.ziptar.gz压缩文件

    3. 在安装目录里运行:bin/kibana(Linux/MacOSX)或binkibana.bat(Windows)

    完毕!Kibana 现在运行在 5601 端口了。

    =========================================================================

    下载最新的安装包kibana-4.0.1-linux-x64.tar.gz

    修改配置文件kibana.yml

    elasticsearch_url:http://esIp:9200

    ==========================================================================

    让 kibana 连接到 elasticsearch

    在开始用 Kibana 之前,你需要告诉它你打算探索哪个 Elasticsearch 索引。第一次访问 Kibana 的时候,你会被要求定义一个_index pattern_用来匹配一个或者多个索引名。好了。这就是你需要做的全部工作。以后你还可以随时从Settings tab页面添加更多的 index pattern。

    默认情况下,Kibana 会连接运行在localhost的Elasticsearch。要连接其他 Elasticsearch 实例,修改kibana.yml里的Elasticsearch URL,然后重启 Kibana。如何在生产环境下使用 Kibana,阅读Using Kibana in a ProductionEnvironment.

    要从 Kibana 访问的 Elasticsearch索引的配置方法:

    1. 从浏览器访问 Kibana 界面。也就是说访问比如localhost:5601或者http://YOURDOMAIN.com:5601

    2. 制定一个可以匹配一个或者多个 Elasticsearch 索引的 index pattern 。默认情况下,Kibana 认为你要访问的是通过 Logstash 导入 Elasticsearch 的数据。这时候你可以用默认的logstash-*作为你的 index pattern。通配符(*) 匹配索引名中零到多个字符。如果你的 Elasticsearch 索引有其他命名约定,输入合适的 pattern。pattern 也开始是最简单的单个索引的名字。

    3. 选择一个包含了时间戳的索引字段,可以用来做基于时间的处理。Kibana 会读取索引的映射,然后列出所有包含了时间戳的字段(译者注:实际是字段类型为 date 的字段,而不是“看起来像时间戳”的字段)。如果你的索引没有基于时间的数据,关闭Index contains time-based events参数。

    4. 如果一个新索引是定期生成,而且索引名中带有时间戳,选择Use event times to create indexnames选项,然后再选择Indexpattern interval。这可以提高搜索性能,Kibana 会至搜索你指定的时间范围内的索引。在你用 Logstash 输出数据给 Elasticsearch 的情况下尤其有效。

    5. 点击Create添加 index pattern。第一个被添加的 pattern 会自动被设置为默认值。如果你有多个 index pattern 的时候,你可以在Settings> Indices里设置具体哪个是默认值。

    好了。Kibana 现在连接上你的Elasticsearch 数据了。Kibana 会显示匹配上的索引里的字段名的只读列表。

    开始探索你的数据!

    你可以开始下钻你的数据了:

    Discover页搜索和浏览你的数据。

    Visualize页转换数据成图表。

    Dashboard页创建定制自己的仪表板。

    5.3? 生产环境使用 Kibana 的时候

    当你准备在生产环境使用Kibana 的时候,比起在本机运行,你需要多考虑一些:

    在哪运行 kibana

    是否需要加密Kibana 出入的流量

    是否需要控制访问数据的权限

    部署的考虑

    你怎么部署 Kibana取决于你的运用场景。如果就是自己用,在本机运行 Kibana 然后配置一下指向到任意你想交互的 Elasticsearch 实例即可。如果你有一大批 Kibana 重度用户,可能你需要部署多个 Kibana 实例,指向同一个 Elasticsearch ,然后前面加一个负载均衡。

    虽然 Kibana 不是资源密集型的应用,我们依然建议你单独用一个节点来运行 Kibana,而不是泡在 Elasticsearch 节点上。

    配置 Kibana 和 shield 一起工作

    如果你在用 Shield做 Elasticsearch 用户认证,你需要给 Kibana提供用户凭证,这样它才能访问.kibana索引。Kibana 用户需要由权限访问.kibana索引里以下操作:

    '.kibana':

    ????? - indices:admin/create

    ????? - indices:admin/exists

    ????? - indices:admin/mapping/put

    ????? - indices:admin/mappings/fields/get

    ????? - indices:admin/refresh

    ????? - indices:admin/validate/query

    ????? - indices:data/read/get

    ????? - indices:data/read/mget

    ????? - indices:data/read/search

    ????? - indices:data/write/delete

    ????? - indices:data/write/index

    ????? - indices:data/write/update

    ????? - indices:admin/create

    更多配置 Shield 的内容,请阅读Shield with Kibana 4

    要配置 Kibana 的凭证,设置kibana.yml里的kibana_elasticsearch_usernamekibana_elasticsearch_password选项即可:

    #If your Elasticsearch is protected with basic auth:

    kibana_elasticsearch_username:kibana4

    kibana_elasticsearch_password:kibana4

    开启 ssl

    Kibana同时支持对客户端请求以及 Kibana 服务器发往 Elasticsearch 的请求做 SSL 加密。

    要加密浏览器到Kibana 服务器之间的通信,配置kibana.yml里的ssl_key_filessl_cert_file参数:

    #SSL for outgoing requests from the Kibana Server (PEM formatted)

    ssl_key_file:/path/to/your/server.key

    ssl_cert_file:/path/to/your/server.crt

    如果你在用 Shield或者其他提供 HTTPS 的代理服务器保护Elasticsearch,你可以配置 Kibana 通过HTTPS 方式访问 Elasticsearch,这样 Kibana服务器和 Elasticsearch 之间的通信也是加密的。

    要做到这点,你需要在kibana.yml里配置 Elasticsearch 的 URL 时指明是 HTTPS 协议:

    elasticsearch:"https://.com:9200"

    如果你给Elasticsearch 用的是自己签名的证书,请在kibana.yml里设定ca参数指明 PEM 文件位置,这也意味着开启了verify_ssl参数:

    #If you need to provide a CA certificate for your Elasticsarech instance, put

    #the path of the pem file here.

    ca:/path/to/your/ca/cacert.pem

    控制访问权限

    你可以用Elasticsearch Shield来控制用户通过Kibana 可以访问到的 Elasticsearch 数据。Shield提供了索引级别的访问控制。如果一个用户没被许可运行这个请求,那么它在 Kibana 可视化界面上只能看到一个空白。

    要配置 Kibana 使用 Shield,你要位 Kibana 创建一个或者多个 Shield 角色(role),以kibana4作为开头的默认角色。更详细的做法,请阅读Using Shield with Kibana 4

    6.Hadoop集群(暂时不用)

    10.16.0.151 NameNode 节点主机 ResourceManager 主机

    10.16.0.150 DataNode 节点主机 NodeManager 主机

    首先安装hadoop2.5.1

    6.1 建立用户haddop

    切换到hadoop用户上传hadoop安装包

    解压安装包tar -zxvf hadoop-2.5.1.tar.gz

    6.2 配置环境变量

    配置JAVA_HOME

    Root用户打开

    Vi/etc/profile

    添加以下

    ################JAVA_HOME#############

    exportJAVA_HOME=/usr/java/jdk1.7.0_71

    exportCLASSPATH=.: J A V A _ H O M E / l i b / t o o l s . j a r : JAVA\_HOME/lib/tools.jar: JAVA_HOME/lib/tools.jar:JAVA_HOME/lib/dt.jar

    ################HADOOP_HOME###########

    exportHADOOP_HOME=/home/hadoop/hadoop-2.5.1

    exportPATH= P A T H : PATH: PATH:JAVA_HOME/bin:$HADOOP_HOME/bin

    ###########Aliasfor hadoop###########

    aliashdfs='hadoop fs’保存退出

    sourceprofile

    6.3 准备ssh

    Hadoop需要通过SSH和其它计算服务器进行沟通,所以首先要确定本机或者是其它Hadoop计算服务器,是否都已经安装了ssh。

    (1)、确定系统是否安装了ssh和ssh-keygey

    可以通过which命令来确认

    whichssh

    whichssh-keygen

    如果出现

    /usr/bin/which:nosshin(/usr/…)则表示系统里面没有安装SSH服务,可以通过www.openssh.com下载安装

    (2)、发布公钥证书

    执行如下命令:

    ssh-keygen-trsa-P’'-f~/.ssh/id_rsa

    /.ssh/目录会生成id_rsa和id_rsa.pub两个文件,将id_rsa.pub复制一份在/.ssh/目录下,并重命名为authorized_keys,如果是单机搭建伪分布式,此时ssh的准备工作已经完成了,如果使用全分布式环境,那么需要将authorized_keys(或authorized_keys中的内容追加到需要无密码登陆的服务器的/.ssh/authorized_keys文件中)及id_rsa(或id_rsa中的内容追加到需要无密码登陆的服务器的/.ssh/id_rsa文件中)两个文件复制到各台分布式slave机器的“~/.ssh目录中”中,这样任意两台机器之间互相通过ssh访问,都不需要输入密码了,如果只是拷贝到authorized_keys到slave机器中,就只能够实现主到从的不输密码访问。

    **注:**如果需要远程登陆的服务器上还没有.ssh目录,那么就在登陆用户的目录下新建.ssh目录,权限至少设置成744,如果.ssh目录下没有authorized_keys文件,也新建该文件,并将其权限设置为644。

    (3)测试登陆验证

    在本例中,采用的是在单机中搭建伪分布式系统,通过如下ssh命令尝试登陆:

    sshlocalhost

    ssh127.0.0.1

    如果不再提示输入密码,直接登陆成功,那么SSH登陆就设置成功了。

    6.4 修改hadoop配置文件

    1.

    2. dfs.nameservices

    3. hadoop-cluster1

    4.

    5.

    6. dfs.namenode.secondary.http-address

    7. nameNode:50090

    8.

    9.

    10. dfs.namenode.name.dir

    11. file:///home/hadoop/dfs/name

    12.

    13.

    14. dfs.datanode.data.dir

    15. file:///home/hadoop/dfs/data

    16.

    17.

    18. dfs.replication

    19. 2

    20.

    21.

    22. dfs.webhdfs.enabled

    23. true

    24.

    清单 2.hdfs-site.xml 配置

    1.

    2. dfs.nameservices

    3. hadoop-cluster1

    4.

    5.

    6. dfs.namenode.secondary.http-address

    7. nameNode:50090

    8.

    9.

    10. dfs.namenode.name.dir

    11. file:///home/hadoop/dfs/name

    12.

    13.

    14. dfs.datanode.data.dir

    15. file:///home/hadoop/dfs/data

    16.

    17.

    18. dfs.replication

    19. 2

    20.

    21.

    22. dfs.webhdfs.enabled

    23. true

    24.

    在 mapred-site.xml 中配置其使用 Yarn 框架执行 map-reduce 处理程序,详细如下:

    清单3.mapred-site.xml 配置

    1.

    2. dfs.nameservices

    3. hadoop-cluster1

    4.

    5.

    6. dfs.namenode.secondary.http-address

    7. nameNode:50090

    8.

    9.

    10. dfs.namenode.name.dir

    11. file:///home/hadoop/dfs/name

    12.

    13.

    14. dfs.datanode.data.dir

    15. file:///home/hadoop/dfs/data

    16.

    17.

    18. dfs.replication

    19. 2

    20.

    21.

    22. dfs.webhdfs.enabled

    23. true

    24.

    修改yarn-site.xml

    yarn.nodemanager.aux-services

    mapreduce_shuffle

    yarn.resourcemanager.address

    nameNode:8032

    yarn.resourcemanager.scheduler.address

    nameNode:8030

    yarn.resourcemanager.resource-tracker.address

    nameNode:8031

    yarn.resourcemanager.admin.address

    nameNode:8033

    yarn.resourcemanager.webapp.address

    nameNode:8088

    slaves

    1. dataNode

    修改JAVA_HOME

    分别在文件hadoop-env.sh和yarn-env.sh中添加JAVA_HOME配置

    vihadoop-env.sh

    [plain]viewplaincopy[](https://code.csdn.net/snippets/473374 "“在CODE上查看代码片” t ")

    1.exportJAVA_HOME=/usr/java/jdk1.7.0_65

    viyarn-env.sh

    [plain]viewplaincopy[](https://code.csdn.net/snippets/473374 "“在CODE上查看代码片” t ")

    1.exportJAVA_HOME=/usr/java/jdk1.7.0_65

    6.5 格式化文件系统

    格式化文件系统:

    [plain]viewplaincopy[](https://code.csdn.net/snippets/473374 "“在CODE上查看代码片” t ")

    1.bin/hdfsnamenode-format

    输出:

    [plain]viewplaincopy[](https://code.csdn.net/snippets/473374 "“在CODE上查看代码片” t ")

    1.14/09/2111:57:22INFOnamenode.NameNode:STARTUP_MSG:

    2./************************************************************

    3.STARTUP_MSG:StartingNameNode

    4.STARTUP_MSG:host=nameNode/127.0.0.1

    5.STARTUP_MSG:args=[-format]

    6.STARTUP_MSG:version=2.5.1

    7.STARTUP_MSG:classpath=/home/hadoop-2.5.1/etc/hadoop:/home/hadoop-2.5.1/share/hadoop/common/lib/jackson-jaxrs-1.9.13.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/jackson-mapper-asl-1.9.13.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/jets3t-0.9.0.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/jersey-server-1.9.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/asm-3.2.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/guava-11.0.2.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/jetty-6.1.26.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/api-util-1.0.0-M20.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/xz-1.0.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/paranamer-2.3.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/commons-lang-2.6.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/api-asn1-api-1.0.0-M20.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/commons-beanutils-1.7.0.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/commons-codec-1.4.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/commons-math3-3.1.1.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/commons-beanutils-core-1.8.0.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/commons-configuration-1.6.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/jsch-0.1.42.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/netty-3.6.2.Final.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/jackson-xc-1.9.13.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/zookeeper-3.4.6.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/commons-cli-1.2.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/activation-1.1.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/commons-collections-3.2.1.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/jackson-core-asl-1.9.13.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/hadoop-auth-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/hamcrest-core-1.3.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/commons-el-1.0.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/xmlenc-0.52.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/jasper-runtime-5.5.23.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/apacheds-i18n-2.0.0-M15.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/jsr305-1.3.9.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/log4j-1.2.17.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/httpclient-4.2.5.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/jersey-json-1.9.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/avro-1.7.4.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/jasper-compiler-5.5.23.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/jersey-core-1.9.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/apacheds-kerberos-codec-2.0.0-M15.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/hadoop-annotations-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/commons-httpclient-3.1.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/commons-io-2.4.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/commons-net-3.1.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/stax-api-1.0-2.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/commons-compress-1.4.1.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/jaxb-api-2.2.2.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/junit-4.11.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/slf4j-api-1.7.5.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/jetty-util-6.1.26.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/jsp-api-2.1.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/mockito-all-1.8.5.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/protobuf-java-2.5.0.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/jaxb-impl-2.2.3-1.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/java-xmlbuilder-0.4.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/httpcore-4.2.5.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/servlet-api-2.5.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/snappy-java-1.0.4.1.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/commons-digester-1.8.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/jettison-1.1.jar:/home/hadoop-2.5.1/share/hadoop/common/lib/commons-logging-1.1.3.jar:/home/hadoop-2.5.1/share/hadoop/common/hadoop-nfs-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/common/hadoop-common-2.5.1-tests.jar:/home/hadoop-2.5.1/share/hadoop/common/hadoop-common-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/hdfs:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/commons-daemon-1.0.13.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/jackson-mapper-asl-1.9.13.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/jersey-server-1.9.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/asm-3.2.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/guava-11.0.2.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/jetty-6.1.26.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/commons-lang-2.6.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/commons-codec-1.4.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/netty-3.6.2.Final.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/commons-cli-1.2.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/jackson-core-asl-1.9.13.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/commons-el-1.0.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/xmlenc-0.52.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/jasper-runtime-5.5.23.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/jsr305-1.3.9.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/log4j-1.2.17.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/jersey-core-1.9.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/commons-io-2.4.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/jetty-util-6.1.26.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/jsp-api-2.1.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/protobuf-java-2.5.0.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/servlet-api-2.5.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/lib/commons-logging-1.1.3.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/hadoop-hdfs-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/hadoop-hdfs-nfs-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/hdfs/hadoop-hdfs-2.5.1-tests.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/jackson-jaxrs-1.9.13.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/jackson-mapper-asl-1.9.13.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/jersey-server-1.9.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/asm-3.2.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/guava-11.0.2.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/jetty-6.1.26.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/xz-1.0.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/commons-lang-2.6.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/commons-codec-1.4.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/javax.inject-1.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/netty-3.6.2.Final.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/jackson-xc-1.9.13.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/zookeeper-3.4.6.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/commons-cli-1.2.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/activation-1.1.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/commons-collections-3.2.1.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/jersey-guice-1.9.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/guice-servlet-3.0.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/leveldbjni-all-1.8.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/jline-0.9.94.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/jackson-core-asl-1.9.13.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/jsr305-1.3.9.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/log4j-1.2.17.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/jersey-json-1.9.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/guice-3.0.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/jersey-core-1.9.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/commons-httpclient-3.1.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/commons-io-2.4.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/stax-api-1.0-2.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/commons-compress-1.4.1.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/jaxb-api-2.2.2.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/jetty-util-6.1.26.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/protobuf-java-2.5.0.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/jaxb-impl-2.2.3-1.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/servlet-api-2.5.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/jersey-client-1.9.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/aopalliance-1.0.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/jettison-1.1.jar:/home/hadoop-2.5.1/share/hadoop/yarn/lib/commons-logging-1.1.3.jar:/home/hadoop-2.5.1/share/hadoop/yarn/hadoop-yarn-client-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/yarn/hadoop-yarn-common-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/yarn/hadoop-yarn-server-tests-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/yarn/hadoop-yarn-server-nodemanager-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/yarn/hadoop-yarn-server-web-proxy-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/yarn/hadoop-yarn-server-resourcemanager-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/yarn/hadoop-yarn-api-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/yarn/hadoop-yarn-server-common-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/yarn/hadoop-yarn-applications-distributedshell-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/yarn/hadoop-yarn-server-applicationhistoryservice-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/yarn/hadoop-yarn-applications-unmanaged-am-launcher-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/jackson-mapper-asl-1.9.13.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/jersey-server-1.9.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/asm-3.2.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/xz-1.0.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/paranamer-2.3.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/javax.inject-1.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/netty-3.6.2.Final.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/jersey-guice-1.9.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/guice-servlet-3.0.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/leveldbjni-all-1.8.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/jackson-core-asl-1.9.13.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/hamcrest-core-1.3.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/log4j-1.2.17.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/avro-1.7.4.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/guice-3.0.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/jersey-core-1.9.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/hadoop-annotations-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/commons-io-2.4.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/commons-compress-1.4.1.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/junit-4.11.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/protobuf-java-2.5.0.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/snappy-java-1.0.4.1.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/lib/aopalliance-1.0.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/hadoop-mapreduce-client-app-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.5.1-tests.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/hadoop-mapreduce-client-shuffle-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/hadoop-mapreduce-client-common-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/hadoop-mapreduce-client-hs-plugins-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/hadoop-mapreduce-client-hs-2.5.1.jar:/home/hadoop-2.5.1/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.5.1.jar:/home/hadoop-2.5.1/contrib/capacity-scheduler/*.jar

    8.STARTUP_MSG:build=https://git-wip-us.apache.org/repos/asf/hadoop.git-r2e18d179e4a8065b6a9f29cf2de9451891265cce;compiledby’jenkins’on2014-09-05T23:11Z

    9.STARTUP_MSG:java=1.7.0_65

    10.************************************************************/

    11.14/09/2111:57:22INFOnamenode.NameNode:registeredUNIXsignalhandlersfor[TERM,HUP,INT]

    12.14/09/2111:57:22INFOnamenode.NameNode:createNameNode[-format]

    13.14/09/2111:57:26WARNutil.NativeCodeLoader:Unabletoloadnative-hadooplibraryforyourplatform…usingbuiltin-javaclasseswhereapplicable

    14.Formattingusingclusterid:CID-85e34a63-6cd7-4f1e-bbb9-add72ccaa660

    15.14/09/2111:57:29INFOnamenode.FSNamesystem:fsLockisfair:true

    16.14/09/2111:57:30INFOblockmanagement.DatanodeManager:dfs.block.invalidate.limit=1000

    17.14/09/2111:57:30INFOblockmanagement.DatanodeManager:dfs.namenode.datanode.registration.ip-hostname-check=true

    18.14/09/2111:57:30INFOblockmanagement.BlockManager:dfs.namenode.startup.delay.block.deletion.secissetto000:00:00:00.000

    19.14/09/2111:57:30INFOblockmanagement.BlockManager:Theblockdeletionwillstartaround2014九月2111:57:30

    20.14/09/2111:57:30INFOutil.GSet:ComputingcapacityformapBlocksMap

    21.14/09/2111:57:30INFOutil.GSet:VMtype=64-bit

    22.14/09/2111:57:30INFOutil.GSet:2.0%maxmemory966.7MB=19.3MB

    23.14/09/2111:57:30INFOutil.GSet:capacity=2^21=2097152entries

    24.14/09/2111:57:31INFOblockmanagement.BlockManager:dfs.block.access.token.enable=false

    25.14/09/2111:57:31INFOblockmanagement.BlockManager:defaultReplication=3

    26.14/09/2111:57:31INFOblockmanagement.BlockManager:maxReplication=512

    27.14/09/2111:57:31INFOblockmanagement.BlockManager:minReplication=1

    28.14/09/2111:57:31INFOblockmanagement.BlockManager:maxReplicationStreams=2

    29.14/09/2111:57:31INFOblockmanagement.BlockManager:shouldCheckForEnoughRacks=false

    30.14/09/2111:57:31INFOblockmanagement.BlockManager:replicationRecheckInterval=3000

    31.14/09/2111:57:31INFOblockmanagement.BlockManager:encryptDataTransfer=false

    32.14/09/2111:57:31INFOblockmanagement.BlockManager:maxNumBlocksToLog=1000

    33.14/09/2111:57:31INFOnamenode.FSNamesystem:fsOwner=root(auth:SIMPLE)

    34.14/09/2111:57:31INFOnamenode.FSNamesystem:supergroup=supergroup

    35.14/09/2111:57:31INFOnamenode.FSNamesystem:isPermissionEnabled=true

    36.14/09/2111:57:31INFOnamenode.FSNamesystem:DeterminednameserviceID:hadoop-cluster1

    37.14/09/2111:57:31INFOnamenode.FSNamesystem:HAEnabled:false

    38.14/09/2111:57:31INFOnamenode.FSNamesystem:AppendEnabled:true

    39.14/09/2111:57:33INFOutil.GSet:ComputingcapacityformapINodeMap

    40.14/09/2111:57:33INFOutil.GSet:VMtype=64-bit

    41.14/09/2111:57:33INFOutil.GSet:1.0%maxmemory966.7MB=9.7MB

    42.14/09/2111:57:33INFOutil.GSet:capacity=2^20=1048576entries

    43.14/09/2111:57:33INFOnamenode.NameNode:Cachingfilenamesoccuringmorethan10times

    44.14/09/2111:57:33INFOutil.GSet:ComputingcapacityformapcachedBlocks

    45.14/09/2111:57:33INFOutil.GSet:VMtype=64-bit

    46.14/09/2111:57:33INFOutil.GSet:0.25%maxmemory966.7MB=2.4MB

    47.14/09/2111:57:33INFOutil.GSet:capacity=2^18=262144entries

    48.14/09/2111:57:33INFOnamenode.FSNamesystem:dfs.namenode.safemode.threshold-pct=0.9990000128746033

    49.14/09/2111:57:33INFOnamenode.FSNamesystem:dfs.namenode.safemode.min.datanodes=0

    50.14/09/2111:57:33INFOnamenode.FSNamesystem:dfs.namenode.safemode.extension=30000

    51.14/09/2111:57:33INFOnamenode.FSNamesystem:Retrycacheonnamenodeisenabled

    52.14/09/2111:57:33INFOnamenode.FSNamesystem:Retrycachewilluse0.03oftotalheapandretrycacheentryexpirytimeis600000millis

    53.14/09/2111:57:33INFOutil.GSet:ComputingcapacityformapNameNodeRetryCache

    54.14/09/2111:57:33INFOutil.GSet:VMtype=64-bit

    55.14/09/2111:57:33INFOutil.GSet:0.029999999329447746%maxmemory966.7MB=297.0KB

    56.14/09/2111:57:33INFOutil.GSet:capacity=2^15=32768entries

    57.14/09/2111:57:33INFOnamenode.NNConf:ACLsenabledfalse

    58.14/09/2111:57:33INFOnamenode.NNConf:XAttrsenabledtrue

    59.14/09/2111:57:33INFOnamenode.NNConf:Maximumsizeofanxattr:16384

    60.14/09/2111:57:34INFOnamenode.FSImage:AllocatednewBlockPoolId:BP-955896090-127.0.0.1-1411271853454

    61.14/09/2111:57:34INFOcommon.Storage:Storagedirectory/home/hadoop/dfs/namehasbeensuccessfullyformatted.

    62.14/09/2111:57:36INFOnamenode.NNStorageRetentionManager:Goingtoretain1imageswithtxid>=0

    63.14/09/2111:57:36INFOutil.ExitUtil:Exitingwithstatus0

    64.14/09/2111:57:36INFOnamenode.NameNode:SHUTDOWN_MSG:

    65./************************************************************

    66.SHUTDOWN_MSG:ShuttingdownNameNodeatnameNode/127.0.0.1

    67.************************************************************/

    6.6 启动、停止服务

    现在可以启动服务了

    启动

    [plain]viewplaincopy[](https://code.csdn.net/snippets/473374 "“在CODE上查看代码片” t ")

    1.[root@nameNodesbin]#./start-dfs.sh

    [plain]viewplaincopy[](https://code.csdn.net/snippets/473374 "“在CODE上查看代码片” t ")

    1.[root@nameNodesbin]#./start-yarn.sh

    停止

    [plain]viewplaincopy[](https://code.csdn.net/snippets/473374 "“在CODE上查看代码片” t ")

    1.[root@nameNodesbin]#./stop-dfs.sh

    [plain]viewplaincopy[](https://code.csdn.net/snippets/473374 "“在CODE上查看代码片” t ")

    1.[root@nameNodesbin]#./stop-yarn.sh

    6.7 创建HDFS目录

    bin/hdfs dfs-mkdir -p /home/hadoop/usr/dfs/input

    bin/hdfs dfs-put /home/hadoop/test/*.txt/usr/dfs/input

    创建flume文件夹

    bin/hdfs dfs-mkdir -p /home/hadoop/usr/dfs/flumeDate

    bin/hadoopjar /home/hadoop/hadoop-2.5.1/lib/maxTemperature.jar /usr/dfs/input//usr/dfs/output/

    6.8 验证

    查看启动的进程

    [plain]viewplaincopy[](https://code.csdn.net/snippets/473374 "“在CODE上查看代码片” t ")

    1.[root@nameNodesbin]#jps

    [plain]viewplaincopy[](https://code.csdn.net/snippets/473374 "“在CODE上查看代码片” t ")

    1.7854Jps

    2.7594ResourceManager

    3.7357NameNode

    通过浏览器访问

    http://192.168.17.100:50070/

    http://192.168.17.100:8088/

    Hadoop集群部署完成

    7.用sqoop同步到mysql(暂时不用)

    创建用户sqoop

    下载安装包sqoop-1.4.4.bin__hadoop-2.0.4-alpha.tar.gz

    tar -zxvfsqoop-1.4.4.bin__hadoop-2.0.4-alpha.tar.gz

    mv sqoop-1.4.4.bin__hadoop-2.0.4-alpha sqoop-1.4.4

    添加环境变量

    export SQOOP_HOME=/home/sqoop/sqoop-1.4.4

    export HADOOP_COMMON_HOME=$HADOOP_HOME

    把mysql的jdbc驱动mysql-connector-java-5.1.10.jar复制到sqoop项目的lib目录下。

    在conf目录

    mvsqoop-env-template.shsqoop-env.sh

    使用工具list-tables查看表,如下:

    ./sqooplist-tables --connect jdbc:mysql://10.129.33.148/ebbc --username root–password ROOT

    分隔线内有待研究

    8.日志系统用法说明

    1 ?Discover 标签页

    你可以在 Discover 页交互式探索你的数据。你可以访问到匹配得上你选择的索引模式的每个索引的每条记录。你可以提交搜索请求,过滤搜索结果,然后查看文档数据。你还可以看到匹配搜索请求的文档总数,获取字段值的统计情况。如果索引模式配置了时间字段,文档的时序分布情况会在页面顶部以柱状图的形式展示出来。

    设置时间过滤器

    时间过滤器(Time Filter)限制搜索结果在一个特定的时间周期内。如果你的索引包含的是时序诗句,而且你为所选的索引模式配置了时间字段,那么就就可以设置时间过滤器。

    默认的时间过滤器设置为最近 15 分钟。你可以用页面顶部的时间选择器(Time Picker)来修改时间过滤器,或者选择一个特定的时间间隔,或者直方图的时间范围。

    要用时间选择器来修改时间过滤器:

    1.点击菜单栏右上角显示的 Time Filter 打开时间选择器。

    2.快速过滤,直接选择一个短链接即可。

    3.要指定相对时间过滤,点击 Relative 然后输入一个相对的开始时间。可以是任意数字的秒、分、小时、天、月甚至年之前。

    4.要指定绝对时间过滤,点击 Absolute 然后在 From 框内输入开始日期,To 框内输入结束日期。

    5.点击时间选择器底部的箭头隐藏选择器。

    要从住房图上设置时间过滤器,有以下几种方式:

    想要放大那个时间间隔,点击对应的柱体。

    单击并拖拽一个时间区域。注意需要等到光标变成加号,才意味着这是一个有效的起始点。

    你可以用浏览器的后退键来回退你的操作。

    搜索数据

    在 Discover 页提交一个搜索,你就可以搜索匹配当前索引模式的索引数据了。你可以直接输入简单的请求字符串,也就是用Lucenequery syntax,也可以用完整的基于 JSON 的Elasticsearch Query DSL

    当你提交搜索的时候,直方图,文档表格,字段列表,都会自动反映成搜索的结果。hits(匹配的文档)总数会在直方图的右上角显示。文档表格显示前 500 个匹配文档。默认的,文档倒序排列,最新的文档最先显示。你可以通过点击时间列的头部来反转排序。事实上,所有建了索引的字段,都可以用来排序。

    要搜索你的数据:

    在搜索框内输入请求字符串:

    1.简单的文本搜索,直接输入文本字符串。比如,如果你在搜索网站服务器日志,你可以输入safari来搜索各字段中的safari单词。

    2.要搜索特定字段中的值,则在值前加上字段名。比如,你可以输入status:200来限制搜索结果都是在status字段里有200内容。

    3.要搜索一个值的范围,你可以用范围查询语法,[START_VALUE TO END_VALUE]。比如,要查找 4xx 的状态码,你可以输入status:[400 TO 499]

    4.要指定更复杂的搜索标准,你可以用布尔操作符AND,OR, 和NOT。比如,要查找 4xx 的状态码,还是phphtml结尾的数据,你可以输入status:[400 TO 499] AND (extension:php ORextension:html)

    这些例子都用了 Lucene querysyntax。你也可以提交 ElasticsearchQuery DSL 式的请求。更多示例,请阅读Elasticsearch 文档中的query string syntax

    点击回车键,或者点击Search按钮提交你的搜索请求。

    开始一个新的搜索

    要清除当前搜索或开始一个新搜索,点击 Discover 工具栏的 New Search 按钮。

    保存搜索

    你可以在 Discover 页加载已保存的搜索,也可以用作visualizations的基础。保存一个搜索,意味着同时保存下了搜索请求字符串和当前选择的索引模式。

    要保存当前搜索:

    1.点击 Discover 工具栏的SaveSearch按钮 。

    2.输入一个名称,点击Save

    加载一个已存搜索

    要加载一个已保存的搜索:

    1.点击 Discover 工具栏的LoadSearch按钮 。

    2. 选择你要加载的搜索。

    如果已保存的搜索关联到跟你当前选择的索引模式不一样的其他索引上,加载这个搜索也会切换当前的已选索引模式。

    改变你搜索的索引

    当你提交一个搜索请求,匹配当前的已选索引模式的索引都会被搜索。当前模式模式会显示在搜索栏下方。要改变搜索的索引,需要选择另外的模式模式。

    要选择另外的索引模式:

    1.点击 Discover 工具栏的Settings按钮 。

    2.从索引模式列表中选取你打算采用的模式。

    自动刷新页面

    亦可以配置一个刷新间隔来自动刷新 Discover 页面的最新索引数据。这回定期重新提交一次搜索请求。

    设置刷新间隔后,会显示在菜单栏时间过滤器的左边。

    要设置刷新间隔:

    1.点击菜单栏右上角的TimeFilter

    2.点击RefreshInterval标签。

    3.从列表中选择一个刷新间隔。

    按字段过滤

    你可以过滤搜索结果,只显示在某字段中包含了特定值的文档。也可以创建反向过滤器,排除掉包含特定字段值的文档。

    你可以从字段列表或者文档表格里添加过滤器。当你添加好一个过滤器后,它会显示在搜索请求下方的过滤栏里。从过滤栏里你可以编辑或者关闭一个过滤器,转换过滤器(从正向改成反向,反之亦然),切换过滤器开关,或者完全移除掉它。

    要从字段列表添加过滤器

    1.点击你想要过滤的字段名。会显示这个字段的前 5 名数据。每个数据的右侧,有两个小按钮 —— 一个用来添加常规(正向)过滤器,一个用来添加反向过滤器。

    2.要添加正向过滤器,点击PositiveFilter按钮 。这个会过滤掉在本字段不包含这个数据的文档。

    3.要添加反向过滤器,点击NegativeFilter按钮 。这个会过滤掉在本字段包含这个数据的文档。

    要从文档表格添加过滤器

    1.点击表格第一列(通常都是时间)文档内容左侧的Expand按钮 展开文档表格中的文档。每个字段名的右侧,有两个小按钮 —— 一个用来添加常规(正向)过滤器,一个用来添加反向过滤器。

    2.要添加正向过滤器,点击PositiveFilter按钮 。这个会过滤掉在本字段不包含这个数据的文档。

    3.要添加反向过滤器,点击NegativeFilter按钮 。这个会过滤掉在本字段包含这个数据的文档。

    查看文档数据

    当你提交一个搜索请求,最近的 500 个搜索结果会显示在文档表格里。你可以在Advanced Settings里通过discover:sampleSize属性配置表格里具体的文档数量。默认的,表格会显示当前选择的索引模式中定义的时间字段内容(转换成本地时区)以及_source文档。你可以从字段列表添加字段到文档表格。还可以用表格里包含的任意已建索引的字段来排序列出的文档

    要查看一个文档的字段数据:

    1.点击表格第一列(通常都是时间)文档内容左侧的Expand按钮 。Kibana 从 Elasticsearch 读取数据然后在表格中显示文档字段。这个表格每行是一个字段的名字、过滤器按钮和字段的值。

    2.要查看原始 JSON 文档(格式美化过的),点击JSON标签。

    3.要在单独的页面上查看文档内容,点击链接。你可以添加书签或者分享这个链接,以直接访问这条特定文档。

    4.收回文档细节,点击Collapse按钮 。

    文档列表排序

    你可以用任意已建索引的字段排序文档表格中的数据。如果当前索引模式配置了时间字段,默认会使用该字段倒序排列文档。

    要改变排序方式:

    点击想要用来排序的字段名。能用来排序的字段在字段名右侧都有一个排序按钮。再次点击字段名,就会反向调整排序方式。

    给文档表格添加字段列

    By default, the Documents table shows thelocalized version of the time field specified in the selected index pattern andthe document_source. You can add fields to the table from the Fields list. 默认的,文档表格会显示当前选择的索引模式中定义的时间字段内容(转换成本地时区)以及_source文档。你可以从字段列表添加字段到文档表格。

    要添加字段列到文档表格:

    移动鼠标到字段列表的字段上,点击它的add按钮 。

    重复操作直到你添加完所有你想移除的字段。

    添加的字段会替换掉文档表格里的_source列。同时还会显示在字段列表顶部的SelectedFields区域里。

    要重排表格中的字段列,移动鼠标到你要移动的列顶部,点击移动过按钮。

    从文档表格删除字段列

    要从文档表格删除字段列:

    1.移动鼠标到字段列表的SelectedFields区域里你想要移除的字段上,然后点击它的remove按钮 。

    2.重复操作直到你移除完所有你想移除的字段。

    查看字段数据统计

    从字段列表,你可以看到文档表格里有多少数据包含了这个字段,排名前 5 的值是什么,以及包含各个值的文档的占比。

    要查看字段数据统计:

    点击字段列表里一个字段的名字。这个字段可以在字段列表的任意位置 —— 已选字段(Selected Fields),常用字段(Popular Fields),或其他字段。

    要基于这个字段创建可视化,点击字段统计下方的Visualize 按钮。

    2.Visualize 标签页

    你可以用_Visualize_页来设计可视化。你可以保存可视化,以后再用,或者合并到_dashboard_里。一个可视化可以基于以下几种数据源类型:

    一个新的交互式搜索

    一个已保存的搜索

    一个已保存的可视化

    可视化是基于Elasticsearch 1 引入的聚合(aggregation)特性。

    创建一个新可视化

    要开始一个NewVisualization向导,点击页面左上角的Visualize标签。如果你已经在创建一个可视化了。你可以在搜索栏的右侧工具栏里点击New Visualization按钮 向导会引导你继续以下几步:

    第 1 步: 选择可视化类型

    New Visualization向导起始页如下:

    你也可以加载一个你之前创建好保存下来的可视化。已存可视化选择器包括一个文本框用来过滤可视化名称,以及一个指向对象编辑器(ObjectEditor)的链接,可以通过Settings> Edit Saved Objects来管理已存的可视化。

    如果你的新可视化是一个Markdown挂件,选择这个类型会带你到一个文本内容框,你可以在框内输入打算显示在挂件里的文本。其他的可视化类型,选择后都会转到数据源选择。

    第 2 步: 选择数据源

    你可以选择新建或者读取一个已保存的搜索,作为你可视化的数据源。搜索是和一个或者一系列索引相关联的。如果你选择了在一个配置了多个索引的系统上开始你的_新搜索_,从可视化编辑器的下拉菜单里选择一个索引模式。

    当你从一个已保存的搜索开始创建并保存好了可视化,这个搜索就绑定在这个可视化上。如果你修改了搜索,对应的可视化也会自动更新。

    第 3 步: 可视化编辑器

    Thevisualization editor enables you to configure and edit visualizations. Thevisualization editor has the following main elements: 可视化编辑器用来配置编辑可视化。它有下面几个主要元素:

    工具栏(Toolbar)

    聚合构建器(AggregationBuilder)

    预览画布(PreviewCanvas)

    工具栏

    工具栏上有一个用户交互式数据搜索的搜索框,用来保存和加载可视化。因为可视化是基于保存好的搜索,搜索栏会变成灰色。要编辑搜索,双击搜索框,用编辑后的版本替换已保存搜索。

    搜索框右侧的工具栏有一系列按钮,用于创建新可视化,保存当前可视化,加载一个已有可视化,分享或内嵌可视化,和刷新当前可视化的数据。

    聚合构建器

    用页面左侧的聚合构建器配置你的可视化要用的metricbucket聚合。桶(Buckets) 的效果类似于SQLGROUP BY语句。想更详细的了解聚合,阅读Elasticsearch aggregations reference

    在条带图或者折线图可视化里,用_metrics_做 Y 轴,然后_buckets_做 X 轴,条带颜色,以及行/列的区分。在饼图里,_metrics_用来做分片的大小,_buckets_做分片的数量。

    为你的可视化 Y 轴选一个 metric 聚合,包括count,average,sum,min,max,orcardinality(uniquecount). 为你的可视化 X 轴,条带颜色,以及行/列的区分选一个 bucket 聚合,常见的有 date histogram, range, terms, filters, 和significant terms。

    你可以设置buckets 执行的顺序。在 Elasticsearch 里,第一个聚合决定了后续聚合的数据集。下面例子演示一个网页访问量前五名的文件后缀名统计的时间条带图。

    要看所有相同后缀名的,设置顺序如下:

    1. Color: 后缀名的 Terms 聚合

    2. X-Axis:@timestamp的时间条带图

    Elasticsearch收集记录,算出前 5 名后缀名,然后为每个后缀名创建一个时间条带图。

    要看每个小时的前 5 名后缀名情况,设置顺序如下:

    1. X-Axis:@timestamp的时间条带图( 1 小时间隔)

    2. Color: 后缀名的 Terms 聚合

    这次,Elasticsearch会从所有记录里创建一个时间条带图,然后在每个桶内,分组(本例中就是一个小时的间隔)计算出前 5 名的后缀名。

    记住,每个后续的桶,都是从前一个的桶里分割数据。

    要在_预览画布(preview canvas)_上渲染可视化,点击聚合构建器底部的Apply按钮。

    预览画布(canvas)

    预览 canvas 上显示你定义在聚合构建器里的可视化的预览效果。要刷新可视化预览,点击工具栏里的Refresh按钮 。

    3.Dashboard标签页

    一个 Kibana_dashboard_能让你自由排列一组已保存的可视化。然后你可以保存这个仪表板,用来分享或者重载。

    简单的仪表板像这样。

    开始

    要用仪表板,你需要至少有一个已保存的visualization

    创建一个新的仪表板

    你第一次点击Dashboard标签的时候,Kibana 会显示一个空白的仪表板

    通过添加可视化的方式来构建你的仪表板。

    添加可视化到仪表板上

    要添加可视化到仪表板上,点击工具栏面板上的Add Visualization 按钮。从列表中选择一个已保存的可视化。你可以在Visualization Filter里输入字符串来过滤想要找的可视化。

    由你选择的这个可视化会出现在你仪表板上的一个_容器(container)_里。

    如果你觉得容器的高度和宽度不合适,可以调整容器大小

    保存仪表板

    要保存仪表板,点击工具栏面板上的Save Dashboard按钮,在Save As栏输入仪表板的名字,然后点击Save按钮。

    加载已保存仪表板

    点击Load Saved Dashboard按钮显示已存在的仪表板列表。已保存仪表板选择器包括了一个文本栏可以通过仪表板的名字做过滤,还有一个链接到Object Editor而已管理你的已保存仪表板。你也可以直接点击Settings> Edit Saved Objects来访问ObjectEditor

    分享仪表板

    你可以分享仪表板给其他用户。可以直接分享 Kibana 的仪表板链接,也可以嵌入到你的网页里。

    用户必须有 Kibana 的访问权限才能看到嵌入的仪表板。

    点击Share按钮显示 HTML 代码,就可以嵌入仪表板到其他网页里。还带有一个指向仪表板的链接。点击复制按钮 可以复制代码,或者链接到你的黏贴板。

    嵌入仪表板

    要嵌入仪表板,从_Share_页里复制出嵌入代码,然后粘贴进你外部网页应用内即可。

    定制仪表板元素

    仪表板里的可视化都存在可以调整大小的_容器_里。接下来会讨论一下容器。

    移动容器

    点击并按住容器的顶部,就可以拖动容器到仪表板任意位置。其他容器会在必要的时候自动移动,给你在拖动的这个容器空出位置。松开鼠标,容器就会固定在当前停留位置。

    改变容器大小

    移动光标到容器的右下角,等光标变成指向拐角的方向,点击并按住鼠标,拖动改变容器的大小。松开鼠标,容器就会固定成当前大小。

    删除容器

    点击容器右上角的 x 图标删除容器。从仪表板删除容器,并不会同时删除掉容器里用到的已存可视化。

    查看详细信息

    要显示可视化背后的原始数据,点击容器地步的条带。可视化会被有关原始数据详细信息的几个标签替换掉。如下所示:

    表格(Table)。底层数据的分页展示。你可以通过点击每列顶部的方式给该列数据排序。

    请求(Request)。发送到服务器的原始请求,以 JSON 格式展示。

    响应(Response)。从服务器返回的原始响应,以 JSON 格式展示。

    统计值(Statistics)。和请求响应相关的一些统计值,以数据网格的方式展示。数据报告,请求时间,响应时间,返回的记录条目数,匹配请求的索引模式(index pattern)。

    修改可视化

    点击容器右上角的_Edit_按钮 在Visualize页打开可视化编辑。

    4.配置

    要使用 Kibana,你就得告诉它你想要探索的 Elasticsearch 索引是那些,这就要配置一个或者更多的索引模式。此外,你还可以:

    1.创建脚本化字段,这个字段可以实时从你的数据中计算出来。你可以浏览这种字段,并且在它基础上做可视化,但是不能搜索这种字段。

    2.设置高级选项,比如表格里显示多少行,常用字段显示多少个。修改高级选项的时候要千万小心,因为一个设置很可能跟另一个设置是不兼容的。

    3.为生产环境配置 Kibana。

    创建一个连接到 Elasticsearch 的索引模式

    一个索引模式定义了一个或者多个你打算探索的 Elasticsearch 索引。Kibana 会查找匹配指定模式的索引名。模式中的通配符()匹配零到多个字符。比如,模式 `myindex-匹配所有名字以myindex-开头的索引,比如myindex-1myindex-2`。

    如果你用了事件时间来创建索引名(比如说,如果你是用 Logstash 往 Elasticsearch 里写数据),索引模式里也可以匹配一个日期格式。在这种情况下,模式的静态文本部分必须用中括号包含起来,日期格式能用的字符,参见表 1 “日期格式码”。

    比如,[logstash-]YYYY.MM.DD匹配所有名字以logstash-为前缀,后面跟上YYYY.MM.DD格式时间戳的索引,比如logstash-2015.01.31logstash-2015-02-01

    索引模式也可以简单的设置为一个单独的索引名字。

    要创建一个连接到 Elasticsearch 的索引模式:

    1.切换到Settings> Indices标签页。

    2.指定一个能匹配你的 Elasticsearch 索引名的索引模式。默认的,Kibana 会假设你是要处理 Logstash 导入的数据。

    当你在顶层标签页之间切换的时候,Kibana会记住你之前停留的位置。比如,如果你在 Settings 标签页查看了一个索引模式,然后切换到 Discover 标签,再切换回 Settings 标签,Kibana 还会显示上次你查看的索引模式。要看到创建模式的表单,需要从索引模式列表里点击Add按钮。

    1.如果你索引有时间戳字段打算用来做基于事件的对比,勾选Indexcontains time-based events然后选择包含了时间戳的索引字段。Kibana 会读取索引映射,列出所有包含了时间戳的字段供选择。

    2.如果新索引是周期性生成,名字里有时间戳的,勾选Useevent times to create index namesIndex pattern interval选项。这会让 Kibana 只搜索哪些包含了你指定的时间范围内的数据的索引。当你使用 Logstash 往 Elasticsearch 写数据的时候非常有用。

    3.点击Create添加索引模式。

    4.要设置新模式作为你查看 Discover 页是的默认模式,点击favorite按钮。

    表 1. 日期格式码

    格式

    描述

    M

    Month - cardinal: 1 2 3 … 12

    Mo

    Month - ordinal: 1st 2nd 3rd … 12th

    MM

    Month - two digit: 01 02 03 … 12

    MMM

    Month - abbreviation: Jan Feb Mar … Dec

    MMMM

    Month - full: January February March … December

    Q

    Quarter: 1 2 3 4

    D

    Day of Month - cardinal: 1 2 3 … 31

    Do

    Day of Month - ordinal: 1st 2nd 3rd … 31st

    DD

    Day of Month - two digit: 01 02 03 … 31

    DDD

    Day of Year - cardinal: 1 2 3 … 365

    DDDo

    Day of Year - ordinal: 1st 2nd 3rd … 365th

    DDDD

    Day of Year - three digit: 001 002 … 364 365

    d

    Day of Week - cardinal: 0 1 3 … 6

    do

    Day of Week - ordinal: 0th 1st 2nd … 6th

    dd

    Day of Week - 2-letter abbreviation: Su Mo Tu … Sa

    ddd

    Day of Week - 3-letter abbreviation: Sun Mon Tue … Sat

    dddd

    Day of Week - full: Sunday Monday Tuesday … Saturday

    e

    Day of Week (locale): 0 1 2 … 6

    E

    Day of Week (ISO): 1 2 3 … 7

    w

    Week of Year - cardinal (locale): 1 2 3 … 53

    wo

    Week of Year - ordinal (locale): 1st 2nd 3rd … 53rd

    ww

    Week of Year - 2-digit (locale): 01 02 03 … 53

    W

    Week of Year - cardinal (ISO): 1 2 3 … 53

    Wo

    Week of Year - ordinal (ISO): 1st 2nd 3rd … 53rd

    WW

    Week of Year - two-digit (ISO): 01 02 03 … 53

    YY

    Year - two digit: 70 71 72 … 30

    YYYY

    Year - four digit: 1970 1971 1972 … 2030

    gg

    Week Year - two digit (locale): 70 71 72 … 30

    gggg

    Week Year - four digit (locale): 1970 1971 1972 … 2030

    GG

    Week Year - two digit (ISO): 70 71 72 … 30

    GGGG

    Week Year - four digit (ISO): 1970 1971 1972 … 2030

    A

    AM/PM: AM PM

    a

    am/pm: am pm

    H

    Hour: 0 1 2 … 23

    HH

    Hour - two digit: 00 01 02 … 23

    h

    Hour - 12-hour clock: 1 2 3 … 12

    hh

    Hour - 12-hour clock, 2 digit: 01 02 03 … 12

    m

    Minute: 0 1 2 … 59

    mm

    Minute - two-digit: 00 01 02 … 59

    s

    Second: 0 1 2 … 59

    ss

    Second - two-digit: 00 01 02 … 59

    S

    Fractional Second - 10ths: 0 1 2 … 9

    SS

    Fractional Second - 100ths: 0 1 … 98 99

    SSS

    Fractional Seconds - 1000ths: 0 1 … 998 999

    Z

    Timezone - zero UTC offset (hh:mm format): -07:00 -06:00 -05:00 … +07:00

    ZZ

    Timezone - zero UTC offset (hhmm format): -0700 -0600 -0500 … +0700

    X

    Unix Timestamp: 1360013296

    x

    Unix Millisecond Timestamp: 1360013296123

    设置默认索引模式

    默认索引模式会在你查看Discover标签的时候自动加载。Kibana会在Settings > Indices标签页的索引模式列表里,给默认模式左边显示一个星号。你创建的第一个模式会自动被设置为默认模式。

    要设置一个另外的模式为默认索引模式:

    1.进入Settings> Indices标签页。

    2.在索引模式列表里选择你打算设置为默认值的模式。

    3.点击模式的Favorite标签。

    你也可以在Advanced >Settings里设置默认索引模式。

    重加载索引的字段列表

    当你添加了一个索引映射,Kibana 自动扫描匹配模式的索引以显示索引字段。你可以重加载索引字段列表,以显示新添加的字段。

    重加载索引字段列表,也会重设 Kibana 的常用字段计数器。这个计数器是跟踪你在 Kibana 里常用字段,然后来排序字段列表的。

    要重加载索引的字段列表:

    1.进入Settings> Indices标签页。

    2.在索引模式列表里选择一个索引模式。

    3.点击模式的Reload按钮。

    删除一个索引模式

    要删除一个索引模式:

    1.进入Settings> Indices标签页。

    2.在索引模式列表里选择你打算删除的模式。

    3.点击模式的Delete按钮。

    4.确认你是想要删除这个索引模式。

    创建一个脚本化字段

    脚本化字段从你的 Elasticsearch 索引数据中即时计算得来。在Discover标签页,脚本化字段数据会作为文档数据的一部分显示,而且你还可以在可视化里使用脚本化字段。(脚本化字段的值是在请求的时候计算的,所以它们没有被索引,不能搜索到)

    即时计算脚本化字段非常消耗资源,会直接影响到Kibana 的性能。而且记住,Elasticsearch里没有内置对脚本化字段的验证功能。如果你的脚本有 bug,你会在查看动态生成的数据时看到 exception。

    脚本化字段使用 Lucene 表达式语法。更多细节,请阅读LuceneExpressions Scripts

    你可以在表达式里引用任意单个数值类型字段,比如:

    doc['field_name'].value

    要创建一个脚本化字段:

    1.进入Settings> Indices

    2.选择你打算添加脚本化字段的索引模式。

    3.进入模式的ScriptedFields标签。

    4.点击AddScripted Field

    5.输入脚本化字段的名字。

    6.输入用来即时计算数据的表达式。

    7.点击SaveScripted Field.

    更新一个脚本化字段

    要更新一个脚本化字段:

    1.进入Settings> Indices

    2.点击你要更新的脚本化字段的Edit按钮。

    3.完成变更后点击SaveScripted Field升级。

    注意 Elasticsearch 里没有内置对脚本化字段的验证功能。如果你的脚本有 bug,你会在查看动态生成的数据时看到 exception。

    删除一个脚本化字段

    要删除一个脚本化字段:

    1.进入Settings> Indices

    2.点击你要删除的脚本化字段的Delete按钮。

    3.确认你确实想删除它。

    设置高级参数

    高级参数页允许你直接编辑那些控制着 Kibana 应用行为的设置。比如,你可以修改显示日期的格式,修改默认的索引模式,设置十进制数值的显示精度。

    修改高级参数可能带来意想不到的后果。如果你不确定自己在做什么,最好离开这个设置页面。

    要设置高级参数:

    1.进入Settings> Advanced

    2.点击你要修改的选项的Edit按钮。

    3.给这个选项输入一个新的值。

    4.点击Save按钮。

    管理已保存的搜索,可视化和仪表板

    你可以从Settings > Objects查看,编辑,和删除已保存的搜索,可视化和仪表板。

    查看一个已保存的对象会显示在Discover,VisualizeDashboard页里已选择的项目。要查看一个已保存对象:

    1.进入Settings> Objects

    2.选择你想查看的对象。

    3.点击View按钮。

    编辑一个已保存对象让你可以直接修改对象定义。你可以修改对象的名字,添加一段说明,以及修改定义这个对象的属性的 JSON。

    如果你尝试访问一个对象,而它关联的索引已经被删除了,Kibana 会显示这个对象的编辑(Edit Object)页。你可以:

    1.重建索引这样就可以继续用这个对象。

    2.删除对象,然后用另一个索引重建对象。

    3.在对象的kibanaSavedObjectMeta.searchSourceJSON里修改引用的索引名,指向一个还存在的索引模式。这个在你的索引被重命名了的情况下非常有用。

    对象属性没有验证机制。提交一个无效的变更会导致对象不可用。通常来说,你还是应该用 Discover, Visualize 或 Dashboard 页面来创建新对象而不是直接编辑已存在的对象。

    要编辑一个已保存的对象:

    1.进入Settings> Objects

    2.选择你想编辑的对象。

    3.点击Edit按钮。

    4.修改对象定义。

    5.点击SaveObject按钮。

    要删除一个已保存的对象:

    1.进入Settings> Objects

    2.选择你想删除的对象。

    3.点击Delete按钮。

    4.确认你确实想删除这个对象。

    设置 kibana 服务器属性

    Kibana 服务器在启动的时候会从kibana.yml文件读取属性设置。默认设置是运行在localhost:5601。要变更主机或端口,或者连接远端主机上的 Elasticsearch,你都需要更新你的kibana.yml文件。你还可以开启 SSL 或者设置其他一系列选项:

    表 2. Kibana 服务器属性

    属性

    描述

    port

    Kibana 服务器运行的端口。默认:port: 5601

    host

    Kibana 服务器监听的地址。默认:host: "0.0.0.0"

    elasticsearch_url

    你想请求的索引存在哪个 Elasticsearch 实例上。默认:elasticsearch_url: "http://localhost:9200"

    elasticsearch_preserve_host

    默认的,浏览器请求中的主机名即作为 Kibana 发送给 Elasticsearch 时请求的主机名。如果你设置这个参数为false, Kibana 会改用elasticsearch_url里的主机名。你应该不用担心这个设置 —— 直接用默认即可。默认:elasticsearch_preserve_host: true

    kibana_index

    保存搜索,可视化,仪表板信息的索引的名字。默认:kibana_index: .kibana

    default_app_id

    进入 Kibana 是默认显示的页面。可以为discover,visualize,dashboardsettings。默认:default_app_id: "discover"

    request_timeout

    等待 Kibana 后端或 Elasticsearch 的响应的超时时间,单位毫秒。默认:request_timeout: 500000

    shard_timeout

    Elasticsearch 等待分片响应的超时时间。设置为 0 表示关闭超时控制。默认:shard_timeout: 0

    verify_ssl

    定义是否验证 Elasticsearch SSL 证书。设置为 false 关闭 SSL 认证。默认:verify_ssl: true

    ca

    你的 Elasticsearch 实例的 CA 证书的路径。如果你是自己签的证书,必须指定这个参数,证书才能被认证。否则,你需要关闭verify_ssl。默认:none。

    ssl_key_file

    Kibana 服务器的密钥文件路径。设置用来加密浏览器和 Kibana 之间的通信。默认:none。

    ssl_cert_file

    Kibana 服务器的证书文件路径。设置用来加密浏览器和 Kibana 之间的通信。默认:none。

    pid_file

    你想用来存进程 ID 文件的位置。如果没有指定,PID 文件存在/var/run/kibana.pid。默认:none。

    文档我在下面上传了,转载请标明出处

  • 相关阅读:
    ue5蓝图请求接口
    CUDA编程基础:如何实现c++事实绘制曲线,采用的绘图工具箱是:gnuplot
    【openGauss】在windows中使用容器化的mogeaver
    Python学习 - 类与对象
    Qt窗体边框阴影的绘制
    MySQL TIMESTAMPDIFF函数的使用场景
    【PowerQuery】导入与加载XML
    STM32踩坑:LAN8720未接网线,上电后再接网线,网络模块无法正常使用
    请求模块(requests)
    你还准备参加软件测试培训吗?
  • 原文地址:https://blog.csdn.net/m0_54883970/article/details/126662690