我试图将点写入influxDB TSDB,但在写入过程中出现错误:
File "/home/lab/prometheus-clients-env/lib/python3.5/site-packages/influxdb/client.py", line 271, in request
raise InfluxDBClientError(response.content, response.status_code)
influxdb.exceptions.InfluxDBClientError: 400: {"error":"partial write: unable to parse 'Cisco-IOS-XR-cdp-oper-cdp,address-type=ipv4,capabilities=R,device-id=ASR9006-LER1,duplex=cdp-dplx-full,interface-name=TenGigE0/0/0/0,ipv4-address=100.8.44.1,node-name=0/0/CPU0,platform=cisco\\ ASR9K\\ Series,port-id=TenGigE0/1/0/7,receiving-interface-name=TenGigE0/0/0/0,system-name=ASR9006-LER1,version=Cisco\\ IOS\\ XR\\ Software\\,\\ Version\\ 6.2.3[Default]': missing fields\nunable to parse 'Cisco-IOS-XR-cdp-oper-cdp,address-type=ipv4,capabilities=R,device-id=ASR9006-LER1,duplex=cdp-dplx-full,interface-name=TenGigE0/0/0/2,ipv4-address=100.8.44.1,node-name=0/0/CPU0,platform=cisco\\ ASR9K\\ Series,port-id=TenGigE0/1/0/8,receiving-interface-name=TenGigE0/0/0/2,system-name=ASR9006-LER1,version=Cisco\\ IOS\\ XR\\ Software\\,\\ Version\\ 6.2.3[Default]': missing fields\nunable to parse 'Cisco-IOS-XR-cdp-oper-cdp,address-type=ipv4,capabilities=R,device-id=ASR9006-LER1,duplex=cdp-dplx-full,interface-name=TenGigE0/0/0/3,ipv4-address=100.8.44.1,node-name=0/0/CPU0,platform=cisco\\ ASR9K\\ Series,port-id=TenGigE0/1/0/9,receiving-interface-name=TenGigE0/0/0/3,system-name=ASR9006-LER1,version=Cisco\\ IOS\\ XR\\ Software\\,\\ Version\\ 6.2.3[Default]': missing fields\nunable to parse 'Cisco-IOS-XR-cdp-oper-cdp,address-type=ipv4,capabilities=R,device-id=ASR9006-LER1,duplex=cdp-dplx-full,interface-name=TenGigE0/0/0/4,ipv4-address=100.8.44.1,node-name=0/0/CPU0,platform=cisco\\ ASR9K\\ Series,port-id=TenGigE0/1/0/11,receiving-interface-name=TenGigE0/0/0/4,system-name=ASR9006-LER1,version=Cisco\\ IOS\\ XR\\ Software\\,\\ Version\\ 6.2.3[Default]': missing fields\nunable to parse 'Cisco-IOS-XR-cdp-oper-cdp,address-type=ipv4,capabilities=R,device-id=ASR9006-LER1,duplex=cdp-dplx-full,interface-name=TenGigE0/0/0/5,ipv4-address=100.8.44.1,node-name=0/0/CPU0,platform=cisco\\ ASR9K\\ Series,port-id=TenGigE0/1/0/18,receiving-interface-name=TenGigE0/0/0/5,system-name=ASR9006-LER1,version=Cisco\\ IOS\\ XR\\ Software\\,\\ Version\\ 6.2.3[Default]': missing fields\nunable to parse 'Cisco-IOS-XR-cdp-oper-cdp,address-type=ipv4,capabilities=R,device-id=ASR9006-LER1,duplex=cdp-dplx-full,interface-name=TenGigE0/0/0/6,ipv4-address=100.8.44.1,node-name=0/0/CPU0,platform=cisco\\ ASR9K\\ Series,port-id=TenGigE0/1/0/10,receiving-interface-name=TenGigE0/0/0/6,system-name=ASR9006-LER1,version=Cisco\\ IOS\\ XR\\ Software\\,\\ Version\\ 6.2.3[Default]': missing fields\nunable to parse 'Cisco-IOS-XR-cdp-oper-cdp,address-type=ipv4,capabilities=R,device-id=ASR9006-LER1,duplex=cdp-dplx-full,interface-name=TenGigE0/0/0/7,ipv4-address=100.8.44.1,node-name=0/0/CPU0,platform=cisco\\ ASR9K\\ Series,port-id=TenGigE0/1/0/19,receiving-interface-name=TenGigE0/0/0/7,system-name=ASR9006-LER1,version=Cisco\\ IOS\\ XR\\ Software\\,\\ Version\\ 6.2.3[Default]': missing fields\nunable to parse 'Cisco-IOS-XR-cdp-oper-cdp,address-type=ipv4,capabilities=R,device-id=ASR9006-LER1,duplex=cdp-dplx-full,interface-name=TenGigE0/0/0/7,ipv4-address=100.8.44.1,node-name=0/0/CPU0,platform=cisco\\ ASR9K\\ Series,port-id=TenGigE0/1/0/7,receiving-interface-name=TenGigE0/0/0/0,system-name=ASR9006-LER1,version=Cisco\\ IOS\\ XR\\ Software\\,\\ Version\\ 6.2.3[Default]': missing fields dropped=0"}
我有以下JSON观点:
^{pr2}$我有以下代码:
client = InfluxDBClient('server', 8086)
tags = {}
fields = {}
points = []
for key in raw_metric.keys():
if isinstance(raw_metric[key], int):
fields[key] = raw_metric[key]
else:
tags[key] = raw_metric[key]
post_data = {"measurement" : 'Cisco-IOS-XR-cdp-oper-cdp',
"fields" : fields,
"tags" : tags
}
points.append(post_data)
if not client.write_points(points):
exit(1)
原始度量如下所示:
{'interface-name': 'TenGigE0/0/0/0', 'node-name': '0/0/CPU0', 'version': 'Cisco IOS XR Software, Version 6.2.3[Default]\nCopyright (c) 2017 by Cisco Systems, Inc.', 'port-id': 'TenGigE0/1/0/7', 'address-type': 'ipv4', 'header-version': 2, 'platform': 'cisco ASR9K Series', 'hold-time': 137, 'duplex': 'cdp-dplx-full', 'ipv4-address': '100.8.44.1', 'system-name': 'ASR9006-LER1', 'native-vlan': 0, 'receiving-interface-name': 'TenGigE0/0/0/0', 'device-id': 'ASR9006-LER1', 'capabilities': 'R'}
字段如下所示:
{'hold-time': 137, 'header-version': 2, 'native-vlan': 0}
标记如下所示:
{'interface-name': 'TenGigE0/0/0/0', 'node-name': '0/0/CPU0', 'version': 'Cisco IOS XR Software, Version 6.2.3[Default]\nCopyright (c) 2017 by Cisco Systems, Inc.', 'address-type': 'ipv4', 'receiving-interface-name': 'TenGigE0/0/0/0', 'platform': 'cisco ASR9K Series', 'port-id': 'TenGigE0/1/0/7', 'duplex': 'cdp-dplx-full', 'ipv4-address': '100.8.44.1', 'system-name': 'ASR9006-LER1', 'device-id': 'ASR9006-LER1', 'capabilities': 'R'}
你知道我为什么会出现部分写入错误吗?在
像
Cisco IOS XR Software
这样的标记值包含空格。您必须用双引号将它们包装起来,这样influxdb才能正确地插入。在
尝试在JSON中添加双引号,其中标记值包含空格:
^{pr2}$注意:据我所知,JSON标准要求用双引号(不是单引号)来包装字段名/值。在
相关问题 更多 >
编程相关推荐