Toplam Sayfa Görüntüleme Sayısı

8 Eylül 2017 Cuma

Sysdig

Selamlar; 
Bu paylaşımda "Sysdig" isimli sistem izleme (system monitoring) yazılımından bahsedeceğim. Sysdig çeşitli kategoriler altında bilgi verme özelliğine sahip güçlü bir araç, paylaşımın ilerleyen kısımlarında bu katergoriler ve kullanımı ile ilgili örnekler vereceğim. Konuyu dağıtmadan hızlıca "sysdig" kurulumuna başlayalım. NOT: Kurulum ortamı olarak Ubuntu 16.04 LTS sürüm kullanılmıştır. sysdig web adresinden sysdig hakkında daha fazla bilgi alınabilir (Fedora türevleri redhat-centos kurulum ve rpm hakkında). Paylaşımlarım da  ağırlıklı olarak Debian ve Ubuntu tercih ediyorum, yakın zamanda Centos kurulumlarınada değineceğim.Sysdig "mikisoft windows,Linux (debian&fedora),OSX (Mac) ve Docker container  gibi farklı ortamlara kurulabilmekte) sysdig.org adresinden kurulum yönergeleri ve farklı dağıtımlara ait paketlere ulaşılmakta. 

Sysdig kurulum adımları;
1-)Hızlı Kurulum

curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | bash 
Yada
curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | sudo bash

2-)Apt-get ile Kurulum

curl -s https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public | apt-key add -
curl -s -o /etc/apt/sources.list.d/draios.list http://download.draios.com/stable/deb/draios.list
apt-get update
apt-get -y install linux-headers-$(uname -r)
apt-get -y install sysdig

3-)Paket ile Kurulumu

Kurulum paketlerine (deb/rpm/windows) packages adresinden ulaşabilirsiniz.
Debian ve Ubuntu için "dpkg -i paket-adı"
Fedora ve türevleri için "rpm -ivh paket-adı" komutları ile,tabiki bağımlılıkları 
çözmeniz kaydıyla kurulum yapabilirsiniz. 
Kurulumu tamamladığımıza göre, sysdig ile sunucumuzu izleyebiliriz.Anlatımın başında bahsettiğim kategori ve bunlara ait alt kırılım log kesitlerini örneklerle bu kısımda yapmaya başlayalım.

Aşağıdaki komut ile kategori/komut listesine ulaşılmakta
sudo sysdig -cl
Kategori/Komut hakkında ayrıntılı bilgi için;
sudo sysdig -i (httplog|httptop)
---------------------Kategori/Komut--------------------------------------------
Category: Application
---------------------
httplog         HTTP requests log
httptop         Top HTTP requests
memcachelog     memcached requests log

Category: CPU Usage
-------------------
spectrogram     Visualize OS latency in real time.
subsecoffset    Visualize subsecond offset execution time.
topcontainers_cpu
                Top containers by CPU usage
topprocs_cpu    Top processes by CPU usage

Category: Errors
----------------
topcontainers_error
                Top containers by number of errors
topfiles_errors Top files by number of errors
topprocs_errors top processes by number of errors

Category: I/O
-------------
echo_fds        Print the data read and written by processes.
fdbytes_by      I/O bytes, aggregated by an arbitrary filter field
fdcount_by      FD count, aggregated by an arbitrary filter field
fdtime_by       FD time group by
iobytes         Sum of I/O bytes on any type of FD
iobytes_file    Sum of file I/O bytes
spy_file        Echo any read/write made by any process to all files. Optionall
                y, you can provide the name of one file to only intercept reads
                /writes to that file.
stderr          Print stderr of processes
stdin           Print stdin of processes
stdout          Print stdout of processes
topcontainers_file
                Top containers by R+W disk bytes
topfiles_bytes  Top files by R+W bytes
topfiles_time   Top files by time
topprocs_file   Top processes by R+W disk bytes

Category: Logs
--------------
spy_logs        Echo any write made by any process to a log file. Optionally, e
                xport the events around each log message to file.
spy_syslog      Print every message written to syslog. Optionally, export the e
                vents around each syslog message to file.

Category: Misc
--------------
around          Export to file the events around the time range where the given
                 filter matches.

Category: Net
-------------
iobytes_net     Show total network I/O bytes
spy_ip          Show the data exchanged with the given IP address
spy_port        Show the data exchanged using the given IP port number
topconns        Top network connections by total bytes
topcontainers_net
                Top containers by network I/O
topports_server Top TCP/UDP server ports by R+W bytes
topprocs_net    Top processes by network I/O

Category: Performance
---------------------
bottlenecks     Slowest system calls
fileslower      Trace slow file I/O
netlower        Trace slow network I/0
proc_exec_time  Show process execution time
scallslower     Trace slow syscalls
topscalls       Top system calls by number of calls
topscalls_time  Top system calls by time

Category: Security
------------------
list_login_shells
                List the login shell IDs
shellshock_detect
                print shellshock attacks
spy_users       Display interactive user activity

Category: System State
----------------------
lscontainers    List the running containers
lsof            List (and optionally filter) the open file descriptors.
netstat         List (and optionally filter) network connections.
ps              List (and optionally filter) the machine processes.

Category: Tracers
-----------------
tracers_2_statsd
                Export spans duration as statds metrics.

Use the -i flag to get detailed information about a specific chisel
Kısa bir mola.

Category: Application

sudo su
sysdig -c httplog
Bu örnekte tomcat üzerinde koşan "postgresql studio" uygulamasına oturum açtım ve sysdig ile bu oturum ile ilgili logları listeledim.Bu arada ilerleyen zamanlarda postgresql ile ilgili bir paylaşım yapmayı planlamaktayım.Acil ihitiyacı olanlar için; https://hub.docker.com/r/mehmetocal79/ubuntu/ ubuntu 16.04 LTS base imaj üzerine utf8 postgresql-9.6 docker imajı yukarıdaki adresten pull edebilirsiniz.Docker kullanımı hakkında bilgi için ;
Docker Container
Category: CPU Usage

sudo su
sysdig -c topprocs_cpu
Docker container çalıştırıyorsanız ve bu containerlerin cpu kullanımlarını görmek istersek;
sysdig -c
topcontainers_cpu
Category: Errors

sysdig -c topprocs_errors
Category: I/O

sysdig -c topprocs_file
 Category: Logs

sysdig -c spy_logs
Category: Net

sysdig -c spy_port 5432
sysdig -c topports_server
sysdig -c spy_ip 172.18.0.20
Category: Performance

sysdig -c netlower 0
sysdig -c fileslower 0
Category: Security

Bu örnekte aynı sunucu üzerinde iki ssh oturumu açtım,(root ve mocal),root
root kullanıcı oturumunda aşağıdaki komutu çalıştıyorum ve mocal oturumunda
birkaç komut çalıştıracağım.
sysdig -c spy_users
 
mocal oturumunda çalıştırdığım komutlar.
Category: System State
sysdig -c lscontainers
Csysdig
Sysdig aracının grafik arayüzü, htop benzeri bir ekrana sahip kullanıcı dostu.
csysdig
Sysdig hakkında olabildiğince basit bilgiler vermeye çalıştım.Uygulamanın çok daha fazla özelliği bulunmakta "man sysdig" komutu ile daha ayrıntılı log ve monitoring komutları oluşturabilirsiniz.
Bu paylaşımında sonuna geldik,başka bir paylaşımda görüşmek üzere.Pentagram ile veda ediyorum.
Mehmet ÖCAL 2017
iletişim:mehmetocal79@gmail.com

24 Ağustos 2017 Perşembe

Çok Faydalı Bilgiler Bölüm 2


Selamlar;
Çok Faydalı Bilgiler Bölüm 2 ile yarım kalan anlatıma devam ediyorum. Bu kısımda root parola resetleme (sıfırlama) ve reverse proxy kurulumuna değineceğim.Girişi yaptığıma göre root parolası resetleme konusuna geçiyorum.
Root parolasını neden resetleyelim? Örneğin uzun zaman önce kurulmuş bir linux sisteminiz var ve  "root" parolasını unuttunuz yada "root" parolası değişmiş ve size bildirilmemiş ve müdahale etmeniz gerekli.Bu gibi durumlarda root parola resetleme işinize yarayabilir. 

Yazımı okurken kendinizi durdurulamaz bir hacker gibi hissetmeniz için "Nuri Alço-Operasyonu"ekliyorum.Bu bir hacker parçasıdır, dinlerken yazımı okumanızı rica ederim:)


GRUB menüye ulaşılmalı 
Bu ekrandayken "Ubuntu" seçilerek "e" tuşu ile editöre geçilmeli.
ilgili alana "single" parametresi eklenmeli ve F10 ile sistem başlatılmalı.Bu yöntem daha önce root parolası verilmiş sistemlerde "Give root Password for maintenance" şeklinde bir uyarı patlatabilir.Yani parolayı girmemizi istiyor. Sunucuda root user'a parola atanmış.Bu durumu çözmek için ikinci yönteme geçiyorum.
Yöntem iki, GRUB menüden "ubuntu" seçilmeli "e" butonu ile editöre geçilmeli ve "rw init=/bin/bash" parametresi eklendikten sonra "F10" ile sistem boot edilmelidir.
Merhaba kimse varmı??? Huu Huuuuuu.
NOT: Yukarıda anlattığım yöntemler sisteme müdahale içindir.Saçma sapan işler için kullanılmaması gerektiğini unutmayalım. Bu konununda sonuna geldik. - SON -
Apache reverse proxy hakkında kısaca bigi vererek anlatıma başlıyorum, ilk olarak reverse (ters) proxyi açılayım;Kullanıcılar görüntülemek istedikleri bir web sitesi için doğrudan web sunucusu yerine reverse proxy ile haberleşirler.Reverse Proxy ise kullanıcının istekleri doğrultusunda ilgilli web sitesine ait veriyi web sunucusundan çeker ve kullanıcıya iletir.Bu işlemi yaparken örneğin tomcat "8080"porttan yayın yaparken,biz bu sunucuya erişim için bir reverse proxy tanımlarsak,8080-->80 portuna yönledirebiliriz. Günümüzde nginx daha rabet görmekte,daha hızlı olduğu konularında paylaşımlar mevcut, onuda başka bir paylaşımda yada bu safyada reverse proxy nginx şeklinde anlatırım,henüz karar veremedim,bu konuya sonra değineceğim. Bu örnek kurulumda 2 adet sunucu mevcut, ilki Atlassian Bitbucket docker üzerinde varsayılan olarak 7990 port çıkışlı, reverse proxy bu sunucu üzerine kurmayacağım, başka bir sunucu üzerine kurarak, Atlassian Bitbucket'a ulaşmayı hedefliyorum.
A-) Apache reverse proxy kurulumu;
apt-get update
apt-get install -y apache2 aptitude libapache2-mod-proxy-html libxml2-dev
/etc/init.d/apache2 staus a2enmod proxy_http /etc/init.d/apache2 restart
cd /etc/apache2/sites-available/ ls -l touch bitbucket-docker.conf nano bitbucket-docker.conf ---> Dosyasına aşağıdaki içeriği yapıştırın # Atlassin Bitbucket Proxy Configuration: <VirtualHost *:80> ServerName bitbucket-docker <Proxy *> Order deny,allow Allow from all </Proxy> ProxyRequests Off ProxyPreserveHost On ProxyPass / http://bitbucket-docker:7990/ ProxyPassReverse / http://bitbucket-docker:7990/ </VirtualHost>
a2ensite bitbucket-docker.conf service apache2 reload service apache2 status
Kontrol etmeye sıra geldi. Bitbucket sunucu yönetim ekranına reverse proxy üzerinden ulaşmak için; http://reverse-proxy adresi browserda görüntülüyorum.Burada dns kaydı yoksa "hosts" dosyasına kendi tanımınızı ekleyebilirsiniz.Örnek: 192.168.168.168 bitbucket-docker gibi.
reverse proxy yani apache2 servisini durdurup bağlanmayı deniyorum.
http://bitbucket-docker adresini güncelliyorum.
Apache servisi tekrar start ediyorum.
http://bitbucket-docker adresini güncelliyorum.
Kısaca reverse proxy bu şekilde çalışmaktadır. - Bu konunun Sonu -
Bu paylaşımında sonuna geldik. Başka bir paylaşımda görüşmek üzere,kendinize iyi bakın.

Mehmet ÖCAL 2017
iletişim:mehmetocal79@gmail.com

Çok Faydalı Bilgiler Bölüm 1



Selamlar bu paylaşımda çok faydalı bilgiler vereceğim. Bu bilgileri kısaca özetleyecek olursam, lvm volume genişletme (Bölüm 1) sonra zombie process öldürme (Bölüm 1) daha sonra unutulan root parolasını resetleme (Bölüm 2) ve kapatırken reverse proxy kurulumu (Bölüm 2) konusuna değinmeyi planlamaktayım.

İlk çok faydalı konu LVM volume olarak ayarlanmış bir diski nasıl genişletiriz. Anlatımda, sanallaştırma tarafında Vmware workstation 12, işletim sistemi olarak Ubuntu 14.04 LTS sürüm kullanılmıştır. Kısaca LVM hakkında bilgi vererek anlatıma başlıyorum. LVM ( Logical Volume Group )birden fazla diski tek bir disk bölümü olarak kullanmamıza olanak sağlayan mantıksal hacim yönetimi işlerini gerçekleştiren bir disk aracıdır. Girişi yaptıktan sonra hemen çok faydalı bilgiye geçiyorum. Senaryomuz şöle olsun; sanal makinamızda disk alanı dolmak üzere...acil müdahale etmemiz gerekli.
A-) İlk yöntem sanal makinanın mevcut diskini genişletme seçeneği ;
Mevcut disk alanı 20GB'tan 30GB'a çıkarılmıştır. 10GB ek alanı sisteme eklemek için aşağıdaki adımları sırasıyla uygulamalıyız.
sudo su
lsblk
cfdisk /dev/sda
Birincil yada Mantıksal, Birincil olarak ilerledim,yanlış hatırlamıyorsam bir disk üzerinde maksimum 4 "Birincil" bölüm olabilir. Bu önemli bir nokta,yeni oluşan bölüm ile bendeki birincil bölüm sayısı 3 olacak.Birincil ve Mantıksal arasındaki en büyük fark
Mantıksal sürücüler birincil bölümler gibi çalışmasına rağmen, bir işletim sistemini başlatmak için kullanılamamasıdır.Herneyse konuyu dağıtmadan devam ediyorum.
Kaydet ile işimizi tamamlıyoruz. Değişiklliğin etkin olması için yeniden başlatmalıyız. reboot sudo su lsblk
sda3 bölüm oluşmuş,gayet. Şimdi bu alanı lvm volume dahil etmeliyiz. pvcreate /dev/sda3
pvdisplay
"VG Name ubuntu-vg" bizim 20GB olan lvm hacmimiz.Az önce oluşturduğumuz /dev/sda3 hacimi, ubuntu-vg'ye eklemeliyiz. Bu işlem için; vgextend ubuntu-vg /dev/sda3
lvextend -L+10G /dev/ubuntu-vg/root
Henüz yeni alanı sistem üzerinde göremedik,hala 17GB.
Son bir işlem kaldı.
resize2fs /dev/ubuntu-vg/root
Şimdi Disk alanını kontrol edelim. df -klh
Disk alanı 27GB olarak görünmekte. Bu konunun sonuna geldi.
Kısa bir mola veriyorum.
Mola bitmiştir, anlatıma devam.

B-) İkinici yöntem, sanal makinaya yeni bir disk ekleyerek genişletme seçeneği ;
Sanal makinamıza 10GB kapasiteli yeni bir disk ekledik. Şimdi bu yeni diski mevcut 30GB kapasiteli eski diskimize ekleyerek genişletelim.Bu işlemi yapabilmek için aşağıdaki adımları sırasıyla uygulamalıyız.  

sudo su
lsblk
sdb 10G olarak yeni diskimizi görüzyoruz.Maşallah Çok goozeeeellll,çok hoooooşş. pvcreate /dev/sdb
pvdisplay
"VG Name ubuntu-vg" bizim 20GB olan base lvm hacmimiz.Az önce oluşturduğumuz /dev/sdb hacimi, ubuntu-vg'ye eklemeliyiz. Bu işlem için; vgextend ubuntu-vg /dev/sdb
lvextend -L+10G /dev/ubuntu-vg/root
resize2fs /dev/ubuntu-vg/root
27GB olan disk alanımız ,37GB'a yükseldi. Bu yöntem fiziksel makinalarda da uygulanabilir.Fiziksel bir disk takıldığında aynı adımlar ile diski eski lvm hacme ekleyebiliriz. - SON -

Sırada zombie processleri öldürmek için hazırladığım ufak bir shell scripti sizinle paylaşıp "Çok Faydalı ve Pek Gıymetli Bilgiler Bölüm 1'i" sonlandıracağım.Root parolası resetleme ve reverse proxy kurulumu konularına "Çok Faydalı Bilgiler Bölüm 2'de" değineceğim. İlk olarak zombie process hakkında kısa bir bilgi vereyim.
Zombie process:Unix/linux sistemlerde bir alt process (işlem) sonlandığında,onu oluşturan process (işlem) wait yada waitpid fonksiyonlarıyla çıkış kodunu almazsa process handle alanı wait işlemi yapılana kadar bellekte kalır, bu tür process'lere zombie processler denir. zombie processler sistem resourcelarını yemezler,fakat sayıları çok artarsa sistem processlere pid atamakta problem yaşayabilir, pid'i meşgul ettikleri için.Sun Solariste karşılığı defunctdır.

Zombie process kill script
touch zombiekill.sh
nano zombiekill.sh

#! /bin/bash
#zombie process search and kill
ps -alef | awk '{ print $2, $4 }'  | grep -e "Z" | awk '{ print $2}'| xargs kill -9

chmod a+x zombiekill.sh 
Bu paylaşımında sonuna geldik,"Çok Faydalı Bilgiler Bölüm 2'de" görüşmek üzere. 



Mehmet ÖCAL 2017
iletişim:mehmetocal79@gmail.com