RONIN AUDIT LOGGING

All versions of the RONIN platform (RONIN Core and RONIN Isolate) log data that can be used for compliance and security monitoring, as well as performance monitoring and optimization. RONIN logging is detailed and is designed to be supplemented by AWS services, or third party log processing tools (e.g. Splunk, Sumo Logic), to log and monitor events. This configurability is necessary as customer needs vary significantly, and one size does not fit all.

There are three sources of RONIN logging data:

  • The RONIN User Interface (UI). All UI actions are logged.
  • AWS CloudTrail. AWS CloudTrail is not configured by default except for RONIN Isolate builds. It logs actions taken in the AWS Management Console, AWS Command Line Interface, and AWS SDKs and APIs.
  • Amazon CloudWatch. Amazon CloudWatch collects monitoring and operational data. Amazon CloudWatch is configured by default to log performance data for machines and clusters created within RONIN. If desired, this data can be used by system administrators to identify machines that are used inefficiently and make recommendations on how to save money.

Depending on your security and compliance needs, you can;

  • Augment the default logging by configuring AWS CloudTrail and Amazon CloudWatch.
  • Configure Amazon CloudWatch to detect anomalous behaviour in your environments, set alarms, take automated actions, troubleshoot issues, and discover insights to keep your applications.
  • Configure third party log analysis tools, or write custom scripts, to detect anomalous behaviour or take automated actions.

We describe default logging from the above three sources in the following sections.


RONIN UI LOGS

The RONIN UI logs every action taken by a user and important details about the action including:

  • Name of the action
  • User ID (cognito ID)
  • Session Log (JSON)
  • Timestamp when the action occurred
  • Any additional data that may be useful e.g. instance Ids
  • IP address where the request came from
  • Server Log (JSON)
  • RONIN project ID
  • User email address
  • Name of the resource (e.g. machine DNS, bucket name, volume name etc)
  • Type of resource (machine, cluster, volume, project, bucket etc)

The specific RONIN actions that are logged, Session Log and Server Log are described in more detail below. An example of a complete RONIN UI log entry for the CREATE_MACHINE operation is also attached as an example.

RONIN UI LOGGED ACTIONS

RONIN logs the actions provided in the table below, and where specified, additional information for the action.

TYPE ACTION ADDITIONAL INFO
AUTHENTICATION LOGGED_OUT
ACCESS_LOGIN_SCREEN
USER_LOGGED_IN_SUCCESS
USER_LOGGED_IN_SUCCESS_OAUTH
USER_FAILED_LOGIN_OAUTH
COGNITO_ACCESS_TOKEN_NOT_FOUND
COGNITO_REFRESH_TOKEN_NOT_FOUND
COGNITO_TOKEN_EXPIRED
CLUSTER CLUSTER_STARTED $instance [instanceID from the cluster master node]
CLUSTER_STOPPED $instance [instanceID from the cluster master node]
CREATE_CLUSTER $tagsArr [All the ec2 tags for this resource]
DELETE_CLUSTER $stackName [Full name of the cluster stack]
MACHINE CREATE_MACHINE Instance dump of what is returned from successful webservice call
MACHINE_STARTED $instanceId
MACHINE_STOPPED $instanceId
TERMINATE_MACHINE $result [Array of status, result dump of webservice action]
NEW_MACHINE_KEY $keyName
DELETE_MACHINE_KEY $keyName
PASSWORD_RESET $instanceId
SMART_SCHEDULE_ON $instanceId
SMART_SCHEDULE_OFF $instanceId
VOLUME CREATE_VOLUME $log [$name, $size, $storageType, $snapshot]
DELETE_VOLUME $volumeId
ATTACH_VOLUME $tagsArr [All the ec2 tags for this resource]
DETACH_VOLUME $log [$instance, $volume, $device]
RESIZE_VOLUME $volumeId
UPGRADE_VOLUME $volumeId
BACKUP BACKUP_CREATED $snapshotId
BACKUP_DELETED $snapshotId
PACKAGE PACKAGE_CREATED $result [Array of status, result dump of webservice action]
PACKAGE_DEREGISTERED $amiId
BUCKET CREATE_BUCKET $bucketName
DELETE_BUCKET $bucketName
MIGRATE_BUCKET $bucketName
CREATE_BUCKET_KEY_ADMIN (ADMIN Read/Write) $accessKey
CREATE_BUCKET_KEY_READ (READ Read only) $accessKey
DELETE_BUCKET_KEY $keyId
BUCKET_ARCHIVING_ON $array [Bucket archiving options]
BUCKET_ARCHIVING_OFF $bucketName
BUCKET_VERSIONING_ON $bucketName
BUCKET_VERSIONING_OFF $bucketName
BUCKET_VERSION_DELETION_UF $bucketName
MACHINE_PERMISSION_CHANGE (Isolate only) $assocArray [Bucket name, machine array of all instanceId's]
PROJECT PROJECT_CREATED RPID
USER
NAME
DESCRIPTION
SUMMARY
TAGS
STARTDATE
ENDDATE
BUDGET
AUTOPAUSE
INVOICEEMAIL
BILLINGCODE
PURCHASEORDER
$array [All admins, users and viewers for the project, what action was triggered for that user (add, remove)]
PROJECT_UPDATED Same as PROJECT_CREATED
PROJECT_PAUSED $userId of person who paused the project
PROJECT_RESUMED $userId of person who resumed the project
PROJECT_CLOSED $rpid [Ronin Project ID]
PERMISSION_CHANGE $array [All admins, users and viewers for the project, what action was triggered for that user (add, remove)]
AVATAR_UPLOADED
PACKAGE_UPLOADED
RONIN PROJECT_UPLOADED A picture has been uploaded to associate to resource
BUCKET_SYNC_TRIGGERED (Isolate only) RONIN asset bucket sync performed (Isolate only)

SESSION LOG

Your session has details of everything related to your RONIN Login.

Below is an example of the JSON log related to a session, here using Cognito.

{
   "csrfp_ronin_token": [
       "<TOKEN>"
   ],
   "CREATED": 1629682992,
   "auth": {
       "ChallengeParameters": [],
       "AuthenticationResult": {
           "AccessToken": "<TOKEN>",
           "ExpiresIn": 3600,
           "TokenType": "Bearer",
           "RefreshToken": "<TOKEN>",
           "IdToken": "<TOKEN>"
       },
       "@metadata": {
           "statusCode": 200,
           "effectiveUri": "https:\/\/cognito-idp.ap-southeast-2.amazonaws.com",
           "headers": {
               "date": "Mon, 23 Aug 2021 01:43:12 GMT",
               "content-type": "application\/x-amz-json-1.1",
               "content-length": "3914",
               "connection": "keep-alive",
               "x-amzn-requestid": "<ID>"
           },
           "transferStats": {
               "http": [
                   []
               ]
           }
       }
   },
   "user": {
       "Username": "user",
       "UserAttributes": [
           {
               "Name": "sub",
               "Value": "<ID>"
           },
           {
               "Name": "email_verified",
               "Value": "true"
           },
           {
               "Name": "phone_number",
               "Value": "+61439123456"
           },
           {
               "Name": "email",
               "Value": "user@ronin.cloud"
           }
       ],
       "UserCreateDate": {
           "date": "2019-05-16 05:57:54.000000",
           "timezone_type": 1,
           "timezone": "+00:00"
       },
       "UserLastModifiedDate": {
           "date": "2021-05-11 01:14:03.000000",
           "timezone_type": 1,
           "timezone": "+00:00"
       },
       "Enabled": true,
       "UserStatus": "CONFIRMED",
       "@metadata": {
           "statusCode": 200,
           "effectiveUri": "https:\/\/cognito-idp.ap-southeast-2.amazonaws.com",
           "headers": {
               "date": "Mon, 23 Aug 2021 01:43:12 GMT",
               "content-type": "application\/x-amz-json-1.1",
               "content-length": "348",
               "connection": "keep-alive",
               "x-amzn-requestid": "<ID>"
           },
           "transferStats": {
               "http": [
                   []
               ]
           }
       },
       "sub": "<ID>",
       "email_verified": "true",
       "phone_number": "+61439123456",
       "email": "user@ronin.cloud",
       "status": "success",
       "groups": [
           "ronin_admin",
           "PROJECT_admin",
           "PROJECT2_user",
           "PROJECT3_view"
       ]
   },
   "status": "success"
}

SERVER LOG

The PHP server log, a basic dump of the PHP $_SERVER variable, contains important variables such as the remote IP address of the entity viewing the current page, and the authenticated remote user.

The components in this array are described in the PHP manual: https://www.php.net/manual/en/reserved.variables.server.php

EXAMPLE RONIN UI AUDIT ENTRY

Below is an entry for the CREATE_MACHINE log event, with the user_data, session_log and server_log fields converted from strings to json for prettyprinting. In addition, certain fields are altered from their real values.

{
  "ts_created": "2022-07-01T14:31:49.822Z",
  "error_code": "ACCESS_LOG",
  "error_message": "CREATE_MACHINE",
  "error_data": {
    "instanceId": {
      "AmiLaunchIndex": 0,
      "ImageId": "ami-0e413a9954960d83a",
      "InstanceId": "i-0ef7cfffffffffff",
      "InstanceType": "g4dn.xlarge",
      "KeyName": "RPID:INSPECTOR:batman",
      "LaunchTime": "2022-07-01T14:31:49+00:00",
      "Monitoring": {
        "State": "disabled"
      },
      "Placement": {
        "AvailabilityZone": "ap-southeast-2b",
        "GroupName": "",
        "Tenancy": "default"
      },
      "PrivateDnsName": "ip-10-0-5-202.ap-southeast-2.compute.internal",
      "PrivateIpAddress": "10.0.5.202",
      "ProductCodes": [],
      "PublicDnsName": "",
      "State": {
        "Code": 0,
        "Name": "pending"
      },
      "StateTransitionReason": "",
      "SubnetId": "subnet-99999999",
      "VpcId": "vpc-19999999c",
      "Architecture": "x86_64",
      "BlockDeviceMappings": [],
      "ClientToken": "88893df2-9b29-4132-88f9-xxxxxxxxx",
      "EbsOptimized": false,
      "EnaSupport": true,
      "Hypervisor": "xen",
      "IamInstanceProfile": {
        "Arn": "arn:aws:iam::814453012568:instance-profile/ronin-clone",
        "Id": "AIPAILYKRJXRSLNN5637A"
      },
      "NetworkInterfaces": [
        {
          "Attachment": {
            "AttachTime": "2022-07-01T14:31:49+00:00",
            "AttachmentId": "eni-attach-09caf3c201ee6c473",
            "DeleteOnTermination": true,
            "DeviceIndex": 0,
            "Status": "attaching",
            "NetworkCardIndex": 0
          },
          "Description": "",
          "Groups": [
            {
              "GroupName": "ronin-ssh",
              "GroupId": "sg-60cbbd04"
            },
            {
              "GroupName": "INSPECTOR-SG",
              "GroupId": "sg-0ea6d866d0000000"
            }
          ],
          "Ipv6Addresses": [],
          "MacAddress": "02:83:e0:a5:5e:a2",
          "NetworkInterfaceId": "eni-99999999999",
          "OwnerId": "814453012568",
          "PrivateDnsName": "ip-10-0-5-202.ap-southeast-2.compute.internal",
          "PrivateIpAddress": "10.0.5.202",
          "PrivateIpAddresses": [
            {
              "Primary": true,
              "PrivateDnsName": "ip-10-0-5-202.ap-southeast-2.compute.internal",
              "PrivateIpAddress": "10.0.5.202"
            }
          ],
          "SourceDestCheck": true,
          "Status": "in-use",
          "SubnetId": "subnet-99999999999",
          "VpcId": "vpc-19c8e87c",
          "InterfaceType": "interface"
        }
      ],
      "RootDeviceName": "/dev/sda1",
      "RootDeviceType": "ebs",
      "SecurityGroups": [
        {
          "GroupName": "ronin-ssh",
          "GroupId": "sg-60cbbd04"
        },
        {
          "GroupName": "INSPECTOR-SG",
          "GroupId": "sg-0ea6d866d6a00b993"
        }
      ],
      "SourceDestCheck": true,
      "StateReason": {
        "Code": "pending",
        "Message": "pending"
      },
      "VirtualizationType": "hvm",
      "CpuOptions": {
        "CoreCount": 2,
        "ThreadsPerCore": 2
      },
      "CapacityReservationSpecification": {
        "CapacityReservationPreference": "open"
      },
      "MetadataOptions": {
        "State": "pending",
        "HttpTokens": "optional",
        "HttpPutResponseHopLimit": 1,
        "HttpEndpoint": "enabled",
        "HttpProtocolIpv6": "disabled"
      },
      "EnclaveOptions": {
        "Enabled": false
      }
    },
    "ebsConfig": [
      {
        "DeviceName": "/dev/sda1",
        "Ebs": {
          "DeleteOnTermination": true,
          "Encrypted": true,
          "VolumeSize": 10,
          "VolumeType": "gp2",
          "SnapshotId": "snap-08f2ffffffffff03a"
        }
      },
      {
        "DeviceName": "/dev/sdb",
        "Ebs": {
          "DeleteOnTermination": true,
          "Encrypted": true,
          "VolumeSize": "10",
          "VolumeType": "gp2"
        }
      }
    ]
  },
  "user_id": "batman+aa@ronin.cloud",
  "session_log": {
    "csrfp_ronin_token": [
      "24752ee9f8ff9189xxxxxxxxxxxxxxxx",
      "12d6b11d2ff61e2xxxxxxxxxxxxxxxxx"
    ],
    "CREATED": 1656685838,
    "auth": {
      "ChallengeParameters": [],
      "AuthenticationResult": {
        "AccessToken": "eyJraWQiOiXXXXXX",
        "ExpiresIn": 3600,
        "TokenType": "Bearer",
        "IdToken": "eyJraWQXXXXX",
        "RefreshToken": "eyJjdHkiXXXXXX"
      },
      "@metadata": {
        "statusCode": 200,
        "effectiveUri": "https://cognito-idp.ap-southeast-2.amazonaws.com",
        "headers": {
          "date": "Fri, 01 Jul 2022 14:31:46 GMT",
          "content-type": "application/x-amz-json-1.1",
          "content-length": "2155",
          "connection": "keep-alive",
          "x-amzn-requestid": "3764e3ba-7fe3-40cb-8f25-8eaeff2fe8e0"
        },
        "transferStats": {
          "http": [
            []
          ]
        }
      }
    },
    "user": {
      "Username": "batman+aa@ronin.cloud",
      "UserAttributes": [
        {
          "Name": "sub",
          "Value": "5dbee31f-eac5-483e-a1fa-8d4319e17368"
        },
        {
          "Name": "email_verified",
          "Value": "true"
        },
        {
          "Name": "email",
          "Value": "batman+aa@ronin.cloud"
        }
      ],
      "UserCreateDate": {
        "date": "2022-03-24 02:28:20.232000",
        "timezone_type": 3,
        "timezone": "UTC"
      },
      "UserLastModifiedDate": {
        "date": "2022-03-24 02:29:17.194000",
        "timezone_type": 3,
        "timezone": "UTC"
      },
      "Enabled": true,
      "UserStatus": "CONFIRMED",
      "@metadata": {
        "statusCode": 200,
        "effectiveUri": "https://cognito-idp.ap-southeast-2.amazonaws.com",
        "headers": {
          "date": "Fri, 01 Jul 2022 14:30:39 GMT",
          "content-type": "application/x-amz-json-1.1",
          "content-length": "321",
          "connection": "keep-alive",
          "x-amzn-requestid": "38c15d50-bc89-4925-b476-1b960fda37cb"
        },
        "transferStats": {
          "http": [
            []
          ]
        }
      },
      "sub": "5dbee31f-eac5-483e-a1fa-8d4319e17368",
      "email_verified": "true",
      "status": "success",
      "groups": [
        "ronin_admin",
        "INSPECTOR_admin"
      ]
    },
    "status": "success",
    "project": {
      "row_id": "1874",
      "name": "Ghost Inspector",
      "summary": "Project for automated testing of permissions and other actions not covered by the PHANTOM project.",
      "tags": "automated,permissions,phantom,ghost,Inspector",
      "start_date": "13-12-2021",
      "end_date": "31-12-2022",
      "budget": "1000",
      "daily_limit": "",
      "over_notify": null,
      "over_limit": "0",
      "invoice_email": "\r\n                                                                          batman@ronin.cloud",
      "billing_code": "PHANTOM-123",
      "purchase_order": "INSPECTOR-123",
      "ts_created": "2021-12-13 03:24:14.257362+00",
      "ts_updated": null,
      "RPID": "INSPECTOR",
      "status": "",
      "custom_tags": null,
      "avatar": "https://s3-ap-southeast-2.amazonaws.com/s3.ronin.cloud/INSPECTOR/project_img_250x250.png",
      "aws": {
        "subnet": {
          "row_id": "39",
          "RPID": "INSPECTOR",
          "CIDR": "10.0.5.192/27",
          "ts_created": "2021-12-13 03:24:23.610719+00",
          "ts_updated": "2021-12-13 03:24:23.610719+00",
          "status": "CURRENT",
          "subnet_id": "subnet-99999999999"
        },
        "sg": "sg-0ea6d866d6a00b993"
      }
    }
  },
  "remote_address": "52.62.56.25",
  "server_log": {
    "HTTPS": "on",
    "SSL_TLS_SNI": "test.ronin.cloud",
    "HTTP_HOST": "test.ronin.cloud",
    "HTTP_CONNECTION": "keep-alive",
    "CONTENT_LENGTH": "254",
    "HTTP_SEC_CH_UA": "",
    "HTTP_SEC_CH_UA_MOBILE": "?0",
    "HTTP_USER_AGENT": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0 Safari/537.36 Ghost Inspector (62befde4c92ff234665745cb)",
    "CONTENT_TYPE": "application/x-www-form-urlencoded; charset=UTF-8",
    "HTTP_ACCEPT": "*/*",
    "HTTP_X_REQUESTED_WITH": "XMLHttpRequest",
    "HTTP_SEC_CH_UA_PLATFORM": "",
    "HTTP_ORIGIN": "https://test.ronin.cloud",
    "HTTP_SEC_FETCH_SITE": "same-origin",
    "HTTP_SEC_FETCH_MODE": "cors",
    "HTTP_SEC_FETCH_DEST": "empty",
    "HTTP_REFERER": "https://test.ronin.cloud/instance.php",
    "HTTP_ACCEPT_ENCODING": "gzip, deflate, br",
    "HTTP_ACCEPT_LANGUAGE": "en-US",
    "HTTP_COOKIE": "ronin_secure_session=gul7n0r6s3q9gc1iqpuofbng80; csrfp_ronin_token=24752ee9f8ff9189943232b6788e05e8",
    "PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin",
    "SERVER_SIGNATURE": "",
    "SERVER_SOFTWARE": "Apache",
    "SERVER_NAME": "test.ronin.cloud",
    "SERVER_ADDR": "10.0.2.17",
    "SERVER_PORT": "443",
    "REMOTE_ADDR": "52.62.56.25",
    "DOCUMENT_ROOT": "/var/www/html",
    "REQUEST_SCHEME": "https",
    "CONTEXT_PREFIX": "",
    "CONTEXT_DOCUMENT_ROOT": "/var/www/html",
    "SERVER_ADMIN": "admin@ronin.cloud",
    "SCRIPT_FILENAME": "/var/www/html/ws/aws/ec2/create_machine.php",
    "REMOTE_PORT": "55793",
    "GATEWAY_INTERFACE": "CGI/1.1",
    "SERVER_PROTOCOL": "HTTP/1.1",
    "REQUEST_METHOD": "POST",
    "QUERY_STRING": "",
    "REQUEST_URI": "/ws/aws/ec2/create_machine.php",
    "SCRIPT_NAME": "/ws/aws/ec2/create_machine.php",
    "PHP_SELF": "/ws/aws/ec2/create_machine.php",
    "REQUEST_TIME_FLOAT": 1656685906.432,
    "REQUEST_TIME": 1656685906
  },
  "RPID": "INSPECTOR",
  "email": "batman+aa@ronin.cloud",
  "resource": "batman",
  "resource_type": "MACHINE",
}

AWS CLOUDTRAIL LOGS

AWS CloudTrail is a service that enables governance, compliance, operational auditing, and risk auditing of the AWS account in which RONIN is installed. CloudTrail provides event history of the AWS account activity, including actions taken through the AWS Management Console, AWS SDKs, command line tools, and other AWS services. Specifically, CloudTrail can be used to detect unusual activity in your AWS accounts.

RONIN does not manage your AWS CloudTrail configuration; however, CloudTrail logging is necessary to address HIPAA security controls and full logging is enabled in RONIN Isolate builds. AWS CloudTrail logging can be incorporated into any RONIN build.


AMAZON CLOUDWATCH LOGS

Amazon CloudWatch is configured to monitor performance metrics on RONIN machines and clusters (using the unified CloudWatch agent and AWS Systems Manager [SSM]). The Amazon CloudWatch agent configuration is stored within Parameter Store, a tool in AWS Systems Manager. Parameter store allows you to securely store configuration data and secrets for reusability. SSM will use the configuration stored within Parameter Store to instruct the CloudWatch agent installed on the EC2 instances created by RONIN to use this configuration and start collecting logs.

All machines and clusters receive parameters shown in LINUX MACHINES / CLUSTERS and WINDOWS MACHINES, which are collected by the unified CloudWatch agent. You can modify this by adding or removing parameters being watched in the Parameter stores for Linux machines and clusters (ronin-cw-linux) and for Windows machines (ronin-cw-windows).

Amazon CloudWatch can also be used to create performance dashboards, analyze and integrate performance metrics with other information, such as audit trails. This allows you to detect anomalous behavior, set alarms, take automated actions and discover insights to optimize performance or cost.

Because different institutions have varying needs for such tooling, and may prefer other solutions for log monitoring and analysis, RONIN has not developed tools for specific analysis of Amazon CloudWatch logs.

LINUX MACHINES/CLUSTERS

{
   "metrics": {
       "append_dimensions": {
           "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
           "ImageId": "${aws:ImageId}",
           "InstanceId": "${aws:InstanceId}",
           "InstanceType": "${aws:InstanceType}"
       },
       "metrics_collected": {
           "cpu": {
               "measurement": [
                   "cpu_usage_idle",
                   "cpu_usage_iowait",
                   "cpu_usage_user",
                   "cpu_usage_system"
               ],
               "metrics_collection_interval": 60,
               "resources": [
                   "*"
               ],
               "totalcpu": false
           },
           "disk": {
               "measurement": [
                   "used_percent",
                   "inodes_free"
               ],
               "metrics_collection_interval": 60,
               "resources": [
                   "*"
               ]
           },
           "diskio": {
               "measurement": [
                   "io_time",
                   "write_bytes",
                   "read_bytes",
                   "writes",
                   "reads"
               ],
               "metrics_collection_interval": 60,
               "resources": [
                   "*"
               ]
           },
           "mem": {
               "measurement": [
                   "mem_used_percent"
               ],
               "metrics_collection_interval": 60
           },
           "netstat": {
               "measurement": [
                   "tcp_established",
                   "tcp_time_wait"
               ],
               "metrics_collection_interval": 60
           },
           "swap": {
               "measurement": [
                   "swap_used_percent"
               ],
               "metrics_collection_interval": 60
           }
       }
   }
}

WINDOWS MACHINES

{
   "metrics": {
       "append_dimensions": {
           "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
           "ImageId": "${aws:ImageId}",
           "InstanceId": "${aws:InstanceId}",
           "InstanceType": "${aws:InstanceType}"
       },
       "metrics_collected": {
           "LogicalDisk": {
               "measurement": [
                   "% Free Space"
               ],
               "metrics_collection_interval": 60,
               "resources": [
                   "*"
               ]
           },
           "Memory": {
               "measurement": [
                   "% Committed Bytes In Use"
               ],
               "metrics_collection_interval": 60
           },
           "Paging File": {
               "measurement": [
                   "% Usage"
               ],
               "metrics_collection_interval": 60,
               "resources": [
                   "*"
               ]
           },
           "PhysicalDisk": {
               "measurement": [
                   "% Disk Time",
                   "Disk Write Bytes/sec",
                   "Disk Read Bytes/sec",
                   "Disk Writes/sec",
                   "Disk Reads/sec"
               ],
               "metrics_collection_interval": 60,
               "resources": [
                   "*"
               ]
           },
           "Processor": {
               "measurement": [
                   "% User Time",
                   "% Idle Time",
                   "% Interrupt Time"
               ],
               "metrics_collection_interval": 60,
               "resources": [
                   "*"
               ]
           },
           "TCPv4": {
               "measurement": [
                   "Connections Established"
               ],
               "metrics_collection_interval": 60
           },
           "TCPv6": {
               "measurement": [
                   "Connections Established"
               ],
               "metrics_collection_interval": 60
           }
       }
   }
}