CloudWatch Referensi agen Log - CloudWatch Log Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

CloudWatch Referensi agen Log

penting

Referensi ini untuk yang lama tidak digunakan lagi CloudWatch Log agen. Jika Anda menggunakan Instance Metadata Service Versi 2 (IMDSv2), Anda harus menggunakan terpadu baru CloudWatch agen. Bahkan jika Anda tidak menggunakan IMDSv2, kami sangat menyarankan Anda untuk menggunakan terpadu yang lebih baru CloudWatch agen bukan agen log yang lebih tua. Untuk informasi selengkapnya tentang agen terpadu yang lebih baru, lihatMengumpulkan metrik dan log dari instans Amazon EC2 dan server on-premise dengan CloudWatch agen.

Untuk informasi tentang migrasi dari yang lebih tua CloudWatch Log agen untuk agen terpadu, lihatBuat CloudWatch file konfigurasi agen dengan wizard.

Yang CloudWatch Agen Log menyediakan cara otomatis untuk mengirim data log ke CloudWatch Log dari instans Amazon EC2. Agen meliputi komponen berikut:

  • Plug-in keAWS CLIyang mendorong data log ke CloudWatch Log.

  • Skrip (daemon) yang memulai proses untuk mendorong data CloudWatch Log.

  • Tugas cron yang memastikan bahwa daemon selalu berjalan.

File konfigurasi agen

Yang CloudWatch File konfigurasi agen Log menjelaskan informasi yang diperlukan oleh CloudWatch Log agen. Bagian [general] file konfigurasi agen mendefinisikan konfigurasi umum yang berlaku untuk semua pengaliran log. Bagian [logstream] menentukan informasi yang diperlukan untuk mengirim file lokal ke pengaliran log jarak jauh. Anda dapat memiliki lebih dari satu bagian [logstream], tetapi masing-masing harus memiliki nama yang unik dalam file konfigurasi, misalnya [logstream1], [logstream2], dan seterusnya. Nilai [logstream] beserta baris pertama data dalam berkas log akan menentukan identitas berkas 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

Menentukan tempat file state disimpan.

logging_config_file

(Opsional) Menentukan lokasi file konfigurasi pencatatan agen. Jika Anda tidak menentukan file konfigurasi pencatatan agen di sini, file default awslogs.conf akan digunakan. Lokasi file default adalah /var/awslogs/etc/awslogs.conf jika Anda menginstal agen dengan skrip, dan /etc/awslogs/awslogs.conf jika Anda menginstal agen dengan rpm. File ini dalam format file konfigurasi Python (https://docs.python.org/2/library/logging.config.html #logging-config-fileformat). Pencatat log dengan nama berikut dapat disesuaikan.

cwlogs.push cwlogs.push.reader cwlogs.push.publisher cwlogs.push.event cwlogs.push.batch cwlogs.push.stream cwlogs.push.watcher

Contoh di bawah ini mengubah tingkat pembaca dan penerbit menjadi WARNING sementara nilai default-nya adalah 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

Jika diatur ke true (default), ini akan mengaktifkan pengodean konten http gzip untuk mengirim muatan terkompresi ke CloudWatch Log. Hal ini mengurangi penggunaan CPU, menurunkan NetworkOut, dan mengurangi latensi put. Untuk menonaktifkan fitur ini, tambahkanuse_gzip_http_content_encoding = salahkepada[umum]bagian dari CloudWatch Log file konfigurasi agen, dan kemudian restart agen.

catatan

Pengaturan ini hanya tersedia di awscli-cwlogs versi 1.3.3 dan yang lebih baru.

log_group_name

Menentukan grup log tujuan. Jika belum ada, grup log akan dibuat secara otomatis. Nama grup log dapat berisi antara 1 dan 512 karakter. Karakter yang diperbolehkan meliputi a–z, A–Z, 0–9, '_' (garis bawah), '-' (tanda hubung), '/' (garis miring ), dan '.' (titik).

log_stream_name

Menentukan pengaliran log tujuan. Anda dapat menggunakan string literal atau variabel yang telah ditetapkan ({instance_id}, {hostname}, {ip_address}), atau kombinasi keduanya untuk menentukan nama pengaliran log. Jika belum ada, pengaliran log akan dibuat secara otomatis.

datetime_format

Menentukan bagaimana stempel waktu diekstraksi dari log. Stempel waktu digunakan untuk mengambil log acara dan menghasilkan metrik. Waktu saat ini akan digunakan untuk setiap log acara jika datetime_format tidak disediakan. Jika nilai datetime_format yang diberikan tidak valid untuk pesan log tertentu, stempel waktu dari log acara terakhir dengan stempel waktu yang berhasil diurai akan digunakan. Jika tidak ada log acara sebelumnya, waktu saat ini akan digunakan.

Kode datetime_format yang umum tercantum di bawah ini. Anda juga dapat menggunakan kode datetime_format yang didukung oleh Python, datetime.strptime(). Pengimbangan zona waktu (%z) juga didukung meskipun itu tidak didukung sebelum python 3.2, [+-]HHMM tanpa titik dua(:). Untuk informasi selengkapnya, lihat Perilaku strftime() dan strptime().

%y: Tahun tanpa abad sebagai angka desimal penambah nol. 00, 01,..., 99

%Y: Tahun dengan abad sebagai angka desimal.1970, 1988, 2001, 2013

%b: Bulan sebagai nama singkat lokal. Jan, Feb, ..., Des (id_ID);

%B: Bulan sebagai nama lengkap lokal. Januari, Februari, ..., Desember (id_ID);

%m: Bulan sebagai angka desimal nol-padded. 01, 02,..., 12

%d: Tanggal dalam bulan sebagai angka desimal nol-padded. 01, 02,..., 31

%H: Jam (24 jam) sebagai angka desimal nol-padded. 00, 01,..., 23

%I: Jam (12 jam) sebagai angka desimal nol-padded. 01, 02,..., 12

%p: Istilah lokal yang setara dengan AM atau PM.

%M: Menit sebagai angka desimal nol-padded. 00, 01,..., 59

%S: Kedua sebagai angka desimal nol-padded. 00, 01,..., 59

%f: Mikrosekon sebagai angka desimal, nol-padded di sebelah kiri. 000000,..., 999999

%z: Pengimbangan UTC dalam bentuk +HHHHHHHHHHHHMM. +0000, -0400, +1030

Contoh format:

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

Menentukan zona stempel waktu log acara. Dua nilai yang didukung adalah UTC dan LOCAL. Default-nya adalah LOCAL, yang digunakan jika zona waktu tidak dapat disimpulkan berdasarkan datetime_format.

berkas

Menentukan berkas log yang ingin Anda dorong CloudWatch Log. File dapat menunjuk ke file tertentu atau beberapa file (menggunakan wildcard, seperti /var/log/system.log*). Hanya file terbaru yang didorong ke CloudWatch Log berdasarkan waktu modifikasi file. Kami sarankan Anda menggunakan wildcard untuk menentukan serangkaian file dengan jenis yang sama, seperti access_log.2014-06-01-01, access_log.2014-06-01-02, dan seterusnya, tetapi bukan beberapa jenis file, seperti access_log_80 dan access_log_443. Untuk menentukan beberapa jenis file, tambahkan entri pengaliran log lain ke file konfigurasi agar setiap jenis berkas log pergi ke pengaliran log yang berbeda. File terkompresi tidak didukung.

file_fingerprint_lines

Menentukan rentang baris untuk mengidentifikasi file. Nilai yang valid adalah satu angka atau dua angka yang dibatasi dengan tanda hubung, seperti '1', '2-5'. Nilai default-nya adalah '1' sehingga baris pertama digunakan untuk menghitung sidik jari. Garis sidik jari tidak dikirim ke CloudWatch Log kecuali semua baris yang ditentukan tersedia.

multi_line_start_pattern

Menentukan pola untuk mengidentifikasi awal pesan log. Pesan log dibuat dari baris yang sesuai dengan pola dan baris berikutnya yang tidak cocok dengan pola. Nilai yang valid adalah ekspresi reguler atau {datetime_format}. Jika menggunakan {datetime_format}, pilihan datetime_format harus ditentukan. Nilai default-nya adalah '^[^\ s]' sehingga semua baris yang dimulai dengan karakter yang bukan merupakan spasi kosong akan menutup pesan log sebelumnya dan memulai pesan log baru.

initial_position

Menentukan tempat untuk memulai membaca data (start_of_file atau end_of_file). Default-nya adalah start_of_file. Ini hanya digunakan jika tidak ada keadaan yang dipertahankan untuk pengaliran log tersebut.

encoding

Menentukan pengodean berkas log agar file dapat dibaca dengan benar. Default-nya adalah utf_8. Pengodean yang didukung oleh Python codecs.decode() dapat digunakan di sini.

Awas

Jika Anda menentukan pengodean yang salah, mungkin akan ada kehilangan data karena karakter yang tidak dapat didekode diganti dengan karakter lain.

Berikut adalah beberapa pengodean umum:

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

Menentukan durasi waktu untuk pembuatan batch log acara. Nilai minimumnya adalah 5000ms dan nilai default-nya adalah 5000ms.

batch_count

Menentukan jumlah maks log acara dalam batch, maksimum 10000. Nilai default-nya adalah 10000.

batch_size

Menentukan ukuran maks log acara dalam batch, dalam byte, maksimal 1048576 byte. Nilai default-nya adalah 1048576. Ukuran ini dihitung sebagai jumlah semua pesan kejadian dalam UTF-8, ditambah 26 byte untuk setiap log acara.

Menggunakan CloudWatch Agen log dengan proxy HTTP

Anda dapat menggunakan CloudWatch Agen log dengan proxy HTTP.

catatan

Proxy HTTP didukung di awslogs-agent-setup.py versi 1.3.8 atau yang lebih baru.

Untuk menggunakan CloudWatch Agen log dengan proxy HTTP
  1. Lakukan salah satu dari berikut:

    1. Untuk instalasi baru CloudWatch Log agen, jalankan perintah berikut:

      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-proxy http://your/proxy --https-proxy http://your/proxy --no-proxy 169.254.169.254

      Untuk mempertahankan akses ke layanan metadata Amazon EC2 di instans EC2, gunakan --no-proxy 169.254.169.254 (disarankan). Untuk informasi selengkapnya, lihat Metadata Instans dan Data Pengguna di Panduan Pengguna Amazon EC2 untuk Instans Linux.

      Dalam nilai untuk http-proxy dan https-proxy, Anda menentukan seluruh URL.

    2. Untuk instalasi yang ada CloudWatch Agen log, edit /var/awslogs/etc/proxy.conf, lalu tambahkan proxy Anda:

      HTTP_PROXY= HTTPS_PROXY= NO_PROXY=
  2. Restart agen agar perubahan diterapkan:

    sudo service awslogs restart

    Jika Anda menggunakan Amazon Linux 2, gunakan perintah berikut untuk me-restart agen:

    sudo service awslogsd restart

Kompartementalisasi CloudWatch Log file konfigurasi agen

Jika Anda menggunakan awslogs-agent-setup.py versi 1.3.8 atau yang lebih baru dengan awscli-cwlogs 1.3.3 atau yang lebih baru, Anda dapat mengimpor konfigurasi aliran yang berbeda untuk berbagai komponen secara independen satu sama lain dengan membuat file konfigurasi tambahan di/var/awslogs/etc/config/direktori. Saat CloudWatch Agen log dimulai, ini mencakup konfigurasi aliran apa pun di file konfigurasi tambahan ini. Properti konfigurasi di bagian [general] harus didefinisikan dalam file konfigurasi utama (/var/awslogs/etc/awslogs.conf) dan diabaikan dalam file konfigurasi tambahan yang ditemukan di /var/awslogs/etc/config/.

Jika Anda tidak memiliki /var/awslogs/etc/config/ karena Anda menginstal agen dengan rpm, Anda dapat menggunakan direktori /etc/awslogs/config/ sebagai gantinya.

Restart agen agar perubahan diterapkan:

sudo service awslogs restart

Jika Anda menggunakan Amazon Linux 2, gunakan perintah berikut untuk me-restart agen:

sudo service awslogsd restart

CloudWatch FAQ Log Agent

Apa jenis rotasi file yang didukung?

Mekanisme rotasi file berikut didukung:

  • Mengganti nama berkas log yang ada dengan akhiran numerik, kemudian membuat ulang berkas log kosong asli. Misalnya, /var/log/syslog.log diganti namanya menjadi /var/log/syslog.log.1. Jika /var/log/syslog.log.1 sudah ada dari rotasi sebelumnya, namanya diganti menjadi /var/log/syslog.log.2.

  • Memotong berkas log asli di tempat setelah membuat salinan. Misalnya, /var/log/syslog.log disalin ke /var/log/syslog.log.1 dan /var/log/syslog.log dipotong. Mungkin akan ada kehilangan data untuk kasus ini, jadi berhati-hatilah dalam menggunakan mekanisme rotasi file ini.

  • Membuat file baru dengan pola umum seperti yang lama. Misalnya, /var/log/syslog.log.2014-01-01 tetap ada dan /var/log/syslog.log.2014-01-02 dibuat.

Sidik jari (ID sumber) file dihitung dengan hashing kunci pengaliran log dan baris pertama dari konten file. Untuk menggantikan perilaku ini, pilihan file_fingerprint_lines dapat digunakan. Ketika rotasi file terjadi, file baru seharusnya memiliki konten baru dan file lama tidak seharusnya memiliki tambahan konten; agen mendorong file baru setelah selesai membaca file lama.

Bagaimana cara menentukan versi agen yang saya gunakan?

Jika Anda menggunakan script setup untuk menginstal CloudWatch Log agen, Anda dapat menggunakan/var/awslogs/bin/awslogs-version.shuntuk memeriksa versi agen yang Anda gunakan. Versi agen dan dependensi utamanya akan dicetak. Jika Anda menggunakan yum untuk menginstal CloudWatch Log agen, Anda dapat menggunakan“Info yum awslogs”dan“Info yum aws-cli-plugin-cloudwatch-log”untuk memeriksa versi CloudWatch Log agen dan plugin.

Bagaimana entri log dikonversi menjadi log acara?

Log acara berisi dua properti: stempel waktu ketika peristiwa terjadi, dan pesan log mentah. Secara default, semua baris yang dimulai dengan karakter yang bukan spasi kosong akan menutup pesan log sebelumnya, jika ada, dan memulai pesan log baru. Untuk menggantikan perilaku ini, multi_line_start_pattern dapat digunakan dan setiap baris yang cocok dengan pola akan memulai pesan log baru. Pola bisa berupa regex atau '{datetime_format}'. Sebagai contoh, jika baris pertama dari setiap pesan log berisi stempel waktu, seperti '2014-01-02T13:13:01Z', multi_line_start_pattern dapat diatur ke '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z'. Untuk menyederhanakan konfigurasi, variabel '{datetime_format}' dapat digunakan jika datetime_format option ditentukan. Untuk contoh yang sama, jika datetime_format diatur ke '%Y-%m-%dT%H:%M:%S%z', multi_line_start_pattern dapat berupa '{datetime_format}'.

Waktu saat ini akan digunakan untuk setiap log acara jika datetime_format tidak disediakan. Jika datetime_format yang diberikan tidak valid untuk pesan log tertentu, stempel waktu dari log acara terakhir dengan stempel waktu yang berhasil diurai akan digunakan. Jika tidak ada log acara sebelumnya, waktu saat ini akan digunakan. Pesan peringatan akan dicatat ketika peristiwa log kembali ke waktu saat ini atau waktu log acara sebelumnya.

Stempel waktu digunakan untuk mengambil log acara dan menghasilkan metrik, jadi jika Anda menentukan format yang salah, log acara mungkin tidak bisa diambil dan akan menghasilkan metrik yang salah.

Bagaimana batch log acara dibuat?

Suatu batch akan menjadi penuh dan dipublikasikan ketika salah satu dari persyaratan berikut terpenuhi:

  1. Parameter jumlah waktu buffer_duration telah berlalu sejak log acara pertama ditambahkan.

  2. Kurang dari batch_size log acara telah terakumulasi, tetapi menambahkan log acara baru akan melampaui batch_size.

  3. Jumlah log acara telah mencapai batch_count.

  4. Log acara dari batch tidak berlangsung lebih dari 24 jam, tetapi menambahkan log acara baru akan melampaui batas 24 jam.

Apa yang menyebabkan entri log, log acara, atau batch dilewati atau dipotong?

Untuk mematuhi batasan operasi PutLogEvents, masalah berikut dapat menyebabkan log acara atau batch dilewati.

catatan

Yang CloudWatch Agen log menulis peringatan untuk log-nya ketika data dilewati.

  1. Jika ukuran log acara melebihi 256 KB, log acara akan dilewati sepenuhnya.

  2. Jika stempel waktu log acara menyatakan waktu yang lebih dari 2 jam mendatang, log acara akan dilewati.

  3. Jika stempel waktu log acara menyatakan waktu yang lebih dari 14 hari yang lampau, log acara akan dilewati.

  4. Jika log acara lebih tua dari periode retensi grup log, seluruh batch akan dilewati.

  5. Jika batch log acara dalam satu permintaan PutLogEvents mencakup lebih dari 24 jam, operasi PutLogEvents akan gagal.

Apakah menghentikan agen akan menyebabkan kehilangan data/duplikat?

Tidak, selama file state tersedia dan tidak ada rotasi file yang terjadi sejak terakhir dijalankan. Yang CloudWatch Agen log dapat dimulai dari tempatnya dihentikan dan melanjutkan mendorong data log.

Dapatkah saya mengarahkan berkas log yang berbeda dari host yang sama atau berbeda ke pengaliran log yang sama?

Mengonfigurasi beberapa sumber log untuk mengirim data ke satu pengaliran log tidaklah didukung.

Panggilan API apa yang dilakukan agen (atau tindakan apa yang harus saya tambahkan ke kebijakan IAM saya)?

Yang CloudWatch Log agen membutuhkanCreateLogGroup,CreateLogStream,DescribeLogStreams, danPutLogEventsoperasi. Jika Anda menggunakan agen terbaru, DescribeLogStreams tidak diperlukan. Lihat contoh kebijakan IAM di bawah ini.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ] }
Saya tidak ingin CloudWatch Agen log untuk membuat grup log atau pengaliran log secara otomatis. Bagaimana cara mencegah agen membuat grup log dan pengaliran log?

Dalam kebijakan IAM, Anda dapat membatasi agen hanya ke operasi berikut: DescribeLogStreams, PutLogEvents.

Sebelum Anda mencabut izin CreateLogGroup dan CreateLogStream dari agen, pastikan untuk membuat grup log dan pengaliran log yang Anda inginkan untuk digunakan oleh agen. Agen log tidak dapat membuat pengaliran log dalam grup log yang telah Anda buat kecuali memiliki izin CreateLogGroup dan CreateLogStream.

Log apa yang harus saya lihat saat memecahkan masalah?

Log penginstalan agen berada di /var/log/awslogs-agent-setup.log dan log agen berada di /var/log/awslogs.log.