kibana日志成图

276 阅读1分钟

前言

既然已经搭了es和kibana, 那肯定要做一下kibana的图表, 看日志超级方便的, 首先写个脚本生成一点测试数据

生成测试数据

"""
@author xiaofei
@date   2019-05-20
@desc   百度云es添加数据
"""

from elasticsearch import Elasticsearch
from elasticsearch import helpers
import random

import json

host = 'IP:9200'
es_conn = Elasticsearch(hosts=host, maxsize=25)

# 操作索引  请不要在意我的命名...
index_name = "pics_a"
type_name = "pic"
online_alias = "pics"

# mapping
doc_mapping = {
    "properties": {
        "code": {"type": "long"},
        "timeout": {"type": "long"},
        "timeline": {"type": "float"},
        "url": {"type": "keyword"},
        "ctime": {"type": "date"}
    }
}

# # 删除索引
# res = es_conn.indices.delete(index=index_name)
# print(res)
# # 创建库
# es_conn.indices.create(index=index_name, ignore=400)
# es_conn.indices.put_mapping(index=index_name, doc_type=type_name, body=doc_mapping)
# es_conn.indices.put_alias(index_name, online_alias)

code = [200, 404, 302, 500]
timeline = [1.1, 0.4, 0.1, 0.02, 0.29, 3, 0.5, 1.2]
url = ["Add", "list", "update", "del"]
date = ["2018-01-01", "2018-01-02", "2018-01-03", "2018-01-04"]

data = []
for x in range(1000):
    dat = {
        "code": random.choice(code),
        "timeline": random.choice(timeline),
        "url": random.choice(url),
        "ctime": random.choice(date)
    }
    dat["timeout"] = 1 if dat['timeline'] > 1 else 0
    action = {"_index": index_name, "_type": type_name, "_source": dat}
    data.append(action)
helpers.bulk(es_conn, data)
print("插入成功")

开始图表

应该都能看出来我的测试数据是什么, 就是api请求统计, 首先来画一个每天请求状态码分布图
首先添加一个图表

点击添加
选择折线图
折线图
选择需要画图的索引
选择对应索引
x轴用ctime添加日期维度, 点击红圈生成图像
添加x轴以天为维护, 点击红圈成图
再次添加x轴聚合统计x轴
再次添加x轴, 选择code
ok, 这就是成品了
成品图
点击保存写上标题就成功了
完事
要是感觉不够细致, 还可以在加一层, 每个路由的状态码统计
在这里插入图片描述
成品图
在这里插入图片描述
颜色什么的自己都可以随便改变, 这是随机的测试数据, 正常的肯定不能是这种花里胡哨的曲线

ok, 基础玩法就这样了, 更多玩法自己挖掘