配置代理程式以設定applicationName和subsystemName元資料欄位的自訂值

您可以設定記載代理程式以將日誌傳送到IBM Cloud Logs服務。

您傳送的日誌必須包含 applicationName 和 subsystemName 元資料欄位的值。

預設情況下,當您設定記載代理程式時,代理程式會為這些欄位設定預設值。 您可以配置自己的自訂值來替換預設值。 有關預設值的更多信息,請參閱 元資料欄位。

在IBM Cloud Logs中,您可以使用 applicationName 和 subsystemName 元資料欄位來配置以下任何功能:

  • 總擁有成本政策
  • 解析規則
  • 數據使用報告
  • 警示
  • 視圖
  • 儀表板
  • 事件到指標
  • 對數聚合

有關IBM Cloud Logs的信息,請參閱 IBM Cloud Logs文件。

配置代理程式以設定自訂值

您可以透過指定 API 選項,為記載代理程式配置 applicationName 和 subsystemName 元資料欄位的自訂值。

  • 使用 -a 指定您要使用的 applicationName。

    預設情況下,applicationName 預設為Red Hat OpenShift on IBM Cloud或IBM Cloud Kubernetes Service叢集中的命名空間名稱 kubernetes.namespace_name。

    您也可以使用環境中的變數來設定自訂值,例如 '${POD_NAMESPACE}'。

  • 使用 -s 指定您要使用的 susbsystemName。

    預設情況下,subsystemName 預設為Red Hat OpenShift on IBM Cloud或IBM Cloud Kubernetes Service叢集中的容器名稱 kubernetes.container_name。

    您也可以使用環境中的變量,例如 '${POD_NAME}'。

設定這些元資料欄位時,您有以下選項:

  • 您可以將該值設定為固定字串。 例如,您可以使用 -s 'production'。
  • 您可以使用環境中的變量,例如 -a '${POD_NAMESPACE}'。
  • 您可以將固定字串與環境中的變數組合起來,例如 -a 'mycluster:${POD_NAME}'。

您可以設定 applicatioName、subsystemName 或兩者都設定。 如果未設定值,則採用預設值。 有關為 applicationName 和 subsystemName 元資料欄位設定的預設值的信息,請參閱 元資料。

範例:配置動態值

若要使用 applicationName 和 subsystemName 元資料欄位的自訂動態值來配置記載代理程式,您可以在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}'

範例:配置固定值和動態值組合的值

若要使用 applicationName 和 subsystemName 元資料欄位的自訂值來配置記載代理程式,您可以在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}'

在此範例中,叢集的名稱會作為字串新增。

範例:配置固定值

若要使用 applicationName 和 subsystemName 元資料欄位的自訂固定值配置記載代理程式,您可以在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'

配置代理程式以根據日誌行設定自訂值

您可以根據日誌行動態新增應用程式和子系統名稱的值。

以下範例示範如何為Kubernetes叢集設定代理,為 JSON 格式的訊息新增自訂應用程式名稱:

  1. 將applicationName新增至日誌行。

    例如,您的日誌行如下所示:{"level":"info", "msg":"Test message", "applicationName":"my-application"}

  2. 將 JSON PARSER 外掛程式加入 logger-agent-iks.yaml 檔案中,將 stingify JSON 轉換為 JSON 物件。 有關更多信息,請參閱 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. 將 PARSER 插件新增至 logger-agent-iks.yaml 檔案以從日誌中提取欄位。 有關詳細信息,請參閱 解析器。

    預設情況下,解析器插件僅在其輸出中保留已解析的欄位。

    [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. 使用 Nest 過濾器外掛程式提取應用程式名稱

    Nest Filter 外掛程式可讓您對巢狀資料進行操作。 它的操作模式是:nest 它會取得一組記錄並將它們放入映射中,以及 lift 它透過鍵獲取映射並提升其記錄。 有關詳細信息,請參閱 嵌套。

    applicationName必須位於頂層,因此,您必須使用 lift 操作。

    [過濾器]名稱嵌套匹配* 操作電梯 Nested_under 訊息通配符applicationName

完成此操作後,上面的日誌行範例的"applicationName"將是該特定行的「my-application」。