使用telegraf输入插件解析JSON文件:意外输出

时间:2020-06-25 08:16:34

标签: influxdb telegraf

我是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,对于这个小问题的冗长描述,我深表歉意,请多多帮助:),在此先感谢您。

0 个答案:

没有答案
相关问题