Configuração do agente para definir valores personalizados para os campos de metadados applicationName e subsystemName

Você pode configurar o Agente de criação de log para enviar registros para o serviço IBM Cloud Logs.

Os registros que você envia devem incluir um valor para os campos de metadados applicationName e subsystemName.

Por padrão, quando você configura o Agente de criação de log, o agente define valores padrão para esses campos. Você pode configurar seus próprios valores personalizados para substituir os valores padrão. Para obter mais informações sobre valores padrão, consulte Campos de metadados.

Em IBM Cloud Logs, você pode usar os campos de metadados applicationName e subsystemName para configurar qualquer um dos seguintes recursos:

  • Políticas de TCO
  • Regras de análise
  • Relatórios de uso de dados
  • Alertas
  • Visualizações
  • Painéis
  • Eventos para métricas
  • Logregação

Para obter informações sobre IBM Cloud Logs, consulte a IBM Cloud Logs documentação.

Configuração do agente para definir valores personalizados

Você pode configurar o Agente de criação de log com valores personalizados para os campos de metadados applicationName e subsystemName especificando as opções da API.

  • Use -a para especificar o applicationName que você deseja usar.

    Por padrão, o applicationName tem como padrão o nome do namespace kubernetes.namespace_name no cluster Red Hat OpenShift on IBM Cloud ou IBM Cloud Kubernetes Service.

    Você também pode usar variáveis do ambiente para definir valores personalizados, por exemplo, '${POD_NAMESPACE}'.

  • Use -s para especificar o susbsystemName que você deseja usar.

    Por padrão, o subsystemName tem como padrão o nome do contêiner kubernetes.container_name nos clusters Red Hat OpenShift on IBM Cloud ou IBM Cloud Kubernetes Service.

    Você também pode usar variáveis do ambiente, por exemplo, '${POD_NAME}'.

Ao definir esses campos de metadados, você tem as seguintes opções:

  • Você pode definir o valor como uma string fixa. Por exemplo, você pode usar -s 'production'.
  • Você pode usar variáveis do ambiente, por exemplo, -a '${POD_NAMESPACE}'.
  • Você pode combinar uma string fixa com variáveis do ambiente, por exemplo, -a 'mycluster:${POD_NAME}'.

Você pode definir applicatioName, subsystemName ou ambos. Se um valor não for definido, o valor padrão será aplicado. Para obter informações sobre os valores padrão que são definidos para os campos de metadados applicationName e subsystemName, consulte Metadados.

Exemplo: Configuração de valores dinâmicos

Para configurar o Agente de criação de log com valores dinâmicos personalizados para os campos de metadados applicationName e subsystemName, você pode implantar o agente da seguinte forma em um cluster Kubernetes:

curl -sSL https://ibm.biz/logs-router-setup | bash -s --   -v 1.1.1   -m IAMAPIKey    -k xxxx   -t Kubernetes   -r eu-es   -p 3443 -s '${POD_NAME}' -a '${POD_NAMESPACE}'

Exemplo: Configuração de um valor que combina um valor fixo e um valor dinâmico

Para configurar o Agente de criação de log com valores personalizados para os campos de metadados applicationName e subsystemName, você pode implantar o agente da seguinte forma em um cluster Kubernetes:

curl -sSL https://ibm.biz/logs-router-setup | bash -s --   -v 1.1.1   -m IAMAPIKey    -k xxxx   -t Kubernetes   -r eu-es   -p 3443 -s '${POD_NAME}' -a 'mycluster-dallas:${POD_NAMESPACE}'

Neste exemplo, o nome do cluster é adicionado como uma cadeia de caracteres.

Exemplo: Configuração de valores fixos

Para configurar o Agente de criação de log com valores fixos personalizados para os campos de metadados applicationName e subsystemName, você pode implantar o agente da seguinte forma em um cluster Kubernetes:

curl -sSL https://ibm.biz/logs-router-setup | bash -s --   -v 1.1.1   -m IAMAPIKey    -k xxxx   -t Kubernetes   -r eu-es   -p 3443 -s 'mysubsystem' -a 'myapp'

Configuração do agente para definir valores personalizados com base na linha de registro

É possível adicionar dinamicamente valores para o nome do aplicativo e do subsistema, dependendo da linha de registro.

O exemplo a seguir mostra como configurar um agente para um cluster Kubernetes que adiciona um nome de aplicativo personalizado para uma mensagem formatada em JSON:

  1. Adicione o applicationName à linha de registro.

    Por exemplo, sua linha de registro tem a seguinte aparência: {"level":"info", "msg":"Test message", "applicationName":"my-application"}

  2. Adicione o plug-in JSON PARSER ao arquivo logger-agent-iks.yaml para converter um JSON stingify em um objeto JSON. Para obter mais informações, consulte JSON.

    [PARSER]
        # Converts the original log source from a JSON map string to the internal binary representation.
        Name   json
        Format json
        # Time_Key: Set the time in your log entry to the log record time included with the log. If not set, Fluenti Bit uses its own time.
        Time_Key time
        Time_Format %d/%b/%Y:%H:%M:%S %z
        # Time_Keep: To keep all fields in the original log record
        Time_Keep On
    
  3. Adicione o plug-in PARSER ao arquivo logger-agent-iks.yaml para extrair campos dos registros. Para obter mais informações, consulte Parser.

    Por padrão, o plug-in do analisador mantém apenas os campos analisados em sua saída.

    [FILTER]
       # Name: Specify the name of the parser
       Name parser
       # Match: A pattern that is used to match against the tags that are defined on incoming records.
       Match *
       # Key_Name: Specify the field name in the log to be parsed.
       Key_Name message
       # Parser: Specify the parser name to interpret the field.
       Parser json
       # Reserve_Data: Set to keep all the fields
       Reserve_Data On
       # preserve_key: Set to keep the original key field.
       Preserve_Key On
    
  4. Extraia o nome do aplicativo usando o plug-in do filtro Nest

    O plug-in Nest Filter permite que você opere em ou com dados aninhados. Seus modos de operação são: nest, em que ele pega um conjunto de registros e os coloca em um mapa, e lift, em que ele pega um mapa por chave e levanta seus registros. Para obter mais informações, consulte Nest.

    applicationName deve estar no nível superior, portanto, você deve usar a operação lift.

    [FILTRO] Nome ninho Correspondência * Elevação da operação Mensagem aninhada Curinga applicationName

Com isso em vigor, o "applicationName" do exemplo de linha de registro acima seria "my-application" para essa linha específica.