Android

Nginx hatasını ve erişim günlüğünü yapılandırma

Scaleable NGINX Configuration: Igor Sysoev @nginxconf 2014

Scaleable NGINX Configuration: Igor Sysoev @nginxconf 2014

İçindekiler:

Anonim

Nginx, İnternet'teki en büyük sitelerin bazılarının yüklenmesinden sorumlu açık kaynaklı, yüksek performanslı bir HTTP ve ters proxy sunucusudur. NGINX web sunucularını yönetirken, gerçekleştireceğiniz en sık görevlerden biri günlük dosyalarını kontrol etmektir.

Günlüklerin nasıl yapılandırılacağını ve okunacağını bilmek, ayrıntılı hata ayıklama bilgileri sağladıkları için sunucu veya uygulama sorunlarını giderirken çok kullanışlıdır.

Nginx, olaylarının kayıtlarını iki tür günlükte yazar: erişim günlükleri ve hata günlükleri. Erişim günlükleri istemci istekleri hakkında bilgi, hata günlükleri ise sunucu ve uygulama sorunları hakkında bilgi yazar.

Bu makalede, Nginx erişim ve hata günlüklerinin nasıl yapılandırılacağı ve okunacağı anlatılmaktadır.

Erişim Günlüğünü Yapılandırma

Bir istemci isteği işlendiğinde, Nginx erişim günlüğünde yeni bir olay oluşturur. Her olay kaydı bir zaman damgası içerir ve istemci ve istenen kaynak hakkında çeşitli bilgiler içerir. Erişim günlükleri, ziyaretçilerin yerini, ziyaret ettikleri sayfayı, sayfada ne kadar zaman geçirdiklerini ve çok daha fazlasını gösterebilir.

log_format yönergesi, günlüğe kaydedilen iletilerin biçimini tanımlamanıza olanak tanır. access_log yönergesi günlük dosyasının konumunu ve kullanılan biçimi etkinleştirir ve ayarlar.

access_log yönergesinin en temel sözdizimi aşağıdaki gibidir:

access_log log_file log_format;

Burada log_file , günlük dosyasının tam yoludur ve log_format , günlük dosyası tarafından kullanılan biçimdir.

Erişim günlüğü http , server veya location yönergeleri bloğunda etkinleştirilebilir.

Varsayılan olarak, erişim günlüğü ana Nginx yapılandırma dosyasının içindeki http yönergesinde genel olarak etkinleştirilir.

/etc/nginx/nginx.conf

http {… access_log /var/log/nginx/access.log;… }

Daha iyi bir bakım için, her sunucu bloğu için ayrı bir erişim günlük dosyası ayarlamanız önerilir. server yönergesinde ayarlanan access_log yönergesi, http (üst düzey) yönergesinde ayarlanan erişim access_log geçersiz kılar.

/etc/nginx/conf.d/domain.com.conf

http {… access_log /var/log/nginx/access.log;… server { server_name domain.com access_log /var/log/nginx/domain.access.log;… } }

Hiçbir günlük biçimi belirtilmezse, Nginx önceden tanımlanmış birleştirilmiş biçimi şu şekilde kullanır:

log_format combined '$remote_addr - $remote_user ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"';

Günlük biçimini değiştirmek için varsayılan ayarı geçersiz kılın veya yeni bir tanesini tanımlayın. Örneğin, X-Forwarded-For üstbilgisini gösteren değerle birleştirilmiş biçimi genişletecek olan main adlı yeni bir günlük biçimi tanımlamak için http veya server yönergesine aşağıdaki tanımı ekleyin:

log_format custom '$remote_addr - $remote_user "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

Yeni biçimi kullanmak için, adını aşağıda gösterildiği gibi günlük dosyasından sonra belirtin:

access_log /var/log/nginx/access.log custom;

Erişim günlüğü çok yararlı bilgiler sağlarken. disk alanı kaplar ve sunucu performansını etkileyebilir. Sunucunuzda kaynak azsa ve yoğun bir web siteniz varsa, erişim günlüğünü devre dışı bırakmak isteyebilirsiniz. Bunu yapmak için access_log yönergesinin değerini off :

access_log off;

Hata Günlüğünü Yapılandırma

Nginx, uygulama ve genel sunucu hataları hakkındaki mesajları hata günlüğü dosyasına yazar. Web uygulamanızda hatalar yaşıyorsanız, sorun giderme için ilk hata mesajı günlüğüdür.

error_log yönergesi, hata günlüğünün konumunu ve önem düzeyini etkinleştirir ve ayarlar. Aşağıdaki formu alır ve bir http , server veya location bloğu içinde ayarlanabilir:

error_log log_file log_level

log_level parametresi günlük kaydı düzeyini ayarlar. Aşağıda, önem derecelerine göre (düşükten yükseğe) listelenen düzeyler verilmiştir:

  • debug - Mesajlarda debug ayıklama. info - Bilgi mesajları. notice - Bildirimler. warn - Uyarılar. error - Bir istek işlenirken error oluştu. crit - Kritik konular. Hızlı bir işlem gerektirir. alert - Uyarılar. Derhal harekete geçilmelidir. - Acil durum. Sistem kullanılamaz durumda.

Her günlük düzeyi daha yüksek düzeyleri içerir. Örneğin, günlük düzeyini warn üzere ayarlarsanız, Nginx ayrıca error , crit , alert ve ortaya emerg mesajları da günlüğe emerg .

log_level parametresi belirtilmediğinde, varsayılan olarak error .

Varsayılan olarak, error_log yönergesi ana nginx.conf dosyasının içindeki http yönergesinde tanımlanır:

/etc/nginx/nginx.conf

http {… error_log /var/log/nginx/error.log;… }

Erişim günlükleriyle aynı şekilde, her sunucu bloğu için ayrı bir hata günlüğü dosyası ayarlamanız önerilir; bu, daha yüksek düzeylerden devralınan ayarı geçersiz kılar.

Örneğin, domain.com hata günlüğünü warn için aşağıdakileri kullanırsınız:

http {… error_log /var/log/nginx/error.log;… server { server_name domain.com error_log /var/log/nginx/domain.error.log warn;… } }

Yapılandırma dosyasını her değiştirdiğinizde, değişikliklerin etkili olması için Nginx hizmetini yeniden başlatmanız gerekir.

Günlük Dosyalarının Konumu

Varsayılan olarak Ubuntu, CentOS ve Debian gibi çoğu Linux dağıtımında, erişim ve hata günlükleri /var/log/nginx dizininde bulunur.

Nginx Günlük Dosyalarını Okuma ve Anlama

cat , less , grep , cut , awk , vb. Standart komutları kullanarak günlük dosyalarını açabilir ve ayrıştırabilirsiniz.

Aşağıda, varsayılan birleştirme Nginx günlük biçimini kullanan erişim günlük dosyasından bir örnek kayıt verilmiştir:

192.168.33.1 - - "GET / HTTP/1.1" 200 396 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"

Kaydın her alanının ne anlama geldiğini inceleyelim:

  • $remote_addr - 192.168.33.1 - İstekte bulunan istemcinin IP adresi. $remote_user - - - HTTP Kimliği Doğrulanmış Kullanıcı. Kullanıcı adı ayarlanmadığında, bu alanda - . - - Yerel sunucu zamanı. "$request" - "GET / - İstek türü, yolu ve protokolü. $status - 200 - Sunucu yanıt kodu. $body_bytes_sent - 396 - Sunucu yanıtının bayt olarak boyutu. "$http_referer" - "-" - Yönlendirmenin URL'si. "$http_user_agent" - Mozilla/5.0… - İstemcinin kullanıcı aracısı (web tarayıcısı).

Günlük dosyasını gerçek zamanlı olarak izlemek için tail komutunu kullanın:

tail -f access.log

Sonuç

Günlük dosyaları, sunucu sorunları ve ziyaretçilerin web sitenizle nasıl etkileşimde bulunduğu hakkında yararlı bilgiler sağlar.

Nginx, erişim ve hata günlüklerini ihtiyaçlarınıza göre yapılandırmanıza olanak tanır.

nginx