Sistem ve Network(Ağ) yöneticileri için, hergün Linux Sistem Performans takibi ve bakımı oldukça zor bir iştir. IT sektöründeki Linux yöneticileri bu konuda hemfikirdir. Bu makalede Linux/Unix Sistem Yöneticileri tarafından sıklıkla kullanılan sistem (performans) izleme araçları hakkında bilgi vereceğiz. Sistem izleme ve sistemde performans problemlerinin tespiti icin kullanılan bu yazılımlar tüm Linux dağıtımlarında mevcuttur. Sistem analiz ve izleme metodunuza göre bu yazılımlardan bir veya birkaçını kullanabilirsiniz.
- top –> Sistem yöneticileri tarafından sistem performansını izlemek için en çok kullanılan yazılımlardan biridir ve birçok Linux/Unix işletim sisteminde sistem kurulumu ile hazır gelir. Sistemde çalışan ve aktif olan işlemleri ve hizmetleri sıralı olarak ve belli zaman aralığında güncelleyip listeler. CPU(İşlemci) kullanımı, Memory(Hafıza-RAM) kullanımı, Swap, Process PID gibi donanım kaynaklarının kullanımı, çalışan işlemler/hizmetler vb. bilgileri gösterir. İşlemci ve RAM belleği fazla kullanan işlemleri de görüntüler. top komutu sistem yöneticilerinin sistemi izlemek ve gerektiğinde doğru aksiyonu almak için kullandığı çok önemli bir programdır. Kullanımı ile ilgili birkaç örnek;
İşlemler/hizmetler, memory(hafıza), cpu(işlemci), swap gibi bilgileri görüntülemek için, Terminal’den top komutunu verin,
Bilgileri renkli olarak görüntülemek için, program çalışırken z tuşuna basın, çıkmak için q tuşuna basın,
Belli kullaniciya ait işlemleri görüntülemek için top -u <kullanıcı adı> şeklinde kullanın,
Çalışan işlemlerin sistem yolunu görüntülemek için, program çalışırken c tuşuna basın,
Çalışan herhangi bir hizmeti/işlemi sonlandırmak için, program çalışırken k tuşuna basıp sonlandırmak istediğiniz işlemin PID kodunu girin ve Enter tuşuna basın,
CPU (işlemci) kullanımına göre işlemleri/hizmetleri sıralamak için, proğram açıkken (Shift+P) tuş kombinasyonunu kullanın.
Çalışan bir işlemin/hizmetin önceliğini değiştirmek için, proğram açıkken r tuşuna basın ve işlemin PID kodunu girip Enter tuşuna basın,
top komutu yardım sayfasını görüntülemek için, proğram açıkken h tuşuna basın,
- vmstat –> Disk, hafıza, cpu, I/O blokları gibi sistem işlemleri/hizmetleri ve donanım kaynaklarının kullanımı ile ilgili istatistikleri görüntülemek için kullanılır. Bu komutun kullanılabilmesi için sysstat paketinin sistemde kurulu olması gerekir. Uygulama, sistem kullanım bilgilerini 6-başlık şeklinde listeler. En önemlileri memory başlığı altındaki free ve swap kolonunda bulunan si, so alanlarıdır.
- free – Kullanılmayan/boşta olan bellek/ram miktarı
- si – Diskten , takas alanı olarak saniyede kullanılan alanın Kilo Byte olarak boyutu.
- so – Diske saniyede iade edilen/boşa çıkan takas alanının Kilo Byte olarak boyutu.
Herhangi bir parametre olmaksızın kullanırsanız, sistemin boot edildiği/başlatıldığı andan itibaren sistem istatistiğinin özetini gösterir.
Aşağıdaki komut ile vmstat komutunu 2 saniyelik aralıklarla 6 defa çalıştırabilirsiniz,
-t seçeneği kullanılırsa her satırda, komutun çalıştırıldığı tarihi/saati de gösterir,
-s seçeneği ile sistemdeki işlemler/hizmetler ve bellek ile ilgili istatistiği görüntüleyebilirsiniz,
-d seçeneği ile sistemdeki disklerin istatistiğini görüntüleyebilirsiniz,
-S ve M parametreleri ile istatistik verilerini Megabyte olarak görüntüleyebilirsiniz,
- lsof –> LiSt Open Files (Açık Dosyaları Listele) ifadesinin kısaltılmış şekli ile isimlendirilen yazılım, herhangi bir işlem/hizmet tarafından açılmış dosyaları bulmak ve listelemek için kullanılır. Bildiginiz gibi Linux herşeyi dosya olarak dikkate alır ve dosyalarla (disk files, network sockets, pipes, processes, devices) düzenler. Bazı dosyaların açık veya kullanımda olduğu şeklinde bir hata nedeniyle bir diski sistemden unmount edemediğinizde (dosya sisteminden çıkaramadığınızda) lsof komutu ile açık olan veya kullanımda olan dosyaları ve hangi işlem/hizmet tarafından açıldığını/kullanıldığını görüntüleyebilirsiniz.
Terminalden lsof komutunu girildiğinde Command, PID, USER, FD, TYPE vb. başlıkları şeklinde verileri listeler.
Başlıklar ve verileri açıklayıcı ve anlaşılırdır. Bununla birlikte FD ve TYPE başlıkları ile ilgili biraz daha bilgi paylaşacağız.
FD – File Descriptor (Dosya açıklayıcı) ifadesinin kısaltılmış şeklidir. Başlık altındaki bazı değerlerin açılımı ve açıklamaları şöyle;
- cwd current working directory – sisteme login olan kullanıcının bulunduğu klasör
- rtd root directory – root klasörü
- txt program text (code and data) – text tabanlı program (kod ve veri)
- mem mem-mapped file
1u şeklinde rakam ve devamında u,r,w harfleri olan değerler/parametreler, dosya tanımlayıcılardır.
- r – for read access – okuma izni olan dosya
- w – for write access – yazma izni olan dosya
- u – for read and write access – okuma ve yazma izni olan dosya
TYPE – Dosya tipi ve kimliği
- DIR – DIRectory – Klasör
- REG – REGular file – Dosya
- CHR – CHaracteR special file
- FIFO – First In First Out
Belli bir kullanıcıya ait açık/kullanılan dosyaları görüntülemek için –u <kullanıcı adı> opsiyonunu kullanın,
Belli bir portta çalışan işlemlerin/hizmetlerin kullandığı açık dosyaları bulmak için –i opsiyonu, ardından protokol:port numarası kombinasyonu kullanılır,
Açık ve kullanılan IPv4 ve IPv6 network dosyalarını ayrı komutlarla görüntüleyebilirsiniz,
1 ile 1024 (1-1024) arasındaki TCP portlarında çalışan ve aktif işlemler/hizmetler tarafından kullanılan ve açık olan dosyaları listelemek için, -i TCP:1-1024 opsiyonlarını kullanın,
1 ile 1024 (1-1024) arasındaki TCP portlarında çalışan ve aktif işlemler/hizmetler tarafından kullanılan ve açık olan dosyaları listelemek için, -i TCP:1-1024 opsiyonlarını kullanın,
Herhangi bir kullanıcının çalıştırdığı işlemin/hizmetin kullandığı/açık olan dosyaları görüntülememek için, –i -u^<kullanıcı adı> seçeneklerini kullanın,
Herhangi bir kullanıcının hangi komutu kullandığını ve hangi dosyaları görüntülediğini listelemek için -i -u <kullanıcı adı> seçeneklerini kullanın,
Sadece –i ile LISTENING ve ESTABLISHED durumundaki tüm network bağlantılarını görüntüleyebilirsiniz,
-p parametresini kullanarak işlemin/hizmetin PID kodu ile sorgulama yaparak kullandığı dosyaları listeleyebilirsiniz,
Belli bir kullanıcıya ait işlemlerin/hizmetlerin sadece PID kodlarını görüntülemek için -t –u <kullanıcı adı> seçenekleri ile sorgulama yapabilirsiniz,
- tcpdump –> Yaygın olarak kullanılan network paket analiz ve network paket izleme yazılımıdır. Ağ arayüzü ile network üzerinden gönderilen ve alınan TCP/IP paketlerini filtrelemek veya yakalamak için kullanılır. Yakaladığınız network paketlerini daha sonra incelemek için pcap formatında bir dosyada kaydedebilirsiniz. Birçok Linux/Unix tabanlı işletim sisteminde mevcuttur.
Yazılım, yüklenmemiş ise kullandığınız Linux dağıtımının paket yöneticisi ile kurabilirsiniz,
Yukarıdaki komutu çalıştırdığınızda tcpdump, işlemi iptal edene kadar belirtilen arayüzde bütün paketleri yakalamaya devam eder. İşlemi iptal etmek için CTRL + C tuş kombinasyonunu kullanın.
-c opsiyonunu ile yakalanacak paket sayısını belirleyebilirsiniz,
Yakalanan paketi ASCII formatında görüntülemek için –A seçeneğini kullanın,
Sistemdeki ag arayüzlerini görüntülemek için –D seçeneğini kullanın,
Herbir paketdeki, TCP/IP Link katmanı başlığını-header- içeren, veriyi-data- HEX ve ASCII formatında görüntülemek için –XX seçeneğini kullanın,
Yakalanan paketleri .pcap formatında dosyaya kaydetmek için –w opsiyonunu kullanın,
Kaydedilen dosyada yakalanan paketleri okumak ve analiz etmek için –r dosya adı.pcap opsiyonunu ve parametresini kullanın,
Belli bir ağ arayüzündeki IP adres paketlerini yakalamak için –n seçeneğini kullanın,
Sadece TCP paketlerini yakalamak için, tcp parametresini kullanın,
Sadece belli bir portun ağ trafiğindeki –mesela port 22- paketleri yakalamak için port <port no> parametrelerini kullanın,
Belli bir kaynak(source) IP adresinin paketlerini yakalamak için src <IP adres> parametrelerini kullanın,
Belli bir hedef(destination) IP adresinin paketlerini yakalamak için dest <IP adres> parametrelerini kullanın,
- netsat –> netstat (network statistics) gelen ve giden network paketleri(veya bağlantıları), ağ arayüzleri, yönlendirme tabloları (routing tables) istatistiklerini izleyen yazılımdır. Bütün Linux/Unix işletim sistemlerinde ve Windows işletim sisteminde bulunur. Sistem yöneticilerinin ağ performansı izleme ve ağ sorunlarını gidermek için kullandığı çok önemli bir programdır. netstat, hangi portların açık olduğunu ve hangi programların açık olan portlarda gelen bağlantılar için dinlemede olduğunu gösteren, en temel ağ izleme yazılımıdır.
Linux network yöneticileri kadar Linux sistem yöneticilerinin de ağ problemlerini tespit etmek ve gidermek, ağ trafik performansını izlemek ve belirlemek için kullandıkları çok önemli bir programdır.
LISTENING durumundaki tüm TCP ve UDP port bağlantılarını görüntülemek –a seçeneğini kullanın,
Sadece TCP port bağlantılarını görüntülemek için netstat –at komutunu kullanın,
Sadece UDP port bağlantılarını görüntülemek için netstat –au komutunu kullanın,
LISTENING durumundaki tüm aktif port bağlantılarını görüntülemek için netstat -l komutunu kullanın,
LISTEN durumundaki tüm aktif TCP portlarını görüntülemek için netstat –lt komutunu kullanın,
LISTEN durumundaki tüm aktif UDP portlarını görüntülemek için netstat –lu komutunu kullanın,
LISTENING durumundaki tüm aktif UNIX portlarını görüntülemek için netstat –lx komutunu kullanın,
-s seçeneğini kullanarak TCP, UDP, ICMP ve IP protokolleri için istatistikleri görüntüleyebilirsiniz,
Sadece TCP protokolüne ait istatistiklerini görüntülemek için netstat –st komutunu kullanın,
Sadece UDP protokolüne ait istatistikleri görüntülemek için netstat –su komutunu çalıştırın,
Servis adını PID numarası ile “PID/Program Name” formatında göstermek için netstat –tp komutunu çalıştırın,
-ac seçenekleri ile istenilen bilgiler belli zaman aralığında(saniye olarak) güncellenerek ekranda listelenebilir,
Kernel IP yönlendirme tablosunu (Kernel IP routing table) netstat ve route komutunu kullanın,
Sistemdeki ağ arayüzlerinde gönderilen ve alınan paketleri, MTU boyut bilgisi ile görüntülemek için netstat –i komutunu kullanın,
Kernel arayüz tablosunu (Kernel interface table) görüntülemek için netstat –ie komutunu kullanabilirsiniz; ifconfig komutu ile aynı işlevselliğe sahiptir,
IPv4 ve IPv6 bilgilerini görüntülemek için netstat –g komutunu kullanın,
Belli zaman aralığında (saniye olarak) netstat bilgilerini sürekli olarak listelemek için netstat –c komutunu kullanın,
Sistem tarafından desteklenmeyen adresleri görüntülemek için netstat –verbose komutunu çalıştırın,
Herhangi bir portta LISTEN/LISTENING durumunda olan programları listelemek için netstat –ap | grep <program> komutunu çalıştırın,
RAW Network(Ağ) İstatistiklerini görüntülemek için netstat –statistics –raw komutunu çalıştırın,
- htop –> İnteraktif ve gerçek zamanlı (real time) Linux işlem/servis izleme aracıdır. İşlevsellik olarak top komutuna benzemekle birlikte, işlemleri yönetmek için kullanıcı dostu arayüzü, klavye kısayolları, işlemleri yatay ve dikey olarak listeyebilme vb. birçok extra özelliği vardır. 3. parti yazılımdır ve Linux sistemleri ile birlikte hazır kurulu gelmez; kullanılan dağıtımın paket yöneticisi ile kurulması gerekir.
Kurulumdan sonra terminalden htop komutunu vererek programı çalıştırabilirsiniz; t tuşuna basarak işlemleri ağaç görünümü formatında listeleyebilirsiniz,
- Uygulamanın üst kısmında CPU, Memory, Swap, load average, Up-time baslıkları bulunur. Bu başlıkların bulunduğu kolonlar sırası ile CPU kullanımı, Swap kullanımı, Sistem load average durumu, Sistemin çalıştığı/açık olduğu süre bilgilerini içerir.
- İşlemler/servisler CPU kullanımına göre sıralanır.
- Program ekranın alt kısmında ise help, setup, kill, nice, quit menüler ve klavye kısayolları bulunur.
- iotop –> top komutuna ve htop programına benzer fakat, fonksiyonellik olarak diskte okuma-yazma (Disk I/O) yapan işlemleri/servisleri gerçek zamanlı olarak izler ve görüntüler. Diskte yüksek miktarda/oranda okuma-yazma (I/O) yapan işlemleri/servisleri tespit etmek için çok faydalı bir yazılımdır. Sistem, yönetici hesabı/oturumu ile çalıştırılmasına izin verir.
Sadece aktif disk yazma/okuma yapan işlemleri/servisleri görüntülemek için —only veya -o seçeneklerini kullanın,
Kullanımı ve klavye kısayolları ile ilgili bazı önemli bilgiler:
- Sıralamayı değiştirmek için sağ veya sol yön(ok) tuşlarını kullanın
- Uygulamanın versiyonunu görmek için –version seçeneğini kullanın
- Kullanım bilgisini görüntülemek için –h seçeneğini kullanın
- Sıralamayı ters çevirmek için –r opsiyonunu kullanın
- Servisleri ve thread işlemleri kontrol etmek için –o opsiyonunu kullanın,
- Interaktif olmayan moda geçmek ve disk okuma-yazma (I/O) kullanımının log girişlerini etkinleştirmek için –b seçeneğini kullanın
- PID numarasına sahip herhangi bir servisin/thread-işlemin disk I/O kullanımını izlemek için –p PID seçeneği ve parametresini kullanın
- USER kullanıcısına ait işlemlerin/servislerin disk I/O kullanımını izlemek için –u USER seçeneğini ve parametresini kullanın
- Normalde iotop tüm thread ve işlemleri gösterir. Sadece işlemleri listelemek için –P seçeneğini kullanın
- Disk I/O kullanım band genişliğini izlemek yerine, kullanım değerlerinin toplamını izlemek için –a seçeneğini kullanın
- iostat –>CPU (işlemci) istatistiğini ve yerel diskler, NFS diskler vb. depo(lama) aygıtlarının sistem girdi(input) ve çıktı(output) (disk okuma-yazma) bilgisini ve istastiğini görüntüler. Uygulamanın kullanılabilmesi için sistemde sysstat yazılımın yüklü olması gerekir.
Sadece işlemci (CPU) istatistiğini görüntülemek için -c parametresini kullanın,
Sadece sistemdeki disklerin ve disk bölümlerinin I/O (disk okuma-yazma) istatistiğini görüntülemek için -d parametresini kullanın,
Sistemdeki sadece belli bir (hard) diskin I/O (disk okuma-yazma) istatistiğini görüntülemek için -p parametresi ile birlikte, hard diskin sistem ismini kullanın,
Sadece, LVM(Logical Volume Manager) istatistiğini görüntülemek için, -N parametresini kullanın,
İostat yazılımın versiyonu görüntülemek için -V parametresini kullanın,
9. IPTraf –> Gerçek zamanlı-anlık olarak- (real time) ağ izleme yapılabilen konsol tabanlı, açık kaynak kodlu yazılımdır. Ağ arayüzü TCP, UDP, IP, ICMP istatistiklerini; IP checksum hatalarını, TCP bağlantı ve byte sayısını, TCP flag bilgisini, ICMP ayrıntılarını, TCP/UDP trafiği analizini, ağ üzerindeki IP trafiği bilgilerini görüntüler. Birçok dağıtımın paket depolarında bulunur. Kullanımını göstermeden önce, uygulamayı sisteme kuruyoruz,
IP trafiği izleme
Ağ arayüzü istatistikleri
Detaylı, ağ arayüzü istatistikleri
TCP/UDP (port) analizi istatistikleri
LAN trafiği izleme
Program ayarları
- psacct –> Sistemdeki kullanıcıların aktivitelerini izlemek için kullanılır. Kullanıcı ait işlemleri, arka planda çalışan servisleri ve bunların sistem kaynakları kullanımını izler. Sistem yöneticileri tarafından, sistem kullanıcılarının yaptığı işlemleri, çalıştırdığı komutları, sistem kaynaklarını kullanım bilgisini, sistemde ne kadar süre aktif olduğu gibi bilgileri izlemek ve görüntülemek için kullandığı çok faydalı bir proğramdır.
- ac komutu, kullanıcı login/logout süresi istatistiklerini saat birimde görüntüler.
- lastcomm komutu , kullanıcı tarafından çalıştırılan komutları görüntüler.
- accton komutu, işlemleri/servisleri kapatmak/açmak için kullanılır.
- sa komutu, kullanıcı tarafından çalıştırılan komutların özet bilgisini görüntüler.
- last ve lastb komutları, sisteme en son giriş yapan kullanıcı bilgilerini görüntüler.
psacct ve acct, aynı uygulamalardır. psacct RHEL, CentOS, Fedora dağıtımlarında mevcut olan; acct ise Ubuntu, Debian, Mint dağıtımlarında bulunan pakettir.
rpm tabanlı dağıtımlarda yüklemek için,
Debian/Ubuntu/Mint dağıtımlarında kurmak için,
Kurulum sonrasında psacct servisi devredışıdır. Manuel olarak servisi başlatıyoruz ve sistem başlatıldığında başlaması için servisi etkinleştiriyoruz.
ac komutu, kullanıcıların saat biriminde toplam login/logout sürelerinin istatistiğini gösterir.
Kullanıcıların her bir gün sistemde login oldukları toplam süreleri görüntülemek için, ac –d komutunu kullanın,
Sistemde login olunan kullanıcı hesabının sistemdeki login olarak bulunduğu toplam süre (saat olarak),
- iftop –> Sistemdeki ağ arayüzü üzerinden gerçekleşen ağ bant genişliği kullanımını güncellenmiş veriler şeklinde görüntüleyen açık kaynak kodlu, terminal tabanlı yazılımdır.
- arpwatch –> Bir Linux ağındaki Ethernet ağ trafiğinin MAC ve IP adresi değişikliklerini izleyen ve log bilgisini tutan programdır.
Güncel ARP tablosunu görüntülemek için arp –a komutunu kullanın,
- collectl –> CPU kullanımı, bellek (memory), ağ (network), inode, hizmet/servis, nfs, tcp, socket vb. Linux sistem kaynakları ile ilgili bilgileri toplayan güçlü ve zengin özelliklere sahip konsol tabanlı programdır.
Bütün alt sistemlerin istatistiğini görüntülemek için collectl –all şeklinde komut verebilirsiniz,
collectl -sc komutu ile CPU kullanım bilgisini görüntüleyebilirsiniz,
CPU, disk, network (cdn) bilgilerini birlikte görüntülemek için -scdn parametrelerini birlikte kullanilirsiniz,
Bellek(RAM) ile ilgili bilgileri görüntülemek için -sm parametrelerini kullanın,
TCP bilgisini görüntülemek için -st parametrelerini kullanın,
TCP ve CPU bilgilerini birlikte görüntülemek için -stc parametrelerini kullanın,
Uygulamanın bazı parametreleri ve sistem ile ilgili görüntülediği bilgiler;
b – buddy info (memory fragmentation)
c – CPU
d – Disk
f – NFS V3 Data
i – Inode and File System
j – Interrupts
l – Lustre
m – Memory
n – Networks
s – Sockets
t – TCP
x – Interconnect
y – Slabs (system object caches)
Sistemdeki disklerin kullanım bilgilerini (I/O) görüntülemek için -sd parametrelerini kullanın,
Herbir diskin ayrı ayrı bilgilerini görüntülemek için -sD parametrelerini kullanın,
Aşağıdaki parametreleri kullanarak alt sistem sistemlerin detaylı verilerini görüntüleyebilirsiniz;
C – CPU
D – Disk
E – Environmental data (fan, power, temp), via ipmitool
F – NFS Data
J – Interrupts
L – Lustre OST detail OR client Filesystem detail
N – Networks
T – 65 TCP counters only available in plot format
X – Interconnect
Y – Slabs (system object caches)
Z – Processes
–top parametresini kullandığınızda, top uygulaması formatında bilgileri görüntüleyebilirsiniz,
-c1 –sZ –i:1 parametreleri ile ps komut gibi sistemdeki hizmet/servis/işlem bilgilerini görüntüleyebilirsiniz,
- glances –> Python dilinde yazılmış sistem izleme programıdır. Sistem bilgilerini toplamak için psutil kütüphanesini kullanır. CPU, Bellek, Ağ Arayüzleri, Disk I/O, Hizmetler/Servisler, Dosya Sistemi kullanım bilgilerini görüntüleyebilirsiniz.
Özellikleri
- CPU Bilgileri
- RAM, Swap, Free bellek bilgileri
- Ağ bağlantılarının download/upload değerleri
- Disk I/O hız değerleri
- Disk kullanım bilgileri
- CPU/Memory (bellek) kullanımı yüksek uygulamalar/hizmetler
- Güncel tarih bilgisi
Temel kullanım olarak glances komutu verip sistem verilerini görüntüleyebilirsiniz,
Program açıkken aşağıdaki opsiyon ve tuşları kullanarak verileri belirli bir şekilde sıralayabilirsiniz,
a – İşlemleri/servisleri otomatik olarak sırala
c – İşlemleri/servisleri CPU kullanımına göre sırala
m – İşlemleri/servisleri Bellek kullanımına göre sırala
p – İşlemleri/servisleri isme göre sırala
i – İşlemleri/servisleri Disk I/O oranına göre sırala
d – Disk I/O istatistiklerini göster/gizle
f – Dosya sistemi ve disk sıcaklık istatistiklerini göster/gizli
n – Network (ağ) istatistiklerini göster/gizle
s – Sensör istatistiklerini göster/gizle
y – Disk sıcaklık istatistiklerini göster/gizle
l – Log bilgilerini göster/gizli
b – Network I/O için bit ve byte değerleri
w – Uyarı log kayıtlarını sil
x – Uyarı ve kritik log kayıtlarını sil
1 – CPU’s istatistikleir
h – Yardım ekranını göster/gizle
t – Network I/O kombinasyonu bilgilerini görüntüle
u – Kümülatif network I/O bilgilerini görüntüle
q – Proğramdan çık (Esc and Ctrl-C also work)