Ops-Agent konfigurieren

Dieses Dokument enthält Details zu den standardmäßigen und benutzerdefinierten Konfigurationen des Ops-Agents. Lesen Sie dieses Dokument, wenn einer der folgenden Punkte auf Sie zutrifft:

  • Sie möchten die Konfiguration des Ops-Agents ändern, um folgende Ziele zu erreichen:

    • Integrierte Aufnahme von Logging oder Messwerten deaktivieren.

    • Passen Sie den Dateipfad der Logdateien an, aus denen der Agent Logs erfasst. Siehe Logging-Empfänger.

    • Passen Sie das strukturierte Logformat an, das der Agent zum Verarbeiten der Logeinträge verwendet. Parsen Sie dazu das JSON-Format oder verwenden Sie reguläre Ausdrücke. Siehe Logging-Prozessoren.

    • Weitere Informationen zum Ändern der Sampling-Rate für Messwerte ändern finden Sie unter Messwertempfänger.

    • Legen Sie fest, welche Gruppe oder Gruppen von Messwerten aktiviert werden sollen. Der Agent erfasst standardmäßig alle Systemmesswerte, wie cpu und memory. Siehe Messwertprozessoren.

  • Sie interessieren sich für die technischen Details der Konfiguration des Ops-Agents.

Der Ops-Agent bietet auch Konfigurationsanweisungen zum Erfassen von Messwerten und Logs aus unterstützten Drittanbieteranwendungen. Eine Liste der unterstützten Anwendungen finden Sie unter Anwendungen von Drittanbietern beobachten.

Konfigurationsmodell

Der Ops-Agent verwendet eine integrierte Standardkonfiguration. Sie können diese integrierte Konfiguration nicht direkt ändern. Stattdessen erstellen Sie eine Datei mit Überschreibungen, die bei einem Neustart des Agents mit der integrierten Konfiguration zusammengeführt werden.

Die Konfiguration hat folgende Bausteine:

  • receivers: Dieses Element beschreibt, was der Agent erfasst.
  • processors: Dieses Element beschreibt, wie der Agent die erfassten Informationen ändern kann.
  • service: Dieses Element verknüpft Empfänger und Prozessoren zu Datenflüssen, die als Pipelines bezeichnet werden. Das service-Element enthält ein pipelines-Element, das mehrere Pipelines enthalten kann.

Die integrierte Konfiguration besteht aus diesen Elementen. Sie verwenden dieselben Elemente, um diese integrierte Konfiguration zu überschreiben.

Integrierte Konfiguration

Die integrierte Konfiguration für den Ops-Agent definiert die Standardsammlung für Logs und Messwerte. Im Folgenden sehen Sie die integrierte Konfiguration für Linux und Windows:

Linux

Der Ops-Agent erfasst standardmäßig dateibasierte syslog-Logs und Hostmesswerte.

Weitere Informationen zu den erfassten Messwerten finden Sie unter Von den Empfängertypen aufgenommene Messwerte.

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

Der Ops-Agent erfasst standardmäßig Windows-Ereignislogs von den Kanälen System, Application und Security sowie Hostmesswerte, IIS-Messwerte und SQL Server-Messwerte.

Weitere Informationen zu den erfassten Messwerten finden Sie unter Von den Empfängertypen aufgenommene Messwerte.

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]

Diese Konfigurationen werden in der Logging-Konfiguration und der Messwertkonfiguration ausführlicher erläutert.

Vom Nutzer angegeben Konfiguration

Wenn Sie die integrierte Konfiguration überschreiben möchten, fügen Sie der Nutzerkonfigurationsdatei neue Konfigurationselemente hinzu. Fügen Sie Ihre Konfiguration für den Ops-Agent in die folgenden Dateien ein:

  • Für Linux: /etc/google-cloud-ops-agent/config.yaml.

  • Für Windows: C:\Program Files\Google\Cloud Operations\Ops Agent\config\config.yaml.

Jede benutzerdefinierte Konfiguration wird beim Neustart des Agents mit der integrierten Konfiguration zusammengeführt.

Wenn Sie einen integrierten Empfänger, Prozessor oder Pipeline überschreiben möchten, definieren Sie sie in Ihrer config.yaml-Datei neu, indem Sie sie mit derselben Kennzeichnung deklarieren.

Die integrierte Konfiguration für Messwerte enthält beispielsweise einen hostmetrics-Empfänger, der ein Erfassungsintervall von 60 Sekunden angibt. So ändern Sie das Erfassungsintervall für Hostmesswerte in 30 Sekunden: Fügen Sie der Datei config.yaml einen Messwertempfänger mit dem Namen hostmetrics hinzu, der den Wert collection_interval auf 30 Sekunden festlegt. Beispiel:

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

Weitere Beispiele zum Ändern der integrierten Konfigurationen finden Sie unter Logging-Konfiguration und Messwertkonfiguration.

Sie können auch die Erfassung von Logging- oder Messwertdaten deaktivieren. Diese Änderungen werden in den Beispielen für Logging-service-Konfigurationen und Messwert-service-Konfigurationen beschrieben.

Logging-Konfigurationen

Die logging-Konfiguration verwendet das zuvor beschriebene Konfigurationsmodell:

  • receivers: Dieses Element beschreibt die aus Logdateien zu erfassenden Daten. Diese Daten werden einem <timestamp, record>-Modell zugeordnet.
  • processors: Dieses optionale Element beschreibt, wie der Agent die erfassten Informationen ändern kann.
  • service: Dieses Element verknüpft Empfänger und Prozessoren zu Datenflüssen, die als Pipelines bezeichnet werden. Das service-Element enthält ein pipelines-Element, das mehrere Pipelinedefinitionen enthalten kann.

Jeder Empfänger und jeder Prozessor kann in mehreren Pipelines verwendet werden.

In den folgenden Abschnitten werden die einzelnen Elemente beschrieben.

Logging-Empfänger

Das receivers-Element enthält eine Reihe von Empfängern, die jeweils durch ein RECEIVER_ID identifiziert werden. Ein Empfänger beschreibt, wie die Logs abgerufen werden, beispielsweise durch Tailing von Dateien, mithilfe eines TCP-Ports oder aus dem Windows-Ereignislog.

Struktur von Logging-Empfängern

Jeder Empfänger muss die Kennzeichnung RECEIVER_ID haben und ein type-Element enthalten. Gültige Typen:

  • files: Logs durch Tailing von Dateien auf dem Laufwerk erfassen.
  • fluent_forward (verfügbar mit Ops-Agent-Versionen ab 2.12.0): Erfassen Sie Logs, die mit dem Fluent Forward-Protokoll über TCP gesendet werden.
  • syslog: Syslog über TCP oder UDP erfassen.
  • tcp (verfügbar mit Ops-Agent-Versionen ab 2.3.0): JSON-Formatlogs durch Überwachen eines TCP-Ports erfassen.
  • windows_event_log (nur Windows): Windows-Ereignislogs erfassen.
  • systemd_journald (verfügbar mit Ops-Agent-Versionen ab 2.4.0 unter Linux): Logs vom systemd-journald-Dienst erfassen.
  • Empfänger der Anwendungslogs von Drittanbietern

Die receivers-Struktur sieht so aus:

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

Je nach Wert des Elements type gibt es möglicherweise weitere Konfigurationsoptionen:

  • files Empfänger:

    • include_paths: erforderlich. Eine Liste mit Dateisystempfaden, die durch Tailing jeder Datei gelesen werden sollen. In den Pfaden kann ein Platzhalter (*) verwendet werden. Beispiel: /var/log/*.log (Linux) oder C:\logs\*.log (Windows).

      Eine Liste häufig verwendeter Linux-Anwendungslogdateien finden Sie unter Häufig verwendete Linux-Logdateien.

    • exclude_paths: Optional. Eine Liste von Dateisystempfadmustern, die aus dem mit include_paths übereinstimmenden Satz ausgeschlossen werden sollen.

    • record_log_file_path: Optional. Wenn true festgelegt ist, wird der Pfad zu der spezifischen Datei, aus der der Logdatensatz abgerufen wurde, im Ausgabelogeintrag als Wert des Labels agent.googleapis.com/log_file_path angezeigt. Bei Verwendung eines Platzhalters wird nur der Pfad der Datei aufgezeichnet, aus der der Eintrag abgerufen wurde.

    • wildcard_refresh_interval: Optional. Das Intervall, in dem Platzhalterdateipfade in include_paths aktualisiert werden. Wird als Zeitdauer angegeben, z. B. 30s, 2m. Dieses Attribut kann bei hohen Logging-Durchsätzen nützlich sein, wenn Logdateien schneller als das Standardintervall rotiert werden. Wenn keine Angabe erfolgt, beträgt das Standardintervall 60 Sekunden.

  • fluent_forward Empfänger:

    • listen_host: Optional. Eine IP-Adresse, die überwacht werden soll. Der Standardwert ist 127.0.0.1.

    • listen_port: Optional. Ein Port, der überwacht werden soll. Der Standardwert ist 24224.

  • syslog Empfänger:

    • transport_protocol: Optional. Unterstützte Werte: tcp; udp. Der Standardwert ist tcp.

      Folgende Optionen können verwendet werden:

      • listen_host: Optional. Eine IP-Adresse, die überwacht werden soll. Der Standardwert ist 0.0.0.0.

      • listen_port: Optional. Ein Port, der überwacht werden soll. Der Standardwert ist 5140.

  • tcp Empfänger:

    • format: erforderlich. Logformat Unterstützter Wert: json.

    • listen_host: Optional. Eine IP-Adresse, die überwacht werden soll. Der Standardwert ist 127.0.0.1.

    • listen_port: Optional. Ein Port, der überwacht werden soll. Der Standardwert ist 5170.

  • windows_event_log-Empfänger (nur für Windows):

    • channels: erforderlich. Eine Liste der Windows-Ereignis-Log-Kanäle, aus denen Logs gelesen werden sollen.

Beispiele für Logging-Empfänger

Beispiel-files-Empfänger:

receivers:
  RECEIVER_ID:
    type: files

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

Beispiel-fluent_forward-Empfänger:

receivers:
  RECEIVER_ID:
    type: fluent_forward

    listen_host: 127.0.0.1
    listen_port: 24224

Beispiel-syslog-Empfänger:

receivers:
  RECEIVER_ID:
    type: syslog

    transport_protocol: tcp
    listen_host: 0.0.0.0
    listen_port: 5140

Beispiel-tcp-Empfänger:

receivers:
  RECEIVER_ID:
    type: tcp

    format: json
    listen_host: 127.0.0.1
    listen_port: 5170

Beispiel-windows_event_log-Empfänger (nur Windows):

receivers:
  RECEIVER_ID:
    type: windows_event_log

    channels: [System,Application,Security]

Beispiel-systemd_journald-Empfänger:

receivers:
  RECEIVER_ID:
    type: systemd_journald

Spezielle Felder in strukturierten Nutzlasten

Für Prozessoren und Empfänger, die strukturierte Daten aufnehmen können (die Empfänger fluent_forward und tcp und der Prozessor parse_json), können Sie in der Eingabe spezielle Felder festlegen, die speziellen Feldern im Objekt LogEntry zugeordnet sind, das der Agent in die Logging API schreibt.

Wenn der Ops-Agent externe strukturierte Logdaten empfängt, werden die Felder der obersten Ebene in das Feld jsonPayload von LogEntry eingefügt, sofern der Feldname nicht in der folgenden Tabelle aufgeführt ist:

Eintragsfeld LogEntry-Feld

Option 1



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

Option 2



{
  "timestampSeconds": CURRENT_SECONDS,
  "timestampNanos": CURRENT_NANOS,
}
timestamp
receiver_id (kein Eintragsfeld) logName
logging.googleapis.com/httpRequest([string](/logging/docs/reference/v2/rest/v2/LogEntry#httprequest)) httpRequest
logging.googleapis.com/severity ([string](/logging/docs/reference/v2/rest/v2/LogEntry#logentrysourcelocation)) severity
logging.googleapis.com/labels (Struktur von string:string) labels
logging.googleapis.com/operation ([struct](/logging/docs/reference/v2/rest/v2/LogEntry#logentryoperation)) operation
logging.googleapis.com/sourceLocation ([struct](/logging/docs/reference/v2/rest/v2/LogEntry#logentrysourcelocation)) sourceLocation

Alle verbleibenden strukturierten Eintragsfelder bleiben Teil der jsonPayload-Struktur.

Häufig verwendete Linux-Logdateien

In der folgenden Tabelle sind häufig verwendete Logdateien für häufig verwendete Linux-Anwendungen aufgeführt:

Anwendung Häufig verwendete Logdateien
apache Informationen zu Apache-Logdateien finden Sie unter Anwendungen von Drittanbietern beobachten: Apache-Webserver.
cassandra Informationen zu Cassandra-Logdateien finden Sie unter Anwendungen von Drittanbietern beobachten: Cassandra.
chef /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 Informationen zu Memcache-Log-Dateien finden Sie unter Anwendungen von Drittanbietern überwachen: Memcached.
mongodb Informationen zu MongoDB-Logdateien finden Sie unter Anwendungen von Drittanbietern überwachen: MongoDB.
mysql Informationen zu MySQL-Logdateien finden Sie unter Anwendungen von Drittanbietern beobachten: MySQL.
nginx Weitere Informationen zu nginx-Logdateien finden Sie unter Anwendungen von Drittanbietern überwachen: nginx.
postgres Weitere Informationen zu PostgreSQL-Logdateien finden Sie unter Anwendungen von Drittanbietern überwachen: PostgreSQL.
puppet /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 Informationen zu RabbitMQ-Logdateien finden Sie unter Anwendungen von Drittanbietern überwachen: RabbitMQ.
redis Informationen zu Redis-Logdateien finden Sie unter Anwendungen von Drittanbietern beobachten: Redis.
redmine /var/log/redmine/*.log
salt /var/log/salt/key
/var/log/salt/master
/var/log/salt/minion
/var/log/salt/syndic.loc
solr Informationen zu Apache Solr-Logdateien finden Sie unter Anwendungen von Drittanbietern überwachen: Apache Solr.
sugarcrm /var/www/*/sugarcrm.log
syslog /var/log/syslog/var/log/messages
tomcat Informationen zu Apache Tomcat-Logdateien finden Sie unter Anwendungen von Drittanbietern überwachen: Apache Tomcat.
zookeeper Informationen zu Apache ZooKeeper-Logdateien finden Sie unter Anwendungen von Drittanbietern überwachen: Apache ZooKeeper.

Standardmäßig aufgenommene Labels

Logs können standardmäßig die folgenden Labels im LogEntry enthalten:

Feld Beispielwert Beschreibung
labels."compute.googleapis.com/resource_name" test_vm Der Name der virtuellen Maschine, von der dieses Log stammt. Für alle Logs geschrieben.
labels."logging.googleapis.com/instrumentation_source" agent.googleapis.com/apache_access Der Wert des Empfängers type, aus dem das Log stammt, mit dem Präfix agent.googleapis.com/. Nur von Empfängern aus Drittanbieterintegrationen geschrieben.

Logging-Prozessoren

Das optionale Element processors enthält eine Reihe von Verarbeitungsanweisungen, die jeweils durch eine PROCESSOR_ID identifiziert werden. Ein Prozessor beschreibt, wie die von einem Empfänger erfassten Informationen bearbeitet werden.

Jeder Prozessor muss eine eindeutige Kennzeichnung haben und ein type-Element enthalten. Gültige Typen:

  • parse_json: Parst strukturierte Logs im JSON-Format.
  • parse_multiline: Parst mehrzeilige Logs. (Nur Linux)
  • parse_regex: Parst Logs im Textformat über Regex-Muster, um sie in strukturierte Logs im JSON-Format zu konvertieren.
  • exclude_logs: Schließt Logs aus, die bestimmten Regeln entsprechen (ab 2.9.0).
  • modify_fields: Felder in Logeinträgen festlegen/transformieren (ab 2.14.0).

Die processors-Struktur sieht so aus:

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

Je nach Wert des Elements type gibt es weitere Konfigurationsoptionen.

parse_json-Prozessor

Konfigurationsstruktur

processors:
  PROCESSOR_ID:
    type: parse_json

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

Der Prozessor parse_json parst die JSON-Eingabe in das Feld jsonPayload von LogEntry. Andere Teile von LogEntry können geparst werden, indem spezielle Felder der obersten Ebene festgelegt werden.

  • time_key: Optional. Wenn der Logeintrag ein Feld mit einem Zeitstempel bereitstellt, gibt diese Option den Namen dieses Feldes an. Der extrahierte Wert wird zum Festlegen des Felds timestamp des resultierenden LogEntry verwendet und aus der Nutzlast entfernt.

    Wenn die Option time_key angegeben ist, müssen Sie auch Folgendes angeben:

    • time_format: Erforderlich, wenn time_key verwendet wird. Mit dieser Option wird das Format des Feldes time_key angegeben, damit es erkannt und richtig analysiert werden kann. Weitere Informationen zum Format finden Sie im Leitfaden strptime(3).
Konfigurationsbeispiel
processors:
  PROCESSOR_ID:
    type: parse_json

    time_key:    time
    time_format: "%Y-%m-%dT%H:%M:%S.%L%Z"

Prozessor parse_multiline

Konfigurationsstruktur

processors:
  PROCESSOR_ID:
    type: parse_multiline

    match_any:
    - type: <type of the exceptions>
      language: <language name>
  • match_any: erforderlich. Eine Liste mit einer oder mehreren Regeln.

    • type: erforderlich. Es wird nur ein einziger Wert unterstützt:

      • language_exceptions: Ermöglicht dem Prozessor, Ausnahmen basierend auf dem Wert der Option language zu einem LogEntry zu verketten.
    • language: erforderlich. Es wird nur ein einziger Wert unterstützt:

      • java: Verkettet gängige Java-Ausnahmen zu einem LogEntry.
Konfigurationsbeispiel
processors:
  PROCESSOR_ID:
    type: parse_multiline

    match_any:
    - type: language_exceptions
      language: java

Prozessor parse_regex

Konfigurationsstruktur

processors:
  PROCESSOR_ID:
    type: parse_regex

    regex: <regular expression>

    time_key:    <field name within jsonPayload>
    time_format: <format string>
  • time_key: Optional. Wenn der Logeintrag ein Feld mit einem Zeitstempel bereitstellt, gibt diese Option den Namen dieses Feldes an. Der extrahierte Wert wird zum Festlegen des Felds timestamp des resultierenden LogEntry verwendet und aus der Nutzlast entfernt.

    Wenn die Option time_key angegeben ist, müssen Sie auch Folgendes angeben:

    • time_format: Erforderlich, wenn time_key verwendet wird. Mit dieser Option wird das Format des Feldes time_key angegeben, damit es erkannt und richtig analysiert werden kann. Weitere Informationen zum Format finden Sie im Leitfaden strptime(3).
  • regex: erforderlich. Der reguläre Ausdruck zum Parsen des Feldes. Der Ausdruck muss Schlüsselnamen für die übereinstimmenden Unterausdrücke enthalten, z. B. "^(?<time>[^ ]*) (?<severity>[^ ]*) (?<msg>.*)$".

    Der von benannten Erfassungsgruppen übereinstimmende Text wird in Feldern im Feld jsonPayload von LogEntry abgelegt. Verwenden Sie den Prozessor modify_fields, um Ihren Logs eine zusätzliche Struktur hinzuzufügen.

    Eine Reihe regulärer Ausdrücke zum Extrahieren von Informationen aus häufig verwendeten Linux-Anwendungslogdateien finden Sie unter Häufig verwendete Linux-Logdateien.

Konfigurationsbeispiel
processors:
  PROCESSOR_ID:
    type: parse_regex

    regex:       "^(?<time>[^ ]*) (?<severity>[^ ]*) (?<msg>.*)$"
    time_key:    time
    time_format: "%Y-%m-%dT%H:%M:%S.%L%Z"

Prozessor exclude_logs

Konfigurationsstruktur:

type: exclude_logs
match_any:
  - <filter>
  - <filter>

Die übergeordnete Konfiguration für diesen Prozessor enthält ein einzelnes Feld (match_any), das eine Liste von Filterregeln enthält.

  • match_any: erforderlich. Eine Liste mit einer oder mehreren Regeln. Wenn ein Logeintrag mit einer Regel übereinstimmt, nimmt der Ops-Agent diesen Eintrag nicht auf.

    Die vom Ops-Agent aufgenommenen Logs folgen der LogEntry-Struktur. Bei Feldnamen wird zwischen Groß- und Kleinschreibung unterschieden. Sie können Regeln nur basierend auf den folgenden Feldern und ihren Unterfeldern angeben:

    • httpRequest
    • jsonPayload
    • labels
    • operation
    • severity
    • sourceLocation

    Die folgende Beispielregel

    severity =~ "(DEBUG|INFO)"
    

    verwendet einen regulären Ausdruck, um alle Logs auf DEBUG- und INFO-Ebene auszuschließen.

    Regeln folgen der Syntax der Cloud Logging-Abfragesprache, unterstützen jedoch nur einen Teil der Funktionen, die von der Logging-Abfragesprache unterstützt werden:

    • Vergleichsoperatoren: =, !=, :, =~, !~. Es werden nur Stringvergleiche unterstützt.
    • Navigationsoperator: .. Beispiel: jsonPayload.message.
    • Boolesche Operatoren: AND, OR, NOT.
    • Ausdrücke mit ( ) gruppieren.

Konfigurationsbeispiel

processors:
  PROCESSOR_ID:
    type: exclude_logs
    match_any:
    - '(jsonPayload.message =~ "log spam 1" OR jsonPayload.message =~ "log spam 2") AND severity = "ERROR"'
    - 'jsonPayload.application = "foo" AND severity = "INFO"'

Prozessor modify_fields

Der Prozessor modify_fields ermöglicht die Anpassung der Struktur und des Inhalts von Logeinträgen.

Konfigurationsstruktur

type: modify_fields
fields:
  <destination field>:
    # Source
    move_from: <source field>
    copy_from: <source field>
    static_value: <string>

    # Mutation
    default_value: <string>
    map_values:
      <old value>: <new value>
    type: {integer|float}
    omit_if: <filter>

Die übergeordnete Konfiguration für diesen Prozessor enthält ein einzelnes Feld (fields), das eine Zuordnung von Ausgabefeldnamen und entsprechenden Übersetzungen enthält. Für jedes Ausgabefeld werden eine optionale Quelle und null oder mehr Mutationsvorgänge angewendet.

Alle Feldnamen verwenden die durch Punkte getrennte Syntax aus der Cloud Logging-Abfragesprache. Filter verwenden die Cloud Logging-Abfragesprache.

Alle Transformationen werden parallel angewendet. Das bedeutet, dass Quellen und Filter den ursprünglichen Eingabe-Logeintrag bearbeiten und daher nicht auf den neuen Wert anderer Felder verweisen können, die vom selben Prozessor geändert werden.

Quelloptionen: Es ist höchstens eine angegebene Quelle zulässig.

  • Keine Quelle angegeben

    Wenn kein Quellwert angegeben ist, wird der vorhandene Wert im Zielfeld geändert.

  • move_from: <source field>

    Der Wert von <source field> wird als Quelle für das Zielfeld verwendet. Darüber hinaus wird <source field> aus dem Logeintrag entfernt. Wenn auf ein Quellfeld sowohl von move_from als auch von copy_from verwiesen wird, wird das Quellfeld entfernt.

  • copy_from: <source field>

    Der Wert von <source field> wird als Quelle für das Zielfeld verwendet. <source field> wird nur dann aus dem Logeintrag entfernt, wenn auch ein move_from-Vorgang auf ihn verweist oder anderweitig geändert wird.

  • static_value: <string>

    Der statische String <string> wird als Quelle für das Zielfeld verwendet.

Mutationsoptionen: Es können null oder mehr Mutationsoperatoren auf ein einzelnes Feld angewendet werden. Wenn mehrere Operatoren angegeben sind, werden diese immer in der folgenden Reihenfolge angewendet.

  1. default_value: <string>

    Wenn das Quellfeld nicht vorhanden war, wird der Ausgabewert auf <string> gesetzt. Wenn das Quellfeld bereits vorhanden ist (auch wenn es einen leeren String enthält), wird der ursprüngliche Wert nicht geändert.

  2. map_values: <map>

    Wenn der Eingabewert mit einem der Schlüssel in <map> übereinstimmt, wird der Ausgabewert durch den entsprechenden Wert aus der Zuordnung ersetzt.

  3. map_values_exclusive: {true|false}

    Wenn der <source field>-Wert mit keinem in den map_values-Paaren angegebenen Schlüsseln übereinstimmt, wird das Zielfeld zwangsweise nicht festgelegt, wenn map_values_exclusive "true" ist oder es bleibt unverändert, wenn map_values_exclusive "false" ist.

  4. type: {integer|float}

    Der Eingabewert wird in eine Ganzzahl oder eine Gleitkommazahl konvertiert. Wenn der String nicht in eine Zahl umgewandelt werden kann, wird der Ausgabewert nicht festgelegt. Wenn der String eine Gleitkommazahl enthält, der Typ aber als integer angegeben ist, wird die Zahl auf eine Ganzzahl gekürzt.

    Beachten Sie, dass die Cloud Logging API JSON verwendet und daher keine vollständige 64-Bit-Ganzzahl unterstützt. Wenn eine 64-Bit-Ganzzahl (oder größer) erforderlich ist, muss sie als String im Logeintrag gespeichert werden.

  5. omit_if: <filter>

    Wenn der Filter mit dem Eintrag des Eingabelogs übereinstimmt, wird das Ausgabefeld nicht festgelegt. So können Sie Platzhalterwerte entfernen, z. B.:

    httpRequest.referer:
      move_from: jsonPayload.referer
      omit_if: httpRequest.referer = "-"
    

Beispielkonfigurationen

Der Prozessor parse_json würde eine JSON-Datei mit dem Inhalt

{
  "http_status": "400",
  "path": "/index.html",
  "referer": "-"
}

in eine LogEntry-Struktur transformieren, die so aussieht:

{
  "jsonPayload": {
    "http_status": "400",
    "path": "/index.html",
    "referer": "-"
  }
}

Dies könnte dann mit modify_fields in diesen LogEntry transformiert werden:

{
  "httpRequest": {
    "status": 400,
    "requestUrl": "/index.html",
  }
}

Verwenden Sie diese Ops-Agent-Konfiguration:

logging:
  receivers:
    in:
      type: files
      include_paths:
      - /var/log/http.json
  processors:
    parse_json:
      type: parse_json
    set_http_request:
      type: modify_fields
      fields:
        httpRequest.status:
          move_from: jsonPayload.http_status
          type: integer
        httpRequest.requestUrl:
          move_from: jsonPayload.path
        httpRequest.referer:
          move_from: jsonPayload.referer
          omit_if: jsonPayload.referer = "-"
  pipelines:
    pipeline:
      receivers: [in]
      processors: [parse_json, set_http_request]

Diese Konfiguration liest JSON-formatierte Logs aus /var/log/http.json und füllt einen Teil der Struktur httpRequest aus Feldern in den Logs aus.

Logging-Dienst

Der Logging-Dienst passt die Ausführlichkeit für die eigenen Logs des Ops-Agents an und verknüpft Logging-Empfänger und -Prozessoren zu Pipelines. Der Abschnitt service enthält zwei Elemente: log_level und pipelines.

Ausführlichkeitsstufe für Logs

log_level ist ab Ops-Agent-Version 2.6.0 verfügbar und passt die Ausführlichkeit für die eigenen Logs des Logging-Submoduls des Ops-Agents an. Der Standardwert ist info. Folgende Optionen sind verfügbar: error, warn, info, debug, trace.

Logging-Pipelines

pipelines kann mehrere Pipeline-IDs und Definitionen enthalten. Jede pipeline-Definition besteht aus den folgenden Elementen:

  • receivers: Für neue Pipelines erforderlich. Eine Liste von Empfänger-IDs, wie unter Logging-Empfänger beschrieben. Die Reihenfolge der Empfänger-IDs in der Liste spielt keine Rolle. Die Pipeline erfasst Daten von allen aufgelisteten Empfängern.

  • processors: Optional. Eine Liste von Prozessor-IDs, wie unter Logging-Prozessoren beschrieben. Die Reihenfolge der Prozessor-IDs in der Liste ist wichtig. Jeder Eintrag wird von den Prozessoren in der aufgeführten Reihenfolge ausgeführt.

Beispiele für Logging-service-Konfigurationen

Eine service-Konfiguration hat die folgende Struktur:

service:
  log_level: CUSTOM_LOG_LEVEL
  pipelines:
    PIPELINE_ID:
      receivers:  [...]
      processors: [...]
    PIPELINE_ID_2:
      receivers:  [...]
      processors: [...]

Wenn Sie die integrierte Logging-Aufnahme deaktivieren möchten, definieren Sie die Standardpipeline mit einer leeren receivers-Liste ohne Prozessoren neu. Die gesamte Logging-Konfiguration sieht so aus:

logging:
  service:
    pipelines:
      default_pipeline:
        receivers: []

Die folgende service-Konfiguration definiert eine Pipeline mit der ID custom_pipeline:

logging:
  service:
    pipelines:
      custom_pipeline:
        receivers:
        - RECEIVER_ID
        processors:
        - PROCESSOR_ID

Die folgende service-Konfiguration passt die Log-Ausführlichkeit für das Logging-Untermodul stattdessen auf debug an:

logging:
  service:
    log_level: debug

Messwertkonfigurationen

Die metrics-Konfiguration verwendet das zuvor beschriebene Konfigurationsmodell:

  • receivers: Eine Liste der Empfängerdefinitionen. Ein receiver beschreibt die Quelle der Messwerte, beispielsweise die Systemmesswerte cpu oder memory. Die Empfänger in dieser Liste können von mehreren Pipelines gemeinsam genutzt werden.
  • processors: Eine Liste von Prozessordefinitionen. Ein processor beschreibt, wie die von einem Empfänger erfassten Messwerte geändert werden.
  • service: Enthält einen pipelines-Abschnitt, der eine Liste von pipeline-Definitionen enthält. Eine pipeline verbindet für einen Datenfluss eine Liste von receivers mit einer Liste von processors, um den Datenfluss zu bilden.

In den folgenden Abschnitten werden die einzelnen Elemente beschrieben.

Messwertempfänger

Das receivers-Element enthält eine Reihe von Empfängerdefinitionen. Ein Empfänger beschreibt, wo die Messwerte abgerufen werden, z. B. cpu und memory. Ein Empfänger kann von mehreren Pipelines gemeinsam genutzt werden.

Struktur von Messwertempfängern

Jeder Empfänger muss die Kennzeichnung RECEIVER_ID haben und ein type-Element enthalten. Gültige Typen sind:

  • hostmetrics
  • iis (Nur Windows)
  • mssql (Nur Windows)

Ein Empfänger kann auch die Option collection_interval angeben. Der Wert hat das Format einer Dauer, z .B. 30s oder 2m. Der Standardwert ist 60s.

Jeder dieser Empfängertypen erfasst eine Reihe von Messwerten. Informationen zu den jeweiligen Messwerten finden Sie unter Von den Empfängertypen aufgenommene Messwerte.

Sie können nur einen Empfänger pro Typ erstellen. Beispielsweise können Sie nicht zwei Empfänger vom Typ hostmetrics definieren.

Erfassungsintervall in den Messwertempfängern ändern

Einige kritische Arbeitslasten erfordern möglicherweise eine schnelle Benachrichtigung. Durch Reduzierung des Erfassungsintervalls für die Messwerte können Sie sensiblere Benachrichtigungen konfigurieren. Informationen zum Auswerten von Benachrichtigungen finden Sie unter Verhalten von messwertbasierten Benachrichtigungsrichtlinien.

Beispielsweise ändert der folgende Empfänger das Erfassungsintervall für Hostmesswerte (die Empfänger-ID lautet hostmetrics) vom Standardwert von 60 Sekunden in 10 Sekunden:

metrics:
  receivers:
    hostmetrics:
      type: hostmetrics
      collection_interval: 10s

Mit derselben Technik können Sie auch das Erfassungsintervall für die Messwertempfänger in Windows namens iis und mssql überschreiben.

Von den Empfängern aufgenommene Messwerte

Die vom Ops-Agent aufgenommenen Messwerte haben Kennzeichnungen, die mit dem folgenden Muster beginnen: agent.googleapis.com/GROUP. Die Komponente GROUP identifiziert eine Reihe zusammenhängender Messwerte; sie hat Werte wie cpu, network und weitere.

Der hostmetrics-Empfänger nimmt die folgenden Messwertgruppen auf. Weitere Informationen finden Sie im verknüpften Abschnitt für jede Gruppe auf der Seite Ops-Agent-Messwerte.

Gruppe Messwert
cpu CPU-Auslastung in 1-Minuten-Intervallen
CPU-Auslastung in 5-Minuten-Intervallen
CPU-Auslastung in 15-Minuten-Intervallen
CPU-Auslastung mit Labels für CPU-Anzahl und CPU-Status
Prozentuale CPU-Auslastung mit Labels für CPU-Anzahl und CPU-Status
disk Gelesene Laufwerk-Byte mit Label für Gerät
Geschriebene Laufwerk-Byte mit Label für Gerät
Laufwerk-E/A-Zeit mit Label für Gerät
Gewichtete Laufwerk-E/A-Zeit mit Label für Gerät
Ausstehende Laufwerkvorgänge mit Label für Gerät
Zusammengeführte Laufwerkvorgänge mit Labels für Gerät und Richtung
Laufwerkvorgänge mit Labels für Gerät und Richtung
Zeit der Laufwerkvorgänge mit Labels für Gerät und Richtung
Laufwerknutzung mit Labels für Gerät und Status
Laufwerkauslastung mit Labels für Gerät und Status
interface
Nur Linux
Gesamtzahl der Netzwerkfehler
Gesamtzahl der über das Netzwerk gesendeten Pakete
Gesamtzahl der über das Netzwerk gesendeten Byte
memory Speichernutzung mit Label für Status (buffered, cached, free, slab, used)
Prozentuale Speichernutzung mit Label für Status (buffered, cached, free, slab, used)
network Anzahl der TCP-Verbindungen mit Labels für Port und TCP-Status
swap E/A-Vorgänge für den Austausch mit Label für Richtung
Verwendete Byte für den Austausch mit Labels für Gerät und Status
Verwendeter Prozentsatz für den Austausch mit Labels für Gerät und Status
pagefile
Nur Windows
Aktueller Prozentsatz der verwendeten Auslagerungsdatei nach Status.
processes Anzahl der Vorgänge mit Labels für Status
Anzahl der verzweigten Vorgänge
E/A-Laufwerklesevorgang pro Prozess mit Labels für Prozessname und andere
E/A-Laufwerkschreibvorgang pro Prozess mit Labels für Prozessname und andere
RSS-Nutzung pro Prozess mit Labels für Prozessname und andere
VM-Nutzung pro Prozess mit Labels für Prozessname und andere

Der Empfänger iis (nur Windows) nimmt die Messwerte der Gruppe iis auf. Weitere Informationen finden Sie auf der Seite Agent-Messwerte.

Gruppe Messwert
iis
Nur Windows
Derzeit offene Verbindungen zu IIS
Netzwerkbyte, die von IIS übertragen werden
Verbindungen geöffnet zu IIS
Anfragen gestellt an IIS

Der Empfänger mssql (nur Windows) nimmt Messwerte der Gruppe mssql auf. Weitere Informationen finden Sie auf der Seite Ops-Agent-Messwerte.

Gruppe Messwert
mssql
Nur Windows
Derzeit offene Verbindungen zu SQL-Server
Gesamtanzahl der Transaktionen des SQL-Servers pro Sekunde
SQL Server-Schreibtransaktionen pro Sekunde

Messwertprozessoren

Das processor-Element enthält eine Reihe von Prozessordefinitionen. Ein Prozessor beschreibt Messwerte vom auszuschließenden Empfängertyp. Der einzige unterstützte Typ ist exclude_metrics, der die Option metrics_pattern verwendet. Der Wert ist eine Liste von Globs, die den Messwerttypen entsprechen, die Sie aus der von einem Empfänger erfassten Gruppe ausschließen möchten. Beispiel: agent.googleapis.com/cpu/* oder agent.googleapis.com/processes/*. Die vollständig qualifizierten Namen einzelner Messwerte finden Sie in der Tabelle der Gruppe auf der Seite Ops-Agent-Messwerte.

Beispiel für einen Messwertprozessor

Das folgende Beispiel zeigt den in den integrierten Konfigurationen bereitgestellten exclude_metrics-Prozessor. Dieser Prozessor gibt einen leeren metrics_pattern-Wert an, sodass keine Messwerte ausgeschlossen werden.

processors:
  metrics_filter:
    type: exclude_metrics
    metrics_pattern: []

Fügen Sie der Datei config.yaml Folgendes hinzu, um die Erfassung aller Prozessmesswerte durch den Ops-Agent zu deaktivieren:

metrics:
  processors:
    metrics_filter:
      type: exclude_metrics
      metrics_pattern:
      - agent.googleapis.com/processes/*

Dies schließt Prozessmesswerte von der Erfassung im metrics_filter-Prozessor aus, die für die Standardpipeline im metrics-Dienst gilt.

Messwertdienst

Der Messwertdienst passt die Ausführlichkeit für die eigenen Logs des Ops-Agent-Messwertmoduls an und verknüpft Messwertempfänger und -prozessoren miteinander in Pipelines. Der Abschnitt service enthält zwei Elemente: log_level und pipelines.

Ausführlichkeitsstufe für Messwerte

log_level ist ab Ops-Agent-Version 2.6.0 verfügbar und passt die Ausführlichkeit für die eigenen Logs des Messwerte-Submoduls des Ops-Agent an. Der Standardwert ist info. Folgende Optionen sind verfügbar: error, warn, info, debug.

Messwertpipelines

Der Abschnitt service enthält ein einzelnes Element, pipelines, das mehrere Pipeline-IDs und Definitionen enthalten kann. Jede pipeline-Definition besteht aus den folgenden Elementen:

  • receivers: Für neue Pipelines erforderlich. Eine Liste von Empfänger-IDs, wie unter Messwert-Empfänger beschrieben. Die Reihenfolge der Empfänger-IDs in der Liste spielt keine Rolle. Die Pipeline erfasst Daten von allen aufgelisteten Empfängern.

  • processors: Optional. Eine Liste von Prozessor-IDs, wie unter Messwertprozessoren beschrieben. Die Reihenfolge der Prozessor-IDs in der Liste ist wichtig. Jeder Messwertpunkt wird in der aufgeführten Reihenfolge durch die Prozessoren ausgeführt.

Beispiel für service-Messwertkonfigurationen

Eine service-Konfiguration hat die folgende Struktur:

service:
  log_level: CUSTOM_LOG_LEVEL
  pipelines:
    PIPELINE_ID:
      receivers:  [...]
      processors: [...]
    PIPELINE_ID_2:
      receivers:  [...]
      processors: [...]

Wenn Sie die integrierte Aufnahme von Hostmesswerten deaktivieren möchten, definieren Sie die Standardpipeline mit einer leeren receivers-Liste ohne Prozessoren neu. Die gesamte Messwertkonfiguration sieht so aus:

metrics:
  service:
    pipelines:
      default_pipeline:
        receivers: []

Das folgende Beispiel zeigt die integrierte service-Konfiguration für Windows:

metrics:
  service:
    pipelines:
      default_pipeline:
        receivers:
        - hostmetrics
        - iis
        - mssql
        processors:
        - metrics_filter

Die folgende service-Konfiguration passt die Log-Ausführlichkeit für das Messwerte-Untermodul stattdessen auf debug an:

metrics:
  service:
    log_level: debug