我是telegraf和influxdb的新手,目前期待着探索telegraf,但是幸运的是,我在入门时遇到了一些困难,我将尝试在下面解释我的问题:
对象:使用Telegraf输入插件解析JSON文件。
输入: https://wetransfer.com/downloads/0abf7c609d000a7c9300dc20ee0f565120200624164841/ab22bf(使用JSON文件)
输入的json文件是一个重复的结构,该结构从params开始并以其结尾。
您可以在输入文件的主要部分下面找到
:{
"events":[
{
"params":[
{
"name":"element_type",
"value":"Home_Menu"
},
{
"name":"element_id",
"value":""
},
{
"name":"uuid",
"value":"981CD435-E6BC-01E6-4FDC-B57B5CFA9824"
},
{
"name":"section_label",
"value":"HOME"
},
{
"name":"element_label",
"value":""
}
],
"libVersion":"4.2.5",
"context":{
"locale":"ro-RO",
"country":"RO",
"application_name":"spresso",
"application_version":"2.1.8",
"model":"iPhone11,8",
"os_version":"13.5",
"platform":"iOS",
"application_lang_market":"ro_RO",
"platform_width":"320",
"device_type":"mobile",
"platform_height":"480"
},
"date":"2020-05-31T09:38:55.087+03:00",
"ssid":"spresso",
"type":"MOBILEPAGELOAD",
"user":{
"anonymousid":"6BC6DC89-EEDA-4EB6-B6AD-A213A65941AF",
"userid":"2398839"
},
"reception_date":"2020-06-01T03:02:49.613Z",
"event_version":"v1"
}
问题:按照文档,我尝试定义一个简单的telegraf.conf文件,如下所示:
[[outputs.influxdb_v2]]
…
[[inputs.file]]
files = ["/home/mouhcine/json/file.json"]
json_name_key = "My_json"
#... Listing all the string fields in the json.(I put only these for simplicity reason).
json_string_fields = ["ssid","type","userid","name","value","country","model"]
data_format = "json"
json_query= "events"
基本上在telegraf.conf文件中声明字符串字段即可,但是我无法获取json文件中所有子集的字段,例如(params或context)。 所以最后,我要解析与 ssid,type,libVersion 具有相同层次结构的字段,但不能解析(参数,上下文,用户)内部的字段。 >
输出:Screen2(附件)。
OUTPUT
出于好奇,我尝试测试文档的示例,以验证是否获得了相同的预期结果,并且答案是否定的:/,我没有解析文件子集中的字符串字段
下面的文档示例:
Input :
{
"a": 5,
"b": {
"c": 6,
"my_field": "description"
},
"my_tag_1": "foo",
"name": "my_json"
}
telegraf.conf
[[outputs.influxdb_v2]]
…
[[inputs.file]]
files = ["/home/mouhcine/json/influx.json"]
json_name_key = "name"
tag_keys = ["my_tag_1"]
json_string_fields = ["my_field"]
data_format = "json"
预期输出:my_json,my_tag_1=foo a=5,b_c=6,my_field="description"
我得到的结果:“ my_field”丢失。
输出:屏幕1(附件)。
OUTPUT
顺便说一句,我使用了influxdb cloud 2,对于这个小问题的冗长描述,我深表歉意,请多多帮助:),在此先感谢您。