Collecting custom JSON data sources with the Log Analytics agent for Linux in Azure Monitor

Note

As part of the ongoing transition from Microsoft Operations Management Suite to Azure Monitor, the Operations Management Suite Agent for Windows or Linux will be referred to as the Log Analytics agent for Windows and Log Analytics agent for Linux.

Custom JSON data sources can be collected into Azure Monitor using the Log Analytics agent for Linux. These custom data sources can be simple scripts returning JSON such as curl or one of FluentD's 300+ plugins. This article describes the configuration required for this data collection.

Note

Log Analytics agent for Linux v1.1.0-217+ is required for Custom JSON Data. This collection flow only works with MMA. Consider moving to the AMA agent and using the additional collection features available there

Configuration

Configure input plugin

To collect JSON data in Azure Monitor, add oms.api. to the start of a FluentD tag in an input plugin.

For example, following is a separate configuration file exec-json.conf in /etc/opt/microsoft/omsagent/<workspace id>/conf/omsagent.d/. This uses the FluentD plugin exec to run a curl command every 30 seconds. The output from this command is collected by the JSON output plugin.

<source>
  type exec
  command 'curl localhost/json.output'
  format json
  tag oms.api.httpresponse
  run_interval 30s
</source>

<match oms.api.httpresponse>
  type out_oms_api
  log_level info

  buffer_chunk_limit 5m
  buffer_type file
  buffer_path /var/opt/microsoft/omsagent/<workspace id>/state/out_oms_api_httpresponse*.buffer
  buffer_queue_limit 10
  flush_interval 20s
  retry_limit 10
  retry_wait 30s
</match>

The configuration file added under /etc/opt/microsoft/omsagent/<workspace id>/conf/omsagent.d/ will require to have its ownership changed with the following command.

sudo chown omsagent:omiusers /etc/opt/microsoft/omsagent/conf/omsagent.d/exec-json.conf

Configure output plugin

Add the following output plugin configuration to the main configuration in /etc/opt/microsoft/omsagent/<workspace id>/conf/omsagent.conf or as a separate configuration file placed in /etc/opt/microsoft/omsagent/<workspace id>/conf/omsagent.d/

<match oms.api.**>
  type out_oms_api
  log_level info

  buffer_chunk_limit 5m
  buffer_type file
  buffer_path /var/opt/microsoft/omsagent/<workspace id>/state/out_oms_api*.buffer
  buffer_queue_limit 10
  flush_interval 20s
  retry_limit 10
  retry_wait 30s
</match>

Restart Log Analytics agent for Linux

Restart the Log Analytics agent for Linux service with the following command.

sudo /opt/microsoft/omsagent/bin/service_control restart 

Output

The data will be collected in Azure Monitor with a record type of <FLUENTD_TAG>_CL.

For example, the custom tag tag oms.api.tomcat in Azure Monitor with a record type of tomcat_CL. You could retrieve all records of this type with the following log query.

Type=tomcat_CL

Nested JSON data sources are supported, but are indexed based off of parent field. For example, the following JSON data is returned from a log query as tag_s : "[{ "a":"1", "b":"2" }].

{
    "tag": [{
      "a":"1",
      "b":"2"
    }]
}

Next steps

  • Learn about log queries to analyze the data collected from data sources and solutions.