:::: MENU ::::
Posts tagged with: shell

Sysdig Nedir ? Sysdig Kullanarak Sunucu İzleme

sysdig_logo

Sysdig Nedir ?

Bazı durumlarda bir işlem tarafından yapılan ve alınan sistem çağrılarını takip etmek gerekebilir bunun için  akla gelen ilk şey nedir? Muhtemelen haklı olarak düşünceniz strace olur ve haklısın. strace hakkında bilgi sahibi değilseniz ilgili paylaşımımı inceleyebilirsiniz.

Hangi araç ile komut satırından ham ağ trafiğini izlemek için kullanırsınız? Hakkında bilgi sahibiyseniz  tcpdump , kullanarak yine doğru bir seçim yapmış oluruz. (unix’de her şey bir dosyadır)

Açık dosyaları izlemek zorunda kaldığımızda ise ilk kullanacağımız lsof‘dur. lsof ile daha önce payaştığım yazıya göz atabilirsiniz.

Sysdig, açık kaynak kodlu linux (RHE,Debian,Container),OSX ve Windows sistemlerde çalışan ve strace , tcpdump ve lsof gibi (strace+tcpdump+lsof+iftop+htop) sysadmin’in sıklıkla kullandığı klasik ama gerçekten harika araçları tek çatıda toplayan ve  farklı birçok  kabiliyet ve özelliğe sahip gelişmiş bir araçtır.

Ayrıca, çok güzel de bir filtreleme sistemine sahiptir. Bu şekilde spesifik olarak system çağrıların(syscall) ve olayların(event) belirttiğiniz kriterlere göre görüntülenmesini veya istersek bir dosyaya(trace file) yazılmasını sağlayabiliriz. Bu trace file’ları MacOS X ya da Windows gibi farklı platformlar üzerinde de analiz edebiliriz.

Sysdig’in bir diğer güzel özelliği ise “chisels” adını verdikleri analiz scriptleridir. Bu scriptler toplanan verinin anlamlandırılması için kullanılan Lua dilinde yazılmış scriptlerdir ve sisteminiz hakkında detaylı bilgi edinmek için kullanabileceğiniz ve analiz ihtiyaçlarınıza göre kendi scriptlerinizi geliştirebileceğiniz bir mekanizmadır. Yazının sonunda örnekler ile bu kısmı daha iyi analayacaksınız.

Bu yazıda sysdig ile Linux sistem izleme ve sorun gidermek için kurulum ve temel kullanımını inceleyeceğiz.

Sysdig Kurulumu

Bu yazı için ben, kısalık ve kolaylık uğruna resmi internet sitesinde açıklanan otomatik yükleme işlemini kullanmayı tercih ettim.

Sysdig kurulumu gerçekleştirmek için sudo olarak aşağıdaki komutu çalıştırmanız yeterli oluyor. Herşey otomatik olarak kuruluyor. Tüm kurulum seçenekleri için sayfayı inceleyebilirsiniz.

Sysdig Kullanımı

Yükleme tamamlandıktan sonra, sysdig’in en basit (primitive) kullanımı komut satırından doğrudan sysdig komutunu çalıştırmaktır.

Bu şekilde o an çalışan sistem çağrıları ve event’ler ekrandan akacaktır. Bu çıktıda her bir olay bir satır olacak şekilde görüntülenmektedir ve her bir satırda aşağıda sıralaması verilen bilgiler ekrana basılacaktır:

İlgili bilgilerin açıklaması da şu şekildedir:

  • evt.num     :  Event numarası
  • evt.time     : Event tarihi
  • evt.cpu      : Event’in hangi kaç numaralı CPU core üzerinde çalıştığı
  • proc.name: Süreç ismi.
  • thread.tid : Thread ID ( tek thread’li süreçler için PID)
  • evt.dir        : Event yönü, giriş eventleri için > ve çıkışlar için <
  • evt.type      : Event tipi, örm: ‘open’, ‘read’, ‘write’
  • evt.args      : event’in aldığı argüman.

Sysdig Filtreleme (class.field) Parametreleri

Sysdig’i yukarıda verilen şekilde tüm sistem olaylarını görüntüleyecek şekilde kullanmak aynı anda binlerce olayın ekrandan akıp gitmesine ve bu bilgi akışı içerisinde kaybolup gitmenize neden olacaktır; işte strace’den alışık olduğumuz bu verimsiz durumu ortadan kaldırmak için sysdig’in çok gelişmiş bir filtreleme sistemi bulunmaktadır.

Bu sistem sayesinde binlerce sistem çağrısını en ince ayrıntısına kadar filtreleyerek spesifik aramalar yapabiliriz.

Örnek olarak vim komutuna ait aktiviteyi görüntülemek için sysdig’i aşağıdaki şekilde kullanabilirsiniz:

Yukardaki komutu verip aşağıdaki gibi bir vim komutu çalıştırırsanız.

Aşağıdaki şekle benzer bir çıktı görürsünüz.

Sysdig’in fitreleme yapısı standart karşılaştırma operatörlerini ( =, !=, <, <=, >, >= ) ve boolean operatörleri (“and”, “or” ve “not”) desteklediği için filtrelemeyi genişletmek çok kolaydır.

Örnek olarak cat ve vim komutunun aktivitelerini görüntülemek için komutu şu şekilde kullanmak mümkündür:

ya da ping haricindeki tüm diğer süreçlerin kapadığı dosyaları görüntülemek için örnek şu şekildedir:

Tüm filtreleme (class.field) seçeneklerini aşağıdaki komut ile görebiliriz:

Sysdig Kullanışlı Örnekler

Belirli bir dizin altında işlem yapan süreçleri görüntülemek için:

Bellibir süreç haricinde dosyalar üzerinde aktivite gerçekleştiren süreçler ve yaptıkları işlemler:

Java ve MySQL süreçlerine ait aktivite:

Komutların aldığı parametreler üzerinden filtreleme yapmak için proc.args filtresi yani class.filed’i kullanılmaktadır.

Örnek olarak parametre olarak www.omeroner.com alan bir uygulamanın hareketlerini izlemek için (örn: dig www.omeroner.com)

Spesifik bir ip adresi tarafından yapılan bağlantılar sonucu oluşan ve sshd süreci ile alakalı olmayan aktiviteyi incelemek için:

Mysql dışındaki süreçler tarafından karşılanan gelen network bağlantılarını incelemek için:

Belli bir  kullanıcıya ait tüm aktivitenin izlenmesi:

Belli bir gruba ait tüm aktivitenin izlenmesi:

Event tipine göre çağrıları görüntülemek için: (LINUX System Call Quick Reference için bu dosyayı inceleyebilirsiniz.)

Tüm event listesini görmek için:

Sysdig Çıktı Formatlarını Düzenleme

Sysdig ile filtreleme sonuçlarının  çıktılarını customize edebililiyoruz. Örnek olarak event tipi chdir (change dir) olan sistem çağrılarını, komutu (cd) çalıştıran kullanıcı ve ilgli dizini görüntülemek üzere formatlı bir şekilde ekrana basmak için şu komut kullanılabilir:

shell üzerinden gerçekleştirilen tüm komutları, kullanıcı, komut ve komut agrümanını içerecek şekilde ekrana basmak için:

Sysdig ile Trace Dosyaları

Yazının başında’da ifade ettiğim gibi sysdig ile elde ettiğimiz sonuçları daha sonra incelemek için bir dosyaya (trace file) yazdırabiliriz.

Örnek olarak tüm sysdig çıktısını trace.scap dosyasına yazılması için kullanılacak komut:

Sadece 50 adet event’in ilgili dosyaya yani trace.scap yazılmasını sağlamak için komut:

Trace dosyasına yazdırdığımız bir sysdig çıktılarını okumak için kullanılacak komut:

 

Sysdig ‘de Chisels Kullanımı

chisels , sysdig üzerinden elde edilen verinin anlamlandırılması üzere kullanılan scriptlere verilen addır ve öntanımlı olarak bir çok chisel bulunmaktadır.

Öncelikle bu chisel’lerin bir listesini -cl parametresi kullanarak görebiliriz:

chisel’ler hakkında daha detaylu bilgi almak üzere -i parametresi kullanılabilir. Örnek olarakbottlenecks isimli chisel’in ne iş yaptığına bakmak için aşağıdaki komut kullanılabilir:

 

Sysdig  Chisels Kullanışlı Örnekler

Ençok cpu kullanan süreçleri görmek için:

1 ms’den uzun süren I/O aktivitesi:

1 ms’den uzun süren network aktivitesi:

Syscall bazında en çok error üreten süreçler:

Süreçlere ait standart çıktıları ekrana basmak için (class.field kullanılabilir):

Yazma + Okuma anlamında en çok disk I/O’nun yapıldığı dosyalar:

En çok disk I/O üreten (Read + Write) süreçler:

Byte cinsinden toplam I/O miktarı:

Hangi süreçlerin hangi log dosyalarına ne yazdığının ekrana basılması:

Syslog’a yazılan her mesajın görüntülenmesi:

Spesific bir ip’nin ürettiği trafiğin görüntülenmesi (dikkat edeceğiniz üzere chisel’leri filtreleme seçenekleri kullanabiliyoruz):

Spesifik bir port üzerinde gerçekleşen trafiğin görüntülenmesi:

Byte cinsinden en çok trafik üreten bağlantıların listenmesi:

En çok trafik üreten portların listelenmesi:

En çok trafik üreten süreçlerin görüntülenmesi:

Sistemdeki kullanıcılara ait aktivitenin interaktif olarak izlenmesi:

Örnekleri çoğaltmak kendinize kalmış ve daha fazlası için bu sayfayı ziyaret edebilirsiniz.

 

 


Linux Sunucusunu Ping(ICMP) Erişimlerine Kapatma

Linux Sunucusunu Ping(ICMP) Erişimlerine Kapatma için;

/etc/sysctl.conf dosyasındaki ;

net.ipv4.icmp_echo_ignore_all=0 değerini yapmanız yeterli.

Bu komutu özellikle sadece mysql server olarak kullanılan sunucular tarafından tercih edilmektedir.

 



Shell Script Çoklu Yorum Satırı Ekleme

Shell script yazmayı seven biri olarak, bazen kabuk programlama yaparken birden fazla satırı comment yani yorum satırı haline getirmek için aşağıdaki yönetemi kullanabilirsiniz.

Shell Script Çoklu Yorum Satırı Ekleme:

 


Reverse Dns Kayıt Kontrol için Shell Script

Reverse Dns kayıtları düzenli olarak kontrol etmek için yazılmış ufak bir script.

 


Arka Planda SCP ile Kopyalama

Arka Planda SCP ile Kopyalama işleminden önce arka planda komut çalıştırma konusunda bilgi vermek gerekir ise aşağıdaki gibi nohup kullanarak arka planda herhangi bir linux komutu çalıştırmak için:

Ama scp komutu ile sorun (parola kimlik doğrulama kullanılırsa) parola sorar olmasıdır. Aşağıdaki komut bütününü kullanarak arka planda kopyalama başlatabilirsiniz.

Arka Planda SCP ile Kopyalama

Parola sormasın istiyorsanız sunucunuzda sshpass kurulu ise;

Ardından ctrl + z  basayarak  process’i arka plana atabiliriz, daha sonra

komutu ile arkaplanda çalışan uygulamayı görebiliriz.

 


Linux/Unix İçin Kullanışlı Alias Listesi

Alias (takma ad) kullanarak daha hızlı ve akıcı çalışabiliriz. Alias komutları tek kelime girerek (seçenekler ve dosya adları dahil) herhangi bir komut ya da komut grubunu başlatılması sağlanabilir.  Sistemde tanımlı tüm Alias(takma ad)’ları listelemek için alias komutunu kullanabilirsiniz.

Alias’ları listelemek

Continue Reading


RAM Kullanımına göre Process’lerin Sıralanması

Linux dağıtımlarında, RAM Kullanımına göre Process’lerin Sıralanması için ps komutunu kullanabiliriz.

RAM Kullanımına göre Process’lerin Sıralanması

İlgili ps sorgusu, hem resident set size (physically resident memory), hem de virtual memory size (allocated address space) değerlerini sıralamaktadır. Bu şekilde en çok memory kullanan süreçler tespit edilebilir.


Centos Custom Motd File

Centos sunucuya login olduğunuzda sunucu hakkında bilgilere hızlıca erişmek ve sunucu hakkında notlarınızı görmek istiyorsanız, aşağıdaki script tam size göre,öncelik ile yapmanız gereken;

/usr/local/bin/custom_motd  adında aşağıdaki script’i oluşturup açılışta bu dosyanın excute edilmesi için;

/etc/profile dosyasının son satırına;

/usr/local/bin/dymotd

dosyayı konumlandırdığınız dizin ile belirtmeniz gerekiyor.

script’ten anlaşılacağı üzerine Maintenance Information kısmında /etc/motd  dosyasına ne yazarsanız buraya yansıyacak şekilde yapılandırılmıştır. Bunun için extradan /rtc/motd’nin okunmasına gerek yok. Bunun için, /etc/ssh/sshd_config dosyasında;

PrintMotd yes satırını PrintMotd no olarak değiştirmeniz gerekiyor. Böylelikle hem motd dosyası hemde /usr/local/bin/dymotd ikisi birden okunmasın.

Centos Custom Motd File

sonuç;

 


Linux/UNIX Sistemlerde Inode Numarası ile Dosya Silme

Linux/UNIX sistemler dosya silmek için rm komutunu kullanırız. Bazen yanlışlıkla özel karakterler  (?, * ^ vb.)  kullanılarak dosya oluşturulur.

Dosya adında bu özel karakterler olan bir dosyayı silmek için aşağıdaki belirteceğim yöntemi kullanabilirsiniz.Bu yöntem,Solaris, FreeBSD, Linux, ve Unix sistemlerinde çalışdığını unutmayın.

Herhangi bir dosyanın Inode numarasını öğrenmek için;

Find komutunu kulanarak dosyayı bulup silmek için aşağıdaki kalıbı kullanabiliriz.

Özel karakter içeren dosyaları silmek için aşağıdaki örneği inceleyebilirsiniz. Dosyasının kaldırılmasını onaylamak için,onaylamanız istendiğinde, Y tuşuna basın

 


Sayfalar:123