Help Center/ Log Tank Service/ API Reference/ APIs/ Log Ingestion/ Creating a Log Ingestion Configuration
Updated on 2024-10-28 GMT+08:00

Creating a Log Ingestion Configuration

Function

This API is used to create a log ingestion configuration.

Calling Method

For details, see Calling APIs.

URI

POST /v3/{project_id}/lts/access-config

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Project ID. For details about how to obtain a project ID, see Obtaining the Account Tenant ID, Project Resource Set ID, Log Group ID, and Log Stream ID.

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

X-Auth-Token

Yes

String

User token obtained from IAM. For details about how to obtain a user token, see Obtaining a User Token.

Content-Type

Yes

String

Set this parameter to application/json;charset=UTF-8.

Table 3 Request body parameters

Parameter

Mandatory

Type

Description

access_config_name

Yes

String

Ingestion configuration name.

It should match the regular expression: ^(?!.)(?!)(?!.*?.$)[\u4e00-\u9fa5a-zA-Z0-9-.]{1,64}$.

access_config_type

Yes

String

Ingestion configuration type. AGENT: ECS access; K8S_CCE: CCE access

access_config_detail

Yes

AccessConfigDeatilCreate object

Access configuration details.

log_info

Yes

AccessConfigBaseLogInfoCreate object

Log information

host_group_info

No

AccessConfigHostGroupIdListCreate object

Host group information

access_config_tag

No

Array of accessConfigTag objects

Tag information. A tag key must be unique. Up to 20 tags are supported.

binary_collect

No

Boolean

Binary collection.

log_split

No

Boolean

Log splitting.

cluster_id

No

String

Cluster ID

incremental_collect

No

Boolean

Whether to perform incremental collection. true indicates incremental collection and false indicates full collection.

encoding_format

No

String

Encoding format. The value can be UTF-8 (default) or GDB.

processor_type

No

String

IC structuring parsing type. The value can be SINGLE_LINE (single-line full-text), MULTI_LINE (multi-line full-text), REGEX (single-line regular expression), MULTI_REGEX (multi-line regular expression), SPLIT (delimiter), JSON (JSON parsing), NGINX (Nginx parsing), and COMPOSE (combined parsing).

demo_log

No

String

Example log.

demo_fields

No

Array of DemoFieldAccess objects

Example log parsing field.

processors

No

Array of Processor objects

IC structuring parser.

application_id

No

String

ServiceStage application ID.

environment_id

No

String

ServiceStage environment ID.

component_id

No

Array of strings

ServiceStage component ID.

access_config_type_source

No

String

Self-built software source of log ingestion.

Table 4 AccessConfigDeatilCreate

Parameter

Mandatory

Type

Description

paths

No

Array of strings

Collection paths.

  1. The path must start with a slash (/) or Letter:\.

  2. A path cannot contain only slashes (/). The following special characters are not allowed: <>'|".

  3. A path cannot start with /** or /*.

  4. Only one double asterisk (**) can be contained in a path.

    The container path and host path are mandatory for the CCE type and are not mandatory for the standard output.

black_paths

No

Array of strings

Collection path blacklist.

  1. The path must start with a slash (/) or Letter:\.

  2. A path cannot contain only slashes (/). The following special characters are not allowed: <>'|".

  3. A path cannot start with /** or /*.

  4. Only one double asterisk (**) can be contained in a path.

format

Yes

AccessConfigFormatCreate object

Log format. Set it to either single or multi.

windows_log_info

No

AccessConfigWindowsLogInfoCreate object

Windows event logs.

stdout

No

Boolean

Standard output switch. This parameter is used only when logs are collected from CCE.

stderr

No

Boolean

Standard error switch. This parameter is used only when logs are collected from CCE.

pathType

No

String

Log collection from CCE. This parameter is used only when logs are collected from CCE.

namespaceRegex

No

String

Regular expression matching of Kubernetes namespaces. This parameter is used only when logs are collected from CCE.

podNameRegex

No

String

Regular expression matching of Kubernetes pods. This parameter is used only when logs are collected from CCE.

containerNameRegex

No

String

Regular expression matching of Kubernetes container names. This parameter is used only when logs are collected from CCE.

includeLabels

No

Map<String,String>

Container label trustlist. A maximum of 30 container labels can be created. The key names must be unique. This parameter is used only when logs are collected from CCE.

excludeLabels

No

Map<String,String>

Container label blocklist. A maximum of 30 container labels can be created. The key names must be unique. This parameter is used only when logs are collected from CCE.

includeEnvs

No

Map<String,String>

Environment variable trustlist. A maximum of 30 environment variable whitelists can be created. Key names must be unique. This parameter is used only when logs are collected from CCE.

excludeEnvs

No

Map<String,String>

Environment variable blocklist. A maximum of 30 environment variables can be created. The key names must be unique. This parameter is used only when logs are collected from CCE.

logLabels

No

Map<String,String>

Container label log tag. A maximum of 30 tags can be created. The key names must be unique. This parameter is used only when logs are collected from CCE.

logEnvs

No

Map<String,String>

Environment variable log tag. A maximum of 30 tags can be created. The key name must be unique. This parameter is used only when logs are collected from CCE.

includeK8sLabels

No

Map<String,String>

Kubernetes label trustlist. A maximum of 30 whitelists can be created. The key names must be unique. This parameter is used only when logs are collected from CCE.

excludeK8sLabels

No

Map<String,String>

Kubernetes label blocklist. A maximum of 30 blocklists can be created. The key names must be unique. This parameter is used only when logs are collected from CCE.

logK8s

No

Map<String,String>

Kubernetes label log tag. A maximum of 30 tags can be created. The key names must be unique. This parameter is used only when logs are collected from CCE.

repeat_collect

No

Boolean

Forcible repeated collection.

Table 5 AccessConfigFormatCreate

Parameter

Mandatory

Type

Description

single

No

AccessConfigFormatSingleCreate object

Single-line logs.

multi

No

AccessConfigFormatMutilCreate object

Multi-line logs.

Table 6 AccessConfigFormatSingleCreate

Parameter

Mandatory

Type

Description

mode

No

String

Single-line logs. system indicates the system time, whereas wildcard indicates the time wildcard.

value

No

String

Log time.If mode is system, the value is the current timestamp.If mode is wildcard, the value is a time wildcard, which is used by ICAgent to look for the log printing time as the beginning of a log event. If the time format in a log event is 2019-01-01 23:59:59, the time wildcard is YYYY-MM-DD hh:mm:ss. If the time format in a log event is 19-1-1 23:59:59, the time wildcard is YY-M-D hh:mm:ss.

Table 7 AccessConfigFormatMutilCreate

Parameter

Mandatory

Type

Description

mode

No

String

Single-line logs. time indicates a time wildcard is used to detect log boundaries, whereas regular indicates that a regular expression is used.

value

No

String

Log time.If mode is regular, the value is a regular expression.If mode is time, the value is a time wildcard, which is used by ICAgent to look for the log printing time as the beginning of a log event. If the time format in a log event is 2019-01-01 23:59:59, the time wildcard is YYYY-MM-DD hh:mm:ss. If the time format in a log event is 19-1-1 23:59:59, the time wildcard is YY-M-D hh:mm:ss.

Table 8 AccessConfigWindowsLogInfoCreate

Parameter

Mandatory

Type

Description

categorys

Yes

Array of strings

The type of Windows event logs to be collected. Application: application system; System: system; Security: security; Setup: startup

time_offset

Yes

AccessConfigTimeOffset object

Time offset.

event_level

Yes

Array of strings

Event level. information, warning, error, critical, verbose.

Table 9 AccessConfigTimeOffset

Parameter

Mandatory

Type

Description

offset

Yes

Long

Time offset.

When unit is day, the value ranges from 1 to 7.

When unit is hour, the value ranges from 1 to 168.

When unit is sec, the value ranges from 1 to 604800.

unit

Yes

String

Unit of the time offset. day, hour, sec.

Table 10 AccessConfigBaseLogInfoCreate

Parameter

Mandatory

Type

Description

log_group_id

Yes

String

Log group ID.

log_stream_id

Yes

String

Log stream ID.

Table 11 AccessConfigHostGroupIdListCreate

Parameter

Mandatory

Type

Description

host_group_id_list

Yes

Array of strings

List of host group IDs.

Table 12 accessConfigTag

Parameter

Mandatory

Type

Description

key

No

String

Tag key.

value

No

String

Tag value.

Table 13 DemoFieldAccess

Parameter

Mandatory

Type

Description

field_name

No

String

Field name, which must be the same as that in keys.

field_value

No

String

Field value.

Table 14 Processor

Parameter

Mandatory

Type

Description

type

No

String

Parser type. The value can be processor_regex (regular expression), processor_split_string (delimiter), processor_json (JSON parser), processor_gotime (custom time type), processor_filter_regex (log filtering), processor_drop (type of a deleted field), and processor_rename (type of a deleted field).

detail

No

Detail object

Parser configuration.

Table 15 Detail

Parameter

Mandatory

Type

Description

source_key

No

String

Custom time key field name.

regex

No

String

Regular expression for parsing. This field is required for a single-line completely regular expression or a multi-line completely regular expression.

keys

No

Array of strings

Field name list, which is consistent with the field_name field.

multi_line_regex

No

String

First line regular expression.

keep_source

No

Boolean

Whether to upload raw logs.

keep_source_if_parse_error

No

Boolean

Whether to upload logs that fail to be parsed.

split_sep

No

String

Delimiter. The maximum length of a custom delimiter is 10 characters, and the maximum length of a custom string is 30 characters.

split_type

No

String

Delimiter type. The value can be char (custom character), special_char (invisible character), or string (custom string).

fields

No

Map<String,String>

List of added fields, in [/topic/body/section/table/tgroup/tbody/row/entry/p/br {""}) (br] format.

drop_keys

No

Array of strings

List of deleted fields.

source_keys

No

Array of strings

List of source field names for renaming fields.

dest_keys

No

Array of strings

List of field names that are renamed and replaced.

expand_depth

No

Integer

JSON parsing depth. The value ranges from 1 (default) to 4.

expand_connector

No

String

JSON parsing field name connector.

source_format

No

String

Custom time format.

source_value

No

String

Custom time field value.

set_time

No

Boolean

Whether to enable the custom time function.

include

No

Map<String,String>

A key of a log filtering whitelist rule can contain up to 256 characters, and a value can contain up to 128 characters. A key must be unique.

exclude

No

Map<String,String>

A key of a log filtering whitelist rule can contain up to 256 characters, and a value can contain up to 128 characters. A key must be unique.

Response Parameters

Status code: 200

Table 16 Response body parameters

Parameter

Type

Description

access_config_id

String

Ingestion configuration ID.

access_config_name

String

Ingestion configuration name.

access_config_type

String

Ingestion configuration type. The value AGENT indicates host log ingestion.

create_time

Long

Creation time.

access_config_detail

AccessConfigDeatilCreate object

Ingestion configuration details.

log_info

AccessConfigQueryLogInfo object

Log details.

host_group_info

AccessConfigHostGroupIdList object

Host group ID list.

access_config_tag

Array of accessConfigTag objects

Tag information. A tag key must be unique. Up to 20 tags are supported.

log_split

Boolean

Log splitting.

binary_collect

Boolean

Binary collection.

cluster_id

String

CCE cluster ID

encoding_format

String

Encoding format. The default format is UTF-8.

incremental_collect

Boolean

Collection policy. The value can be incremental or full.

processor_type

String

IC structuring parsing type.

demo_log

String

Example log.

demo_fields

Array of DemoFieldAccess objects

Example log parsing field.

processors

Array of Processor objects

IC structuring parser.

application_id

String

ServiceStage application ID.

environment_id

String

ServiceStage environment ID.

component_id

Array of strings

ServiceStage component ID.

Table 17 AccessConfigDeatilCreate

Parameter

Type

Description

paths

Array of strings

Collection paths.

  1. The path must start with a slash (/) or Letter:\.

  2. A path cannot contain only slashes (/). The following special characters are not allowed: <>'|".

  3. A path cannot start with /** or /*.

  4. Only one double asterisk (**) can be contained in a path.

    The container path and host path are mandatory for the CCE type and are not mandatory for the standard output.

black_paths

Array of strings

Collection path blacklist.

  1. The path must start with a slash (/) or Letter:\.

  2. A path cannot contain only slashes (/). The following special characters are not allowed: <>'|".

  3. A path cannot start with /** or /*.

  4. Only one double asterisk (**) can be contained in a path.

format

AccessConfigFormatCreate object

Log format. Set it to either single or multi.

windows_log_info

AccessConfigWindowsLogInfoCreate object

Windows event logs.

stdout

Boolean

Standard output switch. This parameter is used only when logs are collected from CCE.

stderr

Boolean

Standard error switch. This parameter is used only when logs are collected from CCE.

pathType

String

Log collection from CCE. This parameter is used only when logs are collected from CCE.

namespaceRegex

String

Regular expression matching of Kubernetes namespaces. This parameter is used only when logs are collected from CCE.

podNameRegex

String

Regular expression matching of Kubernetes pods. This parameter is used only when logs are collected from CCE.

containerNameRegex

String

Regular expression matching of Kubernetes container names. This parameter is used only when logs are collected from CCE.

includeLabels

Map<String,String>

Container label trustlist. A maximum of 30 container labels can be created. The key names must be unique. This parameter is used only when logs are collected from CCE.

excludeLabels

Map<String,String>

Container label blocklist. A maximum of 30 container labels can be created. The key names must be unique. This parameter is used only when logs are collected from CCE.

includeEnvs

Map<String,String>

Environment variable trustlist. A maximum of 30 environment variable whitelists can be created. Key names must be unique. This parameter is used only when logs are collected from CCE.

excludeEnvs

Map<String,String>

Environment variable blocklist. A maximum of 30 environment variables can be created. The key names must be unique. This parameter is used only when logs are collected from CCE.

logLabels

Map<String,String>

Container label log tag. A maximum of 30 tags can be created. The key names must be unique. This parameter is used only when logs are collected from CCE.

logEnvs

Map<String,String>

Environment variable log tag. A maximum of 30 tags can be created. The key name must be unique. This parameter is used only when logs are collected from CCE.

includeK8sLabels

Map<String,String>

Kubernetes label trustlist. A maximum of 30 whitelists can be created. The key names must be unique. This parameter is used only when logs are collected from CCE.

excludeK8sLabels

Map<String,String>

Kubernetes label blocklist. A maximum of 30 blocklists can be created. The key names must be unique. This parameter is used only when logs are collected from CCE.

logK8s

Map<String,String>

Kubernetes label log tag. A maximum of 30 tags can be created. The key names must be unique. This parameter is used only when logs are collected from CCE.

repeat_collect

Boolean

Forcible repeated collection.

Table 18 AccessConfigFormatCreate

Parameter

Type

Description

single

AccessConfigFormatSingleCreate object

Single-line logs.

multi

AccessConfigFormatMutilCreate object

Multi-line logs.

Table 19 AccessConfigFormatSingleCreate

Parameter

Type

Description

mode

String

Single-line logs. system indicates the system time, whereas wildcard indicates the time wildcard.

value

String

Log time.If mode is system, the value is the current timestamp.If mode is wildcard, the value is a time wildcard, which is used by ICAgent to look for the log printing time as the beginning of a log event. If the time format in a log event is 2019-01-01 23:59:59, the time wildcard is YYYY-MM-DD hh:mm:ss. If the time format in a log event is 19-1-1 23:59:59, the time wildcard is YY-M-D hh:mm:ss.

Table 20 AccessConfigFormatMutilCreate

Parameter

Type

Description

mode

String

Single-line logs. time indicates a time wildcard is used to detect log boundaries, whereas regular indicates that a regular expression is used.

value

String

Log time.If mode is regular, the value is a regular expression.If mode is time, the value is a time wildcard, which is used by ICAgent to look for the log printing time as the beginning of a log event. If the time format in a log event is 2019-01-01 23:59:59, the time wildcard is YYYY-MM-DD hh:mm:ss. If the time format in a log event is 19-1-1 23:59:59, the time wildcard is YY-M-D hh:mm:ss.

Table 21 AccessConfigWindowsLogInfoCreate

Parameter

Type

Description

categorys

Array of strings

The type of Windows event logs to be collected. Application: application system; System: system; Security: security; Setup: startup

time_offset

AccessConfigTimeOffset object

Time offset.

event_level

Array of strings

Event level. information, warning, error, critical, verbose.

Table 22 AccessConfigTimeOffset

Parameter

Type

Description

offset

Long

Time offset.

When unit is day, the value ranges from 1 to 7.

When unit is hour, the value ranges from 1 to 168.

When unit is sec, the value ranges from 1 to 604800.

unit

String

Unit of the time offset. day, hour, sec.

Table 23 AccessConfigQueryLogInfo

Parameter

Type

Description

log_group_id

String

Log group ID.

log_stream_id

String

Log stream ID.

log_group_name

String

Log group name.

log_stream_name

String

Log stream name.

Table 24 AccessConfigHostGroupIdList

Parameter

Type

Description

host_group_id_list

Array of strings

List of host group IDs.

Table 25 accessConfigTag

Parameter

Type

Description

key

String

Tag key.

value

String

Tag value.

Table 26 DemoFieldAccess

Parameter

Type

Description

field_name

String

Field name, which must be the same as that in keys.

field_value

String

Field value.

Table 27 Processor

Parameter

Type

Description

type

String

Parser type. The value can be processor_regex (regular expression), processor_split_string (delimiter), processor_json (JSON parser), processor_gotime (custom time type), processor_filter_regex (log filtering), processor_drop (type of a deleted field), and processor_rename (type of a deleted field).

detail

Detail object

Parser configuration.

Table 28 Detail

Parameter

Type

Description

source_key

String

Custom time key field name.

regex

String

Regular expression for parsing. This field is required for a single-line completely regular expression or a multi-line completely regular expression.

keys

Array of strings

Field name list, which is consistent with the field_name field.

multi_line_regex

String

First line regular expression.

keep_source

Boolean

Whether to upload raw logs.

keep_source_if_parse_error

Boolean

Whether to upload logs that fail to be parsed.

split_sep

String

Delimiter. The maximum length of a custom delimiter is 10 characters, and the maximum length of a custom string is 30 characters.

split_type

String

Delimiter type. The value can be char (custom character), special_char (invisible character), or string (custom string).

fields

Map<String,String>

List of added fields, in [/topic/body/section/table/tgroup/tbody/row/entry/p/br {""}) (br] format.

drop_keys

Array of strings

List of deleted fields.

source_keys

Array of strings

List of source field names for renaming fields.

dest_keys

Array of strings

List of field names that are renamed and replaced.

expand_depth

Integer

JSON parsing depth. The value ranges from 1 (default) to 4.

expand_connector

String

JSON parsing field name connector.

source_format

String

Custom time format.

source_value

String

Custom time field value.

set_time

Boolean

Whether to enable the custom time function.

include

Map<String,String>

A key of a log filtering whitelist rule can contain up to 256 characters, and a value can contain up to 128 characters. A key must be unique.

exclude

Map<String,String>

A key of a log filtering whitelist rule can contain up to 256 characters, and a value can contain up to 128 characters. A key must be unique.

Status code: 400

Table 29 Response body parameters

Parameter

Type

Description

error_code

String

Error code

error_msg

String

Error description

Status code: 500

Table 30 Response body parameters

Parameter

Type

Description

error_code

String

Error code

error_msg

String

Error description

Example Requests

  • Creating a log ingestion configuration (for CCE)

    POST https://{endpoint}/v3/{project_id}/lts/access-config
    
    {
      "access_config_name" : "myapinew322",
      "access_config_type" : "K8S_CCE",
      "access_config_detail" : {
        "pathType" : "CONTAINER_STDOUT",
        "stdout" : "true",
        "stderr" : "false",
        "format" : {
          "single" : {
            "mode" : "system",
            "value" : "1678969382000"
          }
        },
        "namespaceRegex" : "default",
        "podNameRegex" : "abc",
        "containerNameRegex" : "my",
        "includeLabels" : {
          "a" : "1"
        },
        "excludeLabels" : {
          "b" : "2"
        },
        "logLabels" : {
          "c" : "3"
        },
        "includeK8sLabels" : {
          "d" : "4"
        },
        "excludeK8sLabels" : {
          "e" : "5"
        },
        "logK8s" : {
          "f" : "6"
        },
        "includeEnvs" : {
          "g" : "7"
        },
        "excludeEnvs" : {
          "h" : "8"
        },
        "logEnvs" : {
          "i" : "9"
        }
      },
      "log_info" : {
        "log_group_id" : "9575cb24-290c-478e-a5db-88d6d1dc513b",
        "log_stream_id" : "3581bee9-8698-476e-a0ba-b0f310ed99cf"
      },
      "host_group_info" : {
        "host_group_id_list" : [ "12b0bbd1-4eda-456b-a641-647aa66bdeab" ]
      },
      "access_config_tag" : [ {
        "key" : "my01",
        "value" : "001"
      }, {
        "key" : "my02",
        "value" : "002"
      } ],
      "binary_collect" : "false",
      "log_split" : "false"
    }
  • Creating a log ingestion configuration (for ECS)

    POST https://{endpoint}/v3/{project_id}/lts/access-config
    
    {
      "access_config_name" : "Tesxxx",
      "access_config_type" : "AGENT",
      "access_config_detail" : {
        "paths" : [ "/test/xxx", "/texxx" ],
        "black_paths" : [ "/testxxx", "/tesxxx" ],
        "format" : {
          "multi" : {
            "mode" : "time",
            "value" : "YYYY-MM-DD hh:mm:ss"
          }
        },
        "windows_log_info" : {
          "categorys" : [ "System", "Security", "Setup" ],
          "event_level" : [ "warning", "error", "critical", "verbose" ],
          "time_offset" : {
            "offset" : 111,
            "unit" : "hour"
          }
        }
      },
      "log_info" : {
        "log_group_id" : "b179326d-c3be-4217-a3d9-xxxx",
        "log_stream_id" : "020a6fa0-4740-4888-af06-98xxxxxx"
      },
      "host_group_info" : {
        "host_group_id_list" : [ "4ee44d4f-a72b-40cf-a3c7-1xxxxx" ]
      },
      "access_config_tag" : [ {
        "key" : "xxx",
        "value" : "xxx"
      }, {
        "key" : "xxx1",
        "value" : "xxx1"
      } ]
    }

Example Responses

Status code: 200

The ingestion configuration is created.

{
  "access_config_detail" : {
    "containerNameRegex" : "container-1",
    "format" : {
      "single" : {
        "mode" : "system",
        "value" : "1678969382000"
      }
    },
    "namespaceRegex" : "default",
    "pathType" : "container_stdout",
    "paths" : [ ],
    "podNameRegex" : "mystdout-6d7458d77c-rhjcc",
    "stderr" : true,
    "stdout" : true
  },
  "access_config_id" : "03b16999-95cf-453b-9668-7aa1fafa564e",
  "access_config_name" : "myapinew32Y",
  "access_config_tag" : [ {
    "key" : "my01",
    "value" : "001"
  }, {
    "key" : "my02",
    "value" : "002"
  } ],
  "access_config_type" : "K8S_CCE",
  "binary_collect" : true,
  "create_time" : 1685626665176,
  "log_info" : {
    "log_group_id" : "9575cb24-290c-478e-a5db-88d6d1dc513b",
    "log_group_name" : "my-group",
    "log_stream_id" : "eea03c27-e041-4bec-bd03-6afa10a6561a",
    "log_stream_name" : "lts-topic-cceapi"
  },
  "log_split" : true
}

Status code: 400

Invalid request. Modify the request based on the description in error_msg before a retry.

{
  "error_code" : "LTS.1807",
  "error_msg" : "Invalid access config name"
}

Status code: 500

The server has received the request but encountered an internal error.

{
  "error_code" : "LTS.0010",
  "error_msg" : "The system encountered an internal error"
}

SDK Sample Code

The SDK sample code is as follows.

  • Creating a log ingestion configuration (for CCE)

      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
     52
     53
     54
     55
     56
     57
     58
     59
     60
     61
     62
     63
     64
     65
     66
     67
     68
     69
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    package com.huaweicloud.sdk.test;
    
    import com.huaweicloud.sdk.core.auth.ICredential;
    import com.huaweicloud.sdk.core.auth.BasicCredentials;
    import com.huaweicloud.sdk.core.exception.ConnectionException;
    import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
    import com.huaweicloud.sdk.core.exception.ServiceResponseException;
    import com.huaweicloud.sdk.lts.v2.region.LtsRegion;
    import com.huaweicloud.sdk.lts.v2.*;
    import com.huaweicloud.sdk.lts.v2.model.*;
    
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.util.HashMap;
    
    public class CreateAccessConfigSolution {
    
        public static void main(String[] args) {
            // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
            // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
            String ak = System.getenv("CLOUD_SDK_AK");
            String sk = System.getenv("CLOUD_SDK_SK");
            String projectId = "{project_id}";
    
            ICredential auth = new BasicCredentials()
                    .withProjectId(projectId)
                    .withAk(ak)
                    .withSk(sk);
    
            LtsClient client = LtsClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(LtsRegion.valueOf("<YOUR REGION>"))
                    .build();
            CreateAccessConfigRequest request = new CreateAccessConfigRequest();
            CreateAccessConfigRequestBody body = new CreateAccessConfigRequestBody();
            List<AccessConfigTag> listbodyAccessConfigTag = new ArrayList<>();
            listbodyAccessConfigTag.add(
                new AccessConfigTag()
                    .withKey("my01")
                    .withValue("001")
            );
            listbodyAccessConfigTag.add(
                new AccessConfigTag()
                    .withKey("my02")
                    .withValue("002")
            );
            List<String> listHostGroupInfoHostGroupIdList = new ArrayList<>();
            listHostGroupInfoHostGroupIdList.add("12b0bbd1-4eda-456b-a641-647aa66bdeab");
            AccessConfigHostGroupIdListCreate hostGroupInfobody = new AccessConfigHostGroupIdListCreate();
            hostGroupInfobody.withHostGroupIdList(listHostGroupInfoHostGroupIdList);
            AccessConfigBaseLogInfoCreate logInfobody = new AccessConfigBaseLogInfoCreate();
            logInfobody.withLogGroupId("9575cb24-290c-478e-a5db-88d6d1dc513b")
                .withLogStreamId("3581bee9-8698-476e-a0ba-b0f310ed99cf");
            Map<String, String> listAccessConfigDetailLogK8s = new HashMap<>();
            listAccessConfigDetailLogK8s.put("f", "6");
            Map<String, String> listAccessConfigDetailExcludeK8sLabels = new HashMap<>();
            listAccessConfigDetailExcludeK8sLabels.put("e", "5");
            Map<String, String> listAccessConfigDetailIncludeK8sLabels = new HashMap<>();
            listAccessConfigDetailIncludeK8sLabels.put("d", "4");
            Map<String, String> listAccessConfigDetailLogEnvs = new HashMap<>();
            listAccessConfigDetailLogEnvs.put("i", "9");
            Map<String, String> listAccessConfigDetailLogLabels = new HashMap<>();
            listAccessConfigDetailLogLabels.put("c", "3");
            Map<String, String> listAccessConfigDetailExcludeEnvs = new HashMap<>();
            listAccessConfigDetailExcludeEnvs.put("h", "8");
            Map<String, String> listAccessConfigDetailIncludeEnvs = new HashMap<>();
            listAccessConfigDetailIncludeEnvs.put("g", "7");
            Map<String, String> listAccessConfigDetailExcludeLabels = new HashMap<>();
            listAccessConfigDetailExcludeLabels.put("b", "2");
            Map<String, String> listAccessConfigDetailIncludeLabels = new HashMap<>();
            listAccessConfigDetailIncludeLabels.put("a", "1");
            AccessConfigFormatSingleCreate singleFormat = new AccessConfigFormatSingleCreate();
            singleFormat.withMode(AccessConfigFormatSingleCreate.ModeEnum.fromValue("system"))
                .withValue("1678969382000");
            AccessConfigFormatCreate formatAccessConfigDetail = new AccessConfigFormatCreate();
            formatAccessConfigDetail.withSingle(singleFormat);
            AccessConfigDeatilCreate accessConfigDetailbody = new AccessConfigDeatilCreate();
            accessConfigDetailbody.withFormat(formatAccessConfigDetail)
                .withStdout(true)
                .withStderr(false)
                .withPathType(AccessConfigDeatilCreate.PathTypeEnum.fromValue("CONTAINER_STDOUT"))
                .withNamespaceRegex("default")
                .withPodNameRegex("abc")
                .withContainerNameRegex("my")
                .withIncludeLabels(listAccessConfigDetailIncludeLabels)
                .withExcludeLabels(listAccessConfigDetailExcludeLabels)
                .withIncludeEnvs(listAccessConfigDetailIncludeEnvs)
                .withExcludeEnvs(listAccessConfigDetailExcludeEnvs)
                .withLogLabels(listAccessConfigDetailLogLabels)
                .withLogEnvs(listAccessConfigDetailLogEnvs)
                .withIncludeK8sLabels(listAccessConfigDetailIncludeK8sLabels)
                .withExcludeK8sLabels(listAccessConfigDetailExcludeK8sLabels)
                .withLogK8s(listAccessConfigDetailLogK8s);
            body.withLogSplit(false);
            body.withBinaryCollect(false);
            body.withAccessConfigTag(listbodyAccessConfigTag);
            body.withHostGroupInfo(hostGroupInfobody);
            body.withLogInfo(logInfobody);
            body.withAccessConfigDetail(accessConfigDetailbody);
            body.withAccessConfigType(CreateAccessConfigRequestBody.AccessConfigTypeEnum.fromValue("K8S_CCE"));
            body.withAccessConfigName("myapinew322");
            request.withBody(body);
            try {
                CreateAccessConfigResponse response = client.createAccessConfig(request);
                System.out.println(response.toString());
            } catch (ConnectionException e) {
                e.printStackTrace();
            } catch (RequestTimeoutException e) {
                e.printStackTrace();
            } catch (ServiceResponseException e) {
                e.printStackTrace();
                System.out.println(e.getHttpStatusCode());
                System.out.println(e.getRequestId());
                System.out.println(e.getErrorCode());
                System.out.println(e.getErrorMsg());
            }
        }
    }
    
  • Creating a log ingestion configuration (for ECS)

      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
     52
     53
     54
     55
     56
     57
     58
     59
     60
     61
     62
     63
     64
     65
     66
     67
     68
     69
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    106
    107
    package com.huaweicloud.sdk.test;
    
    import com.huaweicloud.sdk.core.auth.ICredential;
    import com.huaweicloud.sdk.core.auth.BasicCredentials;
    import com.huaweicloud.sdk.core.exception.ConnectionException;
    import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
    import com.huaweicloud.sdk.core.exception.ServiceResponseException;
    import com.huaweicloud.sdk.lts.v2.region.LtsRegion;
    import com.huaweicloud.sdk.lts.v2.*;
    import com.huaweicloud.sdk.lts.v2.model.*;
    
    import java.util.List;
    import java.util.ArrayList;
    
    public class CreateAccessConfigSolution {
    
        public static void main(String[] args) {
            // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
            // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
            String ak = System.getenv("CLOUD_SDK_AK");
            String sk = System.getenv("CLOUD_SDK_SK");
            String projectId = "{project_id}";
    
            ICredential auth = new BasicCredentials()
                    .withProjectId(projectId)
                    .withAk(ak)
                    .withSk(sk);
    
            LtsClient client = LtsClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(LtsRegion.valueOf("<YOUR REGION>"))
                    .build();
            CreateAccessConfigRequest request = new CreateAccessConfigRequest();
            CreateAccessConfigRequestBody body = new CreateAccessConfigRequestBody();
            List<AccessConfigTag> listbodyAccessConfigTag = new ArrayList<>();
            listbodyAccessConfigTag.add(
                new AccessConfigTag()
                    .withKey("xxx")
                    .withValue("xxx")
            );
            listbodyAccessConfigTag.add(
                new AccessConfigTag()
                    .withKey("xxx1")
                    .withValue("xxx1")
            );
            List<String> listHostGroupInfoHostGroupIdList = new ArrayList<>();
            listHostGroupInfoHostGroupIdList.add("4ee44d4f-a72b-40cf-a3c7-1xxxxx");
            AccessConfigHostGroupIdListCreate hostGroupInfobody = new AccessConfigHostGroupIdListCreate();
            hostGroupInfobody.withHostGroupIdList(listHostGroupInfoHostGroupIdList);
            AccessConfigBaseLogInfoCreate logInfobody = new AccessConfigBaseLogInfoCreate();
            logInfobody.withLogGroupId("b179326d-c3be-4217-a3d9-xxxx")
                .withLogStreamId("020a6fa0-4740-4888-af06-98xxxxxx");
            List<AccessConfigWindowsLogInfoCreate.EventLevelEnum> listWindowsLogInfoEventLevel = new ArrayList<>();
            listWindowsLogInfoEventLevel.add(AccessConfigWindowsLogInfoCreate.EventLevelEnum.fromValue("warning"));
            listWindowsLogInfoEventLevel.add(AccessConfigWindowsLogInfoCreate.EventLevelEnum.fromValue("error"));
            listWindowsLogInfoEventLevel.add(AccessConfigWindowsLogInfoCreate.EventLevelEnum.fromValue("critical"));
            listWindowsLogInfoEventLevel.add(AccessConfigWindowsLogInfoCreate.EventLevelEnum.fromValue("verbose"));
            AccessConfigTimeOffset timeOffsetWindowsLogInfo = new AccessConfigTimeOffset();
            timeOffsetWindowsLogInfo.withOffset(111L)
                .withUnit(AccessConfigTimeOffset.UnitEnum.fromValue("hour"));
            List<AccessConfigWindowsLogInfoCreate.CategorysEnum> listWindowsLogInfoCategorys = new ArrayList<>();
            listWindowsLogInfoCategorys.add(AccessConfigWindowsLogInfoCreate.CategorysEnum.fromValue("System"));
            listWindowsLogInfoCategorys.add(AccessConfigWindowsLogInfoCreate.CategorysEnum.fromValue("Security"));
            listWindowsLogInfoCategorys.add(AccessConfigWindowsLogInfoCreate.CategorysEnum.fromValue("Setup"));
            AccessConfigWindowsLogInfoCreate windowsLogInfoAccessConfigDetail = new AccessConfigWindowsLogInfoCreate();
            windowsLogInfoAccessConfigDetail.withCategorys(listWindowsLogInfoCategorys)
                .withTimeOffset(timeOffsetWindowsLogInfo)
                .withEventLevel(listWindowsLogInfoEventLevel);
            AccessConfigFormatMutilCreate multiFormat = new AccessConfigFormatMutilCreate();
            multiFormat.withMode(AccessConfigFormatMutilCreate.ModeEnum.fromValue("time"))
                .withValue("YYYY-MM-DD hh:mm:ss");
            AccessConfigFormatCreate formatAccessConfigDetail = new AccessConfigFormatCreate();
            formatAccessConfigDetail.withMulti(multiFormat);
            List<String> listAccessConfigDetailBlackPaths = new ArrayList<>();
            listAccessConfigDetailBlackPaths.add("/testxxx");
            listAccessConfigDetailBlackPaths.add("/tesxxx");
            List<String> listAccessConfigDetailPaths = new ArrayList<>();
            listAccessConfigDetailPaths.add("/test/xxx");
            listAccessConfigDetailPaths.add("/texxx");
            AccessConfigDeatilCreate accessConfigDetailbody = new AccessConfigDeatilCreate();
            accessConfigDetailbody.withPaths(listAccessConfigDetailPaths)
                .withBlackPaths(listAccessConfigDetailBlackPaths)
                .withFormat(formatAccessConfigDetail)
                .withWindowsLogInfo(windowsLogInfoAccessConfigDetail);
            body.withAccessConfigTag(listbodyAccessConfigTag);
            body.withHostGroupInfo(hostGroupInfobody);
            body.withLogInfo(logInfobody);
            body.withAccessConfigDetail(accessConfigDetailbody);
            body.withAccessConfigType(CreateAccessConfigRequestBody.AccessConfigTypeEnum.fromValue("AGENT"));
            body.withAccessConfigName("Tesxxx");
            request.withBody(body);
            try {
                CreateAccessConfigResponse response = client.createAccessConfig(request);
                System.out.println(response.toString());
            } catch (ConnectionException e) {
                e.printStackTrace();
            } catch (RequestTimeoutException e) {
                e.printStackTrace();
            } catch (ServiceResponseException e) {
                e.printStackTrace();
                System.out.println(e.getHttpStatusCode());
                System.out.println(e.getRequestId());
                System.out.println(e.getErrorCode());
                System.out.println(e.getErrorMsg());
            }
        }
    }
    
  • Creating a log ingestion configuration (for CCE)

      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
     52
     53
     54
     55
     56
     57
     58
     59
     60
     61
     62
     63
     64
     65
     66
     67
     68
     69
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    # coding: utf-8
    
    import os
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdklts.v2.region.lts_region import LtsRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdklts.v2 import *
    
    if __name__ == "__main__":
        # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId)
    
        client = LtsClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(LtsRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = CreateAccessConfigRequest()
            listAccessConfigTagbody = [
                AccessConfigTag(
                    key="my01",
                    value="001"
                ),
                AccessConfigTag(
                    key="my02",
                    value="002"
                )
            ]
            listHostGroupIdListHostGroupInfo = [
                "12b0bbd1-4eda-456b-a641-647aa66bdeab"
            ]
            hostGroupInfobody = AccessConfigHostGroupIdListCreate(
                host_group_id_list=listHostGroupIdListHostGroupInfo
            )
            logInfobody = AccessConfigBaseLogInfoCreate(
                log_group_id="9575cb24-290c-478e-a5db-88d6d1dc513b",
                log_stream_id="3581bee9-8698-476e-a0ba-b0f310ed99cf"
            )
            listLogK8sAccessConfigDetail = {
                "f": "6"
            }
            listExcludeK8sLabelsAccessConfigDetail = {
                "e": "5"
            }
            listIncludeK8sLabelsAccessConfigDetail = {
                "d": "4"
            }
            listLogEnvsAccessConfigDetail = {
                "i": "9"
            }
            listLogLabelsAccessConfigDetail = {
                "c": "3"
            }
            listExcludeEnvsAccessConfigDetail = {
                "h": "8"
            }
            listIncludeEnvsAccessConfigDetail = {
                "g": "7"
            }
            listExcludeLabelsAccessConfigDetail = {
                "b": "2"
            }
            listIncludeLabelsAccessConfigDetail = {
                "a": "1"
            }
            singleFormat = AccessConfigFormatSingleCreate(
                mode="system",
                value="1678969382000"
            )
            formatAccessConfigDetail = AccessConfigFormatCreate(
                single=singleFormat
            )
            accessConfigDetailbody = AccessConfigDeatilCreate(
                format=formatAccessConfigDetail,
                stdout=True,
                stderr=False,
                path_type="CONTAINER_STDOUT",
                namespace_regex="default",
                pod_name_regex="abc",
                container_name_regex="my",
                include_labels=listIncludeLabelsAccessConfigDetail,
                exclude_labels=listExcludeLabelsAccessConfigDetail,
                include_envs=listIncludeEnvsAccessConfigDetail,
                exclude_envs=listExcludeEnvsAccessConfigDetail,
                log_labels=listLogLabelsAccessConfigDetail,
                log_envs=listLogEnvsAccessConfigDetail,
                include_k8s_labels=listIncludeK8sLabelsAccessConfigDetail,
                exclude_k8s_labels=listExcludeK8sLabelsAccessConfigDetail,
                log_k8s=listLogK8sAccessConfigDetail
            )
            request.body = CreateAccessConfigRequestBody(
                log_split=False,
                binary_collect=False,
                access_config_tag=listAccessConfigTagbody,
                host_group_info=hostGroupInfobody,
                log_info=logInfobody,
                access_config_detail=accessConfigDetailbody,
                access_config_type="K8S_CCE",
                access_config_name="myapinew322"
            )
            response = client.create_access_config(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Creating a log ingestion configuration (for ECS)

      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
     52
     53
     54
     55
     56
     57
     58
     59
     60
     61
     62
     63
     64
     65
     66
     67
     68
     69
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    # coding: utf-8
    
    import os
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdklts.v2.region.lts_region import LtsRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdklts.v2 import *
    
    if __name__ == "__main__":
        # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId)
    
        client = LtsClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(LtsRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = CreateAccessConfigRequest()
            listAccessConfigTagbody = [
                AccessConfigTag(
                    key="xxx",
                    value="xxx"
                ),
                AccessConfigTag(
                    key="xxx1",
                    value="xxx1"
                )
            ]
            listHostGroupIdListHostGroupInfo = [
                "4ee44d4f-a72b-40cf-a3c7-1xxxxx"
            ]
            hostGroupInfobody = AccessConfigHostGroupIdListCreate(
                host_group_id_list=listHostGroupIdListHostGroupInfo
            )
            logInfobody = AccessConfigBaseLogInfoCreate(
                log_group_id="b179326d-c3be-4217-a3d9-xxxx",
                log_stream_id="020a6fa0-4740-4888-af06-98xxxxxx"
            )
            listEventLevelWindowsLogInfo = [
                "warning",
                "error",
                "critical",
                "verbose"
            ]
            timeOffsetWindowsLogInfo = AccessConfigTimeOffset(
                offset=111,
                unit="hour"
            )
            listCategorysWindowsLogInfo = [
                "System",
                "Security",
                "Setup"
            ]
            windowsLogInfoAccessConfigDetail = AccessConfigWindowsLogInfoCreate(
                categorys=listCategorysWindowsLogInfo,
                time_offset=timeOffsetWindowsLogInfo,
                event_level=listEventLevelWindowsLogInfo
            )
            multiFormat = AccessConfigFormatMutilCreate(
                mode="time",
                value="YYYY-MM-DD hh:mm:ss"
            )
            formatAccessConfigDetail = AccessConfigFormatCreate(
                multi=multiFormat
            )
            listBlackPathsAccessConfigDetail = [
                "/testxxx",
                "/tesxxx"
            ]
            listPathsAccessConfigDetail = [
                "/test/xxx",
                "/texxx"
            ]
            accessConfigDetailbody = AccessConfigDeatilCreate(
                paths=listPathsAccessConfigDetail,
                black_paths=listBlackPathsAccessConfigDetail,
                format=formatAccessConfigDetail,
                windows_log_info=windowsLogInfoAccessConfigDetail
            )
            request.body = CreateAccessConfigRequestBody(
                access_config_tag=listAccessConfigTagbody,
                host_group_info=hostGroupInfobody,
                log_info=logInfobody,
                access_config_detail=accessConfigDetailbody,
                access_config_type="AGENT",
                access_config_name="Tesxxx"
            )
            response = client.create_access_config(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Creating a log ingestion configuration (for CCE)

      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
     52
     53
     54
     55
     56
     57
     58
     59
     60
     61
     62
     63
     64
     65
     66
     67
     68
     69
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        lts "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/lts/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/lts/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/lts/v2/region"
    )
    
    func main() {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak := os.Getenv("CLOUD_SDK_AK")
        sk := os.Getenv("CLOUD_SDK_SK")
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            Build()
    
        client := lts.NewLtsClient(
            lts.LtsClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.CreateAccessConfigRequest{}
    	keyAccessConfigTag:= "my01"
    	valueAccessConfigTag:= "001"
    	keyAccessConfigTag1:= "my02"
    	valueAccessConfigTag1:= "002"
    	var listAccessConfigTagbody = []model.AccessConfigTag{
            {
                Key: &keyAccessConfigTag,
                Value: &valueAccessConfigTag,
            },
            {
                Key: &keyAccessConfigTag1,
                Value: &valueAccessConfigTag1,
            },
        }
    	var listHostGroupIdListHostGroupInfo = []string{
            "12b0bbd1-4eda-456b-a641-647aa66bdeab",
        }
    	hostGroupInfobody := &model.AccessConfigHostGroupIdListCreate{
    		HostGroupIdList: listHostGroupIdListHostGroupInfo,
    	}
    	logInfobody := &model.AccessConfigBaseLogInfoCreate{
    		LogGroupId: "9575cb24-290c-478e-a5db-88d6d1dc513b",
    		LogStreamId: "3581bee9-8698-476e-a0ba-b0f310ed99cf",
    	}
    	var listLogK8sAccessConfigDetail = map[string]string{
            "f": "6",
        }
    	var listExcludeK8sLabelsAccessConfigDetail = map[string]string{
            "e": "5",
        }
    	var listIncludeK8sLabelsAccessConfigDetail = map[string]string{
            "d": "4",
        }
    	var listLogEnvsAccessConfigDetail = map[string]string{
            "i": "9",
        }
    	var listLogLabelsAccessConfigDetail = map[string]string{
            "c": "3",
        }
    	var listExcludeEnvsAccessConfigDetail = map[string]string{
            "h": "8",
        }
    	var listIncludeEnvsAccessConfigDetail = map[string]string{
            "g": "7",
        }
    	var listExcludeLabelsAccessConfigDetail = map[string]string{
            "b": "2",
        }
    	var listIncludeLabelsAccessConfigDetail = map[string]string{
            "a": "1",
        }
    	modeSingle:= model.GetAccessConfigFormatSingleCreateModeEnum().SYSTEM
    	valueSingle:= "1678969382000"
    	singleFormat := &model.AccessConfigFormatSingleCreate{
    		Mode: &modeSingle,
    		Value: &valueSingle,
    	}
    	formatAccessConfigDetail := &model.AccessConfigFormatCreate{
    		Single: singleFormat,
    	}
    	stdoutAccessConfigDetail:= true
    	stderrAccessConfigDetail:= false
    	pathTypeAccessConfigDetail:= model.GetAccessConfigDeatilCreatePathTypeEnum().CONTAINER_STDOUT
    	namespaceRegexAccessConfigDetail:= "default"
    	podNameRegexAccessConfigDetail:= "abc"
    	containerNameRegexAccessConfigDetail:= "my"
    	accessConfigDetailbody := &model.AccessConfigDeatilCreate{
    		Format: formatAccessConfigDetail,
    		Stdout: &stdoutAccessConfigDetail,
    		Stderr: &stderrAccessConfigDetail,
    		PathType: &pathTypeAccessConfigDetail,
    		NamespaceRegex: &namespaceRegexAccessConfigDetail,
    		PodNameRegex: &podNameRegexAccessConfigDetail,
    		ContainerNameRegex: &containerNameRegexAccessConfigDetail,
    		IncludeLabels: listIncludeLabelsAccessConfigDetail,
    		ExcludeLabels: listExcludeLabelsAccessConfigDetail,
    		IncludeEnvs: listIncludeEnvsAccessConfigDetail,
    		ExcludeEnvs: listExcludeEnvsAccessConfigDetail,
    		LogLabels: listLogLabelsAccessConfigDetail,
    		LogEnvs: listLogEnvsAccessConfigDetail,
    		IncludeK8sLabels: listIncludeK8sLabelsAccessConfigDetail,
    		ExcludeK8sLabels: listExcludeK8sLabelsAccessConfigDetail,
    		LogK8s: listLogK8sAccessConfigDetail,
    	}
    	logSplitCreateAccessConfigRequestBody:= false
    	binaryCollectCreateAccessConfigRequestBody:= false
    	request.Body = &model.CreateAccessConfigRequestBody{
    		LogSplit: &logSplitCreateAccessConfigRequestBody,
    		BinaryCollect: &binaryCollectCreateAccessConfigRequestBody,
    		AccessConfigTag: &listAccessConfigTagbody,
    		HostGroupInfo: hostGroupInfobody,
    		LogInfo: logInfobody,
    		AccessConfigDetail: accessConfigDetailbody,
    		AccessConfigType: model.GetCreateAccessConfigRequestBodyAccessConfigTypeEnum().K8_S_CCE,
    		AccessConfigName: "myapinew322",
    	}
    	response, err := client.CreateAccessConfig(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • Creating a log ingestion configuration (for ECS)

      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
     52
     53
     54
     55
     56
     57
     58
     59
     60
     61
     62
     63
     64
     65
     66
     67
     68
     69
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        lts "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/lts/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/lts/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/lts/v2/region"
    )
    
    func main() {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak := os.Getenv("CLOUD_SDK_AK")
        sk := os.Getenv("CLOUD_SDK_SK")
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            Build()
    
        client := lts.NewLtsClient(
            lts.LtsClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.CreateAccessConfigRequest{}
    	keyAccessConfigTag:= "xxx"
    	valueAccessConfigTag:= "xxx"
    	keyAccessConfigTag1:= "xxx1"
    	valueAccessConfigTag1:= "xxx1"
    	var listAccessConfigTagbody = []model.AccessConfigTag{
            {
                Key: &keyAccessConfigTag,
                Value: &valueAccessConfigTag,
            },
            {
                Key: &keyAccessConfigTag1,
                Value: &valueAccessConfigTag1,
            },
        }
    	var listHostGroupIdListHostGroupInfo = []string{
            "4ee44d4f-a72b-40cf-a3c7-1xxxxx",
        }
    	hostGroupInfobody := &model.AccessConfigHostGroupIdListCreate{
    		HostGroupIdList: listHostGroupIdListHostGroupInfo,
    	}
    	logInfobody := &model.AccessConfigBaseLogInfoCreate{
    		LogGroupId: "b179326d-c3be-4217-a3d9-xxxx",
    		LogStreamId: "020a6fa0-4740-4888-af06-98xxxxxx",
    	}
    	var listEventLevelWindowsLogInfo = []model.AccessConfigWindowsLogInfoCreateEventLevel{
            model.GetAccessConfigWindowsLogInfoCreateEventLevelEnum().WARNING,
    	    model.GetAccessConfigWindowsLogInfoCreateEventLevelEnum().ERROR,
    	    model.GetAccessConfigWindowsLogInfoCreateEventLevelEnum().CRITICAL,
    	    model.GetAccessConfigWindowsLogInfoCreateEventLevelEnum().VERBOSE,
        }
    	timeOffsetWindowsLogInfo := &model.AccessConfigTimeOffset{
    		Offset: int64(111),
    		Unit: model.GetAccessConfigTimeOffsetUnitEnum().HOUR,
    	}
    	var listCategorysWindowsLogInfo = []model.AccessConfigWindowsLogInfoCreateCategorys{
            model.GetAccessConfigWindowsLogInfoCreateCategorysEnum().SYSTEM,
    	    model.GetAccessConfigWindowsLogInfoCreateCategorysEnum().SECURITY,
    	    model.GetAccessConfigWindowsLogInfoCreateCategorysEnum().SETUP,
        }
    	windowsLogInfoAccessConfigDetail := &model.AccessConfigWindowsLogInfoCreate{
    		Categorys: listCategorysWindowsLogInfo,
    		TimeOffset: timeOffsetWindowsLogInfo,
    		EventLevel: listEventLevelWindowsLogInfo,
    	}
    	modeMulti:= model.GetAccessConfigFormatMutilCreateModeEnum().TIME
    	valueMulti:= "YYYY-MM-DD hh:mm:ss"
    	multiFormat := &model.AccessConfigFormatMutilCreate{
    		Mode: &modeMulti,
    		Value: &valueMulti,
    	}
    	formatAccessConfigDetail := &model.AccessConfigFormatCreate{
    		Multi: multiFormat,
    	}
    	var listBlackPathsAccessConfigDetail = []string{
            "/testxxx",
    	    "/tesxxx",
        }
    	var listPathsAccessConfigDetail = []string{
            "/test/xxx",
    	    "/texxx",
        }
    	accessConfigDetailbody := &model.AccessConfigDeatilCreate{
    		Paths: &listPathsAccessConfigDetail,
    		BlackPaths: &listBlackPathsAccessConfigDetail,
    		Format: formatAccessConfigDetail,
    		WindowsLogInfo: windowsLogInfoAccessConfigDetail,
    	}
    	request.Body = &model.CreateAccessConfigRequestBody{
    		AccessConfigTag: &listAccessConfigTagbody,
    		HostGroupInfo: hostGroupInfobody,
    		LogInfo: logInfobody,
    		AccessConfigDetail: accessConfigDetailbody,
    		AccessConfigType: model.GetCreateAccessConfigRequestBodyAccessConfigTypeEnum().AGENT,
    		AccessConfigName: "Tesxxx",
    	}
    	response, err := client.CreateAccessConfig(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    

For SDK sample code of more programming languages, see the Sample Code tab in API Explorer. SDK sample code can be automatically generated.

Status Codes

Status Code

Description

200

The ingestion configuration is created.

400

Invalid request. Modify the request based on the description in error_msg before a retry.

500

The server has received the request but encountered an internal error.

Error Codes

See Error Codes.