設定作業套件代理程式

本文詳細說明作業套件代理程式的預設和自訂設定。如果符合下列任一情況,請詳閱這份文件:

  • 變更 Ops Agent 的設定,以達成下列目標:

  • 您想瞭解作業套件代理程式設定的技術詳細資料。

設定模型

Ops Agent 會使用內建的預設設定,您無法直接修改這項內建設定。而是建立覆寫檔案,代理程式重新啟動時,系統會將這些檔案與內建設定合併。

設定的構成要素如下:

  • receivers:這個元素說明代理程式收集的資料。
  • processors:這個元素說明代理程式如何修改收集到的資訊。
  • service:這個元素會將接收器和處理器連結在一起,建立資料流程,稱為「管道」。service 元素包含 pipelines 元素,後者可包含多個管道。

內建設定是由這些元素組成,您可以使用相同元素覆寫內建設定。

內建設定

Ops Agent 的內建設定會定義記錄和指標的預設收集作業。以下顯示 Linux 和 Windows 的內建設定:

Linux

根據預設,Ops Agent 會收集以檔案為基礎的 syslog 記錄和主機指標。

如要進一步瞭解收集的指標,請參閱「接收器擷取的指標」。

logging:
  receivers:
    syslog:
      type: files
      include_paths:
      - /var/log/messages
      - /var/log/syslog
  service:
    pipelines:
      default_pipeline:
        receivers: [syslog]
metrics:
  receivers:
    hostmetrics:
      type: hostmetrics
      collection_interval: 60s
  processors:
    metrics_filter:
      type: exclude_metrics
      metrics_pattern: []
  service:
    pipelines:
      default_pipeline:
        receivers: [hostmetrics]
        processors: [metrics_filter]

Windows

根據預設,Ops Agent 會從 System、Application 和 Security 管道收集 Windows 事件記錄,以及主機指標、IIS 指標和 SQL Server 指標。

如要進一步瞭解收集的指標,請參閱「接收器擷取的指標」。

logging:
  receivers:
    windows_event_log:
      type: windows_event_log
      channels: [System, Application, Security]
  service:
    pipelines:
      default_pipeline:
        receivers: [windows_event_log]
metrics:
  receivers:
    hostmetrics:
      type: hostmetrics
      collection_interval: 60s
    iis:
      type: iis
      collection_interval: 60s
    mssql:
      type: mssql
      collection_interval: 60s
  processors:
    metrics_filter:
      type: exclude_metrics
      metrics_pattern: []
  service:
    pipelines:
      default_pipeline:
        receivers: [hostmetrics, iis, mssql]
        processors: [metrics_filter]

如要進一步瞭解這些設定,請參閱「記錄設定」和「指標設定」。

使用者指定的設定

如要覆寫內建設定,請在使用者設定檔中新增設定元素。將 Ops Agent 的設定放入下列檔案:

  • Linux:/etc/google-cloud-ops-agent/config.yaml
  • Windows:C:\Program Files\Google\Cloud Operations\Ops Agent\config\config.yaml

代理程式重新啟動時,系統會將使用者指定的任何設定與內建設定合併。

如要覆寫內建接收器、處理器或管道,請在 config.yaml 檔案中重新定義,並宣告相同的 ID。從 Ops Agent 2.31.0 版開始,您也可以設定代理程式的記錄輪替功能;詳情請參閱「在 Ops Agent 中設定記錄輪替」。

舉例來說,指標的內建設定包含 hostmetrics 接收器,指定 60 秒的收集間隔。如要將主機指標的收集間隔變更為 30 秒,請在 config.yaml 檔案中加入名為 hostmetrics 的指標接收器,將 collection_interval 值設為 30 秒,如下列範例所示:

metrics:
  receivers:
    hostmetrics:
      type: hostmetrics
      collection_interval: 30s

如需變更內建設定的其他範例,請參閱「記錄設定」和「指標設定」。您也可以關閉記錄或指標資料的收集功能。這些變更說明請參閱「記錄 service 設定」和「指標 service 設定」範例。

您可以使用這個檔案,防止代理程式收集自我記錄,並將這些記錄傳送至 Cloud Logging。詳情請參閱「收集自我記錄」。

您也可以使用這個檔案設定代理程式的記錄輪替功能;詳情請參閱「在 Ops Agent 中設定記錄輪替」。

您無法將 Ops Agent 設為將記錄或指標匯出至 Cloud Logging 和 Cloud Monitoring 以外的服務。

記錄設定

logging 設定會使用先前說明的設定模型:

  • receivers:這個元素說明要從記錄檔收集的資料;這項資料會對應至 <時間戳記、記錄> 模型。
  • processors:這個選用元素說明代理程式如何修改收集到的資訊。
  • service:這個元素會將接收器和處理器連結在一起,建立資料流程,稱為「管道」。service 元素包含 pipelines 元素,其中可包含多個管道定義。

每個接收器和處理器都可用於多個管道。

以下各節將說明這些元素。

Ops Agent 會將記錄傳送至 Cloud Logging。您無法設定將記錄檔匯出至其他服務。不過,您可以設定 Cloud Logging 匯出記錄;詳情請參閱「將記錄轉送至支援的目的地」。

記錄接收器

receivers 元素包含一組接收器,每個接收器都由 RECEIVER_ID 識別。接收器說明如何擷取記錄,例如透過追蹤檔案、使用 TCP 連接埠,或從 Windows 事件記錄檔擷取。

記錄接收端的結構

每個接收器都必須有 ID RECEIVER_ID,並包含 type 元素。有效類型包括:

  • files:透過追蹤磁碟上的檔案來收集記錄。
  • fluent_forward (Ops Agent 2.12.0 以上版本):收集透過 TCP 傳送的 Fluent Forward 通訊協定記錄。
  • tcp (Ops Agent 2.3.0 以上版本): 監聽 TCP 通訊埠,以 JSON 格式收集記錄。
  • 僅適用於 Linux:
    • syslog:透過 TCP 或 UDP 收集 Syslog 訊息。
    • systemd_journald (Ops Agent 2.4.0 以上版本):從 systemd-journald 服務收集 systemd 日誌記錄。
  • 僅限 Windows:
    • windows_event_log:使用 Windows 事件記錄 API 收集 Windows 事件記錄。
  • 第三方應用程式記錄接收器

receivers 結構如下所示:

receivers:
  RECEIVER_ID:
    type: files
    ...
  RECEIVER_ID_2:
    type: syslog
    ...

視 type 元素的值而定,可能還有其他設定選項,如下所示:

  • files 接收器:

    • include_paths:必填,要讀取的檔案系統路徑清單,方法是追蹤每個檔案。路徑中可使用下列萬用字元:

      • *:比對單一目錄或檔案名稱中,任何非路徑分隔符的字元序列。

        • 範例 (Linux):/var/log/*.log 會比對 /var/log/ 中直接結尾為 .log 的所有檔案。
        • 範例 (Linux):/var/log/app_*/server.log 符合 /var/log/app_1/server.log 和 /var/log/app_2/server.log,但不符合 /var/log/app_1/v2/server.log。
      • ** (globstar):比對路徑中零個以上的目錄。這個模式用於比對多個目錄層級 (遞迴) 的檔案。

        • 範例 (Linux):/var/log/**/*.log 會比對 /var/log 或其任何深度的子目錄中,結尾為 .log 的任何檔案 (例如 /var/log/app1.log、/var/log/apache2/access.log)。
        • 範例 (Linux):如要從建立版本或執行個體專屬子目錄 (例如 /opt/my-app/logs/instance-01/app.log、/opt/my-app/logs/groupA/instance-02/app.log) 的應用程式執行個體收集記錄,可以使用 globstar:/opt/my-app/logs/**/*.log

      如需常見的 Linux 應用程式記錄檔清單,請參閱「常見的 Linux 記錄檔」。

    • exclude_paths:選用。要從 include_paths 比對的集合中排除的檔案系統路徑模式清單。

    • record_log_file_path:選用。如果設為 true,輸出記錄項目中就會顯示記錄記錄的來源檔案路徑,做為 agent.googleapis.com/log_file_path 標籤的值。使用萬用字元時,系統只會記錄取得記錄的檔案路徑。

    • wildcard_refresh_interval:選用。重新整理 include_paths 中萬用字元檔案路徑的間隔。以時間長度表示,例如 30s、2m。在記錄吞吐量較高的情況下,如果記錄檔的輪替速度比預設間隔快,這個屬性就可能派上用場。如未指定,預設間隔為 60 秒。

  • fluent_forward 接收器:

    • listen_host:選用。要接聽的 IP 位址。 預設值為 127.0.0.1。

    • listen_port:選用。要監聽的通訊埠。 預設值為 24224。

  • syslog 接收器 (僅限 Linux):

    • transport_protocol:支援的值:tcp、udp。

    • listen_host:要接聽的 IP 位址。

    • listen_port:要接聽的通訊埠。

  • tcp 接收器:

    • format:必填,記錄格式。支援的值:json。

    • listen_host:選用。要接聽的 IP 位址。 預設值為 127.0.0.1。

    • listen_port:選用。要監聽的通訊埠。 預設值為 5170。

  • windows_event_log 接收器 (僅適用於 Windows):

    • channels:必填,要從中讀取記錄的 Windows 事件記錄通道清單。
    • receiver_version:選用。控制要使用的 Windows 事件記錄 API。 支援的值為 1 和 2。預設值為 1。

    • render_as_xml:選用。如果設為 true,則除了 jsonPayload.Message 和 jsonPayload.StringInserts 以外的所有事件記錄欄位,都會在名為 jsonPayload.raw_xml 的字串欄位中,以 XML 文件的形式呈現。預設值為 false。如果 receiver_version 為 1,就無法將此值設為 true。

記錄接收器範例

files 接收器範例:

receivers:
  RECEIVER_ID:
    type: files

    include_paths: [/var/log/*.log]
    exclude_paths: [/var/log/not-this-one.log]
    record_log_file_path: true

fluent_forward 接收器範例:

receivers:
  RECEIVER_ID:
    type: fluent_forward

    listen_host: 127.0.0.1
    listen_port: 24224

範例 syslog 接收器 (僅限 Linux):

receivers:
  RECEIVER_ID:
    type: syslog

    transport_protocol: tcp
    listen_host: 0.0.0.0
    listen_port: 5140

tcp 接收器範例:

receivers:
  RECEIVER_ID:
    type: tcp

    format: json
    listen_host: 127.0.0.1
    listen_port: 5170

範例接收器 (僅限 Windows):windows_event_log

receivers:
  RECEIVER_ID:
    type: windows_event_log

    channels: [System,Application,Security]

範例 windows_event_log 接收器會覆寫內建接收器,改用版本 2:

receivers:
  windows_event_log:
    type: windows_event_log

    channels: [System,Application,Security]
    receiver_version: 2

systemd_journald 接收器範例:

receivers:
  RECEIVER_ID:
    type: systemd_journald

結構化酬載中的特殊欄位

對於可擷取結構化資料的處理器和接收器 (fluent_forward 和 tcp 接收器,以及 parse_json 處理器),您可以在輸入內容中設定特殊欄位,這些欄位會對應至代理程式寫入 Logging API 的 LogEntry 物件中的特定欄位。

Ops Agent 收到外部結構化記錄資料時,會將頂層欄位放入 LogEntry 的 jsonPayload 欄位,但欄位名稱列於下表時除外:

記錄欄位 LogEntry 欄位

選項 1


"timestamp": {
  "seconds": CURRENT_SECONDS,
  "nanos": CURRENT_NANOS,
}

選項 2


{
  "timestampSeconds": CURRENT_SECONDS,
  "timestampNanos": CURRENT_NANOS,
}
timestamp
receiver_id (不是記錄欄位) logName
logging.googleapis.com/httpRequest (HttpRequest) httpRequest
logging.googleapis.com/severity (字串) severity
logging.googleapis.com/labels (字串:字串的結構體) labels
logging.googleapis.com/operation (struct) operation
logging.googleapis.com/sourceLocation (struct) sourceLocation
logging.googleapis.com/trace (字串) trace
logging.googleapis.com/spanId (字串) spanId

其餘結構化記錄欄位仍屬於 jsonPayload 結構。

常見的 Linux 記錄檔

下表列出常用 Linux 應用程式的常見記錄檔:

應用程式 常見記錄檔
Apache 如要瞭解 Apache 記錄檔,請參閱「 監控第三方應用程式:Apache 網路伺服器」。
cassandra 如要瞭解 Cassandra 記錄檔,請參閱 監控第三方應用程式:Cassandra。
廚師 /var/log/chef-server/bookshelf/current
/var/log/chef-server/chef-expander/current
/var/log/chef-server/chef-pedant/http-traffic.log
/var/log/chef-server/chef-server-webui/current
/var/log/chef-server/chef-solr/current
/var/log/chef-server/erchef/current
/var/log/chef-server/erchef/erchef.log.1
/var/log/chef-server/nginx/access.log
/var/log/chef-server/nginx/error.log
/var/log/chef-server/nginx/rewrite-port-80.log
/var/log/chef-server/postgresql/current
gitlab /home/git/gitlab/log/application.log
/home/git/gitlab/log/githost.log
/home/git/gitlab/log/production.log
/home/git/gitlab/log/satellites.log
/home/git/gitlab/log/sidekiq.log
/home/git/gitlab/log/unicorn.stderr.log
/home/git/gitlab/log/unicorn.stdout.log
/home/git/gitlab-shell/gitlab-shell.log
jenkins /var/log/jenkins/jenkins.log
jetty /var/log/jetty/out.log
/var/log/jetty/*.request.log
/var/log/jetty/*.stderrout.log
joomla /var/www/joomla/logs/*.log
magento /var/www/magento/var/log/exception.log
/var/www/magento/var/log/system.log
/var/www/magento/var/report/*
mediawiki /var/log/mediawiki/*.log
memcached 如要瞭解 Memcached 記錄檔,請參閱「 監控第三方應用程式:Memcached」。
MongoDB 如要瞭解 MongoDB 記錄檔,請參閱「 監控第三方應用程式:MongoDB」。
mysql 如要瞭解 MySQL 記錄檔,請參閱「 監控第三方應用程式:MySQL」。
nginx 如要瞭解 nginx 記錄檔,請參閱 監控第三方應用程式:nginx。
postgres 如要瞭解 PostgreSQL 記錄檔,請參閱 監控第三方應用程式:PostgreSQL。
傀儡 /var/log/puppet/http.log
/var/log/puppet/masterhttp.log
puppet-enterprise /var/log/pe-activemq/activemq.log
/var/log/pe-activemq/wrapper.log
/var/log/pe-console-auth/auth.log
/var/log/pe-console-auth/cas_client.log
/var/log/pe-console-auth/cas.log
/var/log/pe-httpd/access.log
/var/log/pe-httpd/error.log
/var/log/pe-httpd/other_vhosts_access.log
/var/log/pe-httpd/puppetdashboard.access.log
/var/log/pe-httpd/puppetdashboard.error.log
/var/log/pe-httpd/puppetmasteraccess.log
/var/log/pe-mcollective/mcollective_audit.log
/var/log/pe-mcollective/mcollective.log
/var/log/pe-puppet-dashboard/certificate_manager.log
/var/log/pe-puppet-dashboard/event-inspector.log
/var/log/pe-puppet-dashboard/failed_reports.log
/var/log/pe-puppet-dashboard/live-management.log
/var/log/pe-puppet-dashboard/mcollective_client.log
/var/log/pe-puppet-dashboard/production.log
/var/log/pe-puppetdb/pe-puppetdb.log
/var/log/pe-puppet/masterhttp.log
/var/log/pe-puppet/rails.log
rabbitmq 如要瞭解 RabbitMQ 記錄檔,請參閱「 監控第三方應用程式:RabbitMQ」。
redis 如要瞭解 Redis 記錄檔,請參閱 監控第三方應用程式:Redis。
redmine /var/log/redmine/*.log
鹽 /var/log/salt/key
/var/log/salt/master
/var/log/salt/minion
/var/log/salt/syndic.loc
solr 如要瞭解 Apache Solr 記錄檔,請參閱「 監控第三方應用程式:Apache Solr」。
sugarcrm /var/www/*/sugarcrm.log
syslog /var/log/syslog
/var/log/messages
tomcat 如要瞭解 Apache Tomcat 記錄檔,請參閱「 監控第三方應用程式:Apache Tomcat」。
zookeeper 如要瞭解 Apache ZooKeeper 記錄檔,請參閱 監控第三方應用程式:Apache ZooKeeper。

預設擷取的標籤

根據預設,記錄檔可在 LogEntry 中包含下列標籤:

欄位 範例值 說明
labels."compute.googleapis.com/resource_name" test_vm 此記錄的來源虛擬機器名稱。適用於所有記錄。
labels."logging.googleapis.com/instrumentation_source" agent.googleapis.com/apache_access 接收器 type 的值,此記錄即源自該接收器,並以 agent.googleapis.com/ 為前置字元。只能由第三方整合服務的接收者撰寫。

記錄處理器

選用的 processors 元素包含一組處理指令,每個指令都以 PROCESSOR_ID 識別。處理器說明如何操控接收器收集的資訊。

每個處理器都必須有不重複的 ID,並包含 type 元素。有效類型包括:

  • parse_json:剖析 JSON 格式的結構化記錄。
  • parse_multiline:剖析多行記錄。(僅限 Linux)
  • parse_regex:透過正則運算式模式剖析文字格式的記錄,將其轉換為 JSON 格式的結構化記錄。
  • exclude_logs:排除符合指定規則的記錄 (2.9.0 版起)。
  • modify_fields:設定/轉換記錄項目中的欄位 (2.14.0 以上版本)。

processors 結構如下所示:

processors:
  PROCESSOR_ID:
    type: parse_json
    ...
  PROCESSOR_ID_2:
    type: parse_regex
    ...

視 type 元素的值而定,還有其他設定選項,如下所示。

parse_json 處理器

設定結構

processors:
  PROCESSOR_ID:
    type: parse_json

    time_key:    <field name within jsonPayload>
    time_format: <strptime format string>

parse_json 處理器會將輸入 JSON 剖析至 LogEntry 的 jsonPayload 欄位。如要剖析