Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
CloudWatch Registra il riferimento dell'agente
Importante
Questa sezione è un riferimento per coloro che utilizzano l'agente Logs obsoleto CloudWatch . Se utilizzi Instance Metadata Service versione 2 (IMDSv2), devi utilizzare il nuovo agente unificato. CloudWatch Tuttavia, anche se non lo utilizziIMDSv2, ti consigliamo vivamente di utilizzare il nuovo agente unificato anziché l' CloudWatch agente Logs obsoleto. CloudWatch Per informazioni sul nuovo CloudWatch agente unificato, consulta Raccolta di metriche e log dall'istanza EC2 Amazon e dai server locali con l'agente. CloudWatch Per informazioni sulla migrazione dall'agente CloudWatch Logs obsoleto all'agente unificato, crea il file di configurazione dell'agente con la procedura guidata. CloudWatch
L'agente CloudWatch Logs fornisce un modo automatico per inviare dati di log a CloudWatch Logs da istanze AmazonEC2. L'agente include i componenti seguenti:
-
Un plug-in AWS CLI che invia i dati di registro a Logs. CloudWatch
-
Uno script (demone) che avvia il processo per inviare i dati ai registri. CloudWatch
-
Un processo cron che garantisce che il daemon sia sempre in esecuzione.
File di configurazione dell'agente
Il file di configurazione dell'agente CloudWatch Logs descrive le informazioni necessarie all'agente Logs. CloudWatch La sezione [general] del file di configurazione dell'agente definisce le configurazioni comuni applicabili a tutti i flussi di log. La sezione [logstream] definisce le informazioni necessarie per l'invio di un file locale a un flusso di log in remoto. Puoi disporre di più sezioni [logstream], ma ciascuna deve avere un nome univoco all'interno del file di configurazione, ad esempio [logstream1], [logstream2] e così via. Il valore [logstream] e la prima riga di dati nel file di log definiscono l'identità del file di log.
[general] state_file =
value
logging_config_file =value
use_gzip_http_content_encoding = [true | false] [logstream1] log_group_name =value
log_stream_name =value
datetime_format =value
time_zone = [LOCAL|UTC] file =value
file_fingerprint_lines =integer
|integer
-integer
multi_line_start_pattern =regex
| {datetime_format
} initial_position = [start_of_file | end_of_file] encoding = [ascii|utf_8|..] buffer_duration =integer
batch_count =integer
batch_size =integer
[logstream2] ...
- state_file
-
Specifica dove è archiviato il file di stato.
- logging_config_file
-
(Opzionale) Specifica la posizione del file di configurazione di registrazione dell'agente. Se non specifichi in questa pagina un file di configurazione di registrazione dell'agente, verrà utilizzato il file predefinito awslogs.conf. La posizione del file di default è
/var/awslogs/etc/awslogs.conf
se hai installato l'agente con uno script oppure/etc/awslogs/awslogs.conf
se hai installato l'agente con rpm. Il file è in formato file di configurazione Python (https://docs.pylogging-config-fileformatthon.org/2/library/logging.config.html#). I logger con i nomi seguenti possono essere personalizzati.cwlogs.push cwlogs.push.reader cwlogs.push.publisher cwlogs.push.event cwlogs.push.batch cwlogs.push.stream cwlogs.push.watcher
L'esempio seguente modifica il livello di reader e publisher impostandolo su un valore predefinito pari a. WARNING INFO
[loggers] keys=root,cwlogs,reader,publisher [handlers] keys=consoleHandler [formatters] keys=simpleFormatter [logger_root] level=INFO handlers=consoleHandler [logger_cwlogs] level=INFO handlers=consoleHandler qualname=cwlogs.push propagate=0 [logger_reader] level=WARNING handlers=consoleHandler qualname=cwlogs.push.reader propagate=0 [logger_publisher] level=WARNING handlers=consoleHandler qualname=cwlogs.push.publisher propagate=0 [handler_consoleHandler] class=logging.StreamHandler level=INFO formatter=simpleFormatter args=(sys.stderr,) [formatter_simpleFormatter] format=%(asctime)s - %(name)s - %(levelname)s - %(process)d - %(threadName)s - %(message)s
- use_gzip_http_content_encoding
-
Se impostato su true (impostazione predefinita), abilita la codifica del contenuto http con gzip per inviare payload compressi ai registri. CloudWatch Ciò riduce l'CPUutilizzo, riduce e diminuisce la latenza di put NetworkOut. Per disabilitare questa funzionalità, aggiungi use_gzip_http_content_encoding = false alla sezione [general] del file di configurazione dell'agente Logs, quindi riavvia l'agente. CloudWatch
Nota
Questa impostazione è disponibile solo in awscli-cwlogs versione 1.3.3 e successive.
- log_group_name
-
Specifica il gruppo di log di destinazione. Un gruppo di log viene creato automaticamente se non è già esistente. I nomi dei gruppi di log possono essere lunghi da 1 a 512 caratteri. I caratteri consentiti includono a-z, A-Z, 0-9, '_' (trattino basso), '-' (trattino), '/' (barra) e '.' (punto).
- log_stream_name
-
Specifica il flusso di log di destinazione. Per definire un nome per il flusso di log, puoi utilizzare una stringa letterale o variabili predefinite ({instance_id}, {hostname} e {ip_address}) oppure una combinazione di entrambe. Un flusso di log viene creato automaticamente se non è già esistente.
- datetime_format
-
Specifica il modo in cui il timestamp viene estratto dai log. Il timestamp viene utilizzato per recuperare eventi di log e generare di parametri. L'ora corrente viene utilizzata per ciascun evento di log se il valore di datetime_format non è fornito. Se il valore di datetime_format fornito non è valido per un determinato messaggio di log, verrà utilizzato il timestamp dell'ultimo evento di log con timestamp analizzato correttamente. Se non esistono eventi di log precedenti, viene utilizzata l'ora corrente.
I codici datetime_format comuni sono elencati di seguito. Puoi inoltre utilizzare qualsiasi codice datetime_format supportato da Python, datetime.strptime(). Anche l'offset del fuso orario (%z) è supportato anche se non è supportato fino a python 3.2, [+-] senza due punti (:). HHMM Per ulteriori informazioni, consulta la pagina relativa al comportamento di strftime() e strptime()
. %y: anno senza secolo come numero decimale a cui è aggiunto uno zero. 00, 01, ..., 99
%Y: anno con secolo come numero decimale. 1970, 1988, 2001, 2013
%b: mese come nome abbreviato nella lingua locale. Jan, Feb, ..., Dec (en_US);
c%B: mese come nome completo nella lingua locale. January, February, ..., December (en_US);
%m: mese come numero decimale a cui è aggiunto uno zero. 01, 02, ..., 12
%d: giorno del mese come numero decimale a cui è aggiunto uno zero. 01, 02, ..., 31
%H: ora (formato di 24 ore) come numero decimale a cui è aggiunto uno zero. 00, 01, ..., 23
%I: ora (formato di 12 ore) come numero decimale a cui è aggiunto uno zero. 01, 02, ..., 12
%p: equivalente locale di AM o PM.
%M: minuto come numero decimale a cui è aggiunto uno zero. 00, 01, ..., 59
%S: secondo come numero decimale a cui è aggiunto uno zero. 00, 01, ..., 59
%f: microsecondo come numero decimale, a cui è aggiunto uno zero a sinistra. 000000, ..., 999999
%z: UTC offset nella forma + o -. HHMM HHMM +0000, -0400, +1030
Formati di esempio:
Syslog: '%b %d %H:%M:%S', e.g. Jan 23 20:59:29
Log4j: '%d %b %Y %H:%M:%S', e.g. 24 Jan 2014 05:00:00
ISO8601: '%Y-%m-%dT%H:%M:%S%z', e.g. 2014-02-20T05:20:20+0000
- time_zone
-
Specifica il fuso orario del timestamp dell'evento di log. I due valori supportati sono UTC e. LOCAL L'impostazione predefinita èLOCAL, che viene utilizzata se il fuso orario non può essere dedotto in base a datetime_format.
- file
-
Specificare i file di registro che si desidera inviare a Logs. CloudWatch File può puntare a un determinato file o più file (tramite caratteri jolly, come /var/log/system.log*). Solo il file più recente viene inviato ai CloudWatch registri in base all'ora di modifica del file. Ti consigliamo di utilizzare i caratteri jolly per specificare una serie di file dello stesso tipo, ad esempio ccess_log.2014-06-01-01, access_log.2014-06-01-02 e così via, ma non file di più tipi, ad esempio access_log_80 e access_log_443. Per specificare più tipi di file, aggiungi un'altra voce di flusso di log al file di configurazione in modo che ogni tipo di file di log vada in un flusso di log distinto. I file compressi non sono supportati.
- file_fingerprint_lines
-
Specifica l'intervallo di righe per identificare un file. I valori validi sono un numero o due numeri delimitati da trattino, ad esempio "1", "2-5". Il valore predefinito è "1" in modo da utilizzare la prima riga per calcolare l'impronta. Le righe di impronte digitali non vengono inviate ai CloudWatch registri a meno che tutte le righe specificate non siano disponibili.
- multi_line_start_pattern
-
Specifica il modello per identificare l'inizio di un messaggio di log. Un messaggio di log è composto da una riga corrispondente al modello e da tutte le righe successive non corrispondenti al modello. I valori validi sono espressioni regolari o {datetime_format}. Quando utilizzi {datetime_format}, devi specificare l'opzione datetime_format. Il valore predefinito è "^[^\s]", in modo tale che le righe che iniziano con caratteri diversi da spazi vuoti chiudono il messaggio di log precedente e iniziano un nuovo messaggio di log.
- initial_position
-
Specifica il punto da cui iniziare a leggere i dati (start_of_file o end_of_file). Il valore predefinito è start_of_file. È utilizzato solo se non vi è uno stato reso persistente per tale flusso di log.
- encoding
-
Specifica la codifica del file di log in modo che il file può essere letto correttamente. Il valore predefinito è utf_8. Possono qui essere utilizzate le codifiche supportate da Python codecs.decode().
avvertimento
La specificazione di una codifica non corretta potrebbe causare una perdita di dati, in quanto i caratteri che non possono essere decodificati saranno sostituiti da altri caratteri.
Sono elencate di seguito alcune codifiche comuni:
ascii, big5, big5hkscs, cp037, cp424, cp437, cp500, cp720, cp737, cp775, cp850, cp852, cp855, cp856, cp857, cp858, cp860, cp861, cp862, cp863, cp864, cp865, cp866, cp869, cp874, cp875, cp932, cp949, cp950, cp1006, cp1026, cp1140, cp1250, cp1251, cp1252, cp1253, cp1254, cp1255, cp1256, cp1257, cp1258, euc_jp, euc_jis_2004, euc_jisx0213, euc_kr, gb2312, gbk, gb18030, hz, iso2022_jp, iso2022_jp_1, iso2022_jp_2, iso2022_jp_2004, iso2022_jp_3, iso2022_jp_ext, iso2022_kr, latin_1, iso8859_2, iso8859_3, iso8859_4, iso8859_5, iso8859_6, iso8859_7, iso8859_8, iso8859_9, iso8859_10, iso8859_13, iso8859_14, iso8859_15, iso8859_16, johab, koi8_r, koi8_u, mac_cyrillic, mac_greek, mac_iceland, mac_latin2, mac_roman, mac_turkish, ptcp154, shift_jis, shift_jis_2004, shift_jisx0213, utf_32, utf_32_be, utf_32_le, utf_16, utf_16_be, utf_16_le, utf_7, utf_8, utf_8_sig
- buffer_duration
-
Specifica la durata del raggruppamento di eventi di log. Il valore minimo è 5.000 ms e il valore predefinito è 5.000 ms.
- batch_count
-
Specifica il numero massimo di eventi di log in un batch, fino a un massimo di 10.000. Il valore predefinito è 10000.
- batch_size
-
Specifica la dimensione massima di eventi di log in un batch in byte, fino a un massimo di 1.048.576 byte. Il valore predefinito è 1048576 byte. Questa dimensione viene calcolata come la somma di tutti i messaggi di evento in UTF -8, più 26 byte per ogni evento di registro.
Utilizzo dell'agente CloudWatch Logs con proxy HTTP
È possibile utilizzare l'agente CloudWatch Logs con i proxy. HTTP
Nota
HTTPi proxy sono supportati nella versione 1.3.8 o successiva del awslogs-agent-setup file.py.
Per utilizzare l'agente Logs con i proxy CloudWatch HTTP
-
Esegui una di queste operazioni:
-
Per una nuova installazione dell'agente CloudWatch Logs, esegui i seguenti comandi:
curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
sudo python awslogs-agent-setup.py --region
us-east-1
--http-proxyhttp://your/proxy
--https-proxyhttp://your/proxy
--no-proxy 169.254.169.254Per mantenere l'accesso al servizio di EC2 metadati Amazon sulle EC2 istanze, usa --no-proxy 169.254.169.254 (consigliato). Per ulteriori informazioni, consulta i metadati dell'istanza e i dati utente nella Amazon EC2 User Guide.
Nei valori per
http-proxy
ehttps-proxy
, specifichi l'interoURL. -
Per un'installazione esistente dell'agente CloudWatch Logs, modifica /var/awslogs/etc/proxy.conf e aggiungi i tuoi proxy:
HTTP_PROXY= HTTPS_PROXY= NO_PROXY=
-
-
Riavvia l'agente per rendere effettive le modifiche:
sudo service awslogs restart
Se utilizzi Amazon Linux 2, utilizza il comando seguente per riavviare l'agente:
sudo service awslogsd restart
CloudWatch Compartimentazione dei file di configurazione dell'agente Logs
Se stai usando awslogs-agent-setup la versione 1.3.8 o successiva con awscli-cwlogs 1.3.3 o successiva, puoi importare diverse configurazioni di flusso per vari componenti indipendentemente l'una dall'altra creando file di configurazione aggiuntivi nella directory /var/awslogs/etc/config/. CloudWatch All'avvio, l'agente Logs include tutte le configurazioni di flusso in questi file di configurazione aggiuntivi. Le proprietà di configurazione nella sezione [general] devono essere definite nel file di configurazione principale (/var/awslogs/etc/awslogs.conf) e vengono ignorate in tutti i file di configurazione aggiuntivi in /var/awslogs/etc/config/.
Se non disponi di una directory /var/awslogs/etc/config/ perché hai installato l'agente con rpm, puoi in alternativa utilizzare la directory /etc/awslogs/config/.
Riavvia l'agente per rendere effettive le modifiche:
sudo service awslogs restart
Se utilizzi Amazon Linux 2, utilizza il comando seguente per riavviare l'agente:
sudo service awslogsd restart
CloudWatch Agente Logs FAQ
- Quali tipi di rotazione di file sono supportati?
-
Sono supportati i seguenti meccanismi di rotazione di file:
-
Ridenominazione di file di log esistenti con un suffisso numerico, quindi nuova creazione del file di log vuoto originale. Ad esempio, /var/log/syslog.log viene rinominato in /var/log/syslog.log.1. Se /var/log/syslog.log.1 esiste già da una rotazione precedente, viene rinominato in /var/log/syslog.log.2.
-
Troncamento del file di log originale in vigore dopo la creazione di una copia. Ad esempio, /var/log/syslog.log viene copiato in /var/log/syslog.log.1 e /var/log/syslog.log viene troncato. In questo caso potrebbe verificarsi una perdita di dati, quindi fai attenzione con l'uso di questo meccanismo di rotazione di file.
-
Creazione di un nuovo file con un modello comune come il precedente. Ad esempio, /var/log/syslog.log.2014-01-01 rimane e viene creato /var/log/syslog.log.2014-01-02.
L'impronta (ID origine) del file viene calcolata sottoponendo a hashing la chiave di flusso di log e la prima riga del contenuto del file. Per sovrascrivere questo comportamento, puoi utilizzare l'opzione file_fingerprint_lines. Quando si verifica la rotazione del file, il nuovo file deve avere un nuovo contenuto e il vecchio file non deve avere contenuto aggiuntivo; l'agente invia il nuovo file dopo aver completato la lettura del vecchio file.
-
- Come posso determinare quale versione di agente sto utilizzando?
-
Se hai utilizzato uno script di installazione per installare l'agente CloudWatch Logs, puoi utilizzare /var/awslogs/bin/awslogs-version.sh per verificare quale versione dell'agente stai utilizzando. Verrà stampata la versione dell'agente e le sue dipendenze principali. Se hai usato yum per installare l'agente CloudWatch Logs, puoi usare «yum info awslogs» e «yum info aws-cli-plugin-cloudwatch -logs» per controllare la versione dell'agente e del plugin Logs. CloudWatch
- Come vengono convertite le voci di log in eventi di log?
-
Gli eventi di log contengono due proprietà: il timestamp del momento in cui si è verificato l'evento e il messaggio di log non elaborato. Per impostazione predefinita, le righe che iniziano con caratteri diversi da spazi vuoti chiudono il messaggio di log precedente se ne esiste uno e iniziano un nuovo messaggio di log. Per sovrascrivere questo comportamento, puoi utilizzare multi_line_start_pattern e le righe che corrispondono al modello iniziano un nuovo messaggio di log. Il modello può essere qualsiasi espressione regolare o "{datetime_format}". Ad esempio, se la prima riga di ogni messaggio di log contiene un timestamp come "2014-01-02T13:13:01Z", allora multi_line_start_pattern può essere impostato su "\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z". Per semplificare la configurazione, puoi utilizzare la variabile "{datetime_format}" se hai specificato l'opzione datetime_format. Per lo stesso esempio, se datetime_format è impostato su "%Y-%m-%dT%H:%M:%S%z", multi_line_start_pattern può essere semplicemente "{datetime_format}".
L'ora corrente viene utilizzata per ciascun evento di log se il valore di datetime_format non è fornito. Se il valore di datetime_format fornito non è valido per un determinato messaggio di log, verrà utilizzato il timestamp dell'ultimo evento di log con timestamp analizzato correttamente. Se non esistono eventi di log precedenti, viene utilizzata l'ora corrente. Viene registrato un messaggio di avviso quando un evento di log utilizza l'ora corrente o l'ora dell'evento di log precedente.
I timestamp vengono utilizzati per recuperare eventi di log e generare parametri, perciò se specifichi il formato errato, gli eventi di log potrebbero diventare non recuperabili e generare i parametri errati.
- Come vengono raggruppatigli eventi di log?
-
Un batch diviene completo e viene pubblicato quando si verifica qualsiasi delle condizioni seguenti:
-
La quantità di tempo di buffer_duration è trascorsa a partire dall'aggiunta del primo evento di log.
-
È stato accumulato un valore inferiore di batch_size log di eventi di log, ma l'aggiunta del nuovo evento di log supera il valore di batch_size.
-
Il numero di eventi di log ha raggiunto il valore di batch_count.
-
Gli eventi di log dal batch non si estendono per più di 24 ore, ma l'aggiunta del nuovo evento di log supera il vincolo di 24 ore.
-
- Cosa può causare l'omissione o il troncamento di voci di log, eventi di log o batch?
-
Per seguire il vincolo dell'operazione
PutLogEvents
, i seguenti problemi potrebbero causare l'omissione di un evento di log o di un batch.Nota
L'agente CloudWatch Logs scrive un avviso nel suo registro quando i dati vengono ignorati.
-
Se la dimensione di un evento di log supera 256 KB, l'evento di log viene completamente ignorato.
-
Se il timestamp dell'evento di log è superiore a 2 ore successive all'ora attuale, l'evento di log viene ignorato.
-
Se il timestamp dell'evento di log è superiore a 14 giorni antecedenti il giorno attuale, l'evento di log viene ignorato.
-
Se qualsiasi evento di log è precedente al periodo di conservazione del gruppo di log, l'intero batch viene ignorato.
-
Se il batch di eventi di log in una singola richiesta
PutLogEvents
si estende per più di 24 ore, l'operazionePutLogEvents
ha esito negativo.
-
- L'arresto dell'agente causa perdita di dati o duplicati?
-
No, purché il file di stato sia disponibile e non si sia verificata alcuna rotazione del file a partire dall'ultima esecuzione. L'agente CloudWatch Logs può iniziare dal punto in cui si è fermato e continuare a inviare i dati di registro.
- Posso indirizzare diversi file di log dallo stesso host o da host diversi allo stesso flusso di log?
-
La configurazione di più origini di log per l'invio di dati a un unico flusso di log non è supportata.
- Quali API chiamate effettua l'agente (o quali azioni devo aggiungere alla mia IAM policy)?
-
L'agente CloudWatch Logs richiede le
PutLogEvents
operazioniCreateLogGroup
CreateLogStream
,DescribeLogStreams
, e. Se utilizzi l'ultimo agente,DescribeLogStreams
non è necessario. Osserva la policy IAM di esempio seguente.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ] }
- Non voglio che l'agente CloudWatch Logs crei automaticamente né gruppi di log né flussi di log. Come posso impedire all'agente di ricreare gruppi di log e flussi di log?
-
Nella tua IAM politica, puoi limitare l'agente solo alle seguenti operazioni:
DescribeLogStreams
,.PutLogEvents
Prima di revocare le autorizzazioni
CreateLogStream
eCreateLogGroup
all'agente, assicurati di creare sia i gruppi di log che i flussi di log che devono essere utilizzati dall'agente. L'agente di log non può creare flussi di log in un gruppo di log creato a meno che non disponga delle autorizzazioniCreateLogStream
eCreateLogGroup
. - Quali log dovrei esaminare durante la risoluzione dei problemi?
-
Il log di installazione dell'agente si trova in
/var/log/awslogs-agent-setup.log
e il log dell'agente si trova in/var/log/awslogs.log
.