我有一个任务,动态添加面板,如果有任何新的主机添加到集群。我使用模板变量添加或重复面板的基础上变量输出。但现在需要动态面板添加基于休息API或可编程。任何人都可以帮助我得到一些建议或想法动态添加面板?
ajsxfq5m1#
如果您的 Jmeter 板中已经有面板,那么复制其中一个面板的结构,然后在代码中更改值,如“gridPos”、“title”等,以及您想要更改的任何内容。面板的json看起来或多或少类似于Grafana中的json:
{ "datasource": {...}, "fieldConfig": {...}, "gridPos": {...}, "id": 1, "options": {...}, "pluginVersion": "9.4.3", "targets": [...], "title": "Panel Title", "type": "stat" }
为了进行测试,我使用了Python脚本。使用UID方法从API检索您的 Jmeter 板。
import json import requests endpoint = f'{_url}/dashboards/uid/{uid}' dashboard = requests.get(endpoint, headers=_headers, verify=False).json()
现在您可以注意到API返回类型的结构,其中包含两个dict:
在dashboard dict中,您可以找到一个列表元素“panel”,它包含所有作为dict引用的panel信息。a screenshot in the debugger现在您可以将新面板添加到dict列表中(“new_panel”变量是您要添加的json格式面板):
dashboard['dashboard']['panels'].append(json.loads(new_panel))
从现在开始,您所要做的就是用API更新 Jmeter 板,为此,您必须创建预期的json结构:
{ "dashboard": <the json model of your dashboard>, "message": <a message for the commit version>, "overwrite": True or False }
在Python中:
json_model = {'dashboard': dashboard['dashboard'], 'message': '', 'overwrite': False} requests.post(endpoint, data=json.dumps(json_model), headers=headers, verify=False).json()
如果您的 Jmeter 板在开始时没有任何面板,您必须首先在 Jmeter 板元素中创建面板列表:
dashboard['dashboard']['panels'] = json.loads(new_panel) json_model = {'dashboard': dashboard['dashboard'], 'message': '', 'overwrite': False} requests.post(endpoint, data=json.dumps(json_model), headers=headers, verify=False).json()
希望这能帮上忙。
1条答案
按热度按时间ajsxfq5m1#
如果您的 Jmeter 板中已经有面板,那么复制其中一个面板的结构,然后在代码中更改值,如“gridPos”、“title”等,以及您想要更改的任何内容。
面板的json看起来或多或少类似于Grafana中的json:
为了进行测试,我使用了Python脚本。
使用UID方法从API检索您的 Jmeter 板。
现在您可以注意到API返回类型的结构,其中包含两个dict:
在dashboard dict中,您可以找到一个列表元素“panel”,它包含所有作为dict引用的panel信息。
a screenshot in the debugger
现在您可以将新面板添加到dict列表中(“new_panel”变量是您要添加的json格式面板):
从现在开始,您所要做的就是用API更新 Jmeter 板,为此,您必须创建预期的json结构:
在Python中:
如果您的 Jmeter 板在开始时没有任何面板,您必须首先在 Jmeter 板元素中创建面板列表:
希望这能帮上忙。