一、模拟日志資料生成腳本 json_log.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import datetime
import json
import random
import time
import requests
headers = {
'Content-Type': 'application/json',
}
info_list = {'User error': 'ERROR', 'Password ERROR': 'ERROR', 'Login success': 'INFO',
'Update success': 'INFO', 'Deletion success': 'INFO', 'Password not null': 'WARN',
'Username not null': 'WARN'}
user_list = {1: 'zhangsan', 2: 'lisi', 3: 'wangwu', 4: 'zhaoliu', 5: 'qianqi'}
app_list = ['bulter', 'master-data', 'permission-manager']
path_list = ['/bulter', '/data', '/permission']
method_list = ['select', 'update', 'create', 'delete']
m = 0
# 模拟發送請求,生成日志資料
for i in range(1, 1000):
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
time_log = random.randrange(10, 35)
# 模拟同一時間生成多條日志資訊
for j in range(1, time_log):
msg = random.sample(info_list.keys(), 1)[0]
log_lever = info_list[msg]
user_id = random.sample(user_list.keys(), 1)[0]
user_name = user_list[user_id]
app_name = random.sample(app_list, 1)[0]
path = random.sample(path_list, 1)[0]
method = random.sample(method_list, 1)[0]
data = {'env': 'test', 'timestamp': now, 'logLevel': log_lever, 'source': 'request', 'type': 'metrics',
'message': msg, 'app': app_name, 'path': path, 'method': method, 'userId': user_id,
'userName': user_name, 'duration': random.randrange(300, 550)}
# 使用zsx-2.local會報socket.gaierror: [Errno 11001] getaddrinfo failed異常
# response = requests.post('http://zsx-2.local:9601/', headers=headers, data=json.dumps(data))
response = requests.post('http://127.0.0.1:9601/', headers=headers, data=json.dumps(data))
m += 1
print(m)
time.sleep(random.randrange(1, 5))
二、kibana配置
1. 建立圖表
2. 選擇線形圖
3. 選擇資料源
4. 添加X-axis
5. 配置X-axis
6. 配置後效果圖
7. 添加Split series配置
8. 配置後效果圖
9. 配置Split chart
10. 配置後效果圖
11. 儲存圖表