Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWS Elastic Beanstalk Platform menggunakan format log server web khusus untuk menyampaikan informasi tentang permintaan HTTP secara efisien ke sistem pelaporan kesehatan yang ditingkatkan. Sistem menganalisis log, mengidentifikasi masalah, dan menetapkan kondisi instans dan lingkungan dengan sesuai. Jika Anda menonaktifkan proksi server web di lingkungan Anda dan melayani permintaan langsung dari kontainer web, Anda masih dapat menggunakan pelaporan kondisi yang ditingkatkani sepenuhnya dengan mengonfigurasi server Anda ke output log di lokasi dan format yang agen kondisi Elastic Beanstalk gunakan.
catatan
Informasi di halaman ini hanya relevan untuk platform berbasis Linux. Pada platform Windows Server, Elastic Beanstalk menerima informasi tentang permintaan HTTP langsung dari server web IIS. Untuk detail selengkapnya, lihat Metrik server web menangkap IIS pada Windows server.
Konfigurasi log server web
Platform Elastic Beanstalk dikonfigurasi untuk mengeluarkan dua log dengan informasi tentang permintaan HTTP. Yang pertama adalah dalam format verbose dan memberikan informasi detail tentang permintaan, termasuk informasi agen pengguna yang mengirimkan permintaan dan stempel waktu yang dapat dibaca manusia.
/var/log/nginx/access.log
Contoh berikut adalah dari proksi nginx yang sedang berjalan pada lingkungan web server Ruby, tetapi format ini mirip untuk Apache.
172.31.24.3 - - [23/Jul/2015:00:21:20 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:21 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:22 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:22 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:22 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
Log kedua dalam format singkat. Ini mencakup informasi yang relevan hanya untuk pelaporan kondisi yang ditingkatkan. Log ini adalah output ke subfolder bernama healthd
dan berputar setiap jam. Log lama dihapus segera setelah diputar.
/var/log/nginx/healthd/application.log.2015-07-23-00
Contoh berikut menunjukkan log dalam format yang dapat dibaca mesin.
1437609879.311"/"200"0.083"0.083"177.72.242.17
1437609879.874"/"200"0.347"0.347"177.72.242.17
1437609880.006"/bad/path"404"0.001"0.001"177.72.242.17
1437609880.058"/"200"0.530"0.530"177.72.242.17
1437609880.928"/bad/path"404"0.001"0.001"177.72.242.17
Format log kondisi yang ditingkatkan mencakup informasi berikut:
-
Waktu permintaan, dalam waktu Unix
-
Alur dari permintaan
-
Kode status HTTP untuk hasil
-
Waktu permintaan
-
Waktu hulu
-
Header HTTP
X-Forwarded-For
Untuk proksi nginx, waktu dicetak dalam detik floating-point, dengan tiga tempat desimal. Untuk Apache, seluruh mikrodetik digunakan.
catatan
Jika Anda melihat peringatan yang mirip dengan berikut ini dalam berkas log, di mana DATE-TIME
adalah tanggal dan waktu, dan Anda menggunakan proxy khusus, seperti di lingkungan Docker multi-kontainer, Anda harus menggunakan .ebextension untuk mengonfigurasi lingkungan Anda sehingga healthd
dapat membaca berkas log Anda:
W, [DATE-TIME #1922] WARN -- : log file "/var/log/nginx/healthd/application.log.DATE-TIME" does not exist
Anda dapat memulai dengan .ebextension di Contoh Docker multi-kontainer.
/etc/nginx/conf.d/webapp_healthd.conf
Contoh berikut menunjukkan konfigurasi log untuk nginx dengan format log healthd
yang tersorot.
upstream my_app {
server unix:///var/run/puma/my_app.sock;
}
log_format healthd '$msec"$uri"'
'$status"$request_time"$upstream_response_time"'
'$http_x_forwarded_for';
server {
listen 80;
server_name _ localhost; # need to listen to localhost for worker tier
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
set $hour $4;
}
access_log /var/log/nginx/access.log main;
access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd;
location / {
proxy_pass http://my_app; # match the name of upstream directive which is defined above
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /assets {
alias /var/app/current/public/assets;
gzip_static on;
gzip on;
expires max;
add_header Cache-Control public;
}
location /public {
alias /var/app/current/public;
gzip_static on;
gzip on;
expires max;
add_header Cache-Control public;
}
}
/etc/httpd/conf.d/healthd.conf
Contoh berikut menunjukkan pengaturan untuk log konfigurasi untuk Apache.
LogFormat "%{%s}t\"%U\"%s\"%D\"%D\"%{X-Forwarded-For}i" healthd
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/healthd/application.log.%Y-%m-%d-%H 3600" healthd
Menghasilkan log untuk pelaporan kondisi yang ditingkatkan
Untuk menyediakan log ke agen kondisi, Anda harus melakukan hal berikut:
-
Log output dalam format yang benar, seperti yang ditunjukkan pada bagian sebelumnya
-
Keluaran log ke
/var/log/nginx/healthd/
-
Log nama menggunakan format berikut:
application.log.$year-$month-$day-$hour
-
Putar log sekali per jam
-
Jangan memotong log