配置代理程式以設定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 格式的訊息新增自訂應用程式名稱:
-
將applicationName新增至日誌行。
例如,您的日誌行如下所示:
{"level":"info", "msg":"Test message", "applicationName":"my-application"} -
將 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 -
將 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 -
使用 Nest 過濾器外掛程式提取應用程式名稱
Nest Filter 外掛程式可讓您對巢狀資料進行操作。 它的操作模式是:
nest它會取得一組記錄並將它們放入映射中,以及lift它透過鍵獲取映射並提升其記錄。 有關詳細信息,請參閱 嵌套。applicationName必須位於頂層,因此,您必須使用
lift操作。[過濾器]名稱嵌套匹配* 操作電梯 Nested_under 訊息通配符applicationName
完成此操作後,上面的日誌行範例的"applicationName"將是該特定行的「my-application」。