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.

root@ubuntu-hostrazzi:~# 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.

root@ubuntu-hostrazzi:~# netplan apply

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

Ayhan ARDA

Ubuntu ‘artful Release’ no longer has a Release file. hatası ve çözümü

Ubuntu ‘artful Release’ no longer has a Release file. hatası ve çözümü

Ubuntu update ya da paket kurulumu sırasında “no longer has a Release file. hatası alabilirsiniz. Sebebi Ubuntu 17.10 artful kullanıyor olmanız ve artık bu sürümün desteğinin bitmiş olmasıdır. Ubuntu güncel sürümleri görmek için https://wiki.ubuntu.com/Releases adresini kullanabilirsiniz. Bu durumda apt-get update ya da upgrade gibi komutlar işe yaramaz çünkü sources.list dosyanız artful repolarına ulaşmaya çalışmaktadır.

root@ubuntu-hostrazzi:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 17.10
Release: 17.10
Codename: artful

root@ubuntu-hostrazzi:~# apt-get update
E: The repository ‘http://tr.archive.ubuntu.com/ubuntu artful Release’ no longer has a Release file.
N: Updating from such a repository can’t be done securely, and is therefore disabled by default

/etc/apt/sources.list dosyamızı açıp içini boşaltalım ve aşağıdaki repoları ekleyelim.

root@ubuntu-hostrazzi:~# nano /etc/apt/sources.list

## EOL upgrade sources.list
# Hostrazzi.Com
deb http://old-releases.ubuntu.com/ubuntu/ zesty main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ zesty-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ zesty-security main restricted universe multiverse

Şimdi tekrar update ve diğer komutları sırası ile çalıştıralım.

root@ubuntu-hostrazzi:~# apt-get update
root@ubuntu-hostrazzi:~# apt-get upgrade
root@ubuntu-hostrazzi:~# apt-get dist-upgrade
root@ubuntu-hostrazzi:~# do-release-upgrade

Son komut ile birlikte işletim sistemi versiyonunuz Ubuntu 18.04 Bionic sürümüne geçecektir , tabi bu yazıyı yazdığım tarihi baz alıyorum. Bu son komut ile birlikte konsolda Size bazı sorular soracaktır , hepsine Y diyerek geçebilirsiniz. Tabiki işlem öncesi snapshot almanızda fayda var. Ayrıca bu yükseltme restart gerektirmekte, belirtmekte fayda var. Şimdi tekrar versiyonu kontrol edebiliriz.

root@ubuntu-hostrazzi:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04 LTS
Release: 18.04
Codename: bionic

Extreme Networks Switchlerde “The stack MAC is either not configured or its configuration is not consistent within the stack.” hatası

Extreme Networks Switchlerde “The stack MAC is either not configured or its configuration is not consistent within the stack.” hatası

Genelde Extreme networks switchlerinde stack kurulumunu otomatik yaptırdığımız durumlarda karşılaşabileceğimiz bir hatadır. Aşağıdaki komutu master switch üzerinden çalıştırınız.

configure stacking mac-address

Sonrasında Stack topolojisini rebott etmelisiniz. Switchler reboot olduktan sonra hata giderilecektir.

reboot stack-topology

Ayhan ARDA

Plesk Panel’de 500 Hatası

Plesk Panel’de 500 Hatası

Plesk panel’e girmeye çalıştığınızda 500 hatası alıp %plesk_dir%admin\logs\php_error.log dosyanızda aşağıdaki gibi kayıtlar görüyorsanız bu çözümü uygulayabilirsiniz.

PHP Fatal error: Uncaught Error: Class ‘Zend_Log’ not found in C:\Program Files (x86)\Parallels\Plesk\admin\plib\Plesk\Log.php:169
ya da
Unable to set the object (C:\Program Files (x86)\Parallels\Plesk\admin\****) owner: (5) Access is denied.

Sebebi , plesk’in güncellemesi sırasında antivirüs yazılımınızın buna engel olması ve işlemin yarıda kalmasıdır.

Örneğin, defender bu hataya sebep olabilmektedir. Defender ayarlarınızda %plesk_dir% klasörünü exclude etmelisiniz. Eğer defender kullanmıyor iseniz mevcut antivirüs yazılımınızda buna benzer işlemi uygulayabilirsiniz ya da antivirüs yazılımınızı kaldırmayı deneyebilirsiniz. İşlem sonunda aşağıdaki komutu cmd üzerinden uçalıştırıp update işlemini tamamlayabilirsiniz , sonrasında plesk panel çalışacaktır.

plesk installer –select-release-current –reinstall-patch –upgrade-installed-components

Ayhan ARDA

Plesk kurulu sunucuda .net core internal server error lock violation hatası

IIS te .net core kullanan siteleriniz aşağıdaki hatayı veriyor olabilir.

HTTP Error 500.19 – Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid.
Detailed Error Information
Module IIS Web Core
Notification BeginRequest
Handler Not yet determined
Error Code 0x80070021
Config Error Lock violation
Config File \?\C:\Inetpub\vhosts\ayhanarda.com\web.config

Öncelikle .net core çalışıp çalışmadığını ya da kurulu olup olmadığını test edelim.

C:\Users\Administrator>dotnet –version
2.1.401

C:\Users\Administrator>dotnet –info
.NET Core SDK (reflecting any global.json):
Version: 2.1.401
Commit: 91b1c13032

Runtime Environment:
OS Name: Windows
OS Version: 10.0.14393
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\2.1.401\

Host (useful for support):
Version: 2.2.6
Commit: 7dac9b1b51

.NET Core SDKs installed:
2.1.3 [C:\Program Files\dotnet\sdk]
2.1.4 [C:\Program Files\dotnet\sdk]
2.1.401 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.1.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 1.0.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 1.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 1.1.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 1.1.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

Görünen o ki kurulum ve çalışmasında bir sorun yok , hatta proje oluşturup oluşturamadığımıza cmd konsolu üzerinden bakabiliriz. Bir konsol projesi oluşturalım ve publish edelim , gereçek ortamda yayınlamasak ta işlevinin çalıştığını anlayabiliriz.

dotnet new console -o ayhanarda
cd ayhanarda
dotnet publish

Eğer buraya kadar bir sorun yoksa .net in çalıştığına emin olabilirsiniz. Hatada ne diyordu , Lock Violation , yani bir şeyler .net core un çalışmasını engelliyor , kilitliyor.

Bu hatayı gidermek için Plesk panelinizde Araçlar/ayarlar bölümünde Güvenlik bölümüne gelip buradan güvenlik ilkesi adımı ile aşağıdaki bölümün tikini kaldırınız , siteniz çalışacaktır.

Özel işleyiciler ilkesi
Müşterilerin web.config dosyasıyla sunucu seviyesinde tanımlanan IIS işleyicilerini bypass etmesini önlemek için bu seçeneği etkinleştirin.
(UN TICK)
web.config ile işleyicileri geçersiz kılma yeteneğini engelleyin

for english:

Log into Plesk
Untick Prohibit the ability to override handlers via web.config in Plesk > Tools & Settings > Security

Ayhan ARDA

Ubuntu üzerine LXC Container ve LXC WebPanel Kurulumu

Ubuntu üzerine LXC Container ve LXC WebPanel Kurulumu

Docker docker nereye kadar dedik ve birazda değişiklik olması için LXC container kurmaya karar verdik, öncesinde sıfır ubuntu kurdum version 19.04 ve update ettim. Sonrasında LXC ve lxc template’lerini kumakla başlayalım.

apt-get install lxc lxc-templates -y

Sorunsuz kurulum olup olmadığına aşağıdaki komutla bakabilirsiniz , cgroups’lar , nat’lar , namespace’lerin oluştuğunu göreceksiniz.

lxc-checkconfig

Şimdi templatelerin gelip gelmediğini aşağıdaki komutla kontrol edelim.

ls /usr/share/lxc/templates/

root@lxc:/home/ayhanarda# ls /usr/share/lxc/templates/
lxc-alpine lxc-archlinux lxc-centos lxc-debian lxc-fedora lxc-gentoo lxc-oci lxc-opensuse lxc-plamo lxc-sabayon lxc-sparclinux lxc-ubuntu lxc-voidlinux
lxc-altlinux lxc-busybox lxc-cirros lxc-download lxc-fedora-legacy lxc-local lxc-openmandriva lxc-oracle lxc-pld lxc-slackware lxc-sshd lxc-ubuntu-cloud

Görüldüğü üzere templatelerimiz gelmiş , şimdi ilk konteyner’imizi oluşturalım. Örneğin ubuntu konteyner açalım, ismi de new-container olsun.

lxc-create -n new-container -t ubuntu

İlk kez imaj indirirken biraz uzun sürebilir , ikinci de de aynı durumun olup olmadığını görmek için tekrar indirme ihtiyacı hissettim , bununda adı , new-container-2 olsun diyorum ve tekrar indiriyorum.

lxc-create -n new-container-2 -t ubuntu

Ve sonuç düşündüğüm gibi oldu , birincisi 2 dakika kadar sürerken ikincisi zaten kalıbı daha önce indiği için 2 saniye kadar sürdü.

Şimdi lxc container’larımızı listeleyelim.

root@lxc:/home/ayhanarda# lxc-ls
new-container new-container-2

Görüldüğü üzere 2 adet container gözüküyor , şimdi new-container isimli olanı çalıştıralım.

lxc-start -n new-container -d

Peki container’ın konsoluna nasıl erişiriz dediğinizi duyar gibiyim , aşağıdaki komutu kullanabilirsiniz.

lxc-console -n new-container

Şifre soracaktır , konteyner’ı indirdiğimizde zaten bize ubuntu kullanıcı adı ve şifresini vermiş idi , bu bilgiler ile giriş yapabilirsiniz.

Konteyner ile ilgili bilgi almak için aşağıdaki komutu kullanabilirsiniz.

lxc-info -n new-container

Çıktısı aşağıdaki gibi olacaktır.

root@kxc:/home/ayhanarda# lxc-info -n new-container
Name: new-container
State: RUNNING
PID: 41933
IP: 10.0.3.16
CPU use: 1.58 seconds
BlkIO use: 33.30 MiB
Memory use: 69.94 MiB
KMem use: 12.58 MiB
Link: vethRUDGSR
TX bytes: 1.89 KiB
RX bytes: 2.84 KiB
Total bytes: 4.73 KiB

Konteyner’larımızı başlatmak ya da durdurmak için aşağıdaki komutları kullanabilirsiniz.

lxc-start -n new-container
lxc-stop -n new-container

Konteyner’larımızı pause ya da unpouse etmek için ise aşağıdaki komutları kullanabilirsiniz.

lxc-freeze -n new-container
lxc-unfreeze -n new-container

Eğer konteyner’ımızın snapshot’ını almak istersek önce durdurmalıyız ve sonra snapshot’ı aşağıdaki komutla alabiliriz.

lxc-stop -n new-container
lxc-snapshot -n new-container

Alınan snapshotları listemelek için aşağıdaki komutu kullanabilirsiniz.

root@lxc:/home/ayhanarda# lxc-snapshot -L -n new-container
snap0 (/var/lib/lxc/new-container/snaps) 2019:08:07 10:47:07

Snapshot’tan dönmek için ise komut aşağıdaki gibi olacaktır.

lxc-snapshot -r snap0 -n new-container

Konteyner’ı silmek için yine önce durdurmalı sonra silmelisiniz.

lxc-stop -n new-container
lxc-destroy -n new-container

Komutlarla uğraşmak istemiyorum , bir gui’mizde olsun diyorsanız aşağıdaki komut ile kurabilirsiniz.

wget https://lxc-webpanel.github.io/tools/install.sh -O – | bash

İşlem bittiğinde LXC web panel’e http://ipadresiniz:5000 nolu porttan admin kullanıcı adı ve şifresi ile erişebilirsiniz.

Ayhan ARDA

Ansible Nedir ? Ubuntu üzerine Ansible Kurulumu ve Host Ekleme

Ansible Nedir ? Ubuntu üzerine Ansible Kurulumu ve Host Ekleme

Ansible, sistem yöneticisinin işlerini basitleştirmek için geliştirilmiş, agent a ihtiyaç duymayan (agent bazen iyidir) otomasyon aracıdır. Kısaca işlem yapacağınız hostları bir dosya da kategorilere ayırıp tümüne ya da kategoriye uyan tümüne ya da dilediğiniz tek sunucuya komut göndermeniz yarar , sadece komut göndermekle kalmaz ayrıca playbook adını verdiği dosyalar ile sunucular üzerinden bir çok işlemi bir reçete haline getirip otomasyona sokabilirsiniz , örneğin 1000 sunucuya aynı anda nginx kurup virtual host ayarlarını değiştirip yayına al gibi işlemlerin çok daha fazlası mümkündür.

Ansible kurulumuna geçelim, ben test için bir ubuntu kurdum , versiyon 19. Sonra aşağıdaki komutları sırası ile çalıştırıyorum

apt-get install software-properties-common
apt-add-repository ppa:ansible/ansible
apt-get update
apt-get install ansible

Böylece ansible kurulumum tamamlanmış oldu , doğrulamak için aşağıdaki komutu kullanabilir ayrıca versiyonunu görebilirsiniz.

ansible –version

root@ansible:/home/ayhanarda# ansible –version
ansible 2.8.3
config file = /etc/ansible/ansible.cfg
configured module search path = [u’/root/.ansible/plugins/modules’, u’/usr/share/ansible/plugins/modules’]
ansible python module location = /usr/lib/python2.7/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.16 (default, Apr 6 2019, 01:42:57) [GCC 8.3.0]

Şimdi sıra host eklemeye geldi , ansible hostlara ssh key ile bağlanmakta , önce sunucumuzda bir key oluşturalım ki daha sonra bu key’i hostlara gönderip şifresiz bir şekilde oturum açabilelim.

ssh-keygen -t rsa

Yukarıdaki komutu next next diyerek geçebilirsiniz , sonrasında keyimiz default adı ile oluşmuş olacak , bunu hostumuza göndermek için aşağıdaki komutu kullanabilirsiniz. Benim örnek hostumun ip adresi 10.148.208.100 , Siz kendi bağlanacağınız ip adresini yazmalısınız. Aşağıdaki komutu yazdıktan sonra Size bir seferlik hostun şifresini soracak , yazıp geçebilirsiniz ve artık key’iniz gönderilmiş olacak.

ssh-copy-id root@10.148.208.100

Sonra key’in çalışıp çalışmadığının denemek için aşağıdaki şekilde host’a bağlanmayı deneyebilirsiniz.

ssh root@10.148.208.100

Şifresiz olarak Sizi içeri aldı ise key’iniz tamam demektir.

Bu işlemi tüm bağlanacağınız hostlara yapmalısınız.

Şimdi gelelim bu hostları ansible’ın config dosyasına ekleme işlemine. Sevdiğiniz bir editör ile /etc/ansible/hosts dosyasını açalım ve içini aşağıdaki şekilde dolduralım.

nano /etc/ansible/hosts

## Ayhan ARDA
[servers]
host1 ansible_ssh_host=10.148.208.100
host2 ansible_ssh_host=10.148.208.101
host3 ansible_ssh_host=10.148.208.102

#[web_servers] örnek!!
#host20 ansible_ssh_host=10.148.208.120
#host21 ansible_ssh_host=10.148.208.121
#host22 ansible_ssh_host=10.148.208.122

Şİmdi geleneksel bir ansible testi yapalım , ping gönderip pong cevabı almaya çalışacağız.

root@ansible:/home/ayhanarda# ansible all -m ping

host1 | SUCCESS => {
“ansible_facts”: {
“discovered_interpreter_python”: “/usr/bin/python”
},
“changed”: false,
“ping”: “pong”
}

host2 | SUCCESS => {
“ansible_facts”: {
“discovered_interpreter_python”: “/usr/bin/python”
},
“changed”: false,
“ping”: “pong”
}

host3 | SUCCESS => {
“ansible_facts”: {
“discovered_interpreter_python”: “/usr/bin/python”
},
“changed”: false,
“ping”: “pong”
}

Her şey yolunda gözüküyor , şimdi tek host a bir shell komutu gönderelim, bakalım cevap alabilecek miyiz? Ben host1’e gödneriyorum , all diyerek tümüne gönderebilirsiniz.

root@ansible:/home/ayhanarda# ansible -m shell -a “uptime && ifconfig” host1

host1 | CHANGED | rc=0 >>
11:06:17 up 1 day, 1:29, 4 users, load average: 8.28, 7.81, 7.73
enp4s0: flags=4163 mtu 1500
inet 10.148.208.100 netmask 255.255.255.0 broadcast 10.148.208.255
inet6 fe80::1e1b:dff:fe86:db8b prefixlen 64 scopeid 0x20
ether 1c:1b:0d:86:db:8b txqueuelen 1000 (Ethernet)
RX packets 6440934 bytes 423498590 (403.8 MiB)
RX errors 1221 dropped 0 overruns 6 frame 1221
TX packets 247728 bytes 327505028 (312.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0xdf200000-df27ffff

Birde işleri daha kolay hale getirmek için Ansible Tower var , bunu farklı bir yazıda ele alacağım.

Ayhan ARDA

Centos 7’de Warning: mysqli_connect(): (HY000/2002): Permission denied hatası ve çözümü

Centos 7’de Warning: mysqli_connect(): (HY000/2002): Permission denied hatası ve çözümü

Centos 7 sunucunuza apache , php ve phpmyadmin kurdunuz ve phpmyadmin ile uzaktaki bir veritabanına bağlanmaya çalışıyorsunuz , denerken başlıktaki hatayı aldınız diyelim , çözüm için aşağıdaki komutu kullanmalısınız.

setsebool -P httpd_can_network_connect 1

Böylece httpd servisinizin dışarıya ulaşmasına izin vermiş olacaksınız ve tekrar phpmyadmin’den denediğinizde erişebildiğinizi göreceksiniz.

Aslında centos kurulum sonrası selinux u kapatmanız da bu hatayı almanızı engelleyecektir. Eğer komple kapatmak istemiyorsanız yukarıdaki komutu kullanmak daha mantıklı bir seçenek olacaktır.

Ayhan ARDA

RunDeck Remote Sunucunun /tmp Dizininde Job Çalıştırma Hatası

RunDeck Remote /tmp Dizininde Job Çalıştırma Hatası

Linux sunucularda tmp klasörleri genelde yazılabilir olurlen bazı sunucularda üzerine kurulan uygulamalar bu dizinleri daha secure hale getireibliyor , örneğin cpanel kurulu bir sunucunuz var ise rundeck job eklediğinizde remote script çalıştıracağım derseniz hazırladığınız bash scripti buraya atamıyor ve aşağıdaki gibi bir hataya düşüyor.

bash: /tmp/9-26-rc01-dispatch-script.tmp.sh: Permission denied
Failed: NonZeroResultCode: Remote command failed with exit status 126

Execution failed: 26 in project RC: [Workflow result: , step failures: {1=Dispatch failed on 1 nodes: [rc01: NonZeroResultCode: Remote command failed with exit status 126 + {dataContext=MultiDataContextImpl(map={ContextView(step:1, node:rc01)=BaseDataContext{{exec={exitCode=0}}}, ContextView(node:rc01)=BaseDataContext{{exec={exitCode=0}}}}, base=null)} ]}, Node failures: {rc01=[NonZeroResultCode: Remote command failed with exit status 126 + {dataContext=MultiDataContextImpl(map={ContextView(step:1, node:rc01)=BaseDataContext{{exec={exitCode=0}}}, ContextView(node:rc01)=BaseDataContext{{exec={exitCode=0}}}}, base=null)} ]}, status: failed]

Bu durumda çözüm olarak /tmp dizinlerinize ekstra izin vermek yerine rundeck’in default olarak ulaşmaya çalıştığı dizini değiştirmek bana daha mantıklı gelmekte.

Bunun için rundeck’te ilgili projenin project.properties dosyasını açınız. Eğer /tmp yerine ilgili işlemi /root dizininde yapmasını istiyor isek aşağıdaki satırı dosyaya eklemeliyiz. Böylece job’u tekrar çalıştırdığınızda artık /tmp yerine /root dizinine scripti aktaracak ve çalıştırabilecektir.

project.file-copy-destination-dir=/root

Ayhan ARDA

Icınga2 de Ping Servisini Disable Etmek

Icınga2 de eklenen her host default olarak ping servisi ile geliyor , yani biz sadece http kontrol et desekte ayrıca ping atıp host un yaşayıp yaşamadığına bakmaya çalışıyor , oysa hostumuz ping’e kapalı olabilir ya da ping atmak istemiyor olabiliriz. O halde çözümü icinga2 de apply rule’larda aramalıyız.

Aşağıdaki dosyayı açıp inceleyelim.

/etc/icinga2/conf.d/services.conf

İçinde aşağıdaki bölümü göreceksiniz.

apply Service “ping4” {
import “generic-service”
check_command = “ping4”
assign where host.address
}

Yapmamız gereken hangi host a ping atılmasını istemiyor isek aşağıdaki örnek şekli ile son parantez öncesine bir satır girmek.

ignore where match(“IP-ADRESI”, host.address)

Eğer birden fazla ping atılmasını istemediğiniz sunucu var ise aşağıdaki şekilde sayıyı arttırabilirsiniz.

ignore where match(“IP-ADRESI”, host.address) || match(“
IP-ADRESI-2″, host.address)

Sonuç olarak dosyamızın son hali aşağıdaki gibi olmalı.

apply Service “ping4” {
import “generic-service”
check_command = “ping4”
assign where host.address
ignore where match(“
IP-ADRESI”, host.address) || match(“IP-ADRESI-2”, host.address) || match(“
IP-ADRESI-3″, host.address)
}

Sonrasında service icinga2 restart ile yazdığımız kuralın aktif olmasını sağlamalıyız.

Ayhan ARDA