python机器学习爬虫

8. 数据可视化-kibana

2020-12-19  本文已影响0人  BeautifulSoulpy

过去都是假的,回忆是一条没有归途的路,以往的一切春天都无法复原,即使最狂热最坚贞的爱情,归根结底也不过是一种瞬息即逝的现实,唯有孤独永恒!


Kibana是一个开源的分析和可视化平台,设计用于搜索、查看交互存储在Elasticsearch索引中的数据。
参考https://www.elastic.co/cn/kibana
用Kibana来搜索,查看,并和存储在Elasticsearch索引中的数据进行交互。

你可以轻松地执行高级数据分析,并且以各种图标、表格和地图的形式可视化数据。

Kibana使得理解大量数据变得很容易。它简单的、基于浏览器的界面使你能够快速创建和共享动态仪表板,实时显示Elasticsearch查询的变化。

8-1 向elasticsearch导入示例数据

示例数据 https://www.elastic.co/guide/cn/kibana/current/tutorial-load-dataset.html

1. 导入3类数据
shakespeare_6.0.json

下载第一个示例数据

通过bulk集群来导入数据;
--data-binary 指定数据格式;

# 传入文件 shakespeare_6.0.json
user1@imooc:~/data$ ll -r
总用量 771308
-rwxrw-rw-  1 user1 user1  25104673 8月  22 12:25 shakespeare_6.0.json*

# 导入数据
curl -H 'Content-Type: application/x-ndjson' -XPOST '192.168.0.103:9200/shakespeare/_doc/_bulk?pretty' --data-binary @shakespeare_6.0.json

GET shakespeare/_count
#--------------------------------------
{
  "count" : 111396,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  }
}
accounts.json

不创建索引直接导入,会自动创建索引 bank;

curl -H 'Content-Type: application/x-ndjson' -XPOST '192.168.0.103:9200/bank/account/_bulk?pretty' --data-binary @accounts.json

GET _cat/indices
#------------------------------------
yellow open bank                     y_KuRpn_SJmvl3gXiTk1Ig 1 1   1000 0 381.8kb 381.8kb

GET bank/_count
#-------------------------
{
  "count" : 1000,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  }
}

logs.jsonl

导入随机生成的日志文件
指定映射关系按天创建索引

PUT /logstash-2015.05.20
{
  "mappings": {
    "properties": {
      "geo": {
        "properties": {
          "coordinates": {
            "type": "geo_point"
          }
        }
      
      }
    }
  }
}



PUT /logstash-2015.05.19
{
  "mappings": {
    "properties": {
      "geo": {
        "properties": {
          "coordinates": {
            "type": "geo_point"
          }
        }
      
      }
    }
  }
}


PUT /logstash-2015.05.18
{
  "mappings": {
    "properties": {
      "geo": {
        "properties": {
          "coordinates": {
            "type": "geo_point"
          }
        }
      
      }
    }
  }
}

打开json文件: 将 ,"_type":"log" 替换为空;


curl -H 'Content-Type: application/x-ndjson' -XPOST '192.168.0.103:9200/_bulk?pretty' --data-binary @logs.jsonl


GET _cat/indices
#-------------------------------
yellow open logstash-2015.05.18      9gzuGXSRRlu9Xu_HGcHK0Q 1 1      0 0   5.5mb   5.5mb
yellow open logstash-2015.05.19      2zEmN71RQKuwDxR_yMramw 1 1      0 0   5.6mb   5.6mb
yellow open logstash-2015.05.20      f1dMPvSdT5eX6hcW7ehMgg 1 1      0 0   5.7mb   5.7mb

GET logstash-2015.05.18/_count          # 4631

GET logstash-2015.05.19/_count          # 4624

GET logstash-2015.05.20/_count          # 4750

8-2 kibana的index-pattern

1. 创建index-pattern索引模式

索引模式是kibana用来从elasticsearch取数据使用的

点击“Create index pattern”按钮来添加索引模式。第一个索引模式自动配置为默认的索引默认,以后当你有多个索引模式的时候,你就可以选择将哪一个设为默认。(提示:Management > Index Patterns)

选择timestamp

创建完成后会展示 索引包含的字段有哪些

2. 格式化 数据类型string

可以看到url.keyword 格式已经变成了URL


8-3 kibana的discover

kibana的discover可以用来分析和展示数据

1. 时间选框快速选择查看数据

修改时间为 2015.5.17


变+,再拖拽 选中,


2. 搜索索引 查看数据
2.1 搜索框 关键字 查询

geo.src.keyword :"CN"

2.2 命令行查询
GET logstash*/_search
{
  "query": {
    "match": {
      "geo.src.keyword": "CN"
    }
  }
}
#-------------------------------------------
"hits" : {
    "total" : {
      "value" : 2550,
      "relation" : "eq"
    },

2.3 Lucene语言查看

关闭KQL


{"match":{"geo.src.keyword":"CN"}}
3. 数据的筛选

筛选条件都是并列的

编辑筛选
排除结果

数据取反

点击添加筛选条件

4. 添加字段

可以定制化的显示数据
添加tags字段: 看tags字段数据;

5. 查看周围文档

默认查看上下游 5 条数据;


8-4 elasticsearch聚合分析-Pipeline

Pipeline :管道聚合分析,支持对聚合分析结果再次进行聚合分析,支持链式调用

min_bucket

样例数据

GET employees/_count
#------------------------------------------
{
  "count" : 20,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  }
}


# 按照工作分种类;
GET employees/_search
{
  "size": 0,
  "aggs": {
    "job_term": {
      "terms": {
        "field":"job.keyword",
        "size":10
      }
    }
  }
}

# 按照工作分组,并求工资平均值;
GET employees/_search
{
  "size": 0,
  "aggs": {
    "job_term": {
      "terms": {
        "field":"job.keyword",
        "size":10
      },
      "aggs":{
        "avg_salary":{
          "avg":{
            "field": "salary"
          }
        }
      }
    }
  }
}


# 最低工资
GET employees/_search
{
  "size": 0,
  "aggs": {
    "job_terms": {
      "terms": {
        "field":"job.keyword",
        "size":10
      },
      "aggs":{
        "avg_salary":{
          "avg":{
            "field": "salary"
          }
        }
      }
    },
    "min_salary_by_job":{
      "min_bucket": {
        "buckets_path": 
        "job_terms>avg_salary"
      }
    }
  }
}

根据直方图 求一个平均薪资\累加和

GET employees/_search
{
  "size": 0,
  "aggs": {
    "age": {
      "histogram": {
        "field":"age",
        "interval": 5
      },
      "aggs":{
        "avg_salary":{
          "avg":{
            "field": "salary"
          }
        },
        "sum_avg_salary":{
          "cumulative_sum":{
            "buckets_path": "avg_salary"
          }
        }
      }
    }
  }
}

8-5 kibana的visualize基本图形-折线图

数据:修改 x/y轴;
指标和轴: 图表类型和 模式、线条模式

1. Histogram

注意:要关联到当前的时间里面(18,19,20)来;
2. 子聚合分析
拆分序列

按住=号,可以移动顺序,先进行GEO.src.keywords 分析(只有5个);


拆分图表

以行显示

以字段名显示

折线图
数值越大,点就越大;

条形图

8-6 kibana的visualize基本图形-热力图

X轴:时间; Data Histogram:直方图
Y轴:src


8-7 kibana的visualize基本图形-饼图

添加切片:
展示了 src 和 ip 的信息

8-8 kibana的visualize基本图形-数据图

8-9 kibana的visualize基本图形-仪表盘

最重要的是 选项部分:调整区间范围

8-10 kibana的visualize基本图形-目标图

最重要的是 选项部分:调整区间范围

按照国家 CN/ 来进行展示


8-11 kibana的visualize的timelion

Timelion是Kibana的一个时间序列可视化插件

timelion使用(类)
1. 数据源设定类
2. 可视化效果类
3. 数据运算类
4. 逻辑运算类
2. Timelion 表达式

表达式中没有空行或重新开头

# 查询全部数据
.es(*)
.es(index=logstash*,metric=count)

# 昨天与今天数据的比对
.es(index=logstash*,metric=count,offset=-1d),.es(index=logstash*,metric=count)

.es(index=logstash*,metric=count,offset=-1d).label("昨日"),.es(index=logstash*,metric=count).label("今日")

# 添加标题
.es(index=logstash*,metric=count,offset=-1d).label("昨日"),.es(index=logstash*,metric=count).label("今日").title("访问统计")

# 填充 fill 
.es(index=logstash*,metric=count,offset=-1d).label("昨日").lines(width=0.5,fill=1),.es(index=logstash*,metric=count).label("今日").title("访问统计")

# 加颜色
.es(index=logstash*,metric=count,offset=-1d).label("昨日").lines(width=0.5,fill=1).color(red),.es(index=logstash*,metric=count).label("今日").title("访问统计").color(#1E90FF)

# 分组
.es(index=logstash*,metric=count,split=geo.src.keyword:3,)

# 指定中国CN,按机器分组并指定q关键字
.es(index=logstash*,q="geo.src.keyword:CN",metric=count,split=machine.os.keyword:3)

.es(index=logstash*,metric=sum:bytes,offset=-1d).label("昨日"),.es(index=logstash*,metric=sum:bytes).label("今日")

# 增加告警线
.es(index=logstash*,metric=sum:bytes,offset=-1d).label("昨日"),.es(index=logstash*,metric=sum:bytes).label("今日"),.static(1000000).label("告警线").color(red)

# 指定流量 范围 统计计数
(.es(index=logstash*).label("请求计数"),.es(index=logstash*,metric=sum:bytes).label("流量计数")).range(0,10000)

# 访问量和流量对比图
.es(index=logstash*).label("请求计数"),.es(index=logstash*,metric=sum:bytes).label("流量计数").yaxis(2)
昨天与今天的数据进行比对 填充图 加颜色 分组 按机器分组 告警线 指定流量 范围 统计计数 访问量和流量对比图
上一篇 下一篇

猜你喜欢

热点阅读