GoAccess Web Log Analiz Aracı Nasıl Kurulur ve Kullanılır

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:

  1. sudo apt update
  2. sudo apt full-upgrade

Ş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:

  1. sudo apt install libncursesw5-dev libgeoip-dev libtokyocabinet-dev build-essential

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:

  1. wget http://tar.goaccess.io/goaccess-1.4.tar.gz

İndirme işlemi tamamlandıktan sonra arşivi şununla çıkarın:

  1. tar -xzvf goaccess-1.4.tar.gz

Yeni açılan dizine şu şekilde geçin:

  1. cd goaccess-1.4/

Bu dizinde bulunan yapılandırma komut dosyasını çalıştırın:

  1. ./configure –enable-utf8 –enable-geoip=legacy

–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:

Çıktı
. . .
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:

  1. make

Son olarak, önceden oluşturulan makefile dosyasını kullanarak GoAccess’i sisteme yükleyin:

  1. sudo make install

Aşağıdakileri çalıştırarak programın başarıyla yüklendiğinden emin olun:

goaccess --version

Aşağıdaki çıktıyı alacaksınız:

Çıktı
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:

  1. echo “deb http://deb.goaccess.io/ $(lsb_release -cs) main” | sudo tee -a /etc/apt/sources.list.d/goaccess.list

Ö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:

  1. wget -O – https://deb.goaccess.io/gnugpg.key | sudo apt-key –keyring /etc/apt/trusted.gpg.d/goaccess.gpg add

Daha sonra paket veritabanını aşağıdaki komutla güncelleyin:

  1. sudo apt update

Son olarak GoAccess’i yükleyin:

  1. sudo apt install goaccess

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:

  1. goaccess –dcf
Örnek çıktı
/etc/goaccess/goaccess.conf

Bu yapılandırma dosyasını nano kullanarak düzenleyin:

  1. sudo nano /etc/goaccess/goaccess.conf

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.

/etc/goaccess/goaccess.conf
# 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:

/etc/goaccess/goaccess.conf
# 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:

/etc/goaccess/goaccess.conf
# 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:

/etc/goaccess/goaccess.conf
# 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:

  1. sudo ls /var/log/apache2
Örnek çıktı
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:

  1. sudo goaccess /var/log/apache2/access.log

Bu, GoAccess komut satırı kontrol panelini başlatacaktır.

GoAccess command-line dashboard interface

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:

  1. zcat /var/log/apache2/access.log.*.gz | goaccess -a

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.

Summary of dashboard metrics

Ü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 ve k 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 and SHIFT+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.

Active GoAccess panel demonstration

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.

Unique visitors per day panel

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.

Requested files

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.

Visitor hostnames and IPs

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.

Vistor hostnames and IPs expanded

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.

Operating systems

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.

Browsers

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.

Time distribution panel

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:

/etc/goaccess/goaccess.conf
#ignore-panel VISIT_TIMES
#ignore-panel VIRTUAL_HOSTS
#ignore-panel REFERRERS
#ignore-panel REFERRING_SITES

Referrer URLs panel

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:

/etc/goaccess/goaccess.conf
#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.

HTTP status codes panel

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.

Geo location panel

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:

cd ~

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.

  1. ls
Çıktı
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:

  1. scp user@your_server_ip:stats.html ~/stats.html

Dosya kopyalandıktan sonra, macOS’ta open komutunu kullanarak dosyayı tarayıcınızda açabilirsiniz:

  1. open ~/stats.html

Veya yerel makinenizde bir Linux dağıtımı kullanıyorsanız:

  1. xdg-open ~/stats.html

HTML report in Firefox

Bir HTML raporu oluşturdunuz ve bunu tarayıcınızda görüntülediniz.

 

 

 

Yazının orijinalini buradan okuyabilirsiniz.