How to Find And truncate Docker Container Logs

Time to time you can find yourself asking a simple question, What filling my disk space in docker host machine ? Well, if you have many containers in single host, or your containers producing too much logs, “out of space” errors are inevitable.

In centos and debian based systems, you can find your container logs /var/lib/docker/containers/ path. You can easily calculate how much space consumed by your container logs with this simple command: du -h --max-depth=1 after that you will know your disk usage. So now you have the knowledge, after that you need to delete your logs, but deleting logs maybe not really good idea, instead you should truncate your logs.

With this command, you can easily truncate all of the container logs truncate -s 0 /var/lib/docker/containers/*/*-json.log I recommend create a cronjob for this task,

sudo echo "/usr/bin/truncate -s 0 /var/lib/docker/containers/*/*-json.log" > /etc/cron.hourly/dockerlog

Now your container logs will be truncated every hour.

Linux Sistemler İçin Timezone Güncellemesi – Türkiye yaz saati uygulaması

Bilindiği üzere, Türkiye bu yıldan itibaren Resmi Gazete’de yayımlanan karara göre, 27 Mart 2016 Pazar günü saat 03.00’ten itibaren bir saat ileri alınmak suretiyle başlatılan yaz saati uygulaması her sene yıl boyu sürdürülecek ve kış saatine geçilmeyecek.

Bu yıldan itibaren, Türkiye UTC+3 zaman diliminde sürekli kalacak. Hal böyle olunca Europe/Istanbul zaman diliminde bulunan sistemler için bir timezone güncellemesi gerekiyor, aksi taktirde sistemler ekim ayının son günü saatlerini bir saat geriye alacaklar. Hali hazırda linux dağıtımların bir çoğu için timezone güncellemeleri yayımlanmış durumda, Microsoft tarafında’da 18 Ekim gibi bir yama yayımlanması bekleniyor. (Windows server 2008 ve sonrası sistemler için)

Redhat tabanlı ( centos, scientific linux, oracle linux vb) sistemler için tzdata ve tzdata-java paketlerini güncel repolardan, yada redhat rpm finder üzerinden, Suse sistemler içinse timezone ve timezone-java paketlerini yine zypper ve suse package finder’dan edinebilirsiniz. Debian-Ubuntu sistemler için yine en büyük yardımcınız aptitude olacak.

Örnek olarak;

Redhat 5 ve sonrası sistemler için, “yum -y install tzdata tzdata-java” komutu ile os ve jvm için gerekli yamaları sisteminize kurabilirsiniz.

İndirdiğiniz rpm yamalarını elle kurmak isterseniz; “rpm -Uvh tzdata-*.rpm” komutu ile bulunduğunuz dizindeki tzdata ve tzdata-java paketleri ile sisteminizi güncelleyebilirsiniz.

Debian-Ubuntu sistemler içinse, “apt-get update && apt-get install tzdata tzdata-java” komutu ile gerekli güncellemeleri sistemimize kurabilirsiniz.

Timezone ile ilgili temelde iki paket bulunuyor, biri OS bazında timezone bilgilerini içeren paket, diğer ise JVM sanal makinası için timezone bilgisini içeren paket. Paket isimleri dağıtımdan dağıtıma ve sürümden sürüme fark edebiliyor. Kullandığınız dağıtım için uygun paketi; dağıtımınızın web sitesinde yayımlanan paket güncellemerini kontrol ederek tedarik edebilirsiniz.

Gerçekleştirdiğiniz güncellemenin doğruluğunu teyit etmek ve sistemlerinizin doğru timezone’da olduğunu anlamak için “zdump -v /etc/localtime | grep 2016” ile güncel saat geçişi bilgilerini kontrol edebilirsiniz.

root@vm64:~# zdump -v /etc/localtime | grep 2016

/etc/localtime Sun Mar 27 00:59:59 2016 UTC = Sun Mar 27 02:59:59 2016 EET isdst=0 gmtoff=7200

/etc/localtime Sun Mar 27 01:00:00 2016 UTC = Sun Mar 27 04:00:00 2016 EEST isdst=1 gmtoff=10800

/etc/localtime Tue Sep 6 20:59:59 2016 UTC = Tue Sep 6 23:59:59 2016 EEST isdst=1 gmtoff=10800

/etc/localtime Tue Sep 6 21:00:00 2016 UTC = Wed Sep 7 00:00:00 2016 +03 isdst=0 gmtoff=10800

root@vm64:~# zdump -v Europe/Istanbul | grep 2016

Europe/Istanbul Sun Mar 27 00:59:59 2016 UTC = Sun Mar 27 02:59:59 2016 EET isdst=0 gmtoff=7200

Europe/Istanbul Sun Mar 27 01:00:00 2016 UTC = Sun Mar 27 04:00:00 2016 EEST isdst=1 gmtoff=10800

Europe/Istanbul Tue Sep 6 20:59:59 2016 UTC = Tue Sep 6 23:59:59 2016 EEST isdst=1 gmtoff=10800

Europe/Istanbul Tue Sep 6 21:00:00 2016 UTC = Wed Sep 7 00:00:00 2016 +03 isdst=0 gmtoff=10800

Çıktıların aynı olmasına dikkat etmek gerekiyor, özellikle timezone olarak Europe/Istanbul seçili olmayan sistemlerde aksilikler yaşanabilir.

Eğer sisteminizin timezone’u yanlış ayarlanmış ise değiştirmek için şu adımları izleyebilirsiniz;

  • rm /etc/localtime

ln -s /usr/share/zoneinfo/Europe/Istanbul /etc/localtime

İlgili paketlerin kurulumu sırasında yada sonrası herhangi bir kesinti yada reboot gerekmediğinide hatırlatalım.

Evet hepsi bu kadar 😉

Tüm Sistem yöneticilerine kazasız bir saat geç(me)yişi diliyorum 😉

 

Linux Sistemler İçin İdeal Dosya Sistemi

xfs

 

Bilindiği  üzere linux dünyasının en güçlü olduğu alan stabilite  ve performansın yanında, kuracağınız paketlerden tercih edeceğiniz sürücülere çekirdeklere kadar hemen herşey için alternatiflerin olmasıdır. Sonuçta herkes için yada herşey için en iyi diye bir şey olamayacağından, ihtiyaçlar beklentileri şekillendirir.

Bu yazımda linux için kullanabildiğimiz dosya sistemlerinden kısaca bahsetmek, ve benim için öne çıkan XFS dosya sistemini kısaca tanıtmak istiyorum. XFS dosya sistemi, ilk olarak SGI firması tarafından 1994 senesinde, yine SGI’a ait olan  IRIX işletim sistemi için tasarlanmıştır. Linux’e port edilmesi 2001 yılında olup aktif olarak kullanılması 2002 yılında Gentoo linux ile başlamıştır. Bugün geldiğimiz son nokta itibari ile, XFS  Centos 7 ve RedHat 7 için standart dosya sistemi olmuştur.

XFS’i güncel tüm linux türevlerinde kullanabiliriz. XFS “general purpose / çok amaçlı-genel kullanım” bir dosya  sistemi olsada, özellikle büyük dosyalar ile çalışanlar için çok yüksek başarım sağlar. Medya arşivleri, büyük boyutlu grafik dosyaları, back arşivleri, sanal makina diskleri gibi dosyalar için çok iyi sonuçlar verir. Dosya isimleriniz 255 karaktere kadar uzanabilir, sürücü ve tek bir dosya başına 8 exbayte’a kadar destek verir 🙂 Her ne kadar denememiş olsada.

XFS dosya sistemini online olarak büyütebilirsiniz, ancak küçültemezsiniz ki bu durum bazı ortamlarda çok can sıkıcı olabilir. XFS yapısı gereği fragmentasyona karşı dayanıklıdır, ancak bununla birlikte gerektiğinde kullanmak için defrag araçlarına sahiptir. XFS dosya sistemi canlı olarak dump almanıza izin verir, yine restore edebilirsiniz. Bunun için kendi araçları olup 3.parti yazılımlara ihtiyacınız olmaz. Bu işlem snapshot değildir, zira dosya sistemi “freeze” edilmediği için dosyalarınız değişebilir. Snapshot desteği bulunmamaktadır.

Benim için en önemli özelliğine gelecek olursak, yeni disk oluşturmak (formatlamak) yada mevcut bir volume’ü büyütmek sırasında gösterdiği yüksek başarımdır. Şöyle bir örnek vereyim, ext4 ile formatlı 1TB lık bir volume’ü 2TB’a genişletmek istediğinizi varsayalım, diskinizde SAN fiber ile storage üzerinden gelsin ve 15k tier 1 bir pool olsun. resize2fs ile diski genişletmek istediğinizde size tavsiyem kendinize güzel bir kahve hazırlamanız ve eğlenmek için bir meşkale bulmanızdır, zira işlem 1 saate kadar uzayabileceğinden pc başında beklmek sizi ülser yapabilir, heleki aktif olarak kullanılan kritik bir disk ile çalışıyorsanız  ( veri tabanı koşan bir pool gibi).

Peki bu durum XFS ile ne kadar sürüyor sizce ? Öncelikle ext4 ile 16tb’dan büyük volume oluşturmanız normal şartlar altında imkansızdır ( özel bir kernel kullanmadığınız ve riskleri göze almadığınız müddetçe) XFS’de pratik formatlayabileceğiniz alan başına bir sınırınız olmadığını yukarıda belirtmiştim,  sıfırdan bir disk oluşturken, SCSI ile bağlanmış bir storage’dan gelen 40tb’lık bir diski formatlamak XFS ile sadece 1 sn sürüyor dersem ne düşünürsünüz ?

Durumun aslında ne kadar kritik olduğunu şöyle izah etmeme izin verin, diyelim ki disk alanını tükeniyor, ve bu tükenme hızı ciddi derecede yüksek. Öyleki, yoğun kullanılan bir storage’dan disk alanı ekleyerek kritik bir sürücüdeki alanı büyütmek istiyorsunuz. Ama gelin görünki, disk alanınızın genişleme hızı, ilgili diske yazım hızınızdan daha düşük 🙂 Durumun vehametini anlayabiliyor musunuz ? Bu şu demek, ext4 ile bir alanı genişletirken bile disk alanınızın olması ve uygulamanın ve sistemin çakılması söz konusu. Eğer XFS kullansaydınız böyle bir sorununuz olmayacaktı.

 

O yüzden özellikle lokal diskler yerine storage ile çalışılan ortamlarda, diğer bir deyişle disk genişletmenin çok sık kullanıldığı ortamlarda XFS hayatınızı ciddi şekilde kolaylaştıracaktır. SAP HANA çözümünde’de tercih edilen dosya sisteminin XFS olması sizin için tesadüf olmasın, XFS’e ne kadar güvenildiği Redhat’in Redhat Enterprise Linux 7 ile ext4’ü terk ederek XFS’e geçmesi, SAP gibi bir devin, HANA ( Suse Enterprise Linux / Redhat Enterprise Linux) çözümünde XFS kullanması, dosya sisteminin ne kadar güvenli ve performanslı olduğu konusunda fikir verecektir.

XFS tabiki bir ZFS değil, ZFS ile gelen bir çok özellikten mahrum, ancak ZFS’in linux’deki geçmişinin çok kısa olması, Oracle’ın ZFS ile ilgili planlarının ve linux’e vereceği desteğin belirsiz olması gibi nedenlerden dolayı özellikle enterprise-kurumsal ortamlarda ZFS’in yer bulması çok olası değil. (Oracle ürünleri hariç)

BTRFS olgunlaşana ve gerçek ZFS alternatifi olana kadar (bir gün olabilirse tabi) elimizdeki en iyi seçenek XFS olmaya devam edecek. Bu durum büyük diskler ve dosyalar ile çalıştığınızı düşünülerek ortaya çıkmıştır. Çok sayıda küçük dosya ile çalışmak zorundaysanız  ve çok büyük sürücülere ihtiyacınız olmuyorsa ext4’ün hala çok iyi bir alternatif olduğunu ve linux sistemlerde çok iyi desteklendiğini belirtmek gerek.

 

Kısa yazımın sonuna geldik, teknik veriler, testler grafikler içermeyip bilgilendirme yazısı  kıvamında olduğu için lütfen kusura bakmayın. Açıkcası yazmaya uzunca bir süre ara verdikten sonra, yavaş yavaş kendimi ısındırmaya çalışıyorum.

 

Umuyorum yazılarımın sayısı ve kalitesi zamanla artar,

 

Buraya kadar okuduğunuz için teşekkür ederim  ( :

Android Telefon ve Tabletlerde kullanılan Güncel İşlemciler

arm-logo

 

Bugün gerek bilinen markalardan gerekse Çin merkezli fabrikaların fason üretimleri ile  piyasaya sürülen bir çok farklı telefon ve tablet ürününü görebilmek mümkün. Bu cihazların ortak özellikleri ise işletim sitemi olarak android, işlemci olarak arm tabanlı ürünler kullanıyor olmaları. Pazarda yüzü aşkın telefon ve tablet gören kullanıcılarında ister istemez kafaları karışıyor. En büyük yanılgıda, rakamlara bakarak yapılan değerlendirmelerde ortaya çıkıyor. İşlemciler ve yazılım, mimari olarak aynı yada çok yakın olsa da, aradaki küçük farklılıklar kullanım deneyimini ciddi şekilde etikiliyor.

 

Daha öncesinden tabletlerde kullanılan işlemcilerden bahsetmiş ve aralarında farklar ve satın alma tavsiyelerinde bulunmuştum. Zaman zaman DH forumlarında ve haberlerinde yaşanan yorum savaşlarında, insanların hala bazı temel noktalarda bilgiye ihtiyaç duyduklarını görebiliyorum.  Bu yazının amacıda, aslında potansiyel müşteri olan arkadaşlara objektik ve sağlıklı bilgi aktarabilmek. Continue reading “Android Telefon ve Tabletlerde kullanılan Güncel İşlemciler”

Unix Sistemlerde Tar komutu Nasıl Kullanılır ?

Bildiğiniz gibi tar bir çeşit dosya depolama /paketleme programıdır. Unix sistemlerde hemen her yerde kullanıldığını görebilirsiniz.  Tar tek başına sadece dosyaları depolamaya yarar, içeriğindeki dosyaların sıkıştırılabilmesi için farklı kütüphanelerden de yararlanılması gerekir. Zip bz2 xz bunlardan bazılarıdır.

Örneklerle anlatacak olursak

Bir  yada daha fazla klasördeki dosyaları  tek bir tar arşivi haline getirmek için şu komutu veriyoruz;

tar -cvf tararsivi.tar /var/log/syslog /var/log/messages

Dökümanları arşivelemek ve gzip kütüphanesi ile sıkıştırmak için;

tar -cvzf dosya.tar.gz /var/log/syslog /var/log/messages

Dökümanları arşivelemek ve bzip kütüphanesi ile sıkıştırmak için;

tar -cvjf file.tar.bz2 /var/log/syslog /var/log/messages

Tar dosyasını açmak için,

tar -xvf dosya.tar
tar -xvzf dosya.tar.gz
tar -xvjf dosya.tar.bz2

Tar dosyasının içeriğini görüntülemek için;

tar -tvf dosya.tar
tar -tvzf dosya.tar.gz
tar -tvjf dosya.tar.bz2

yukarı verdiğim örnekler basit komutlardır, man sayfalarından daha ayrıntılı bilgi sahibi olabilirsiniz.

LiteSpeed Enterprise Cpanel Kurulumu.

LiteSpeed, Apache ile birebir uyumlu olan yüksek performanslı ve düşük kaynak tüketimli  ücretli webser çözümüdür. Lisanslama metodları ve apache ye olan üstünlükleri bu yazının  konusu olmadığından burada değinmeyeceğim.

Continue reading “LiteSpeed Enterprise Cpanel Kurulumu.”

VDS-VPS Nedir ? Bölüm-1

Sanallaştırma tam olarak nedir ?

Başlıkta belirttiğim gibi, vds ve vps arasındaki farklara hemen değinmeden önce, bilmeyen okurlarımız için sanallaştırmanın ne anlama geldiğini basitce açıklamak istiyorum. Sanallaştırma ile kast edilen, fiziksel bir bilgisayarın üzerinde çalıştırılan özel bir yazılım vasıtası ile, sanal bilgisayarlar oluşturulmasıdır. Bu sanal sunucular ev sahibi olan fiziksel bilgisayarın üzerinde çalışan misafir bilgisayarlardır. Her ne kadar isimleri sanal olsalarda, kullanım deneyimi olarak gerçek bir bilgisayardan farklı değillerdir. İçlerinde dilediğiniz programı çalıştırabilir, gerçek bir bilgisayarı kullandığınız gibi kullanabilirsiniz. Ayrıca sanal bilgisayarınız içinde olan biten hiç bir işlem sanal bilgisayar dışına çıkamaz, kaba tabirle fiziksel ve sanal bilgisayarınız birbirlerinden kesin bir şekilde izole edilirler. Fiziksel makinanızın ve kullandığınız sanallaştırma yazılımınında özelliklerine bağlı olarak, sınırsız sayıda sanal bilgisayar oluşturabilir kendi aralarında ağ kurabilir kısacası aklınıza gelebilecek tüm işlemleri, fiziksel bir makina kullanıyormuşcasına yapabilirsiniz.

 

x86-hardware-virtualization
x86-hardware-virtualization

VDS NEDİR

Vds (virtual dedicated server) kelime anlamı ile sanal, atanmış-dedike sunucu anlamına gelmektedir. Fiziksel bir sunucudan kullanım olarak herhangi bir farkı bulunmaz. Kendisine ait disk, işlemci*, ram, ethernet kartı ve işletim sistemine sahiptir. Sanal sunucuları; web hosting, e-mail, veri tabanı uygulamaları, ftp işlemleri, online depolama ve daha bir çok şekilde kullanabilirsiniz. Continue reading “VDS-VPS Nedir ? Bölüm-1”

UPGRADE MYSQL 5.1 TO 5.5 ON CLOUDLINUX SERVER

How to install new package:
1) yum install governor-mysql –enablerepo=cloudlinux-

updates-testing
2) /usr/share/lve/dbgovernor/mysqlgovernor.py –install

One important note:
if you have installed MariDB on the server, on installation do:
1) yum install governor-mysql –enablerepo=cloudlinux-updates-testing
2) /usr/share/lve/dbgovernor/db-select-mysql –mysql-version=mariadb55
3) /usr/share/lve/dbgovernor/mysqlgovernor.py –install

How to upgrade:
1) yum upd ate governor-mysql –enablerepo=cloudlinux-updates-testing

Now in governor is available database type selection utility:
[~]# /usr/share/lve/dbgovernor/db-select-mysql –help
Usage: db-select-mysql [options]
options:
–mysql-version=<mysql type> or -m <mysql type>     se t version of mysql
mysql type: auto, mysql50, mysql51, mysql55, mariadb55
–install-now           if need reinstall mysql now
–current-mysql         show current installed mysql
–current-running-mysql       show current running mysql

For upgradeing to MySQL 5.5(for example), you should to do:
1) /usr/share/lve/dbgovernor/db-select-mysql –mysql-version=mysql55
2) /usr/share/lve/dbgovernor/db-select-mysql –install-now
3) for cPanel can be needed to rebuild php through easyapache

For installation of MariaDB 5.5, you should to do:
1) /usr/share/lve/dbgovernor/db-select-mysql –mysql-version=mariadb55
2) /usr/share/lve/dbgovernor/db-select-mysql –install-now
3) for cPanel can be needed to rebuild php through easyapache

Available type of DB:
auto – install MySQL as earlier(default for CL5 & CL6 and according to options of cPanel)

mysql50 – cl-MySQL-5.0
mysql51 – cl-MySQL-5.1
mysql55 – cl-MySQL-5.5
mariadb55 – cl-mariadb-5.5

Script installs mysqlclient1x – for backward compatibility

info from cloudlinux staff.

Find out the website causing high load on a Apache webserver

Find out the website causing high load on a Apache webserver

If you’re running an Apache webserver with many customer websites, there will be a time (sooner or later) where your server is flooded

with a lot of page requests, causing a high CPU-load and memory usage. Specially if PHP or other scripting is used behind.

Most of the time this is caused by a harmful script somewhere in the net. But, how to find out which of the sites is the affected one?

Looking at top/ps doesn’t helps much if PHP (f.ex.) is running as a apache module. You will only see a lot of “httpd” processes.

A good tool to get closer to it is apachetop. It takes the access.log as argument and shows you all accessed pages, hosts and more:

1
apachetop -f /var/log/httpd/access_log

Cool, but… What if you’re using Plesk? It stores the access_log of each website in a separate file within the corresponding vhost directory.

The default access_log doesn’t help, as long the problem is not related to webmail for example.

You can add multiple “-f” arguments to apachetop manually. But if you have 300+ vhosts? Not really. Luckily we’re on Linux and can do something like this:

1
apachetop $(find /var/www/vhosts/*/statistics/logs/ -name "access_log" -print | sed 's/^/-f '/)

This adds all access-logs within our vhosts directory as arguments. Unfortunately, it fails:

1
2
Only 50 files are supported at the moment
Segmentation fault

OK, how we can limit the number of files passed to apachetop? Because we’re searching for a lot of request,

we can assume the logfile already has some size. Most of our customer sites have a very low load anyway or are used for mail only.

So, let us extend the used find command a bit:

1
apachetop $(find /var/www/vhosts/*/statistics/logs/ -type f -size +10k -name "access_log" -print | sed 's/^/-f '/)

Now, only logs are passed to apachetop which are bigger than 10 kilobytes. You can adjust it as needed.

“c” => Bytes, “k” => Kilobytes “M” => Megabytes, “G” => Gigabytes.

Now we see something like this:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
last hit: 17:56:25 atop runtime: 0 days, 00:24:25 17:56:35</pre>
All: 747 reqs ( 0.5/sec) 14.5M ( 10.2K/sec) 19.9K/req
 2xx: 657 (88.0%) 3xx: 42 ( 5.6%) 4xx: 44 ( 5.9%) 5xx: 4 ( 0.5%)
 R ( 30s): 40 reqs ( 1.3/sec) 464.6K ( 15.5K/sec) 11.6K/req
 2xx: 38 (95.0%) 3xx: 1 ( 2.5%) 4xx: 1 ( 2.5%) 5xx: 0 ( 0.0%)
REQS REQ/S KB KB/S URL
 2 0.09 21.0 1.0*/plugins/system/yoo_effects/yoo_effects.js.php
 1 0.04 0.5 0.0 /index.php
 1 0.05 6.7 0.3 /
 1 0.05 10.9 0.5 /templates/mobile_elegance/jqm/jquery.mobile-1.2.0.min.css
 1 0.05 1.4 0.1 /media/zoo/assets/css/reset.css
 1 0.05 0.5 0.0 /media/zoo/applications/product/templates/default/assets/css/zoo.css
 1 0.05 1.0 0.0 /plugins/system/yoo_effects/lightbox/shadowbox.css
 1 0.05 1.8 0.1 /components/com_rsform/assets/calendar/calendar.css
 1 0.05 0.7 0.0 /components/com_rsform/assets/css/front.css
 1 0.05 5.2 0.2 /components/com_rsform/assets/js/script.js
 1 0.05 0.5 0.0 /components/com_zoo/assets/js/default.js

Missing something? Yes, the domain…
The access_log doesn’t contains the domain of the  vhost itself, just the path to the file. But maybe enough to find out which site is affected.

If you’re pressing the key “d” one time, you can switch to hosts view. Maybe there is one single IP the all the requests are coming from.

If so, you can simply block this IP for some time.

original info can be found http://nethack.ch/2013/01/24/find-out-the-website-causing-high-load-on-a-apache-webserver/