Questo documento fornisce dettagli sulle configurazioni predefinite e personalizzate di Ops Agent. Leggi questo documento se una delle seguenti condizioni si applica al tuo caso:
Vuoi modificare la configurazione di Ops Agent per raggiungere i seguenti obiettivi:
Disattiva il logging o l'importazione delle metriche integrati.
Per disattivare l'importazione dei log, consulta Esempi di configurazioni di
service
di logging.Per disattivare l'importazione delle metriche host, consulta Configurazioni di metriche
service
di esempio.
Personalizza il percorso dei file di log da cui l'agente raccoglie i log. Consulta Ricevitori di Logging.
Personalizza il formato del log strutturato utilizzato dall'agente per elaborare le voci di log analizzando il file JSON o utilizzando espressioni regolari. Consulta Processori di Logging.
Modificare la frequenza di campionamento per le metriche; consulta la sezione Ricevitori delle metriche.
Personalizza il gruppo o i gruppi di metriche da attivare. L'agente raccoglie tutte le metriche di sistema, come
cpu
ememory
, per impostazione predefinita; consulta Processori delle metriche.Personalizza il modo in cui l'agente ruota i log. Consulta Configurazione della rotazione dei log.
Raccogli metriche e log dalle applicazioni di terze parti supportate. Per l'elenco delle applicazioni supportate, vedi Monitorare le applicazioni di terze parti.
Utilizza il ricevitore Prometheus per raccogliere metriche personalizzate.
Utilizza il ricevitore OTLP (OpenTelemetry Protocol) per raccogliere metriche e tracce personalizzate.
Ti interessa conoscere i dettagli tecnici della configurazione di Ops Agent.
Modello di configurazione
Ops Agent utilizza una configurazione predefinita integrata. Non puoi modificare direttamente questa configurazione integrata. Puoi invece creare un file di override che vengono uniti alla configurazione integrata al riavvio dell'agente.
I componenti di base della configurazione sono i seguenti:
receivers
: questo elemento descrive cosa viene raccolto dall'agente.processors
: questo elemento descrive in che modo l'agente può modificare le informazioni raccolte.service
: questo elemento collega ricevitori e processori per creare flussi di dati, chiamati pipeline. L'elementoservice
contiene un elementopipelines
, che può contenere più pipeline.
La configurazione integrata è composta da questi elementi, che puoi utilizzare per sostituire quella configurazione integrata.
Configurazione integrata
La configurazione integrata per Ops Agent definisce la raccolta predefinita per log e metriche. Di seguito è riportata la configurazione integrata per Linux e Windows:
Linux
Per impostazione predefinita, Ops Agent raccoglie le metriche e i log syslog
basati su file.
Per maggiori informazioni sulle metriche raccolte, consulta Metriche importate dai destinatari.
Windows
Per impostazione predefinita, Ops Agent raccoglie i log eventi di Windows dai canali System
, Application
e Security
, oltre alle metriche host, IIS e SQL Server.
Per maggiori informazioni sulle metriche raccolte, consulta Metriche importate dai destinatari.
Queste configurazioni sono discusse in maggiore dettaglio nelle sezioni Configurazione di Logging e Configurazione delle metriche.
Configurazione specificata dall'utente
Per eseguire l'override della configurazione integrata, aggiungi nuovi elementi di configurazione al file di configurazione utente. Inserisci la configurazione per Ops Agent nei seguenti file:
- Per Linux:
/etc/google-cloud-ops-agent/config.yaml
- Per Windows:
C:\Program Files\Google\Cloud Operations\Ops Agent\config\config.yaml
Ogni configurazione specificata dall'utente viene unita alla configurazione integrata al riavvio dell'agente.
Per eseguire l'override di un ricevitore, un processore o una pipeline integrati, ridefiniscili nel file config.yaml
dichiarandoli con lo stesso identificatore.
A partire da Ops Agent versione 2.31.0, puoi anche configurare la funzionalità di rotazione dei log dell'agente. Per ulteriori informazioni, consulta Configurare la rotazione dei log in Ops Agent.
Ad esempio, la configurazione integrata per le metriche include un ricevitore hostmetrics
che specifica un intervallo di raccolta di 60 secondi. Per modificare l'intervallo di raccolta per le metriche host su 30 secondi, includi un ricevitore di metriche denominato hostmetrics
nel file config.yaml
che imposta il valore collection_interval
su 30 secondi, come mostrato nell'esempio seguente:
metrics:
receivers:
hostmetrics:
type: hostmetrics
collection_interval: 30s
Per altri esempi di modifica delle configurazioni integrate, consulta Configurazione di Logging e Configurazione delle metriche.
Puoi anche disattivare la raccolta dei dati di logging o delle metriche. Queste modifiche sono descritte negli esempi di configurazioni service
di logging e configurazioni service
delle metriche.
Puoi utilizzare questo file per impedire all'agente di raccogliere gli stessi log e di inviarli a Cloud Logging. Per maggiori informazioni, consulta Raccolta di autolog.
Puoi inoltre configurare la funzionalità di rotazione dei log dell'agente utilizzando questo file. Per ulteriori informazioni, consulta Configurare la rotazione dei log in Ops Agent.
Non puoi configurare Ops Agent per l'esportazione di log o metriche in servizi diversi da Cloud Logging e Cloud Monitoring.
Configurazioni di logging
La configurazione logging
utilizza il modello di configurazione descritto in precedenza:
receivers
: questo elemento descrive i dati da raccogliere dai file di log. Questi dati sono mappati in un modello <timestamp, record>.processors
: questo elemento facoltativo descrive in che modo l'agente può modificare le informazioni raccolte.service
: questo elemento collega ricevitori e processori per creare flussi di dati, chiamati pipeline. L'elementoservice
contiene un elementopipelines
, che può includere più definizioni di pipeline.
Ogni ricevitore e ogni processore possono essere utilizzati in più pipeline.
Le sezioni seguenti descrivono ciascuno di questi elementi.
Ops Agent invia i log a Cloud Logging. Non puoi configurarla per esportare i log in altri servizi. Tuttavia, puoi configurare Cloud Logging per l'esportazione dei log. Per ulteriori informazioni, consulta Instradare i log alle destinazioni supportate.
Ricevitori di logging
L'elemento receivers
contiene un insieme di ricevitori, ciascuno identificato da un RECEIVER_ID. Un ricevitore descrive come recuperare i log, ad esempio eseguendo il tailing dei file, utilizzando una porta TCP o dal log eventi di Windows.
Struttura dei ricevitori di logging
Ogni destinatario deve avere un identificatore, RECEIVER_ID, e includere un elemento type
. I tipi validi sono:
files
: raccogli i log eseguendo il tailing dei file su disco.fluent_forward
(Ops Agent versioni 2.12.0 e successive): raccogli i log inviati tramite il protocollo Fluent Forward tramite TCP.tcp
(Ops Agent versioni 2.3.0 e successive): raccogli i log in formato JSON ascoltando una porta TCP.- Solo Linux:
syslog
: raccogli i messaggi di Syslog su TCP o UDP.systemd_journald
(Ops Agent 2.4.0 e versioni successive): raccogli i log del journal di sistema dal servizio systemd- journald.
- Solo Windows:
windows_event_log
: raccogli i log eventi di Windows utilizzando l'API Windows Event Log.
- Ricevitori di log delle applicazioni di terze parti
La struttura receivers
ha il seguente aspetto:
receivers: RECEIVER_ID: type: files ... RECEIVER_ID_2: type: syslog ...
A seconda del valore dell'elemento type
, potrebbero essere disponibili altre opzioni di configurazione, come segue:
files
ricevitori:include_paths
: obbligatorio. Un elenco di percorsi di file system da leggere con il tagging di ciascun file. È possibile utilizzare un carattere jolly (*
) nei percorsi, ad esempio/var/log/*.log
(Linux) oC:\logs\*.log
(Windows).Per un elenco dei file di log delle applicazioni Linux più comuni, vedi File di log comuni di Linux.
exclude_paths
: facoltativo. Un elenco di pattern di percorsi del file system da escludere dal set corrispondente ainclude_paths
.record_log_file_path
: facoltativo. Se è impostato sutrue
, il percorso del file specifico da cui è stato ottenuto il record di log viene visualizzato nella voce di log di output come valore dell'etichettaagent.googleapis.com/log_file_path
. Quando utilizzi un carattere jolly, viene registrato solo il percorso del file da cui è stato ottenuto il record.wildcard_refresh_interval
: facoltativo. L'intervallo con cui vengono aggiornati i percorsi dei file con caratteri jolly ininclude_paths
. Data come durata di tempo, ad esempio30s
,2m
. Questa proprietà può essere utile con velocità effettiva di logging elevate, in cui i file di log vengono ruotati più velocemente dell'intervallo predefinito. Se non specificato, l'intervallo predefinito è 60 secondi.
fluent_forward
ricevitori:listen_host
: facoltativo. Un indirizzo IP su cui rimanere in ascolto. Il valore predefinito è127.0.0.1
.listen_port
: facoltativo. Una porta per l'ascolto. Il valore predefinito è24224
.
Ricevitori
syslog
(solo per Linux):transport_protocol
: facoltativo. Valori supportati:tcp
,udp
. Il valore predefinito ètcp
.listen_host
: facoltativo. Un indirizzo IP su cui rimanere in ascolto. Il valore predefinito è0.0.0.0
.listen_port
: facoltativo. Una porta per l'ascolto. Il valore predefinito è5140
.
tcp
ricevitori:format
: obbligatorio. Formato log. Valore supportato:json
.listen_host
: facoltativo. Un indirizzo IP su cui rimanere in ascolto. Il valore predefinito è127.0.0.1
.listen_port
: facoltativo. Una porta per l'ascolto. Il valore predefinito è5170
.
Ricevitori
windows_event_log
(solo per Windows):channels
: obbligatorio. Un elenco di canali del log eventi di Windows da cui leggere i log.receiver_version
: facoltativo. Consente di stabilire quale API Log eventi di Windows utilizzare. I valori supportati sono1
e2
. Il valore predefinito è1
.render_as_xml
: facoltativo. Se il criterio viene impostato sutrue
, tutti i campi del log eventi, ad eccezione dijsonPayload.Message
ejsonPayload.StringInserts
, vengono visualizzati come documento XML in un campo stringa denominatojsonPayload.raw_xml
. Il valore predefinito èfalse
. Questo non può essere impostato sutrue
quandoreceiver_version
è1
.
Esempi di ricevitori di logging
Ricevitore files
di esempio:
receivers:
RECEIVER_ID:
type: files
include_paths: [/var/log/*.log]
exclude_paths: [/var/log/not-this-one.log]
record_log_file_path: true
Ricevitore fluent_forward
di esempio:
receivers:
RECEIVER_ID:
type: fluent_forward
listen_host: 127.0.0.1
listen_port: 24224
Esempio di ricevitore syslog
(solo Linux):
receivers:
RECEIVER_ID:
type: syslog
transport_protocol: tcp
listen_host: 0.0.0.0
listen_port: 5140
Ricevitore tcp
di esempio:
receivers:
RECEIVER_ID:
type: tcp
format: json
listen_host: 127.0.0.1
listen_port: 5170
Ricevitore windows_event_log
di esempio (solo Windows):
receivers:
RECEIVER_ID:
type: windows_event_log
channels: [System,Application,Security]
Ricevitore windows_event_log
di esempio che sostituisce il ricevitore integrato per utilizzare
la versione 2
:
receivers:
windows_event_log:
type: windows_event_log
channels: [System,Application,Security]
receiver_version: 2
Ricevitore systemd_journald
di esempio:
receivers:
RECEIVER_ID:
type: systemd_journald
Campi speciali nei payload strutturati
Per i processori e i ricevitori che possono importare dati strutturati (i ricevitori fluent_forward
e tcp
e il processore parse_json
), puoi impostare campi speciali nell'input che verranno mappati a campi specifici dell'oggetto LogEntry
che l'agente scrive nell'API Logging.
Quando Ops Agent riceve dati di log strutturati esterni, inserisce i campi di primo livello nel campo jsonPayload
di LogEntry
, a meno che il nome del campo non sia elencato nella seguente tabella:
Campo record | Campo LogEntry |
---|---|
Opzione 1
Opzione 2
|
timestamp |
receive_id (non un campo record) | logName |
logging.googleapis.com/httpRequest (HttpRequest) |
httpRequest |
logging.googleapis.com/severity (stringa) |
severity |
logging.googleapis.com/labels (struct della stringa:stringa) |
labels |
logging.googleapis.com/operation (struct) |
operation |
logging.googleapis.com/sourceLocation (struct) |
sourceLocation |
logging.googleapis.com/trace (stringa) |
trace |
logging.googleapis.com/spanId (stringa) |
spanId |
Eventuali campi di record strutturati rimanenti rimarranno parte della struttura jsonPayload
.
File di log comuni di Linux
Nella tabella seguente sono elencati i file di log comuni per le applicazioni Linux utilizzate di frequente:
Applicazione | File di log comuni |
---|---|
apache | Per informazioni sui file di log Apache, consulta Monitoraggio delle applicazioni di terze parti: Apache Web Server. |
cassandra | Per informazioni sui file di log Cassandra, consulta Monitoraggio delle applicazioni di terze parti: Cassandra. |
cuoco |
/var/log/chef-server/bookshelf/current
|
gitlab |
/home/git/gitlab/log/application.log
|
jenkins |
/var/log/jenkins/jenkins.log
|
jetty |
/var/log/jetty/out.log
|
joomla |
/var/www/joomla/logs/*.log
|
magento |
/var/www/magento/var/log/exception.log
|
mediawiki |
/var/log/mediawiki/*.log
|
mcached | Per informazioni sui file di log Memcached, consulta Monitoraggio delle applicazioni di terze parti: Memcached. |
mongodb | Per informazioni sui file di log MongoDB, consulta Monitoraggio delle applicazioni di terze parti: MongoDB. |
mysql | Per informazioni sui file di log MySQL, consulta Monitoraggio delle applicazioni di terze parti: MySQL. |
nginx | Per informazioni sui file di log nginx, vedi Monitoraggio delle applicazioni di terze parti: nginx. |
postgres | Per informazioni sui file di log PostgreSQL, consulta Monitoraggio delle applicazioni di terze parti: PostgreSQL. |
burattino |
/var/log/puppet/http.log
|
impresa di marionette |
/var/log/pe-activemq/activemq.log
|
rabbitmq | Per informazioni sui file di log di RabbitMQ, consulta Monitoraggio delle applicazioni di terze parti: RabbitMQ. |
redis | Per informazioni sui file di log Redis, consulta Monitoraggio delle applicazioni di terze parti: Redis. |
Redmine |
/var/log/redmine/*.log
|
sale |
/var/log/salt/key
|
solr | Per informazioni sui file di log di Apache Solr, consulta Monitoraggio delle applicazioni di terze parti: Apache Solr. |
Sugarcrm |
/var/www/*/sugarcrm.log
|
syslog |
/var/log/syslog
|
tomcat | Per informazioni sui file di log Apache Tomcat, consulta Monitoraggio delle applicazioni di terze parti: Apache Tomcat. |
zookeeper | Per informazioni sui file di log di Apache ZooKeeper, consulta Monitoraggio delle applicazioni di terze parti: Apache ZooKeeper. |
Etichette importate predefinite
Per impostazione predefinita, i log possono contenere le seguenti etichette in LogEntry
:
Campo | Valore di esempio | Descrizione |
---|---|---|
labels."compute.googleapis.com/resource_name" |
test_vm |
Il nome della macchina virtuale da cui ha origine il log. Scritto per tutti i log. |
labels."logging.googleapis.com/instrumentation_source" |
agent.googleapis.com/apache_access |
Il valore del ricevitore type da cui ha origine il log, preceduto da agent.googleapis.com/ . Scritto solo da destinatari di integrazioni di terze parti. |
Processori di logging
L'elemento facoltativo processors
contiene un insieme di istruzioni di elaborazione, ciascuna
identificata da un PROCESSOR_ID. Un processore descrive come manipolare le
informazioni raccolte da un ricevitore.
Ogni processore deve avere un identificatore univoco e includere un elemento type
. I tipi validi sono:
parse_json
: analizza i log strutturati in formato JSON.parse_multiline
: analizza i log su più righe. (Solo Linux)parse_regex
: analizza i log in formato testo tramite pattern regex per trasformarli in log strutturati in formato JSON.exclude_logs
: escludi i log che corrispondono alle regole specificate (a partire dalla versione 2.9.0).modify_fields
: imposta/trasforma i campi nelle voci di log (a partire dalla versione 2.14.0).
La struttura processors
ha il seguente aspetto:
processors: PROCESSOR_ID: type: parse_json ... PROCESSOR_ID_2: type: parse_regex ...
A seconda del valore dell'elemento type
, sono disponibili altre opzioni di configurazione, come segue.
Processore parse_json
Struttura della configurazione
processors:
PROCESSOR_ID:
type: parse_json
time_key: <field name within jsonPayload>
time_format: <strptime format string>
Il processore parse_json
analizza il JSON di input nel campo jsonPayload
di LogEntry
. Altre parti di LogEntry
possono essere analizzate impostando
determinati campi di primo livello speciali.
time_key
: facoltativo. Se la voce di log contiene un campo con un timestamp, questa opzione specifica il nome del campo. Il valore estratto viene utilizzato per impostare il campotimestamp
del valoreLogEntry
risultante e viene rimosso dal payload.Se l'opzione
time_key
è specificata, devi specificare anche quanto segue:time_format
: obbligatorio se si utilizzatime_key
. Questa opzione specifica il formato del campotime_key
in modo che possa essere riconosciuto e analizzato correttamente. Per maggiori dettagli sul formato, consulta la guida distrptime(3)
.
Configurazione di esempio
processors:
PROCESSOR_ID:
type: parse_json
time_key: time
time_format: "%Y-%m-%dT%H:%M:%S.%L%Z"
Processore parse_multiline
Struttura della configurazione
processors:
PROCESSOR_ID:
type: parse_multiline
match_any:
- type: <type of the exceptions>
language: <language name>
match_any
: obbligatorio. Un elenco di una o più regole.type
: obbligatorio. È supportato un solo valore:language_exceptions
: consente al processore di concatenare le eccezioni in unLogEntry
, in base al valore dell'opzionelanguage
.
language
: obbligatorio. È supportato un solo valore:java
: concatena le eccezioni Java comuni in un'unicaLogEntry
.python
: concatena le eccezioni Python comuni in un'unicaLogEntry
.go
: concatena le eccezioni Go comuni in un'unicaLogEntry
.
Configurazione di esempio
logging:
receivers:
custom_file1:
type: files
include_paths:
- /tmp/test-multiline28
processors:
parse_java_multiline:
type: parse_multiline
match_any:
- type: language_exceptions
language: java
extract_structure:
type: parse_regex
field: message
regex: "^(?<time>[\d-]*T[\d:.Z]*) (?<severity>[^ ]*) (?<file>[^ :]*):(?<line>[\d]*) - (?<message>(.|\\n)*)$"
time_key: time
time_format: "%Y-%m-%dT%H:%M:%S.%L"
move_severity:
type: modify_fields
fields:
severity:
move_from: jsonPayload.severity
service:
pipelines:
pipeline1:
receivers: [custom_file1]
processors: [parse_java_multiline, extract_structure, move_severity]
Se utilizzi la configurazione precedente e disponi di un file di log con i contenuti seguenti:
2022-10-17T22:00:00.187512963Z ERROR HelloWorld:16 - javax.servlet.ServletException: Something bad happened
at com.example.myproject.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:60)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.example.myproject.ExceptionHandlerFilter.doFilter(ExceptionHandlerFilter.java:28)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.example.myproject.OutputBufferFilter.doFilter(OutputBufferFilter.java:33)
Caused by: com.example.myproject.MyProjectServletException
at com.example.myproject.MyServlet.doPost(MyServlet.java:169)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.example.myproject.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:30)
... 27 common frames omitted
quindi l'agente importa i log in Cloud Logging nel seguente formato:
{
"insertId": "...",
"jsonPayload": {
"line": "16",
"message": "javax.servlet.ServletException: Something bad happened\n at com.example.myproject.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:60)\n at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)\n at com.example.myproject.ExceptionHandlerFilter.doFilter(ExceptionHandlerFilter.java:28)\n at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)\n at com.example.myproject.OutputBufferFilter.doFilter(OutputBufferFilter.java:33)\nCaused by: com.example.myproject.MyProjectServletException\n at com.example.myproject.MyServlet.doPost(MyServlet.java:169)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)\n at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)\n at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)\n at com.example.myproject.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:30)\n ... 27 common frames omitted\n",
"file": "HelloWorld"
},
"resource": {
"type": "gce_instance",
"labels": {
"instance_id": "...",
"project_id": "...",
"zone": "..."
}
},
"timestamp": "2022-10-17T22:00:00.187512963Z",
"severity": "ERROR",
"labels": {
"compute.googleapis.com/resource_name": "..."
},
"logName": "projects/.../logs/custom_file",
"receiveTimestamp": "2022-10-18T03:12:38.430364391Z"
}
Processore parse_regex
Struttura della configurazione
processors:
PROCESSOR_ID:
type: parse_regex
regex: <regular expression>
time_key: <field name within jsonPayload>
time_format: <format string>
time_key
: facoltativo. Se la voce di log contiene un campo con un timestamp, questa opzione specifica il nome del campo. Il valore estratto viene utilizzato per impostare il campotimestamp
del valoreLogEntry
risultante e viene rimosso dal payload.Se l'opzione
time_key
è specificata, devi specificare anche quanto segue:time_format
: obbligatorio se si utilizzatime_key
. Questa opzione specifica il formato del campotime_key
in modo che possa essere riconosciuto e analizzato correttamente. Per maggiori dettagli sul formato, consulta la guida distrptime(3)
.
regex
: obbligatorio. L'espressione regolare per l'analisi del campo. L'espressione deve includere i nomi delle chiavi per le sottoespressioni corrispondenti, ad esempio"^(?<time>[^ ]*) (?<severity>[^ ]*) (?<msg>.*)$"
.Il testo che corrisponde ai gruppi di acquisizione denominati verrà inserito nei campi del campo
jsonPayload
diLogEntry
. Per aggiungere un'ulteriore struttura ai log, utilizza il processoremodify_fields
.Per un insieme di espressioni regolari per l'estrazione di informazioni dai file di log delle applicazioni Linux comuni, consulta File di log comuni di Linux.
Configurazione di esempio
processors:
PROCESSOR_ID:
type: parse_regex
regex: "^(?<time>[^ ]*) (?<severity>[^ ]*) (?<msg>.*)$"
time_key: time
time_format: "%Y-%m-%dT%H:%M:%S.%L%Z"
Processore exclude_logs
Struttura della configurazione:
type: exclude_logs
match_any:
- <filter>
- <filter>
La configurazione di primo livello per questo processore contiene un singolo campo, match_any
, che contiene un elenco di regole di filtro.
match_any
: obbligatorio. Un elenco di una o più regole. Se una voce di log corrisponde a una regola, Ops Agent non importa quella voce.I log importati da Ops Agent seguono la struttura di
LogEntry
. I nomi dei campi sono sensibili alle maiuscole. Puoi specificare le regole solo in base ai seguenti campi e ai relativi campi secondari:httpRequest
jsonPayload
labels
operation
severity
sourceLocation
trace
spanId
La regola di esempio seguente
severity =~ "(DEBUG|INFO)"
utilizza un'espressione regolare per escludere tutti i log a livello di
DEBUG
eINFO
.Le regole seguono la sintassi del linguaggio delle query di Cloud Logging, ma supportano solo un sottoinsieme delle funzionalità supportate dal linguaggio di query di Logging:
- Operatori di confronto:
=
,!=
,:
,=~
,!~
. Sono supportati solo i confronti di stringhe. - Operatore di navigazione:
.
. Ad esempiojsonPayload.message
. - Operatori booleani:
AND
,OR
,NOT
. - Raggruppamento di espressioni con
(
)
.
Configurazione di esempio
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"'
Processore modify_fields
Il processore modify_fields
consente la personalizzazione della struttura e dei contenuti delle voci di log.
Struttura della configurazione
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>
La configurazione di primo livello per questo processore contiene un singolo campo, fields
, che contiene una mappa dei nomi dei campi di output e le traduzioni corrispondenti. Per ogni campo di output vengono applicate un'origine facoltativa e nessuna o più operazioni di mutazione.
Tutti i nomi dei campi utilizzano la sintassi separata da punti del linguaggio di query di Cloud Logging. I filtri utilizzano il linguaggio delle query di Cloud Logging.
Tutte le trasformazioni vengono applicate in parallelo, il che significa che le origini e i filtri operano sulla voce di log di input originale e pertanto non possono fare riferimento al nuovo valore di altri campi modificati dallo stesso processore.
Opzioni origine: è consentita al massimo un'origine specificata.
Nessuna origine specificata
Se non viene specificato alcun valore di origine, il valore esistente nel campo di destinazione verrà modificato.
move_from: <source field>
Il valore di
<source field>
verrà utilizzato come origine per il campo di destinazione. Inoltre,<source field>
verrà rimosso dalla voce di log. Semove_from
ecopy_from
fanno riferimento a un campo di origine, questo verrà comunque rimosso.copy_from: <source field>
Il valore di
<source field>
verrà utilizzato come origine per il campo di destinazione.<source field>
non verrà rimosso dalla voce di log, a meno che non vi venga fatto riferimento anche in un'operazionemove_from
o altrimenti modificato.static_value: <string>
La stringa statica
<string>
verrà utilizzata come origine per il campo di destinazione.
Opzioni di mutazione: a un singolo campo possono essere applicati zero o più operatori di mutazione. Se vengono forniti più operatori, verranno sempre applicati nel seguente ordine.
default_value: <string>
Se il campo di origine non esiste, il valore di output verrà impostato su
<string>
. Se il campo di origine esiste già (anche se contiene una stringa vuota), il valore originale non è stato modificato.map_values: <map>
Se il valore di input corrisponde a una delle chiavi in
<map>
, il valore di output verrà sostituito con il valore corrispondente della mappa.map_values_exclusive: {true|false}
Se il valore di
<source field>
non corrisponde a nessuna delle chiavi specificate nelle coppiemap_values
, l'impostazione del campo di destinazione viene annullata forzatamente semap_values_exclusive
è true o non viene toccato semap_values_exclusive
è false.type: {integer|float}
Il valore di input verrà convertito in un numero intero o in virgola mobile. Se la stringa non può essere convertita in un numero, il valore di output verrà annullato. Se la stringa contiene un numero in virgola mobile, ma il tipo è specificato come
integer
, il numero verrà troncato a un numero intero.Tieni presente che l'API Cloud Logging utilizza JSON e pertanto non supporta un numero intero completo a 64 bit. Se è necessario un numero intero a 64 bit (o superiore, questo deve essere archiviato come stringa nella voce di log).
omit_if: <filter>
Se il filtro corrisponde al record del log di input, il campo di output non verrà configurato. Questa opzione può essere utilizzata per rimuovere i valori segnaposto, ad esempio:
httpRequest.referer: move_from: jsonPayload.referer omit_if: httpRequest.referer = "-"
Configurazioni di esempio
Il processore parse_json
trasformerebbe un file JSON contenente
{
"http_status": "400",
"path": "/index.html",
"referer": "-"
}
in una struttura LogEntry con un aspetto simile a questo:
{
"jsonPayload": {
"http_status": "400",
"path": "/index.html",
"referer": "-"
}
}
Questo potrebbe poi essere trasformato con modify_fields
in questo LogEntry
:
{
"httpRequest": {
"status": 400,
"requestUrl": "/index.html",
}
}
utilizzando questa configurazione di Ops Agent:
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]
Questa configurazione legge i log in formato JSON da /var/log/http.json
e compila parte della struttura httpRequest
dai campi dei log.
Servizio di logging
Il servizio di logging personalizza il livello di dettaglio per i log di Ops Agent e collega i ricevitori e i processori di logging nelle pipeline. La sezione service
contiene i seguenti elementi:
log_level
pipelines
Registra livello di dettaglio
Il campo log_level
, disponibile con Ops Agent 2.6.0 e versioni successive, personalizza le livello di dettaglio per i log del sottomodulo di logging di Ops Agent. Il valore predefinito è info
. Le opzioni disponibili sono: error
, warn
, info
, debug
, trace
.
La seguente configurazione personalizza invece le Preferenze di log in modo che il sottomodulo di logging sia debug
:
logging:
service:
log_level: debug
Pipeline di logging
Il campo pipelines
può contenere più ID e definizioni pipeline. Ogni valore pipeline
è costituito dai seguenti elementi:
receivers
: obbligatorio per le nuove pipeline. Un elenco di ID ricevitore, come descritto in Ricevitori di Logging. L'ordine degli ID destinatari nell'elenco non è importante. La pipeline raccoglie i dati da tutti i ricevitori elencati.processors
: facoltativo. Un elenco di ID processori, come descritto nella sezione Processori di Logging. L'ordine degli ID processore nell'elenco è importante. Ogni record viene eseguito attraverso i processori nell'ordine elencato.
Esempio di configurazione di service
di logging
Una configurazione service
ha la seguente struttura:
service: log_level: CUSTOM_LOG_LEVEL pipelines: PIPELINE_ID: receivers: [...] processors: [...] PIPELINE_ID_2: receivers: [...] processors: [...]
Per impedire all'agente di raccogliere e inviare le voci /var/log/message
o /var/log/syslog
, ridefinire la pipeline predefinita con un elenco receivers
vuoto e nessun processore. Questa configurazione non arresta il sottocomponente di logging dell'agente, poiché l'agente deve essere in grado di raccogliere i log per il sottocomponente di monitoraggio. L'intera configurazione di logging vuota è simile alla seguente:
logging:
service:
pipelines:
default_pipeline:
receivers: []
La seguente configurazione service
definisce una pipeline con l'ID
custom_pipeline
:
logging:
service:
pipelines:
custom_pipeline:
receivers:
- RECEIVER_ID
processors:
- PROCESSOR_ID
Configurazioni delle metriche
La configurazione metrics
utilizza il modello di configurazione descritto in precedenza:
receivers
: un elenco di definizioni dei destinatari. Un elementoreceiver
descrive l'origine delle metriche, ad esempio metriche di sistema comecpu
omemory
. I ricevitori in questo elenco possono essere condivisi tra più pipeline.processors
: un elenco di definizioni di processori. Unprocessor
descrive come modificare le metriche raccolte da un ricevitore.service
: contiene una sezionepipelines
che è un elenco di definizionipipeline
. Un elementopipeline
collega un elenco direceivers
e un elenco diprocessors
per formare il flusso di dati.
Le sezioni seguenti descrivono ciascuno di questi elementi.
Ops Agent invia le metriche a Cloud Monitoring. Non puoi configurarla per esportare le metriche in altri servizi.
Ricevitori di metriche
L'elemento receivers
contiene un insieme di definizioni di destinatari. Un ricevitore indica da dove recuperare le metriche, ad esempio cpu
e memory
.
Un ricevitore può essere condiviso tra più pipeline.
Struttura dei ricevitori delle metriche
Ogni destinatario deve avere un identificatore, RECEIVER_ID, e includere un elemento type
. I tipi integrati validi sono:
hostmetrics
iis
(solo Windows)mssql
(solo Windows)
Un destinatario può anche specificare l'opzione collection_interval
dell'operazione. Il
valore è nel formato di una durata, ad esempio 30s
o 2m
. Il valore predefinito è 60s
.
Ciascuno di questi tipi di ricevitori raccoglie un insieme di metriche; per informazioni sulle metriche specifiche incluse, consulta Metriche importate dai destinatari.
Puoi creare un solo ricevitore per ogni tipo. Ad esempio, non puoi definire due ricevitori di tipo hostmetrics
.
Modifica dell'intervallo di raccolta nei destinatari delle metriche
Alcuni carichi di lavoro critici potrebbero richiedere avvisi rapidi. Riducendo l'intervallo di raccolta per le metriche, puoi configurare avvisi più sensibili. Per informazioni su come vengono valutati gli avvisi, consulta Comportamento dei criteri di avviso basati su metriche.
Ad esempio, il seguente ricevitore modifica l'intervallo di raccolta per le metriche host (l'ID del destinatario è hostmetrics
) da 60 secondi a 10 secondi:
metrics:
receivers:
hostmetrics:
type: hostmetrics
collection_interval: 10s
Puoi anche eseguire l'override dell'intervallo di raccolta per i ricevitori delle metriche iis
e mssql
di Windows utilizzando la stessa tecnica.
Metriche importate dai destinatari
Le metriche importate da Ops Agent hanno identificatori che iniziano con il seguente pattern: agent.googleapis.com/GROUP
.
Il componente GROUP identifica un insieme di metriche correlate; ha valori come cpu
, network
e altri.
Il ricevitore hostmetrics
Il ricevitore hostmetrics
importa i seguenti gruppi di metriche. Per saperne di più, consulta la sezione collegata per ciascun gruppo nella pagina Metriche Ops Agent.
Gruppo | Metrica |
---|---|
cpu
|
Carico della CPU a intervalli di 1 minuto Carico della CPU a intervalli di 5 minuti Carico della CPU a intervalli di 15 minuti Utilizzo della CPU, con etichette per il numero e lo stato della CPU Percentuale di utilizzo della CPU, con etichette per il numero e lo stato della CPU |
disk
|
Byte di stato del disco letti, con etichetta relativa al dispositivo Byte del disco scritti, con etichetta per il dispositivo Tempo di I/O del disco, con etichetta per il dispositivo Tempo di I/O ponderato del disco, con etichetta per il dispositivo Operazioni in attesa del disco, con etichetta per il dispositivo Operazioni unite sul disco, con etichette per dispositivo e direzione Operazioni sul disco, con etichette per dispositivo e direzione Tempo di funzionamento del disco, con etichette per dispositivo e direzione Utilizzo del disco con etichette per dispositivo e direzione Con etichette per il dispositivo |
gpu Solo per Linux; consulta Informazioni sulle metriche gpu per altre informazioni
importanti.
|
Numero attuale di byte di memoria GPU utilizzati, per stato Quantità massima di memoria GPU, in byte, allocata dal processo Percentuale di tempo durante il ciclo di vita del processo in cui uno o più kernel sono stati eseguiti sulla GPU Percentuale di tempo, dall'ultimo campione, la GPU è stata attiva |
interface Solo Linux |
Conteggio totale degli errori di rete Conteggio totale dei pacchetti inviati attraverso la rete Numero totale di byte inviati attraverso la rete |
memory
|
Memoria utilizzata, con etichetta per lo stato (buffered, cache, gratuita, slab, utilizzata) Percentuale di utilizzo della memoria, con etichetta per lo stato (buffered, cache, free, slab, used) |
network
|
Numero di connessioni TCP, con etichette per porta e stato TCP |
swap
|
Scambia operazioni di I/O, con etichetta per la direzione Scambia byte utilizzati, con etichette per dispositivo e stato Percentuale di scambio utilizzata, con etichette per dispositivo e stato |
pagefile Solo Windows |
Percentuale attuale di file di paging utilizzata per stato |
processes
|
Conteggio dei processi, con etichetta per lo stato Conteggio dei fork dei processi I/O di lettura del disco per processo, con etichette per il nome del processo e altri I/O di scrittura su disco per processo, con etichette per il nome del processo e altri Utilizzo di RSS per processo, con etichette per il nome del processo + altri Utilizzo delle VM per processo, con etichette per il nome del processo e altro |
Il ricevitore iis
(solo Windows)
Il ricevitore iis
(solo Windows) importa le metriche del gruppo iis
.
Per ulteriori informazioni, consulta la pagina Metriche degli agenti.
Gruppo | Metrica |
---|---|
iis Solo Windows |
Connessioni attualmente aperte a IIS Byte di rete trasferiti da IIS Connessioni aperte a IIS Richieste effettuate a IIS |
Il ricevitore mssql
(solo Windows)
Il ricevitore mssql
(solo Windows) importa le metriche del gruppo mssql
. Per ulteriori informazioni, consulta la pagina Metriche Ops Agent.
Gruppo | Metrica |
---|---|
mssql Solo Windows |
Connessioni attualmente aperte a SQL Server Transazioni totali di SQL Server al secondo Transazioni di scrittura di SQL Server al secondo |
Processori di metriche
L'elemento processor
contiene un insieme di definizioni del processore. Un processore descrive le metriche
del tipo di ricevitore da escludere. L'unico tipo supportato è exclude_metrics
, che accetta un'opzione metrics_pattern
. Il valore è un elenco di glob corrispondenti ai tipi di metriche di Ops Agent che vuoi escludere dal gruppo raccolto da un ricevitore. Ad esempio:
- Per escludere tutte le metriche CPU dell'agente,
specifica
agent.googleapis.com/cpu/*
. - Per escludere la metrica di utilizzo della CPU dell'agente, specifica
agent.googleapis.com/cpu/utilization
. - Per escludere la metrica del conteggio delle richieste lato client dalle metriche raccolte dall'integrazione di terze parti di Apache Cassandra, specifica
workloads.googleapis.com/cassandra.client.request.count
. - Per escludere tutte le metriche lato client dalle metriche raccolte dall'integrazione di terze parti di Apache Cassandra, specifica
workloads.googleapis.com/cassandra.client.*
.
Processore di metriche di esempio
L'esempio seguente mostra il processore exclude_metrics
fornito nelle configurazioni integrate. Questo processore fornisce un valore metrics_pattern
vuoto, quindi non esclude alcuna metrica.
processors:
metrics_filter:
type: exclude_metrics
metrics_pattern: []
Per disabilitare la raccolta di tutte le metriche di processo da parte di Ops Agent, aggiungi quanto segue al file config.yaml
:
metrics: processors: metrics_filter: type: exclude_metrics metrics_pattern: - agent.googleapis.com/processes/*
Ciò esclude le metriche di processo dalla raccolta nel processore metrics_filter
che si applica alla pipeline predefinita nel servizio metrics
.
Servizio delle metriche
Il servizio di metriche personalizza il livello di dettaglio per i log del modulo
delle metriche Ops Agent e collega i ricevitori e i processori di metriche nelle pipeline. La sezione service
ha due elementi: log_level
e pipelines
.
Livello di dettaglio delle metriche
log_level
, disponibile con Ops Agent versione 2.6.0 e successive, personalizza le livello di dettaglio per i log del sottomodulo delle metriche di Ops Agent. Il valore predefinito è info
.
Le opzioni disponibili sono: error
, warn
, info
e debug
.
Pipeline delle metriche
La sezione service
ha un singolo elemento, pipelines
, che può contenere
più ID e definizioni pipeline. Ogni definizione di pipeline
è composta dai seguenti elementi:
receivers
: obbligatorio per le nuove pipeline. Un elenco di ID ricevitori, come descritto in Ricevitori di metriche. L'ordine degli ID dei destinatari nell'elenco non ha importanza. La pipeline raccoglie i dati da tutti i ricevitori elencati.processors
: facoltativo. Un elenco di ID processore, come descritto nella sezione Processori delle metriche. L'ordine degli ID processore nell'elenco è importante. Ogni punto della metrica viene eseguito dai processori nell'ordine elencato.
Configurazioni di metriche di esempio service
Una configurazione service
ha la seguente struttura:
service: log_level: CUSTOM_LOG_LEVEL pipelines: PIPELINE_ID: receivers: [...] processors: [...] PIPELINE_ID_2: receivers: [...] processors: [...]
Per disattivare l'importazione integrata delle metriche host, ridefinisci la pipeline predefinita con un elenco receivers
vuoto e nessun processore. L'intera configurazione delle metriche
è simile alla seguente:
metrics:
service:
pipelines:
default_pipeline:
receivers: []
L'esempio seguente mostra la configurazione integrata di service
per Windows:
metrics:
service:
pipelines:
default_pipeline:
receivers:
- hostmetrics
- iis
- mssql
processors:
- metrics_filter
La seguente configurazione di service
personalizza le Preferenze di log in modo che il sottomodulo
delle metriche sia debug
:
metrics:
service:
log_level: debug
Raccolta di autolog
Per impostazione predefinita, gli auto log Fluent Bit di Ops Agent vengono inviati a Cloud Logging. Questi log possono includere molte informazioni e il volume aggiuntivo potrebbe far aumentare i costi per l'utilizzo di Cloud Logging.
Puoi disabilitare la raccolta di questi self log, a partire da Ops Agent versione 2.44.0, utilizzando l'opzione default_self_log_file_collection
.
Per disattivare la raccolta automatica dei log, aggiungi una sezione global
al file di configurazione specificato dall'utente e imposta l'opzione default_self_log_file_collection
sul valore false
:
logging: ... metrics: ... global: default_self_log_file_collection: false
Configurazione della rotazione dei log
A partire da Ops Agent versione 2.31.0, puoi anche impostare la funzionalità di rotazione dei log dell'agente utilizzando i file di configurazione. Per ulteriori informazioni, consulta Configurare la rotazione dei log in Ops Agent.