GoAccess, web sunucusu günlüklerini gerçek zamanlı olarak izlemeye yönelik bir araçtır. C dilinde yazılmıştır ve doğrudan komut satırından erişilebilen kontrol paneli arayüzü için popüler ncurses kitaplığını kullanır.
Bu harika bir şey çünkü kontrol ettiğiniz herhangi bir web sunucusuna SSH uygulayabilir ve ilgili istatistikleri hızlı ve güvenli bir şekilde görüntüleyebilir veya analiz edebilirsiniz. Komut satırı kontrol paneli arayüzünün yanı sıra, istatistikleri başka bağlamlarda kullanabileceğiniz veya başkalarıyla paylaşabileceğiniz HTML, JSON ve CSV gibi diğer formatlarda da görüntüleme yeteneğine sahiptir.
GoAccess, ihtiyaçlarınıza bağlı olarak istemci tarafı analiz araçlarına da harika bir alternatif olabilir. Sunucu günlüklerinizi doğrudan analiz eder, böylece herhangi bir ek komut dosyası yüklemenize gerek kalmaz ve verileriniz tamamen kontrolünüz altındadır.
Bu eğitimde, Apache için GoAccess’i bir Ubuntu 20.04 web sunucusuna yükleyip yapılandıracaksınız. Mevcut modülleri ve komut satırı arayüzündeki gezinme kısayollarını incelemeden önce GoAccess ile Apache günlük dosyalarına erişeceksiniz.
Adım 1 — GoAccess’i Yükleme
Bu adımda GoAccess aracını ve bağımlılıklarını kuracaksınız.
Paket veritabanının ve sistemin güncel olduğundan emin olarak başlayın:
Şimdi GoAccess’i kurmanın zamanı geldi. Aracın bir sürümü Ubuntu depolarında mevcuttur, ancak bu genellikle en son kararlı sürüm değildir. Örneğin, GoAccess’in bu yazının yazıldığı sırada en son sürümü 1.4 iken Ubuntu 20.04 depolarında mevcut olan sürüm 1.3’tür.
Sunucunuzda GoAccess’in en son kararlı sürümünün yüklü olduğundan emin olmak için kaynaktan derleyebilir veya Ubuntu’daki resmi GoAccess deposunu kullanabilirsiniz.
Yöntem 1 — Kaynaktan derleme
Öncelikle GoAccess’i kaynaktan derlemek için gereken bağımlılıkları yükleyin:
Aşağıdaki bağımlılıkları yüklersiniz:
build-essential
: C, C+ ve diğer programlama dilleri için gcc derleyicilerini içeren birçok paketi yükler ve GoAccess makefile dosyasının oluşturulmasını sağlar.libncursesw5-dev
: GoAccess’in komut satırı arayüzü için kullandığı ncurses kitaplığını yükler.libgeoip-dev
: GeoIP kütüphanesi için gerekli dosyaları içerir.libtokyocabinet-dev
: Daha yüksek performans için veritabanı bağımlılıkları sağlar.
Ardından GoAccess’in en son sürümünü aşağıdaki komutla resmi web sitesinden indirin:
İndirme işlemi tamamlandıktan sonra arşivi şununla çıkarın:
Yeni açılan dizine şu şekilde geçin:
Bu dizinde bulunan yapılandırma komut dosyasını çalıştırın:
–enable-utf8 bayrağı, GoAccess’in geniş karakter desteğiyle derlenmesini sağlarken –enable-geoip, orijinal GeoIP veritabanlarıyla GeoLocation desteğini etkinleştirir. Bunun yerine gelişmiş GeoIP2 veritabanlarını kullanmak için eskiyi mmdb ile değiştirebilirsiniz. Diğer yapılandırma seçeneklerini GoAccess web sitesinde bulabilirsiniz.
Aşağıdakine benzer bir çıktı alacaksınız:
. . .
Your build configuration:
Prefix : /usr/local
Package : goaccess
Version : 1.4
Compiler flags : -pthread
Linker flags : -lnsl -lncursesw -lGeoIP -lpthread
UTF-8 support : yes
Dynamic buffer : no
Geolocation : GeoIP Legacy
Storage method : In-Memory with On-Disk Persitance Storage
TLS/SSL : no
Bugs : [email protected]
GoAccess’i yüklemek için gereken makefile dosyasını oluşturmak için make komutunu çalıştırın:
Son olarak, önceden oluşturulan makefile dosyasını kullanarak GoAccess’i sisteme yükleyin:
Aşağıdakileri çalıştırarak programın başarıyla yüklendiğinden emin olun:
Aşağıdaki çıktıyı alacaksınız:
GoAccess - 1.4.
For more details visit: http://goaccess.io
Copyright (C) 2009-2020 by Gerardo Orellana
Build configure arguments:
--enable-utf8
--enable-geoip=legacy
Yöntem 2 — Resmi GoAccess Depolarını Kullanma
GoAccess’i kurmanın başka bir yolu da programın resmi Ubuntu deposunu kullanmaktır. Her yeni sürüm için kaynaktan derlemeye gerek kalmadan, sistem yükseltmeleri sırasında otomatik olarak daha yeni bir sürüme güncellenmesini istiyorsanız bu yöntem tercih edilir. Önce depoyu sunucunuza eklemeniz gerekir:
Öncelikle dağıtımın yayın adını alırsınız ve ardından bunu /etc/apt/sources.list.d/goaccess.list dosyasına eklenen tee’ye aktarırsınız.
Kaynak listenizdeki depoyla artık imzayı doğrulamak için GPG anahtarını indirebilirsiniz:
Daha sonra paket veritabanını aşağıdaki komutla güncelleyin:
Son olarak GoAccess’i yükleyin:
GoAccess artık Ubuntu sunucunuzda yüklü. Bir sonraki adımda, programın çalışma biçiminde değişiklik yapabilmek için yapılandırma dosyasına erişecek ve onu düzenleyeceksiniz.
Adım 2 — GoAccess Yapılandırmasını Düzenleme
GoAccess, programın davranışında kalıcı değişiklikler yapabileceğiniz bir yapılandırma dosyasıyla birlikte gelir. GoAccess’in sunucu günlüklerini nasıl ayrıştıracağını bilmesi için saati, tarihi ve günlük biçimini belirtmek üzere bu dosyayı düzenleyeceksiniz.
Yapılandırma dosyası ~/.goaccessrc veya %sysconfdir%/goaccess.conf konumunda bulunabilir; burada %sysconfdir%, /etc/, /usr/etc/ veya /usr/local/etc/ olur. Yapılandırma dosyasının sunucunuzda nerede bulunduğunu bulmak için aşağıdaki komutu çalıştırın:
/etc/goaccess/goaccess.conf
Bu yapılandırma dosyasını nano kullanarak düzenleyin:
Not: Bu dosya sunucuda mevcut değilse, önce onu oluşturduğunuzdan ve onu GitHub’daki goaccess.conf dosyasının içeriğiyle doldurduğunuzdan emin olun.
Dosyadaki satırların çoğu yorumlanmıştır. Bir seçeneği etkinleştirmek için önündeki ilk # karakteri kaldırın. Öncelikle Apache için zaman formatı ayarını etkinleştirelim. Bu ayar, günlük biçimi süresini belirtir ve GoAccess’in, desteklenen biçimlendirme ölçütlerini karşılayan tüm düz metin Apache günlük dosyalarını ayrıştırmasına olanak tanır.
# The following time format works with any of the
# Apache/NGINX's log formats below.
#
time-format %H:%M:%S
Daha sonra, günlük biçimi tarihini belirten Apache tarih biçimi ayarının açıklamasını kaldıracaksınız:
# The following date format works with any of the
# Apache/NGINX's log formats below.
#
date-format %d/%b/%Y
Son olarak, günlük formatı ayarının açıklamasını kaldırın. Birkaç satır bu ayarı değiştirir ve yorumun kaldırılacağı kesin satır, web sunucunuzun kurulum şekline bağlıdır. Sanal olmayan bir ana bilgisayar kurulumunuz varsa aşağıdaki günlük biçimi satırının açıklamasını kaldırın:
# NCSA Combined Log Format
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
Aksi takdirde, ayarlanmış sanal konaklarınız varsa bunun yerine aşağıdaki satırın açıklamasını kaldırın:
# NCSA Combined Log Format with Virtual Host
log-format %v:%^ %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
Bu noktada dosyayı kaydedip düzenleyiciden çıkabilirsiniz. Artık GoAccess programını çalıştırmaya ve bazı Apache düz metin günlük dosyalarını analiz etmeye hazırsınız.
Adım 3 — GoAccess ile Apache’nin Günlük Dosyalarına Erişme
Apache sunucusu web sitenize erişim izni verir ve gelen tüm HTTP trafiği için bir erişim günlüğü tutar. Bu kayıtlar veya günlük dosyaları sistemde saklanır ve web sitenizin kullanımı ve hedef kitlesi hakkında değerli bir bilgi kaynağı olabilir.
Ubuntu’da Apache günlük dosyaları varsayılan olarak /var/log/apache2 dizininde saklanır. Bu dizinin içeriğini incelemek için aşağıdaki komutu çalıştırın:
access.log error.log other_vhosts_access.log
Sunucunuz uzun süredir çalışıyorsa, log rotasyonu sonucu geçmiş log dosyalarının bulunduğu bu dizinde sıkıştırılmış .gz dosyaları bulabilirsiniz. En yeni günlükler bir erişim.log dosyasına yerleştirilir. Sanal ana bilgisayarlara sahip web sunucuları için, her bir ana bilgisayarın günlük dosyalarını bulmak için /apache2 dizini içindeki alt dizinlere CD yerleştirmeniz gerekebilir.
Web sunucusu tarafından ne tür trafiğin işlendiği hakkında bilgi edinmek için GoAccess’i Apache erişim günlüklerine karşı çalıştıralım. Access.log dosyanızı GoAccess ile analiz etmek için aşağıdaki komutu çalıştırın:
Bu, GoAccess komut satırı kontrol panelini başlatacaktır.
Not: Bunun yerine Günlük Formatı Yapılandırması istemini görürseniz, bu, önceki adımda GoAccess yapılandırma dosyasında yaptığınız değişikliklerin etkili olmadığı anlamına gelir. Yapılandırma dosyanızın doğru yerde olduğundan ve gerekli ayarların açıklamasını kaldırdığınızdan emin olun.
Daha önce de belirtildiği gibi, uzun süre çalışan bir web sunucusunda bazen birkaç sıkıştırılmış günlük dosyanız olur. GoAccess’i tüm bu dosyalar üzerinde, önce onları çıkartmadan çalıştırmak için, zcat komutunun çıktısını goaccess’e yönlendirebilirsiniz:
Daha sonra klavye kısayollarını kullanarak kontrol paneli arayüzünde hızlı bir şekilde nasıl gezineceğinizi öğreneceksiniz.
Adım 4 – Terminal Kontrol Panelinde Gezinme
Kontrol panelinin üst kısmında birkaç önemli ölçümün özeti bulunur. Bu, raporlama dönemine ilişkin toplam istekleri, benzersiz ziyaretçileri, günlük boyutunu, 404 bulunamadı hatasını, istenen dosyaları, ayrıştırılan günlük dosyasının boyutunu, HTTP yönlendirmelerini, günlük kaynağının adını, günlük dosyasını işlemek için geçen süreyi ve daha fazlasını içerir.
Üst panelin altında, yukarıda belirtilen ölçümler ve GoAccess tarafından desteklenen diğer veri noktaları hakkında daha fazla ayrıntı sağlayan mevcut tüm modülleri bulacaksınız. Arayüzde gezinmek için aşağıdaki klavye kısayollarını kullanın:
TAB
Mevcut modüller arasında ileri gitmek için SHIFT+TAB tuşlarına basarak geriye doğru gidin.F5
Kontrol panelini yenilemek için.g
kontrol paneli ekranının en üstüne gitmek için ve G tuşuna basarak kontrol panelindeki son öğeye gidin.o
veya ENTER
Seçilen modülü genişletmek için.j
vek
Aktif modül içinde aşağı ve yukarı kaydırmak için.s
Etkin modülün sıralama seçeneklerini görüntülemek için./
tüm modüllerde arama yapmak ve bir sonraki eşleşmeye geçmek için n tuşuna basın.0-9
andSHIFT+0
ilgili numaralı modülü hızlı bir şekilde etkinleştirmek için.?
Hızlı yardım iletişim kutusunu görüntülemek için.q
programdan çıkmak için.
Şimdi kontrol panelindeki mevcut modüllerin her birini inceleyelim. Her birinin bir numarası, bir başlığı ve mevcut satırların toplam sayısını gösteren bir göstergesi vardır. > karakteri, kontrol panelinin üst kısmında da gösterilen aktif paneli belirtir.
Burada panellerin her birine ilişkin kısa bir açıklama yer almaktadır. Aşağıdaki her bölüm programdaki panel numarasına ve başlığına karşılık gelir.
1 — Günlük Tekil Ziyaretçi Sayısı
Bu panel, bildirilen her tarih için isabetleri, tekil ziyaretçileri ve kümülatif bant genişliğini görüntüler. Benzersiz bir ziyaretçinin aynı IP adresine, tarihe ve kullanıcı aracısına sahip olduğu kabul edilir. Varsayılan olarak web tarayıcılarını ve örümcekleri içerir.
2 – İstenen Dosyalar (URL’ler)
Bu panel, web sunucunuzdaki en çok talep edilen statik olmayan dosyalara ilişkin istatistikleri sağlar. İstek yolunu, HTTP protokolünü ve yöntemini, benzersiz ziyaretçileri, isabet sayısını ve kümülatif bant genişliğini görüntüler.
3 — Statik İstekler
Bu panel öncekiyle aynı ölçümleri sağlar ancak resimler, CSS, JavaScript veya diğer dosya türleri gibi statik dosyalar için.
4 — Bulunamayan URL’ler (404’ler)
Bu panel aynı zamanda 2 ve 3’te tartışılan metriklerin aynısını, ancak sunucuda bulunmayan yollar (404’ler) için görüntüler.
5 — Ziyaretçi Ana Bilgisayar Adları ve IP’leri
Bu panel, web sunucunuza bağlanan ana bilgisayarlar hakkında ayrıntılı bilgi sağlar. IP adreslerini, ziyaret sayısını ve tüketilen bant genişliği miktarını bulabilirsiniz. Bu, tüm bant genişliğinizi kimin tükettiğini belirlemenin ve gerekirse bunları engellemenin harika bir yoludur.
Bu paneli o tuşuna basarak genişletirseniz, her ana bilgisayar hakkında menşe ülkesi, şehri ve ters DNS arama sonucu gibi daha fazla bilgi göreceksiniz.
6 — İşletim Sistemleri
Bu panel, ana bilgisayarların web sunucunuza bağlanmak için kullandığı farklı işletim sistemlerini rapor eder. Bu paneli genişlettiğinizde her işletim sisteminin belirli sürümleri görüntülenecektir.
7 — Tarayıcılar
Önceki panele benzer şekilde, bu, web sunucunuza gelen her benzersiz ziyaretçinin kullandığı tarayıcıları rapor eder ve genişletildiğinde her tarayıcının belirli sürümlerini listeler.
8 — Zaman dağılımı
Burada isabet sayısı, tekil ziyaretçiler ve tüketilen bant genişliği hakkında saatlik bir rapor bulacaksınız. Bu, sunucunuzdaki trafiğin yoğun olduğu dönemleri tespit etmenin harika bir yoludur.
9 — Sanal Konaklar
Bu panel, günlük dosyasından ayrıştırılan sanal konakları görüntüler. Yalnızca günlük biçimi yapılandırmasına %v dahil edilmişse etkin hale gelir.
10 — Yönlendiren URL’ler
Ziyaret eden ana bilgisayarları web sunucunuza yönlendiren URL’ler burada yansıtılır. Bu panel varsayılan olarak devre dışıdır ve yalnızca GoAccess yapılandırma dosyasında aşağıda vurgulanan REFERRERS satırının yorumlanmasıyla etkinleştirilebilir:
#ignore-panel VISIT_TIMES
#ignore-panel VIRTUAL_HOSTS
#ignore-panel REFERRERS
#ignore-panel REFERRING_SITES
11 — Yönlendiren Siteler
Bu panel, yönlendiren ana bilgisayarların IP adresini görüntüler ancak URL’nin tamamını görüntülemez.
12 — Anahtar İfadeler
Burada, Google aramada, Google önbelleğinde ve Google çeviride kullanılan ve web sitenize yönlendiren anahtar kelimeler raporlanır. Bu panel de varsayılan olarak devre dışıdır ve ayarlarda etkinleştirilmesi gerekir:
#ignore-panel REFERRERS
#ignore-panel REFERRING_SITES
#ignore-panel KEYPHRASES
#ignore-panel STATUS_CODES
13 — HTTP Durum Kodları
Bu panel, bir isteğe yanıt verirken web sunucunuz tarafından döndürülen HTTP durum kodlarına ilişkin genel istatistikleri yansıtır. Panelin genişletilmesi, her durum kodu için toplu istatistikleri görüntüleyecektir.
14 — Uzak Kullanıcı (HTTP Kimlik Doğrulaması)
Bu panel, sunucunuzda belge isteyen kişinin HTTP kimlik doğrulamasıyla belirlenen kullanıcı kimliğini görüntüler. Parola korumalı olmayan belgeler için bu bölüm – olacaktır. Bu panelin yalnızca %e’nin günlük biçimi yapılandırmasının bir parçası olması durumunda etkinleştirildiğini unutmayın.
15 — Önbellek durumu
Bu panel, bir isteğin önbelleğe alınıp alınmadığını ve önbellekten sunulup sunulmadığını belirlemenize olanak tanır. %C günlük biçimi değişkeninin bir parçasıysa etkinleştirilir ve durum MISS, BYPASS, EXPIRED, STALE, UPDATING, REVALIDATE veya HIT olabilir.
16 — Coğrafi Konum
Bu panel, ziyaret edilen IP adreslerinden elde edilen coğrafi konumların bir özetini sağlar. Bu panel genişletildiğinde her menşe ülke için toplu istatistikler görüntülenecektir.
Kontrol panelinde bulunan panelleri incelediniz, artık farklı formatlarda raporlar oluşturacaksınız.
Adım 5 — Rapor Oluşturma
GoAccess, verileri terminalde görüntülemenin yanı sıra HTML, JSON veya CSV raporları oluşturmanıza da olanak tanır. Bu bölümdeki komutlardan herhangi birini çalıştırmadan önce ana dizinde olduğunuzdan emin olun:
Raporun statik HTML olarak çıktısını almak için -o bayrağının argümanı olarak bir HTML dosyası belirtin. Bu bayrak aynı zamanda .json veya .csv ile biten dosya adlarını da kabul eder.
sudo goaccess /var/log/apache2/access.log -o stats.html
Kullanıcı dizininizde bir stats.html dosyası görünmelidir.
goaccess-1.4 goaccess-1.4.tar.gz snap stats.html
Bu dosyayı scp kullanarak yerel makinenizdeki kullanıcı dizinine kopyalayabilirsiniz. Bu komutu uzak sunucudan değil, yerel makinenizden çalıştırın:
Dosya kopyalandıktan sonra, macOS’ta open komutunu kullanarak dosyayı tarayıcınızda açabilirsiniz:
Veya yerel makinenizde bir Linux dağıtımı kullanıyorsanız:
Bir HTML raporu oluşturdunuz ve bunu tarayıcınızda görüntülediniz.
Yazının orijinalini buradan okuyabilirsiniz.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.