Uygulama

Ubuntu 20.04’te GoAccess Web Log Analyzer Nasıl Kurulur ve Kullanılır

GoAccess, web sunucusu günlüklerini gerçek zamanlı olarak izlemek için bir araçtır. C ile yazılmıştır ve doğrudan komut satırından erişilebilen panel arayüzü için popüler ncurses kitaplığını kullanır.

Bu harika çünkü kontrol ettiğiniz herhangi bir web sunucusuna SSH ile bağlanabiliyor ve ilgili istatistikleri hızlı ve güvenli bir şekilde görüntüleyebiliyor veya analiz edebiliyoruz. Komut satırı gösterge tablosu 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 biçimlerde de görüntüleyebilir.

GoAccess, ihtiyaçlarınıza bağlı olarak istemci tarafı analitik 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 sizin kontrolünüz altındadır.

Bu öğreticide, bir Ubuntu 20.04 web sunucusunda Apache için GoAccess’i kuracak ve yapılandıracaksınız. Komut satırı arayüzündeki mevcut modülleri ve gezinme kısayollarını gözden geçirmeden önce GoAccess ile Apache günlük dosyalarına erişeceksiniz.

Önkoşullar

Aşağıdakilere ihtiyacınız olacak:

  • Bir Ubuntu 20.04 sunucusu. Sudo ayrıcalıklarına ve güvenlik duvarına sahip kök olmayan bir kullanıcı da dahil olmak üzere .
  • Apache web sunucu .

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:

sudo apt update
sudo apt full-upgrade

Şimdi GoAccess’i kurma zamanı. 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 yazı yazıldığı sırada en son sürümü 1.4 iken, Ubuntu 20.04 depolarında bulunan sürüm 1.3’tür.

Sunucunuzda GoAccess’in en son kararlı sürümünün kurulu olduğundan emin olmak için kaynaktan derleyebilir veya Ubuntu’daki resmi GoAccess deposunu kullanabilirsiniz.

Yöntem 1 — Kaynaktan derleme

İlk olarak, GoAccess’i kaynaktan derlemek için gereken bağımlılıkları kurun:

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 kurar ve GoAccess makefile’ı oluşturmak için yapar.
  • libncursesw5-dev: GoAccess’in komut satırı arabirimi için kullandığı ncurses kitaplığını kurar.
  • libgeoip-dev: GeoIP kitaplığı 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:

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

İndirme işlemi tamamlandığında, arşivi şu şekilde çıkarın:

tar -xzvf goaccess-1.4.tar.gz

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

cd goaccess-1.4/

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

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

–enable-utf8 parametresi, GoAccess’in geniş karakter desteğiyle derlemesini sağlarken –enable-geoip, orijinal GeoIP veritabanlarıyla GeoLocation desteğini sağlar. 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:

Output. . .
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 kurmak için gereken makefile’i oluşturmak için make komutunu çalıştırın:

make

Son olarak, sisteme önceden oluşturulmuş makefile kullanarak GoAccess’i kurun:

sudo make install

Aşağıdakileri çalıştırarak programın başarıyla kurulduğundan emin olun:

goaccess --version

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

OutputGoAccess - 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, program için resmi Ubuntu deposunu kullanmaktır. Her yeni sürüm için kaynaktan derlemek zorunda 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:

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

Önce 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 ekleyen tee komtuna aktarırsınız.

Kaynaklar listenizdeki depoyla, imzayı doğrulamak için artık GPG anahtarını indirebilirsiniz:

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

Ardından, paket veritabanını aşağıdaki komutla güncelleyin:

sudo apt update

Son olarak, GoAccess’i yükleyin:

sudo apt install goaccess

GoAccess artık Ubuntu sunucunuza yüklenmiştir. Bir sonraki adımda, programın çalışma şeklinde değişiklikler 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 saat, tarih ve günlük biçimini belirtmek için bu dosyayı düzenleyeceksiniz.

Yapılandırma dosyası ~/.goaccessrc veya %sysconfdir%/goaccess.conf adresinde bulunabilir; burada %sysconfdir%, /etc/, /usr/etc/ veya /usr/local/etc/’dir. Yapılandırma dosyasının sunucunuzda nerede olduğunu öğrenmek için aşağıdaki komutu çalıştırın:

goaccess --dcf
Sample output/etc/goaccess/goaccess.conf

Nano kullanarak bu yapılandırma dosyasını düzenleyin:

sudo nano /etc/goaccess/goaccess.conf

Not: Bu dosya sunucuda yoksa, önce onu oluşturduğunuzdan ve 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 # karakterini kaldırın. Önce Apache için zaman biçimi ayarını etkinleştirelim. Bu ayar, günlük biçimi zamanını 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

Ardından, günlük biçimi tarihini belirten Apache tarih biçimi ayarının yorumunu 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ı kaldırın. Birkaç satır bu ayarı değiştirir ve tam olarak açıklanacak olanı 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 yorumunu 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 ana bilgisayarlarınız varsa, bunun yerine aşağıdaki satırın yorumunu 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ı kaydedebilir ve editörden çı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 sağlar 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 depolanır. Bu dizinin içeriğini incelemek için aşağıdaki komutu çalıştırın:

sudo ls /var/log/apache2
Sample outputaccess.log  error.log  other_vhosts_access.log

Sunucunuz uzun süredir çalışıyorsa, bu dizinde, günlük döndürme sonucunda geçmiş günlük dosyalarını içeren sıkıştırılmış .gz dosyaları bulabilirsiniz. En son günlükler bir access.log dosyasına yerleştirilir. Sanal ana bilgisayarlara sahip web sunucuları için, her ana bilgisayarın günlük dosyalarını bulmak için /apache2 dizini içindeki alt dizinlere cd göndermeniz gerekebilir.

Web sunucusu tarafından ne tür bir trafiğin işlendiğine dair fikir edinmek için GoAccess’i Apache erişim günlüklerinde çalıştıralım. GoAccess ile access.log dosyanızı analiz etmek için aşağıdaki komutu çalıştırın:

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

Bu, GoAccess komut satırı panosunu başlatacaktır.

GoAccess command-line dashboard interface

Not: Bunun yerine bir Günlük Biçimi Yapılandırma istemi görürseniz, bu, önceki adımda GoAccess yapılandırma dosyasında yaptığınız değişikliklerin geçerli olmadığı anlamına gelir. Yapılandırma dosyanızın doğru yerde olduğundan ve gerekli ayarların yorumunu kaldırdığınızdan emin olun.

Daha önce de belirtildiği gibi, bazen uzun süredir çalışan bir web sunucusunda birkaç sıkıştırılmış günlük dosyanız olacaktır. GoAccess’i tüm bu dosyalar üzerinde önce onları çıkarmadan çalıştırmak için, zcat komutunun çıktısını goaccess’e aktarabilirsiniz:

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

Ardından, klavye kısayollarıyla pano arayüzünde nasıl hızlı gezineceğinizi öğreneceksiniz.

Adım 4 — Terminal Panelinde Gezinme

Gösterge tablosunun üst kısmında birkaç temel ölçümün bir özeti bulunur. Buna raporlama dönemi için toplam istekler, benzersiz ziyaretçiler, günlük boyutu, 404 bulunamadı hataları, istenen dosyalar, ayrıştırılan günlük dosyasının boyutu, HTTP yönlendiricileri, günlük kaynağının adı, günlük dosyasının işlenmesi için geçen süre ve daha fazlası dahildir.

Summary of dashboard metrics

Üst panelin altında, yukarıda bahsedilen ö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 ilerlemek için ve geri gitmek için SHIFT+TAB.
  • F5 Kontrol panelini yenilemek için
  • g gösterge tablosu ekranının en üstüne gitmek için G ve gösterge tablosundaki son öğeye gitmek için G.
  • o veya seçilen modülü genişletmek için ENTER’a basın.
  • j ve k etkin modül içinde aşağı ve yukarı kaydırmak için
  • s Etkin modül için sıralama seçeneklerini görüntülemek için
  • / tüm modüllerde arama yapmak için ve bir sonraki eşleşmeye geçmek için n.
  • 0-9 ve SHIFT+0 İlgili numaralı modülü hızlı bir şekilde etkinleştirmek için.
  • ? to view the quick help dialog.
  • q to quit the program.

Şimdi panodaki mevcut modüllerin her birini inceleyelim. Her birinin bir numarası, bir başlığı ve mevcut toplam satır sayısının bir göstergesi vardır. > karakteri, gösterge panosunun üst kısmında da yansıtılan etkin paneli belirtir.

Active GoAccess panel demonstration

İşte panellerin her birinin kısa bir açıklaması. Aşağıdaki her bölüm, programdaki panel numarasına ve başlığına karşılık gelir.

1 — Günde Tekil Ziyaretçi

Bu panel, bildirilen her tarih için isabetleri, benzersiz ziyaretçileri ve kümülatif bant genişliğini görüntüler. Benzersiz bir ziyaretçi, aynı IP adresine, tarihe ve kullanıcı aracısına sahip biri olarak 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 sunucunuzda en çok istenen statik olmayan dosyalarla ilgili 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ı metrikleri 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 ayrıca 2 ve 3’te tartışılan aynı metrikleri görüntüler, ancak sunucuda (404s) bulunmayan yollar için.

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 onları engellemenin harika bir yoludur.

Visitor hostnames and IPs

Bu paneli o düğmesine basarak genişletirseniz, her bir ana bilgisayar hakkında menşe ülkesi, şehir ve ters DNS arama sonucu gibi daha fazla bilgi görürsünüz.

Vistor hostnames and IPs expanded

6 — İşletim Sistemleri

Bu panel, web sunucunuza bağlanmak için ana bilgisayarlar tarafından kullanılan farklı işletim sistemlerini bildirir. Bu paneli genişletmek, her işletim sisteminin belirli sürümlerini görüntüler.

Operating systems

7 — Tarayıcılar

Önceki panele benzer şekilde, bu, her benzersiz ziyaretçinin kullandığı tarayıcıları web sunucunuza bildirir ve genişletildikten sonra her tarayıcı için belirli sürümleri listeler.

Browsers

8 — Zaman dağılımı

Burada, isabet sayısı, benzersiz ziyaretçiler ve tüketilen bant genişliği için saatlik bir rapor bulacaksınız. Bu, sunucunuzdaki en yoğun trafik dönemlerini tespit etmenin harika bir yoludur.

Time distribution panel

9 — Sanal Konaklar

Bu panel, günlük dosyasından ayrıştırılan sanal ana bilgisayarları görüntüler. Yalnızca, günlük biçimi yapılandırmasında %v varsa 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ı yorumlanarak 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önlendirme Siteleri

Bu panel, yönlendiren ana bilgisayarların IP adresini görüntüler, ancak URL’nin tamamını göstermez.

12 — Anahtar Sözcükler

Burada, web sitenize yönlendiren Google arama, Google önbellek ve Google çeviride kullanılan anahtar kelimeler raporlanır. Bu panel de varsayılan olarak devre dışıdır ve ayarlarda etkinleştirilmelidir:

/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ının genel istatistiklerini yansıtır. Panelin genişletilmesi, her durum kodu için toplu istatistikleri görüntüler.

HTTP status codes panel

14 — Uzak Kullanıcı (HTTP Kimlik Doğrulaması)

Bu panel, HTTP kimlik doğrulaması tarafından belirlenen şekilde sunucunuzda belge isteyen kişinin kullanıcı kimliğini görüntüler. Parola korumalı olmayan belgeler için bu kısım – olacaktır. Bu panelin yalnızca, %e 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ı belirlemenizi sağlar. %C, günlük formatı değişkeninin bir parçasıysa ve durum MISS, BYPASS, EXPIRED, STALE, UPDATING, REVALIDATE veya HIT olabilirse etkinleştirilir.

16 — Coğrafi Konum

Bu panel, ziyaret edilen IP adreslerinden türetilen coğrafi konumların bir özetini sağlar. Bu paneli genişletmek, her bir menşe ülke için toplu istatistikleri görüntüleyecektir.

Geo location panel

Kontrol panelinde bulunan panelleri incelediniz, şimdi farklı formatlarda raporlar oluşturacaksınız.

Adım 5 — Rapor Oluşturma

Aside from displaying the data in the terminal, GoAccess also allows you to generate HTML, JSON, or CSV reports. Make sure that you’re in the home directory before running any of the commands in this section:

cd ~

Raporun statik HTML olarak çıktısını almak için, -o bayrağına argüman olarak bir HTML dosyası belirtin. Bu bayrak ayrıca .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.

ls
Outputgoaccess-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:

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

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

open ~/stats.html

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

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.