我想用python腳本自動化在Kibana上創建可視化和儀表板。我能夠通過終端上的cURL命令完成此操作,將數據輸入'http://localhost:9200/.kibana/visualization/visualization_name'。如何使用REST請求使用python腳本加載Kibana可視化
但是,當我將這段代碼添加到我的python腳本時遇到了問題。
首先我想硬編碼我捲曲命令文檔字符串並將它傳遞給終端:
import subprocess
command = '''curl -XPUT http://localhost:9200/.kibana/visualization/test_visual -d'{"title":"test_visual","visState":"{\"aggs\":[{\"id\":\"1\",\"params\":{},\"schema\":\"metric\",\"type\":\"count\"},{\"id\":\"2\",\"params\":{\"field\":\"SYSTEM\",\"order\":\"desc\",\"orderBy\":\"1\",\"size\":100},\"schema\":\"segment\",\"type\":\"terms\"}],\"listeners\":{},\"params\":{\"addLegend\":true,\"addTooltip\":true,\"defaultYExtents\":false,\"shareYAxis\":true},\"type\":\"line\"}","description":"","version":1,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"index\":\"id_1\",\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"*\"}},\"filter\":[]}"}}' '''
output = subprocess.check_output(command, shell=True)
print(output)
這回:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 731 100 313 100 418 4012 5358 --:--:-- --:--:-- --:--:-- 6741
b'{"error":{"root_cause":[{"type":"mapper_parsing_exception","reason":"failed to parse"}],"type":"mapper_parsing_exception","reason":"failed to parse","caused_by":{"type":"not_x_content_exception","reason":"Compressor detection can only be called on some xcontent bytes or compressed xcontent bytes"}},"status":400}'
我也使用請求庫嘗試:
import requests
url = 'http://localhost:9200/.kibana/visualization/test_visual'
data = '''{"title":"test_visual","visState":"{\"aggs\":[{\"id\":\"1\",\"params\":{},\"schema\":\"metric\",\"type\":\"count\"},{\"id\":\"2\",\"params\":{\"field\":\"SYSTEM\",\"order\":\"desc\",\"orderBy\":\"1\",\"size\":100},\"schema\":\"segment\",\"type\":\"terms\"}],\"listeners\":{},\"params\":{\"addLegend\":true,\"addTooltip\":true,\"defaultYExtents\":false,\"shareYAxis\":true},\"type\":\"line\"}","description":"","version":1,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"index\":\"id_1\",\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"*\"}},\"filter\":[]}"}}'''
response = requests.put(url, data=data)
print(response)
,它也返回400
我知道捲曲是正確的,因爲我能夠在 shell腳本 /終端運行此罰款,並能夠從Kibana儀表盤進行確認。請幫我理解我的錯誤。謝謝。
我使用ES 2.2.0和4.4.0 Kibana
編輯
我意識到,我不能在shell中運行它,要麼,如果我在一個變量保存命令...