Apache Webserver Log nasıl analiz edilir ve yorumlanır
How to analyze and interpret Apache Webserver Log
Apache web sunucuları çok sayıda günlük oluşturabilir. Bu günlükler, Apache’nin işlediği ve yanıtladığı HTTP istekleri ve Apache’ye özgü diğer etkinlikler gibi bilgileri içerir. Günlükleri analiz etmek, Apache’yi yönetmenin ve beklendiği gibi çalışmasını sağlamanın önemli bir parçasıdır.
Bu kılavuzda, Apache’de bulunan farklı günlük kaydı seçeneklerini ve bu günlük verilerini nasıl yorumlayacağımızı gözden geçireceğiz. Apache’nin ürettiği günlükleri nasıl analiz edeceğinizi ve Apache’nin ne yaptığı hakkında size en alakalı verileri vermek için günlük kaydı ayarlarını nasıl yapılandıracağınızı öğreneceksiniz.
Bu makalede şunları öğreneceksiniz:
- Apache web sunucusu günlük kaydını yapılandırın ve anlayın
- Apache günlük seviyeleri nelerdir
- Apache günlük biçimlendirmesi ve anlamı nasıl yorumlanır
- En yaygın Apache günlük yapılandırma dosyaları nelerdir
- Günlük kaydı yapılandırmasını adli verileri içerecek şekilde genişletme
Yazılım Gereksinimleri ve Kullanılan Kurallar
KATEGORİ | GEREKSİNİMLER, KURALLAR VEYA KULLANILAN YAZILIM SÜRÜMÜ |
---|---|
Sistem | Ubuntu, Debian, CentOS, RHEL, Fedora |
Yazılım | Apache Web Sunucusu |
Diğer | Linux sisteminize kök olarak veya sudo komut aracılığıyla ayrıcalıklı erişim . |
Sözleşmeler | # – verilen linux komutlarının ya doğrudan bir kök kullanıcı olarak ya da $sudo komutunun kullanılmasıyla root ayrıcalıklarıyla yürütülmesini gerektirir – verilen linux komutlarının normal bir ayrıcalıklı olmayan kullanıcı olarak yürütülmesini gerektirir |
Apache günlük dosyaları ve konumları
Apache iki farklı günlük dosyası oluşturur:
- access.log , Apache’ye gelen tüm bağlantı istekleri hakkındaki bilgileri depolar. Bir kullanıcı web sitenizi her ziyaret ettiğinde, buraya kaydedilir. Bir kullanıcının istediği her sayfa ayrıca ayrı bir giriş olarak günlüğe kaydedilir.
- error.log , Apache’nin işlemi boyunca karşılaştığı hatalarla ilgili bilgileri depolar. İdeal olarak, bu dosya nispeten boş kalmalıdır.
Günlük dosyalarının konumu, hangi Apache sürümünü çalıştırdığınıza ve hangi Linux dağıtımında olduğuna bağlı olabilir. Apache, bu dosyaları varsayılan olmayan başka bir konumda depolayacak şekilde de yapılandırılabilir.
Ancak, varsayılan olarak, aşağıdaki dizinlerden birinde erişim ve hata günlüklerini bulabilmeniz gerekir:
- /var/log/apache/
- /var/log/apache2/
- /etc/httpd/logs/
Apache günlük biçimlendirme
Apache, hangi bilgilerin günlüğe kaydedileceğini ve her günlük girişinin nasıl sunulacağını özelleştirmenize olanak tanır; bu eğitimde daha sonra bunları ele alacağız.
Apache’nin günlük girişlerini sunmak için izlediği genel biçim şöyledir:
"%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\""
Bu biçimlendirmenin nasıl yorumlanacağı aşağıda açıklanmıştır:
- % h – İstemcinin IP adresi.
- % l – Bu, istemcide onları tanımlamak için kullanılan ‘identd’ dir. Bu alan genellikle boştur ve kısa çizgi olarak sunulur.
- % u – HTTP kimlik doğrulaması kullanılmışsa, istemcinin kullanıcı kimliği. Değilse, günlük girişi bu alan için hiçbir şey göstermez.
- % t – Günlük girişinin zaman damgası.
- \% r \ – İstemciden gelen istek satırı. Bu, hangi HTTP yönteminin kullanıldığını (GET veya POST gibi), hangi dosyanın talep edildiğini ve hangi HTTP protokolünün kullanıldığını gösterir.
- %> s – İstemciye döndürülen durum kodu. 4xx kodları (404, sayfa bulunamadı gibi) istemci hatalarını ve 5xx kodları (500, dahili sunucu hatası gibi) sunucu hatalarını gösterir. Diğer sayılar başarıyı (200, OK gibi) veya yönlendirme gibi başka bir şeyi (301, kalıcı olarak taşınmış gibi) göstermelidir.
- % O – İstenen dosyanın (başlıklar dahil) bayt cinsinden boyutu.
- \ “% {Referer} i \” – Varsa yönlendiren bağlantı. Bu, kullanıcının sayfanıza nasıl gittiğini gösterir (iç veya dış bağlantıdan).
- \ “% {User-Agent} i \” – Bu, bağlanan istemcinin web tarayıcısı ve işletim sistemi hakkında bilgi içerir.
Erişim günlüğündeki tipik bir giriş şuna benzer:
10.10.220.3 - - [17 / Ara / 2019: 23: 05: 32 -0500] "GET /products/index.php HTTP / 1.1" 200 5015 "http://example.com/products/index.php" " Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, Gecko gibi) Chrome / 79.0.3945.79 Safari / 537.36 "
Hata günlüğü biraz daha basittir ve yorumlanması kolaydır. Tipik bir giriş şöyle görünebilir:
[Mon Dec 16 06: 29: 16.613789 2019] [php7: error] [pid 2095] [client 10.10.244.61:24145] script '/var/www/html/settings.php' bulunamadı veya stat yapılamıyor
Bu, 404ziyaretçilerinizin kaç hata ile karşılaştığını görmenin iyi bir yoludur ve sitenizdeki bazı ölü bağlantılara dair ipucu verebilir. Daha da önemlisi, eksik kaynaklar veya olası sunucu sorunları konusunda sizi uyarabilir. Yukarıdaki örnek *.php, istenen ancak eksik olan bir sayfayı göstermektedir .
Apache günlük yapılandırması
Apache’nin günlük kaydı oldukça özelleştirilebilir ve birkaç yapılandırma dosyasından ayarlanabilir. Ubuntu ve Debian’da, Apache’nin günlük kaydı için ana yapılandırma dosyası burada bulunur:
- /etc/apache2/apache2.conf
Virtual Hosts
Tek bir Apache örneğinden birden çok web sitesini (olarak anılır ) çalıştırabileceğiniz için , her birini ayrı erişim ve hata günlüklerine sahip olacak şekilde de yapılandırabilirsiniz. Bu ayrı günlük dosyalarının nasıl adlandırılacağını ve nereye kaydedileceğini tanımlamak için bu dosyayı yapılandırın:
- /etc/apache2/sites-available/000-default.conf
CentOS, RHEL ve Fedora’da, sırasıyla şu konumlarda iki yapılandırma dosyası bulunur:
- /etc/httpd/conf/httpd.conf
- /etc/httpd/conf.d/ (bu dizine ek VirtualHost yapılandırmalarını yerleştirin)
Log yönergeleri
Bu dosyaların içinde yapılandırılabilecek epeyce farklı yönerge vardır, ancak Apache’nin günlük kaydını özelleştirmek istiyorsanız, ilgilenmeniz gereken başlıca yönergeler bunlardır:
- CustomLog – Erişim günlüğü dosyasının nerede saklandığını tanımlar.
- ErrorLog – Hata günlüğü dosyasının nerede saklandığını tanımlar.
- LogLevel – Günlüğe kaydedilmesi için bir olayın ne kadar ciddi olması gerektiğini tanımlar (daha fazla bilgi için aşağıyı okuyun).
- LogFormat – Erişim günlüğündeki her bir girişin nasıl biçimlendirilmesi gerektiğini tanımlayın (daha fazla bilgi için aşağıyı okuyun).
LogLevelwarn
varsayılan olarak ayarlanır , bu, uyarı koşullarında veya daha ciddi olaylarda hata günlüğüne yazacağı anlamına gelir. Hata günlüğünüz bir sürü zararsız uyarı mesajıyla doluysa, onu error
sadece hataları veya daha ciddi sorunları bildirecek şekilde yükseltebilirsiniz .
Diğer seçenekler (şiddetinin sırasına göre) crit
, alert
ve emerg
. Apache, en azından crit düzeyinin kullanılmasını önerir. Hata ayıklama amacıyla, geçici olarak ayarlayabilirsiniz LogLevel için debug
, ancak hata günlüğünde girişlerin kullanılması zor bir miktarı ile sona erebilir unutmayın.
LogFormat , erişim günlüğündeki girişlerin nasıl görüneceğini ayarlamanıza olanak tanır. Örnek girişi bulursanız access.log
(Yukarıdaki Apache günlük biçimlendirme
Apache günlük kaydı modülleri
Şimdiye kadar bu kılavuzda gösterdiğimiz günlük kaydı yapılandırması mod_log_config
Apache modülüyle ilgilidir . Günlük işlevini daha da genişletmek için diğer günlükleme modüllerini Apache’ye yükleyebilirsiniz. Bu, varsayılan ayarlarla kullanılamayan bazı daha fazla özellik sağlayabilir.
mod_log_forensic , istekten önce (başlıklar ilk alındığında) günlüğe kaydetmeye başlar ve istekten sonra yeniden günlüğe kaydeder. Bu, her istek için iki günlük girişi oluşturulduğu ve bir yöneticinin yanıt sürelerini daha hassas bir şekilde ölçmesine olanak tanıdığı anlamına gelir. Yönerge
ile adli günlüğünüzün yerini tanımlayın CustomLog
. Örneğin:
CustomLog $ {APACHE_LOG_DIR} /forensic.log adli
mod_logio , her isteğe gönderilen ve alınan bayt sayısını günlüğe kaydeder. Her isteğin üstbilgisinde ve gövdesinde bulunan verilerin yanı sıra SSL / TLS şifreli bağlantılar için gereken ekstra verileri de saydığı için çok doğru bilgiler sağlar. Bu modül tarafından sağlanan ekstra verilerden yararlanmak
için %I
ve O%
yer tutucuları LogFormat
yönergeye ekleyin . Diğer modüller mevcuttur; bunlar en kullanışlı olanlardan sadece ikisi.
Sonuç
Bu makalede Apache’nin erişim ve hata günlüklerinin nasıl analiz edilip yorumlanacağını gördük. Ayrıca, günlük verilerini daha alakalı hale getirmek için Apache’nin yapılandırma dosyalarındaki günlük kaydını nasıl özelleştireceğimizi de öğrendik. Bu bilgiyle donanmış olarak, sorunları daha hızlı bir şekilde izole edebilir ve Apache ile sorunları giderebilirsiniz.
Apache’nin günlük tutma işlevinin diğer günlükleme modülleri aracılığıyla daha da genişletilebileceğini unutmayın, ancak bu yalnızca gelişmiş hata ayıklama gerektiren uç durumlarda gereklidir. bölümü) biraz kafa karıştırıcı olsa da, yalnız değilsiniz. Apache, günlük girişlerinin biçimini özelleştirmenize olanak tanır, böylece onları daha mantıklı bir şekilde ayarlayabilirsiniz. Bu özelleştirmeyi, alakasız bulabileceğiniz belirli bilgileri hariç tutmak için de kullanabilirsiniz.