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.
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.
Ü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çing
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
vek
etkin modül içinde aşağı ve yukarı kaydırmak içins
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
veSHIFT+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.
İş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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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
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.