前言
既然已經搭了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軸
ok, 這就是成品了
點擊保存寫上標題就成功了
要是感覺不夠細緻, 還可以在加一層, 每個路由的狀態碼統計
成品圖
顏色什麼的自己都可以隨便改變, 這是隨機的測試數據, 正常的肯定不能是這種花裏胡哨的曲線