Sqoop Nedir?

Sqoop Nedir?

Apache Sqoop, ilişkisel veri tabanları ile hadoop arasında büyük verilerin aktarımını sağlayan java tabanlı bir yazılımdır. Her iki yönde aktarım yapabilmektedir. Veriyi ilişkisel veri tabanından okuyup (Oracle, MySQL, SQL Server, Postgres, Teradata vs) hadoop dağıtık dosya sistemine (HDFS, Hive, Hbase …) aktarabildiği gibi hadoop ortamından okuyup ilişkisel veri tabanlarına da yazılabilmesini sağlar.

Sqoop, “SQL’den Hadoop’a ve Hadoop’tan SQL’e” anlamına gelir ve Cloudera tarafından geliştirilmiştir.

Sqoop’un avantajı ise veri aktarım işlemlerini MapReduce görevleri ile paralel olarak yaparak aktarımı çok daha hızlı tamamlamak. Ayrıca MySQL ve PostgreSQL için JDBC kullanmadan (mysqldump gibi) daha düşük seviyeli ve performanslı veri aktarımı da yapılabiliyor.

İmport işlemi sırasında Sqoop basitçe meta verilerden faydalanarak tablonun birincil anahtarını bulup minimum ve maksimum değerlerini alarak eşit olarak Map sayısına uygun olarak bölerek farklı düğümler üzerinde bu verileri paralel olarak aktarır. Bu yüzden sonuç klasör içinde birden fazla dosyaya yazılır. Aktarım sırasında veritabanına yeni kayıt geliyorsa bunlar aktarılmayabilir, veri tutarlılığına dikkat etmek gerekir.

Export işlemi sırasında ise aksi belirtilmediği sürece verileri binerli gruplar halinde veritabanına INSERT ediyor. Bu işlem de paralel olarak yapıldığı için aktarım sırasında veritabanında yük oluşturabilir. Her bir grubun yazılması kendi başına bir transaction olduğu için burada da veri tutarlılığına dikkat etmek gerekir. Eğer kayıtların tamamı aktarıldıktan sonra aktif olması isteniyorsa ara tablo kullanımını sağlayan –staging-table parametresi kullanılabilir. Bu tablonun yaratılması ve temizlenmesi de otomatik yapılmaz, elle yapmak gerekir.

Sqoop

Hadoop geliştiricisi için asıl olay veriler HDFS’ye yüklendikten sonra başlar. HDFS’de depolanan verilerde gizlenmiş çeşitli ön görüler elde etmek için bu veriler etrafında işlemler yapılır.

Bu nedenle, bu analiz için ilişkisel veri tabanı yönetim sistemlerinde bulunan verilerin HDFS’ye aktarılması gerekir. İlişkisel veritabanından HDFS’ye veri almak ve vermek için MapReduce kodunu yazma görevi çok ilgi çekici değildir ve sıkıcıdır. Apache Sqoop’un kurtarmaya geldiği ve acılarını dindirdiği yer burasıdır. Verileri içe ve dışa aktarma sürecini otomatikleştirir.

Sqoop, verileri içe ve dışa aktarmak için CLI sağlayarak geliştiricilerin hayatını kolaylaştırır. Sadece veritabanı kimlik doğrulaması, kaynak, hedef, işlemler vb. gibi temel bilgileri sağlamaları gerekir. Geri kalan kısmı o halleder.

Sqoop, komutu dahili olarak, daha sonra HDFS üzerinden yürütülen MapReduce görevlerine dönüştürür. Paralellik üzerinde hata toleransı sağlayan verileri içe ve dışa aktarmak için YARN çerçevesini kullanır.

Sqoop Özellikleri

  1. Sağlamlık: Apache Sqoop doğası gereği oldukça sağlamdır. Topluluk desteği ve katkısı vardır ve kolayca kullanılabilir.
  2. Tam Yük: Sqoop kullanarak, tek bir Sqoop komutuyla tüm tabloyu yükleyebiliriz. Sqoop ayrıca tek bir Sqoop komutu kullanarak veritabanındaki tüm tabloları yüklememizi sağlar.
  3. Artımlı Yük: Sqoop, artımlı yük işlevselliğini destekler. Sqoop’u kullanarak, güncellendiğinde tablonun bölümlerini yükleyebiliriz.
  4. Paralel içe/dışa aktarma: Apache Sqoop, verileri içe ve dışa aktarmak için YARN çerçevesini kullanır. Bu, paralelliğin üstünde hata toleransı sağlar.
  5. SQL sorgusunun sonuçlarını içe aktarın: Sqoop, SQL sorgusundan döndürülen sonucu Hadoop Dağıtılmış Dosya Sistemine içe aktarmamıza da izin verir.
  6. Sıkıştırma: -compress argümanı ile deflate(gzip) algoritmasını kullanarak veya –compression-codec argümanını belirterek verilerimizi sıkıştırabiliriz. Apache Hive’a sıkıştırılmış bir tablo yükleyebiliriz.
  7. Tüm önemli RDBMS Veritabanları için konnektörler: Sqoop, çeşitli RDBMS veritabanları için neredeyse tüm ekosistemi kapsayan konnektörler sağlar.
  8. Kerberos Güvenlik Entegrasyonu: Temel olarak Kerberos, güvenli olmayan ağ üzerinden iletişim kuran düğümlerin kimliklerini birbirlerine kanıtlamalarına izin vermek için ticketlar temelinde çalışan bilgisayar ağı kimlik doğrulama protokolüdür. Apache Sqoop, Kerberos kimlik doğrulamasını destekler.
  9. Verileri doğrudan HIVE/HBase’e yükleyin: Sqoop’u kullanarak, veri analizi için verileri doğrudan Hive’a yükleyebiliriz. Verilerimizi HBase yani NoSQL veritabanına da dump edebiliriz.
  10. Accumulo Desteği: Apache Sqoop’a bir tabloyu HDFS’deki bir dizine almak yerine Accumulo’ya alması talimatını verebiliriz.

Sqoop’un Sınırlamaları

  1. Apache Sqoop’u duraklatamaz ya da devam ettiremeyiz. atomik bir adımdır.
  2. Sqoop Export’un performansı, RDBMS sunucusunun donanım ya da config yapılandırmasına bağlıdır.
  3. Sqoop MapReduce paradigmasını kullanır.
  4. İmport ya da export sırasındaki problemler için özel işlem gerektirir.
  5. Her rdbms konnektörü aynı değildir , bazı veritabanları için daha bulk işlemler sağlar.

Sqoop Argümanları

ArgümanAçıklama
--appendImport edilen veriyi HDFS’deki mevcut veriye ekler
--as-avrodatafileVeriyi Avro Data Files olarak import eder
--as-sequencefileVeriyi SequenceFiles olarak import eder
--as-textfileVeriyi plain text olarak import eder. Varsayılan format budur.
--as-parquetfileVeriyi Parquet Files olarak import eder
--boundary-query <statement>Sorguya kullanıcı tarafından konan sınırdır.
--columns <col,col,col…>Tablonun hangi sütunlarını seçeceğimizi bildiririz.
--delete-target-dirEğer hedefte böyle bir dizin varsa onu siler.
--directVeri tabanı için varsa doğrudan bağlantı kullanır.
--fetch-size <n>Çağrılacak satır sayısına sınır koyulur. 50 satır getir gibi.
--inline-lob-limit <n>Bir satırda bulunacak maksimum LOB genişliği.
-m,--num-mappers <n>Kaç tane paralel map görevinin paralel çalışacağını belirten rakamdır.
-e,--query <statement>Import the results of statement.
--split-by <column-name>Tablonun hangi sütun baz alınarak bölüneceğini belirtir.  --autoreset-to-one-mapper ile aynı anda kullanılamaz.
--autoreset-to-one-mapperEğer tabloda primary key yok ise ve bölünecek sütun da belirtilmemişse tek bir mapper kullanılır.  Aynı anda --split-by <col> seçeneği ile kullanılamaz.
--table <table-name>Okunmak istenen hedef tablonun ismi
--target-dir <dir>Hedef HDFS dizini
--warehouse-dir <dir>HDFS parent for table destination
--where <where clause>Eğer import esnasında WHERE  koşulu kullanmak istiyorsak.
-z,--compressSıkıştırmayı açmak istiyorsak
--compression-codec <c>Hadoop codec kullanımı (varsayılan gzip)
--null-string <null-string>Sütun string ise ve null ise bunun yerine yazılacak string. Örneğin null geldininde “Boş” yazılmasını istersek.
--null-non-string <null-string>Sütun string değil ise null değerler için alacak değer
Sqoop Argümanları

Örnekler;

Mysql sunucusundaki personeller veritabanındaki tabloları listeleyelim.

sqoop list-tables --connect jdbc:mysql://MYSQLDBADRESINIZ:3306/personel --username ayhanarda -P
Enter password:
23/03/15 19:59:31 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
departmanlar
departman_calisanlari
departman_yoneticileri
calisanlar
unvanlar
maaslar

Çalışanlar tablosunu HDFS üzerine aktaralım.

sqoop import --connect jdbc:mysql://MYSQLDBADRESINIZ:3306/personel --username ayhanarda -P --table calisanlar

Personel veritabanını direkt Hive a alalım.

sqoop import-all-tables --connect jdbc:mysql://MYSQLDBADRESINIZ:3306/personel --username ayhanarda -P --direct --hive-import

Bu aktarım işlemini –direct parametresi ile de yapabilirdik.Bu durumda jdbc konnektörü yerine mysql dump kullanırdı ve süre değişirdi.

Sqoop ile tablonun tamamını da aktarmak zorunda değiliz, -query parametresi ile sadece verdiğimiz sorgu sonucunun aktarılmasını sağlayabiliriz. Bunun dışında varsayılan olarak metin dosyası haline aktarılan verilerin alan ve satır ayraçlarını belirleyebiliriz, metin dosyaları dışında Hadoop’un binary formatı olan SequenceFile veya Avro formatında da veriler aktarılabiliriz.

Apache Sqoop Kullanıcı Rehberine erişmek için tıklayınız.
Cloudera Sqoop Rehberine erişmek için tıklayınız.

Ayhan ARDA

Docker’da server gave HTTP response to HTTPS client

Docker’da server gave HTTP response to HTTPS client hatası ve çözümü

Docker da pull ve push işlemlerinizde imajlar için dışarıya çıkamıyor ve bu nedenle ağınızda nexus gibi bir repo kullanıyor iseniz ve ssl konfigüre edili değil ise docker client reponun ssl çalışmadığını , kendisinin secure istek atmasına rağmen reponun ona nonsecure cevap döndüğünü belirtir.

[[email protected] root]# docker pull x.x.x.x:port/nginx:latest
Trying to pull repository x.x.x.x:port/nginx …
Get https://x.x.x.x:port/v1/_ping: http: server gave HTTP response to HTTPS client

Bu durumda kullanacağınız reponun non secure olduğunu bildiğinizi docker a belirtmeniz gerekir.

Bu nedenle /etc/docker/daemon.json dosyasına aşağıdaki satırı ekleyiniz. , hali hazırda süslü parantezleri boş olarak göreceksiniz , satır tamamıyla aşağıdaki gibi olmalı.

{ “insecure-registries”:[“x.x.x.x:port”] } {}

x.x.x.x olarak belirtilen alan reponuzun adresi, port ise reponuzun dinlediği porttur.

Kaydı girdikten sonra docker ı restart etmeliyiz.

systemctl restart docker

Şimdi tekrar işlem yaptığınızda aynı hatayı almayacaksınız.

Ayhan ARDA

Oracle Exadata Deployment Assistant Kurulumu Ve İşlem Adımları – OEDA Kurulumu

Oracle Exadata Deployment Assistant Kurulumu Ve İşlem Adımları – OEDA Kurulumu

Şirketiniz için DWH çözümü olarak Oracle Exadata seçti iseniz ve o kocaman kabinet çılgın izinler ve onaylar sonucunda bir şekilde veri merkezinize konumlandı ise, (burası biraz zorlayıcı) iş kurulumu yapacak mühendis için gerekli olan dosyanın oluşmasını sağlayan deployment tool a kalıyor. Bu Araç mühendise hangi ipleri tanımlayacağını, hostname leri, kurulacak versiyonu , network hızını, kablonun hangi slota takılacağını sağlıyor ve bunun yanında alerting mekanizması için gerekli bilgileri yine bu tool ile giriyoruz. Oracle Oeda deployment tool 4 farklı işletim sisteminde çalışabiliyor. Bunlar; windows, mac, linux ve solaris. Biz şimdi test ortamımızda ve windows ta deneyeceğiz ancak doğrusu, bu toolun çıkardığı sonucu exadatayı konumlandıracağınız network te ve çalışırken en rahat hissettiğiniz işletim sisteminde çalıştırmak olacaktır. Genelde o ip blogunda mutlaka bir test serverınız zaten vardır 🙂 Öncesinde şirketinizden Exadata Admin için 20 kadar sıralı ip istemelisiniz. Private için kendi switch ile görüşeceği ip zaten default geliyor , Client lar için bu cihaz kiminle görüşecek ise o bloktan ip seçmelisiniz , yani veriyi Sizin hadoop tan mı alacak , sql ile mi alış veriş yapacak bunun içinde 10 kadar sıralı ip isteyiniz. Sanırım 7 kadarını kullanıyor , süreçler uzun olunca tedbiren biraz fazla rezerve etmek mantıklı olabilir. Backup networkü kullanacak iseniz en az 2 ip de bu networkten edinmelisiniz, tabi lacp kullanmayacak iseniz Siz bu sayıyı 2 ile çarpın. Ip leri temin etti iseniz kuruluma geçelim.

Oracle Exadata Deployment Assistant Downloads adresinden hangi işletim sisteminde çalıştıracak iseniz o versiyonunu indirin ve bir yere extract edip o klasöre komut konsolu ile erişin. Linux ise terminal den , windows ise cmd ile o path e geçelim.

oeda download
oeda cmd

Komut konsolunda ilgili dizine gittiniz , burada yapmanız gereken installOedaServer.cmd yi çalıştırmak , yanına -g parametresini koyar iseniz o sunucuda ne kadar interface var ise hepsinden 7072 portunu dinler, tavsiye ederim , eğer portu farklı vermek ister iseniz -p parametresini kullanabilirsiniz, örneğin “installOedaServer.cmd -g -p 7070” gibi, diyelim ki internete çıkışınız yok , bir proxy kullanmalısınız , bu durumda -proxy parametresini kullanabilirsiniz. Örneğin “installOedaServer.cmd -g -p 7070 -proxy 10.1.1.1:8080” Burada proxy adresini Sizin proxy adresiniz ve portunuz ile değiştirmelisiniz. Çalıştığında bir kaç dosyayı internetten indirecek ve o sunucuda minimal bir web server açıp dinleyerek web arayüzünü erişilebilir hale getirecek.

Şimdi buraya kadar tamam ise browser a dönebiliriz , komut konsolu öylece kalsın , ctrl x gibi hareketler yaparak kapamayın , yoksa web server process ini öldürmüş olursunuz. Şimdi ekranda yazdığı adrese erişelim, Siz IP yazarak erişseniz daha doğru olaiblir , özellikle linux ortamında çalıştırıp windows ortamından erişiyor iseniz.

Örneğin ben X9M-2 aldım , çeyrek kabin şeklinde ve 18 TB Disk Size ım var , doldurup yanındaki + butonuna tıklıyorum , sonrasında detay ekranı geliyor.

Yukarıdaki bölümü kendi bilgileriniz ile doldurun, bu tool un genelinde oracle dan birisi ile çalışmakta/destek almakta fayda var, hiç oracle exadata ya hakim değilseniz mutlaka hiç fikriniz olmayan bir bölüm karşınıza gelecektir. Üst bölüm bitti ise apply diyerek devam edebilirsiniz. Ben bilgileri örnek olarak dolduruyorum.

Şimdi işletim sistemlerini fiziksel mi sanal mı kuracağımızı seçiyoruz.

Şimdi exadata’nın admin için kullanacağı ip blogunu seçiyoruz.

Apply diyerek bir sonraki adıma geçti iseniz burada private network adımına geçiyoruz. Buraya dokunmanıza gerek yok , gelen mühendis kabinetteki switch ile exadatanın haberleşmesi için bu ip blogunu ayarlayacak.

Bir sonraki adım ise kullanıcı ve gruplar bölümü , biz buraya dokunmadık.

Bir sonraki adımda clusterı tanımlıyoruz. Solda gördüğünüz available makinaları seçip ok vasıtası ile sağ tarafa alıyoruz.

Bir sonraki adım Disk gruplarınız, %90 a %10 seçmekte fayda var.

Bir sonraki ekranda database in home path ini belirliyoruz.

Bir sonraki ekranda database bilgilerini giriyoruz.8 karakterden uzun tutmayınız.

Son ekranda da alert için bilgileri girerek html ve zip dosyasını download edebilirsiniz. Sonrasında zip içinde oluşan .sh ya da cmd dosyasını çalıştırarak scriptin bir çıktı elde etmesini sağlayacağız. Bu şu demek , Yani bizim çalıştırdığmız script burada girdiğimiz ip adreslerine bakacak , eğer biri cevap veriyor ise oracle mühendisi kuruluma gelmeyecektir , çünkü henüz ortamda exadata yok ama belirttiğiniz ip ler çalışıyor gözüküyor. Bu da oracle ın ne kadar planlı çalıştığının bir göstergesidir. Farklı oracle yazılarında görüşmek üzere..

Ayhan ARDA

JupyterHub Kurulumu

JupyterHub Kurulumu

yum install nodejs npm
mkdir jupyterhub && cd /opt/jupyterhub/
yum install python python3 python-pip
pip install virtualenv ipykernel
cd ..
python3 -m virtualenv --python="/usr/bin/python3.6" "jupyterhub/"
source jupyterhub/bin/activate
pip install jupyterhub
pip install configurable-http-proxy
pip install jupyterlab notebook
jupyterhub --generate-config -f /opt/jupyterhub/jupyterhub_config.py
mkdir /home/ayhanard && chmod 777 /home/ayhanard
jupyterhub --config=/opt/jupyterhub/jupyterhub_config.py --ip=0.0.0.0

Tabi şirketlerde bu ortamlar genelde nete kapalı , burada pip ya da yum kullanırken local repolardan çektim ancak bu kısımları temizleyerek yukarıya nete açık bir serverda nasıl kurulur un bizde çalıştırabildiğim halini ekledim. burada nexus vs kullanırken örnek olarak aşağıdaki gibi bir parametre kullanabilirsiniz.

ÖRNEK:
python3 -m pip install -i http://NEXUSIPADRESI:NEXUSPORT/repository/REPOADI --trusted-host NEXUSIPADRESI  jupyterhub

Centrify – AD Kullanışlı Komutlar

Bir kullanıcı ya da Grup Sorgulama:
adquery user ayhanarda
Daha fazla detay için -A parametresini kullanabilirsiniz:
adquery user -A ayhanarda
Sunucunun domaine dahil olup olmadığı ve hakkında bazı bilgiler için:
adinfo domain.ayhanarda.com

Sunucuyu Active Directory’ye dahil etme:
Tabi burada kendi yetkili kullanıcı bilgilerinizi ve ilgili ou yu kendinize göre değiştirmelisiniz.
adjoin -z “domain.ayhanarda.com/Centrify/UnixServer/Zones/UnixServer” -c “OU=Computers,OU=UnixServer,OU=Centrify,DC=domain,DC=ayhanarda,DC=com” –force -R “UnixServer_Prod_AYHANARDA” -V domain.ayhanarda.com -u [email protected]

Sunucuyu domainden çıkarmak için:
Burada domainde yetkili bir kullanıcı kullanmalısınız.
adleave -r -u [email protected]

Centrify konfigürasyonunu yeniden yüklemek için:
adreload

Centrify local önbelleğini temizlemek için:
adflush

Bağlı dizinlerin listesini görmek için:
adinfo -y netstate

Kullanıcının hesabının kilitli olup olmadığını görmek için:
adquery user -A ayhanarda | grep accountLocked

How to see the preferred site (DC is choosing it):
adinfo -V

Hesabın keytab ını resetlemek için:
adkeytab -r -u [email protected]m

Centriyfdc’de debug mode u açmak ve kapamak:
/usr/share/centrifydc/bin/addebug on

/usr/share/centrifydc/bin/addebug off
Debug mode’u açtığınızda loglar aşağıdaki dizine yazmaya başlar: /var/log/centrifydc.log

Logları aşağıdaki komutla silebilirsiniz:

/usr/share/centrifydc/bin/addebug clear

Centrifydc’yi restart etmek

date ; ps -ef|grep adcl ; service centrifydc stop ; sleep 3; service centrifydc start ; sleep 1; ps -ef|grep adcli ; date

Authorization cache’ini boşaltmak için:
dzdo adflush –auth

Yeni bir dc’ye bind etmek istediğinizde önbelleği temizlemek için:
dzdo adflush –bindings

DNS cache’ini temizlemek için:
dzdo adflush –dns

krb5.conf dosyasının önbelleğini temizlemek için:
dzdo adflush –trusts

Sağlık geçmişini temizlemek için:
dzdo adflush –health

Tüm önbelleği temizlemek için:(dikkatli kullanınız)
dzdo adflush –force

Ayhan ARDA

Kafka restartında Memory Allocation Error Hatası

Kafka restartında Memory Allocation Error Hatası

Kafka başlarken aşağıdaki gibi bir hataya düştüğünde ki bu normalde olmuyorsa ama topic sayınız arttı ise genelde olur , bu durumda aşağıdaki çözümü uygulayabilirsiniz.

Java HotSpot(TM) 64-Bit Server VM warning: Attempt to protect stack guard pages failed.
Java HotSpot(TM) 64-Bit Server VM warning: Attempt to deallocate stack guard pages failed.
[] INFO [TransactionCoordinator id=3] Startup complete. (kafka.coordinator.transaction.TransactionCoordinator)
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f4e0ff1b000, 12288, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 12288 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /opt/kafka/bin/hs_err_pid1234.log
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f4eed723000, 262144, 0) failed; error='Cannot allocate memory' (errno=12)
[thread 139981501064960 also had an error]
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f4fe5cc0000, 65536, 1) failed; error='Cannot allocate memory' (errno=12)
[thread 139980200949504 also had an error]

Linux sysctl ayarlarınızda vm.max_map_count değerini arttırmalıyız.

sysctl -w vm.max_map_count= #ön tanımlı değeri 65536
Aşağıdaki değeri basabiliriz.
sysctl -w vm.max_map_count=262144
Aktif olması için sysctl -p komutunu kullanabilirsiniz.

Ayhan ARDA

Linux NFS Share ve Mount Nasıl Yapılır?

Linux NFS Share ve Mount Nasıl Yapılır?

Bazen sunucularımız arasında ortak bir klasör paylaşmak isteriz , bu durumda paylaşımı yapacak bir sunucu/klasör ve oraya erişmek isteyen client’lar olmalı. Bi sunucumuzu nfs server olarak yapılandırmakla başlayalım

Öncelikle nfs-utils paketini kurmalıyız.

yum install -y nfs-utils

Sonrasında bir paylaşım klasörü oluşturalım, aşağıdaki ismi ya da path’i değiştirebilirsiniz.

mkdir /var/nfspaylasimi

Şimdi bu klasöre herkesin yazabilmesi için yetkilerini değiştirelim.

chmod -R 755 /var/nfspaylasimi
chown nfsnobody:nfsnobody /var/nfspaylasimi

İlgili servisleri başlatalım

systemctl enable rpcbind
systemctl enable nfs-server
systemctl enable nfs-lock
systemctl enable nfs-idmap
systemctl start rpcbind
systemctl start nfs-server
systemctl start nfs-lock
systemctl start nfs-idmap

Şimdi ise bu klasörlere hangi ip lere sahip clientlar eerişecek ve ne haklarda erişecek bunları tanımlamamız gerekiyor , favori editorünüz ile aşağıdaki dosyayı açalım.

nano /etc/exports

İçini aşağıdaki şekilde doldurabiliriz. Birden fazla sunucu erişecek ise her biri alt alta gelecek şekilde kayıt girebilirsiniz. Ip adresleri erişecek clientların ip adresleridir.

/var/nfsshare    10.20.30.22(rw,sync,no_root_squash,no_all_squash)

Kaydetti isek nfs serverı yeniden başlatabiliriz.

systemctl restart nfs-server

Bir firewall kullanıyorsanız ilgili protokollere izin verebilirsiniz , sunucuda fw kullanmıyor iseniz gerek olmayacaktır.

firewall-cmd --permanent --zone=public --add-service=nfs
firewall-cmd --permanent --zone=public --add-service=mountd
firewall-cmd --permanent --zone=public --add-service=rpc-bind
firewall-cmd --reload

Peki Client’lar nasıl erişecek.

Yine aynı şekilde nfs-utils paketini client sunuculara kurmalıyız.

yum install -y nfs-utils

Bir mount klasörü oluşturalım , buraya yazdığımızda aslında server tarafındaki klasöre yazacak , yine ismi ve path’i değiştirebilirsiniz. Mount işlemlerden bağlama işleri genelde /mnt altına yapılır.

mkdir -p /mnt/nfspaylasimi

Şimdi bağlantıyı geçici olarak test etmek için aşağıdaki komutu girelim , tabi sunucuların birbirine erişebildiğini varsayıyoruz.

mount -t nfs 10.20.30.22:/var/nfspaylasimi /mnt/nfspaylasimi

Kontrol etmek için df -h komutunu kullanabilirsiniz.

[[email protected] mnt]# df -h
Filesystem                                 Size  Used Avail Use% Mounted on
10.20.30.22:/var/nfspaylasimi             10G  2.0G  8.1G  20% /mnt/nfspaylasimi

Şimdi client sunucuda /mnt/nfspaylasımı altında bir dosya yaratalım ve sunucuda görebilecek miyiz test edebiliriz.

cd /mnt/nfspaylasimi && touch ayhanarda.txt

Her şey ok ise işlemi kalıcı hale getirmeliyiz yani sistem boot olduğunda tekrar otomatik olarak mount işlemini yapmalı. Favori editorünüz ile aşağıdaki dosyayı açınız.

nano /etc/fstab

İçine yeni bir satır ekleyerek aşağıdaki kaydı giriniz , ip ve path’leri değiştirmeyi unutmayınız.

//ayhanarda
10.20.30.22:/var/nfsshare    /mnt/nfs/var/nfsshare   nfs defaults 0 0

Hepi bu kadar, umarım faydalı olur.

Ayhan ARDA

Prometheus Node Exporter Kurulumu

Prometheus Node Exporter Kurulumu

Node exporter’ı linux sunucularımızda ki metricleri elde etmek için kullanırız.

Kurmadan önce prometheus kurulu olmalı, bunun için prometheus kurulumu isimli yazımızı inceleyebilirsiniz. Sonrasında network tarafında 9100 nolu port izinli olmalı ancak tabii ki farklı bir portta kullanabilirsiniz.

Öncelikle /tmp dizinine geçip dosyamızı indiriyoruz.

cd /tmp
curl -LO 
https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz

Dileseniz indirmek için prometheus download sayfasına da göz atabilirsiniz.

node exporter download

Şimdi indirdiğimiz dosyayı açıp /usr/local/bin/ içinde gönderelim

tar -xvf node_exporter-1.3.1.linux-amd64.tar.gz
mv node_exporter-1.3.1.linux-amd64/node_exporter /usr/local/bin/

Node exporter için bir user oluşturalım.

useradd -rs /bin/false node_exporter

Node Exporter için bir servis oluşturmalıyız, aşağıdaki dosyayı oluşturalım ve içini daha aşağıdaki şekilde doldurup kaydedelim.

vi /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target

Şimdi servisi başlatabiliriz.

sudo systemctl daemon-reload
sudo systemctl start node_exporter

sudo systemctl status node_exporter
sudo systemctl enable node_exporter

Buraya kadar hata almadı iseniz http://sunucunuzunipadresi:9100/metrics adresinde metricleri görüyor olmalısınız.

Şimdi prometheus’un yaml dosyasına node exporter ı tanımlayabiliriz.

vi /etc/prometheus/prometheus.yml

Dosyanın en altına aşağıdaki şekilde ekleyebilirsiniz. İp adresini değiştirmeyi unutmayınız, node exporter local de ise localhost şeklinde de yazabilirsiniz.

- job_name: 'node_exporter_metrics'
  scrape_interval: 5s
  static_configs:
    - targets: ['IPADRESI:9100']

Şimdi tanımların geçerli olabilmesi için bu kez prometheus servisini restart edelim.

systemctl restart prometheus
prometheus targets

Artık prometheus da linux sunucunuzun metriklerini görmeye hazırsınız.

Ayhan ARDA

Prometheus Kurulumu

Prometheus Kurulumu

Prometheus açık kaynaklı, pull temelli monitöring aracıdır. Çok hafif ve iyi bir uyarı mekanizmasına sahiptir. Centos/rhel tabanlı dağıtımlarda aşağıdaki gibi kurabilirsiniz.

https://prometheus.io/download/ adresinden şu an güncel sürüm olan 2.34 ü indireceğiz.

Prometheus download

Başlamadan önce eğer root değilseniz sudo kullanabilir olduğunuza emin olunuz, networkünüzde prometheus un default portu olan 9090 portu için bir engel olmamalı , dilerseniz farklı bir boş port kullanabilirsiniz. Prometheus’u indirebilmek için kuracağınız sunucu internete açık olmalı , eğer internet erişiminiz yok ise farklı bir sunucudan ilgili dosyayı indirip kuracağınız sunucuya aktarabilirsiniz.

Aşağıdaki şekilde indirip, açıp klasörün adını değiştirelim. Ben işlemi /home dizini içindeyken yapıyorum, Siz dilediğiniz path’te yapabilirsiniz.

cd /home
curl -LO url -LO https://github.com/prometheus/prometheus/releases/download/v2.34.0/prometheus-2.34.0.linux-amd64.tar.gz
tar -xvf prometheus-2.34.0.linux-amd64.tar.gz
mv prometheus-2.34.0.linux-amd64 prometheus-files

Şimdi prometheus kullanıcısı ve dizinlerini oluşturup haklarını verelim.

sudo useradd --no-create-home --shell /bin/false prometheus
sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
sudo chown prometheus:prometheus /etc/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus

Şimdi binary’leri /usr/local/bin ‘ e kopyalayıp izinlerini değiştirelim

sudo cp prometheus-files/prometheus /usr/local/bin/
sudo cp prometheus-files/promtool /usr/local/bin/
sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool

Aynı şekilde kütüphaneler için de işlem yapıyoruz.

sudo cp -r prometheus-files/consoles /etc/prometheus
sudo cp -r prometheus-files/console_libraries /etc/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus/consoles
sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries

Şimdi prometheus’un yaml dosyasını oluşturup aşağıdakileri ekleyip kaydedelim. Dilerseniz portu değiştirebilirsiniz.

sudo vi /etc/prometheus/prometheus.yml
global:
  scrape_interval: 10s

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']

Kaydedip çıktıysak şimdi sahipliğini değiştirelim.

sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml

Artık bunu bir servis haline getirebiliriz. Aşağıdaki dosyayı oluştuurp açalım ve içine bir altında yazanlarıkopyalayıp kaydedelim.

vi /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
    --config.file /etc/prometheus/prometheus.yml \
    --storage.tsdb.path /var/lib/prometheus/ \
    --web.console.templates=/etc/prometheus/consoles \
    --web.console.libraries=/etc/prometheus/console_libraries

[Install]
WantedBy=multi-user.target

Systemd servislerini reload edelim ve servisimizi başlatıp çalıştığını kontrol edelim.

sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl status prometheus

Bir sorun yok ise aşağıdaki şekilde bir sonuç elde görmeliyiz.

Prometheus çalışıyor

Şimdi web arayüzünden erişebiliriz. Görüntü aşağıdaki gibi olmalı.

http://<sunucunuzun-ip-adresi>:9090/graph
Prometheus webui
Prometheus Query

Linux Sunucularda System Servisi Oluşturmak

Linux Sunucularda System Servisi Oluşturmak

/etc/systemd/system/ klasörü içinde bir dosya oluşturuyoruz. Servisimizin adını hatırlatacak şekilde isim verilmesi işimizi kolaylaştıracaktır.

Örneğin grafana.service

Bu dosyanın içinde Servisin tanımını, çalışacağı path’i ve çalışma modlarını tanımlayabilirsiniz. Aşağıda grafana için oluşturduğumuz bir örnek bulunmaktadır.

cat /etc/systemd/system/grafana.service

[Unit]
Description=Grafana Servisi

[Service]
WorkingDirectory=/root/
Type=forking
ExecStart=/bin/bash grafana_start.sh
KillMode=process

[Install]
WantedBy=multi-user.target

Görüldüğü üzere /root dizini içinde grafana_start.sh dosyasını çalıştırması beklenmektedir, Çalıştırdığında oluşan process id yi yazar, servisi stop ettiğinizde bu pid’i kill eder.

Servis dosyamızı oluşturduktan sonra bunu sisteme duyurmak gerekir , aşağıdaki komut ile yapabilirsiniz.

systemctl daemon-reload

Sistemin yeniden başlangıcında çalışması için enable edebilirsiniz.

systemctl enable grafana

Bu sırada servisin çalıştıracağı bash scriptine de göz gezdirelim. /root dizini içinde grafana_start.sh isimli bir dosya oluşturduk. Dosyanın içeriği aşağıdaki gibi.

#!/bin/sh
nohup /opt/Grafana/grafana_7.5.2/bin/grafana-server -homepath /opt/Grafana/grafana_7.5.2/ > /dev/null 2>&1 &

Bash scriptlerin çalışabilmesi için çalışma hakkının olması gerekir. Aşağıdaki şekilde yapabilirsiniz.

chmod +x /root/grafana_start.sh

Şimdi servisimizi start edebiliriz.

systemctl start grafana

Aşağıda start/stop sonuçlarınıi görebilirsiniz.

[[email protected] ~]# ps aux | grep graf | grep -v color
[[email protected]hostrazzi02 ~]#
[[email protected]hostrazzi02 ~]# systemctl start grafana
[[email protected]hostrazzi02 ~]#
[[email protected]hostrazzi02 ~]# ps aux | grep graf | grep -v color
root     62255  4.2  0.0 1199056 42824 ?       Sl   14:18   0:00 /opt/Grafana/grafana_7.5.2/bin/grafana-server -homepath /opt/Grafana/grafana_7.5.2/
[[email protected]hostrazzi02 ~]#
[[email protected]hostrazzi02 ~]# systemctl stop grafana
[[email protected]hostrazzi02 ~]#
[[email protected]hostrazzi02 ~]# ps aux | grep graf | grep -v color
[[email protected]hostrazzi02 ~]#
[[email protected]hostrazzi02 ~]# systemctl start grafana
[[email protected]hostrazzi02 ~]#
[[email protected]hostrazzi02 ~]#
[[email protected]hostrazzi02 ~]# ps aux | grep graf | grep -v color
root     62336  8.0  0.0 1059788 37252 ?       Sl   14:19   0:00 /opt/Grafana/grafana_7.5.2/bin/grafana-server -homepath /opt/Grafana/grafana_7.5.2/
[[email protected]hostrazzi02 ~]#

A ticket for this agent could not have been requested from your deployment endpoint: Ticket salt is not configured in ApiListener object hatası

A ticket for this agent could not have been requested from your deployment endpoint: Ticket salt is not configured in ApiListener object hatası

Icinga2 de Host’a modify deyip Agent’a tıkladığınızda başlıktaki hatayı alabilirsiniz.

TicketSalt girmediğiniz için bu hatayı almaktasınız.

/etc/icinga2/constants.conf dosyanızda muhtemelen en altta aşağıdaki satırı göreceksiniz.

c

/* Secret key for remote node tickets */
const TicketSalt = “Burayıkarışıkdoldurunuz”

örnek : const TicketSalt = “sc6w7rydnc721mfcns612enfd”

/etc/icinga2/features-enabled/api.conf dosyasında da TicketSalt ifadesi geçer, burada değer aşağıdaki gibi kalmalı , aksi halde yukarıdaki salt ile güncellerseniz icinga çalışmaz.

ticket_salt = TicketSalt

Sonrasında icinga2 yi restart etmeyi unutmayınız.

service icinga2 restart

Ayhan ARDA

Gmail POP3 Hesabı Ekleme Hatası [AUTH] Plaintext authentication disallowed on non-secure (SSL/TLS) connections

Gmail POP3 Hesabı Ekleme Hatası [AUTH] Plaintext authentication disallowed on non-secure (SSL/TLS) connections

Linux üzerine plesk kurulu sunucumuzda bir mail hesabını gmail e ekleme çalıştığımızda aşağıdaki hatayı aldığımızı gördük.

[AUTH] Plaintext authentication disallowed on non-secure (SSL/TLS) connections

Kısaca güveli olmayan bağlantılarda şifrenin açık şekilde geldiği için kabul edilmediğine dair hata vardı. Sunucumuzda mail server olarak postfix kullanıyoruz bu smtp görevini yerine getiriyor ancak hata pop3 te yani 110 portunda alınmakta , bu nedenle imap ve pop3 için çalışan dovecot conf u üzerinde işlem yapmamız gerekiyor.

/etc/dovecot/dovecot.conf dosyasını editlemeyi tercih etmediğimizde dovecot un configler için kullandğı klasör üzerinde bir conf dosyası oluşturup işlem yapabiliriz.

Bu nedenle /etc/dovecot/conf.d dizinine ilerleyiniz ve içinde aşağıdaki isimle bir dosya oluşturunuz.

[[email protected] ~]# cd /etc/dovecot/conf.d/
[[email protected] conf.d]# nano 50-gmail.conf

Dosyanın içine aşağıdaki satırı ekleyip servisi yeniden başlatınız.

disable_plaintext_auth = no

/etc/init.d/dovecot restart

Şimdi tekrar kontrol edebilirsiniz.

Bunu kontrol etmek için mutlaka gmail’e ihtiyacınız bulunmamakta. Windows kullanıyorsanız bir command prompt açınız.

İçine telnet mail.alanadı.com 110 yazınız

bağlandığında bir user ile login olmayı deneyiniz , aşağıdaki satırı yazabilirsiniz.

user [email protected]

bu işlem sonunda başlıktaki hatayı alıyorsanız aynı durumu yaşıyorsunuz demektir.

Ayhan ARDA

Debian Command Not Found Hataları

Debian Command Not Found Hataları

Örnek:

[email protected]:~# a2ensite test.ayhanarda.com.conf
bash: a2ensite: command not found

[email protected]:~# reboot
bash: reboot: command not found

[email protected]:~# ufw enable
bash: ufw: command not found

Oturumunuzu normal user ile açıp root kullanıcısına su ile yükseltme yaptığınızda bir çok komutun çalışmadığını görürsünüz , bu nedenle su – komutunu kullanmalısınız , Sonrasında çalışmayan komutlarınızın çalıştığını görebilirsiniz.

[email protected]:~# su –

Avocent Console Cihazlarında Şifre Kurtarma

Bazen kullandığımız cihazlarımızda eskiden tanımlanan şifreleri unutabiliyoruz bu da ihtiyacımız olduğu zamanlarda elimizi bağlıyor , user hakları ile kullandığım ancak admin ve root şifresini bilmediğim Avocent cyclades konsol cihazımızda bu şifreleri kurtarmam gerekti. İşlem adımlarımı aşağıdaki şekilde not aldım.

Cihazın konsol portuna bağlanılır.

Cihaz restart edilir.

Açılmaya başladığı anda konsolda herhangi bir tuşa basılır ve cihaz uboot promptunda bekler.

hw_boot single komutu çalıştırılır.

Cihaz single modda açılır.

passwd komutu ile yeni şifre belirlenir.

passwd komutu root hesabının şifresini değiştirir , admin hesabının şifresini değiştirmek için passwd admin komutunu kullanabilirsiniz.

reboot komutu ile reboot edilir. Şimdi erişip işlem yapabilirsiniz.

wget: short write hatası ve çözümü

Esxi’da sunucu içine bir iso indirmem gerekiyordu ancak wget kullandığımda aşağıdaki short error mesajı ile karşılaştım.

[[email protected]:~] wget http://cdimage.kali.org/kali-2021.1/kali-linux-2021.1-installer-amd64.iso
Connecting to cdimage.kali.org (192.99.200.113:80)
Connecting to kali.download (104.18.103.100:80)
kali-linux-2021.1-in   0% 34080k  0:20:19 ETA
wget: short write

Dosyayı bir şekilde indirmem gerekiyordu,

/vmfs/volumes/datastore1/ altında mkdir komutu ile tmp klasörü oluşturdum ve wget komutumu aşağıdaki şekilde düzenledim , bu şekilde dosya indrme işlemi başarıyla sonuçlandı.

wget http://cdimage.kali.org/kali-2021.1/kali-linux-2021.1-installer-amd64.iso -P /vmfs/volumes/datastore1/tmp -O – > /vmfs/volumes/datastore1/tmp/kali-linux-2021.1-installer-amd64.iso

[[email protected]:~] cd /vmfs/volumes/datastore1/
[[email protected]:/vmfs/volumes/603e6203-856ecbf2-3862-00224d698ca9] mkdir tmp
[[email protected]:/vmfs/volumes/603e6203-856ecbf2-3862-00224d698ca9] cd /
[[email protected]:~] wget http://cdimage.kali.org/kali-2021.1/kali-linux-2021.1-installer-amd64.iso -P /vmfs/volumes/datastore1/tmp -O - > /vmfs/volumes/datastore1/tmp/kali-linux-2021.1-installer-amd64.iso
Connecting to cdimage.kali.org (192.99.200.113:80)
Connecting to kali.download (104.18.103.100:80)
-                    100% |*******************************************************************************************************************************************************************************************|  4093M  0:00:00 ETA

RemoteApp Portunu Değiştirmek

RemoteApp Portunu Değiştirmek

Bu yazıyı remote desktop portu değiştirmekle karıştırmayınız , remote desktop portunu değiştirmek ile remote app portu değiştirmek aynı şey değildir. Bilindiği üzere güvenlik gereği remote desktop portumuzu değiştirmeyi tercih ederiz. Ancak aynı sunucuda remote app rolü kullanmaya karar verip yapılandırdığınızda çalışmadığını göreceksiniz. Sebebi Remote App rolünün , Sizin remote desktop portunuzu değiştirdiğinizden habersiz olmasıdır ve yapısı gereği halen standart port olan 3389 a erişmeye çalışacaktır, trafiğinizi debug etmediğinizde ya da dinlemediğinizde anlaşılması zor olabilir , bu nedenle remote app portunuzu da değiştirmelisiniz ya da remote desktop portunuzu tekrar 3389 a çekebilirsiniz. Benim tercihim remote app portunu değiştirmek oldu , powershell de aşağıdaki komutu kullanabilirsiniz. Komutta koyu olan birinci bölüm remote app kolleksiyonunuzun adıdır ve değiştirmelisiniz. İkinci bçlüm ise sunucunuzda hali hazırda kullandığınız rdp portudur, bu şekilde değiştirebilirsiniz.

Set-RDSessionCollectionConfiguration –CollectionName "QuickSessionCollection" –CustomRdpProperty "server port:i:8888"

Ayhan ARDA

rndc: decode base64 secret: bad base64 encoding hatası ve çözümü

rndc: decode base64 secret: bad base64 encoding hatası ve çözümü

Benim başıma gelme hikayesi şöyle oldu , zone dosyalarımda bazı kelimeleri otomatik olarak topluca değiştirmem gerekiyordu ancak db. ile başlayan dosyaları filtrelemediğim için bind.keys dosyamın içeriği de değişti. Eski key i kurtarmam zor olacaktı ve ilgili klasör yedeğimi de almamıştım. Çözüm için key ‘i tekraroluşturmak yeterli oldu.

Bunun için aşağıdaki komutu kullanabilirsiniz.

[email protected]:/etc/bind# rndc-confgen -a -b 512

Sonrasında servisi tekrar başlatalım.

[email protected]:/etc/bind# service bind9 restart

Şimdi rndc reload etmeye çalıştığımızda problemin devam etmediğini göreceksiniz.

[email protected]:/etc/bind# rndc reload
server reload successful

Ayhan ARDA

Juniper Ex3300 Junos Upgrade İşlemi – USB ile

Juniper Ex3300 Junos Upgrade İşlemi – USB ile

Öncelikle yeni Junos versiyonumuzu Juniper‘ın sitesinden indiriyoruz, Ex3300 için 2020 yılı itibari ile en güncel versiyon 15.1R7.9 olarak gözüküyor. Dosyanın tam adı jinstall-ex-3300-15.1R7.9-domestic-signed.tgz şeklinde.

Bir usb disk edindim ve bilgisayara takıp Fat olarak tekrar formatlıyorum. Fat32 ya da ntfs çalışmayacaktır, Switch USB’yi görecek ama partition’ı göremeyecektir. O nedenle mutlaka FAT olarak formatlamalısınız , bunu windows’un DISKPART aracı ile yapabilirsiniz. Sonrasında indirdiğimiz dosyayı direkt olarak içine aktarıyorum ve sonrasında USB diski güvenli şekilde bilgisayardan çıkarıyorum ve konsoldan serial kablo ile bağlı olduğum switch’in usb portuna takıyorum. Zaten hali hazırda bağlı iseniz ekranda switche usb disk takıldığına dair uyarılar göreceksiniz.

[email protected]> umass1: SanDisk Cruzer Blade, rev 2.00/1.26, addr 2
da1 at umass-sim1 bus 1 target 0 lun 0
da1: Fixed Direct Access SCSI-6 device
da1: 40.000MB/s transfers
da1: 7633MB (15633408 512 byte sectors: 255H 63S/T 973C)

Ex3300 switch’imizin mevcut versiyonuna bir bakalım.

[email protected]> show version

Hostname: hostrazzi-SW
Model: ex3300-24t
JUNOS Base OS boot [12.3R9.4]
JUNOS Base OS Software Suite [12.3R9.4]
JUNOS Kernel Software Suite [12.3R9.4]
JUNOS Crypto Software Suite [12.3R9.4]
JUNOS Online Documentation [12.3R9.4]
JUNOS Enterprise Software Suite [12.3R9.4]
JUNOS Packet Forwarding Engine Enterprise Software Suite [12.3R9.4]
JUNOS Routing Software Suite [12.3R9.4]
JUNOS Web Management [12.3R9.4]
JUNOS FIPS mode utilities [12.3R9.4]

Yukarıda görüldüğü üzere eski bir versiyon olan 12.3R9.4 şeklinde gözüküyor.

Şimdi switchte konfigürasyonu gördüğümüz ekrandan shell ekranına düşelim , bir nevi linux/unix arayüzüne diyebiliriz.

[email protected]> start shell

Usb diskimizdeki dosyamızı switch’e aktarabilmek için öncelikle USB diskimizi Switch’e mount etmeliyiz.

Partition’ı görebildiğimizi doğrulayalım

ayhan @:RE:0% ls -al /dev/da*
crw-r—– 1 root operator 0, 54 Jan 1 00:23 /dev//da0
crw-r—– 1 root operator 0, 55 Jan 1 00:23 /dev//da0s1
crw-r—– 1 root operator 0, 59 Jan 1 00:23 /dev//da0s1a
crw-r—– 1 root operator 0, 60 Jan 1 00:23 /dev//da0s1c
crw-r—– 1 root operator 0, 56 Jan 1 00:23 /dev//da0s2
crw-r—– 1 root operator 0, 93 Jan 1 00:23 /dev//da0s2a
crw-r—– 1 root operator 0, 94 Jan 1 00:23 /dev//da0s2c
crw-r—– 1 root operator 0, 57 Jan 1 00:23 /dev//da0s3
crw-r—– 1 root operator 0, 63 Jan 1 00:23 /dev//da0s3c
crw-r—– 1 root operator 0, 64 Jan 1 00:24 /dev//da0s3d
crw-r—– 1 root operator 0, 65 Jan 1 00:23 /dev//da0s3e
crw-r—– 1 root operator 0, 58 Jan 1 00:23 /dev//da0s4
crw-r—– 1 root operator 0, 66 Jan 1 00:23 /dev//da0s4c
crw-r—– 1 root operator 0, 67 Jan 1 00:24 /dev//da0s4d
crw-r—– 1 root operator 0, 92 Jan 1 00:23 /dev//da1
crw-r—– 1 root operator 0, 95 Jan 1 00:23 /dev//da1s1

Şimdi bu partition’ı mount edelim.

[email protected]:RE:0% mount -t msdosfs /dev/da1s1 /mnt

Kullanıcınızın root yetkileri yok ise Permission denied hatası alabilirsiniz , bu durumda root şifrenizi biliyor iseniz root kullanıcısına su root komutu ile geçiş yapabilirsiniz.

Mount ettiğimize göre artık dosyamızı switche aktarabiliriz.

[email protected]:RE:0% cp /mnt/jinstall-ex-3300-15.1R7.9-domestic-signed.tgz /var/tmp/

Kopyaladık ve artık usb diskimizi çıkarabiliriz.

[email protected]:RE:0% umount /mnt

Şimdi dosyamızı çalıştırıp junos upgrade işlemini yapalım ve reboot edelim. Öncelikle tekrar CLI ortamına geçmeliyiz.

[email protected]:RE:0% cli
{master:0}

[email protected] hostrazzi-SW >request system software add /var/tmp/jinstall-ex-3300-15.1R7.9-domestic-signed.tgz reboot

Önemli bir nokta ise switchin tarihidir , eğer tarih junos firmware’inin çıktığı tarihten eski zamanda ise güncelleme yapılamayacaktır , sebep olarak ise gelecek zamandan bir dosya yüklemeye çalıştığımız içindir, set date komutu ile timestamps girebilirsiniz. Örnek : set date 202007251632

Yukarıdaki request ile başlayan komuttan sonra cihaz upgrade işlemini yapacak ve sonrasında kendini restart edecektir. Açıldığında tekrar versiyona bakabilirsiniz.

[email protected]> show version

Hostname: hostrazzi-SW
Model: ex3300-24t
Junos: 15.1R7.9
JUNOS EX Software Suite [15.1R7.9]
JUNOS FIPS mode utilities [15.1R7.9]
JUNOS Online Documentation [15.1R7.9]
JUNOS EX 3300 Software Suite [15.1R7.9]
JUNOS Web Management Platform Package [15.1R7.9]

Ayhan ARDA

Linux Performans Analizi İçin Sysstat Kurulumu

Linux Performans Analizi İçin Sysstat Kurulumu

Linux üzerinde performans sorunları yaşadığınızda bazı komutlar ile bu durumu doğrulamanız gerekir ya da sisteminiz iyidir ve daha iyi hale getirmek istiyorsunuzdur , bazen internette yeni komutlar bulursunuz ve bir çok kez bu komutların default olarak kurulu gelmediğini ve çalışmadığını görürsünüz , örneğin aşağıdaki komutları deneyebilirsiniz.

mpstat -P ALL 1
iostat -xz 1
sar -n DEV 1

İşte bu komutların çalışması için sysstat paketine ihtiyaç bulunmaktadır. Sysstat ile ayrıca sistem performans loglarını cron ile belli aralıklar ile çalıştırıp arşivleyebilirsiniz.

Debian/Ubuntu türevlerinde aşağıdaki komut ile kolaylıkla kurabilirsiniz.

apt-get install sysstat

Sonrasında /etc/default/sysstat dosyasında ENABLED değerini false yerine true yazıp kaydedelim.

nano /etc/default/sysstat
ENABLED=”true”

Dilerseniz /etc/cron.d/sysstat dosyanızda data toplama sıklığını değiştirebilirsiniz.

nano /etc/cron.d/sysstat

Sonrasında servisi restart edebiliriz.

service sysstat restart

Şimdi ilk datamıza hemen toplayalım.

command -v debian-sa1 > /dev/null && debian-sa1 1 1

Verileri görmek için ise aşağıdaki komutu kullanabilirsiniz.

sar -A

Bu dataları arşivlemek isterseniz aşağıdaki komutu kullanabilirsiniz.

sar -A > $(date +hostname-%d-%m-%y-%H%M.log)

Ayhan ARDA

Ubuntu Static IP Tanımlama

Ubuntu Static IP Tanımlama – 17.10 ve sonrası için

Ağ yapılandırması Ubuntu 17.10 ile tamamen değiştirildi. 17.10 sürümünden başlayarak tüm yeni Ubuntu sürümlerinde kullanılacak ağ ayarı yönetimi için Canonical (Ubuntu Linux dağıtımını geliştiren şirket) tarafından Netplan adında yeni bir araç tanıtıldı. Eski ağ yapılandırma dosyası olan /etc/network/interfaces dosyası artık kullanılmıyor.

Şimdi düzenlemek için /etc/netplan/01-netcfg.yaml dosyamızı sevdiğimiz bir editör ile açalım. Root kullanıcısı olduğumuz için sudo kullanmıyoruz.

[email protected]:~# nano /etc/netplan/01-netcfg.yaml

Netplan ile konfigürasyon dosyası pyhton ile birlikte YAML formatına geçti. Şimdi diyelim ki ens33 isimli interface’imize 192.168.1.10 ip adresini vermek istiyoruz , subnet’imiz 255.255.255.0 yani /24 olsun , dns serverlarımızda 8.8.8.8 ve 1.1.1.1 olsun diyelim. Tabi dhcp’yi de kapatmış oluyoruz ki oomatik ip almaya çalışmayalım. Bu durumda 01-netcfg.yaml dosyamızın içi birebir aşağıdaki gibi olmalı.

This file describes the network interfaces available on your system
For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
dhcp6: no
addresses: [192.168.1.10/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8,1.1.1.1]

Şimdi dosyamızı değiştirdik ve kaydettik. Değişikliğin aktif olması için ise aşağıdaki komutu kullanalım.

[email protected]:~# netplan apply

Şimdi sunucumuza eğer değiştirdi isek yeni ip adresimiz üzerinden erişebiliriz.

Ayhan ARDA