Skip to content

docker kullanarak zabbix kurulumu

öncelikle kullanacağız image leri docker repository den çekeceğiz. Bu örnekte sunucu olarak nginx ve veritabanı olarak mysql kullanıyorum. daha optmizebir bir yapı taiki kurulabilir.

docker pull mysql
docker pull zabbix/zabbix-server-mysql
docker pull zabbix/zabbix-web-nginx-mysql
docker pull zabbix/zabbix-java-gateway
docker pull zabbix/zabbix-agent

sonrasında

docker images

ile kontrolleri yapabiliriz.

şimdi sıra ile imageleri başlatalım. kullanılan port kullanıcı adı ve şifrenizi mevcut sistemine göre uyarlamanız gerekebilir.

docker run --name mysql-server -t -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbixmysqlsifre" -e MYSQL_ROOT_PASSWORD="mysqlrootsifre" -d mysql --character-set-server=utf8 --collation-server=utf8_bin --default-authentication-plugin=mysql_native_password
docker run --name zabbix-java-gateway -t --restart unless-stopped -d zabbix/zabbix-java-gateway
docker run --name zabbix-server-mysql -t -e DB_SERVER_HOST="mysql-server" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbixmysqlsifre" -e MYSQL_ROOT_PASSWORD="mysqlrootsifre" -e ZBX_JAVAGATEWAY="zabbix-java-gateway" --link mysql-server:mysql --link zabbix-java-gateway:zabbix-java-gateway -p 10051:10051 --restart unless-stopped -d zabbix/zabbix-server-mysql
docker run --name zabbix-web-nginx-mysql -t -e DB_SERVER_HOST="mysql-server" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbixmysqlsifre" -e MYSQL_ROOT_PASSWORD="mysqlrootsifre" --link mysql-server:mysql --link zabbix-server-mysql:zabbix-server -p 80:8080 --restart unless-stopped -d zabbix/zabbix-web-nginx-mysql
docker run --name zabbix-agent --link mysql-server:mysql --link zabbix-server-mysql:zabbix-server -e ZBX_HOSTNAME="Zabbix server" -e ZBX_SERVER_HOST="zabbix-server" -d zabbix/zabbix-agent

doğru şekilde çalıştığını kontrol edelim.

docker ps -a

şimi konfigürasyon bilgilerine bakalım… burada bize ip adresi gerekiyor…

docker inspect zabbix-agent

şimfi bir tarayıcı açarak ip adresini yazalım. zabbix kullanıcı giriş sayfası ile karşılaşırsak herşey tamamdır. default kullanıcı ado şifresi

Username: Admin
Password: zabbix

şeklindedir

windows da taskkill ile görev sonlandırma

zorunlu olarak windows kullanıyorsanız linuxdeki görevi oldürmek için ps ve kill kombinasyonlarını sürekli arıyorsunuz. windowsda bunun için bir tool var aslında..

tasklist /v

ile mevcut görev tablosunu görebilirsiniz. bu tabloda pid ile görevi sonlandırmak isterseniz taskkill uygulamasını kullanmamız gerkeiyor.

taskkill /F /PID pid-numarasi

uygulama adı ise görevi sonlandırmak isterseniz

taskkill /F /IM "ferhatcicektest.exe"

parametlerini kullanailirsiniz. uygulama ismi içinde joker karekter kullanımına izin verilmekte.

taskkill /F /IM "ferhat**"

rainloop dizin ve dosya yetki ayarları

kurulumun /var/www/rainloop dizinine yapıldığını varsayarak yetkili kullanıcı ile aşagıdaki komutlar çalıştırılmalıdır

cd /var/www/rainloop
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
cd /var/www/rainloop
chown -R www-data:www-data .

wsl sürümünü ögrenmek

windows son sürümleri ile hayatımıza girenWSL ( Windows Subsystem for Linux ) in hangi versionda çalıtığını ögrenmek için aagıdaki komut yapısı kullanılabilir.. wsl2 kullanabilemek için windowsun bazı güncellemeleri almış olması gerekiyor.

PS C:\Users\fcicek> wsl -l -v
  NAME                   STATE           VERSION
* Debian                 Stopped         1
  docker-desktop-data    Running         2
  Ubuntu-18.04           Running         1
  docker-desktop         Running         2

wsl ile wsl2 arasında ne fark derseniz microsoftun kendi sitesinde aşagıdaki tablo yer alıyor.

FeatureWSL 1WSL 2
Integration between Windows and Linux
Fast boot times
Small resource foot print
Runs with current versions of VMware and VirtualBox
Managed VM
Full Linux Kernel
Full system call compatibility
Performance across OS file systems

Intel AMT den kurtulmaya çalışmak

lenovo, hp gibi bir bir pc niz varsa intel üzerinde kimi uzmanlar tarafından bir donanım arka kapası olarak adlandırılan AMT ilk kullanmaya başladığınız andan itibaren aktif olabilir.

farklı şekilde açıklanabilselde genel olarak ilk zamanlarda intel bunu yalanladı, belgelendikten sonra yeni chiplerinde kullanıcılar için sunulmuş bir özellik gibi sunulmaya başladı.

peki ben pc imde bunun aktif olup olmadığını nasıl anlarım derseniz en basit yolu bir tarayıcı açın ve

http://localhost:16992

yazın eğer karşınza

Intel® Active Management Technology 

başlığını içeren aşagıdaki ekran görüntüsüne benzer

bir sayfa geliyorsa pc nizde aktif demekdir. konfigürasyon türüne gelecek sayfa birebir aynı olmayabilir..

farklı şekillerde emin olmak isterseniz yönetici olarak cmd yi açın ve netstat ile bu serivs tarafından kullanılan portlara bakın.

C:\Program Files (x86)\Intel\SCS ACUConfig>netstat -na | findstr "\<16993\> \<16992\> \<16994\> \<16995\> \<623\> \<664\>"
  TCP    0.0.0.0:623            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:16992          0.0.0.0:0              LISTENING
  TCP    [::]:623               [::]:0                 LISTENING
  TCP    [::]:16992             [::]:0                 LISTENING

yukarıda görüldüğü üzere 4 farklı porttan dinleme yapılmaktadır.. servis bazlı kontrol etmek isterseniz ise

C:\Program Files (x86)\Intel\SCS ACUConfig>sc qc LMS
[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: LMS
        TYPE               : 10  WIN32_OWN_PROCESS
        START_TYPE         : 4   DISABLED
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : "C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\LMS\LMS.exe"
        LOAD_ORDER_GROUP   :
        TAG                : 0
        DISPLAY_NAME       : Intel(R) Management and Security Application Local Management Service
        DEPENDENCIES       : RPCSS
        SERVICE_START_NAME : LocalSystem

şeklinde kontrol edebilirsiniz. görüldüğü üzerer benim kontrol yaptığım bilgisayarda aktif görülüyor.. AMT yi devre dışı bırakmaya BIOS dan başlamak gerekiyor..

BIOS açılış ekranında

MEBx - F6

seçimi yapılmalı. ( Ben HP elitebook serisinden BIOS güncel bir PC kullanınıyorum. BIOS sürürümlerine göre menülerde değişiklik olabilir. ) aşagıdaki şekildeki bir ekranla karşılaşmanız gerekiyor.. burada fabrika ayarları çıkış şifresi “admin” dir. bu şifreyi değiştirmeniz gerekiyor. değişim sonrası AMT ve ME aktif duruma gelecektir.

ME kısmında yapılacak hatalar Pc nin açılmamasına neden olabilir dikkat edilmesinde fayda var.

AMT konfigürasyon içine girelim. ekran görüntüsü aşagıdaki gibi olacaktır.. artık “Manageability Feature Selection” ini disable yapailiriz.

bu özelliği disable ederseniz KVM vb özelliklere sahip uzaktan yönetim araçlarının pc nizde artık tüm özellikleri doğru şekilde çalışmayabilir.

BIOS ayarlarını kaydedip windowsu yeniden açabilirsiniz. windows açıldıktan sonra pc nizde intelle alakalı bilmediğiniz

Intel® Active Management Technology (Intel® AMT)

ile alakalı olabilecek tüm yazılımları kaldırın.

MTA kurulumu sonrası kontroller

shell üzerinden mevcut kullanıcınız ile farklı bir kullanıcıya eposta göndermek için

echo "test eposta icerigi" | mail -s "test eposta basligi" testkullanici@ferhatcicek.com

kullanabilirsiniz.. mail yoksa mailutils paketini kurmanız gerekebilir.

sudo apt-get install -y mailutils

mail gönderme başarısız olduysa logları incelemek gerekcek. MTA olarak postfix kullandığımız varsayarak maille ilgili en temel loglara bakmak için

sudo tail /var/log/mail.log
sudo tail -f -n 100 /var/log/syslog | grep postfix

kullanabiliriz….

php mail() fonksiyonunu kullanarak eposta sunucunuzun sorun olmadan kullanılma testlerini yapmak istersek en temel php kodu aşagıdaki şekilde olacaktır.

<?php
$to      = 'testkullanici@ferhatcicek.com';
$subject = 'test epostasi';
$message = 'test eposta icerigi';
$headers = 'From: testkullanici2@ferhatcicek.com' . "\r\n" .
    'Reply-To: testkullanici2@ferhatcicek.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?>

Time Zone kontrolü ve değişikliğinin yapılması

öncelikle sistem üzerinde tanımlı “time zone” kontrolünü yapalım

root@test:# timedatectl status
                      Local time: Fri 2020-10-30 00:14:47 CST
                  Universal time: Thu 2020-10-29 16:14:47 UTC
                        RTC time: Fri 2020-10-30 00:14:48
                       Time zone: Asia/Shanghai (CST, +0800)
       System clock synchronized: yes
systemd-timesyncd.service active: yes
                 RTC in local TZ: yes

Warning: The system is configured to read the RTC time in the local time zone.
         This mode can not be fully supported. It will create various problems
         with time zone changes and daylight saving time adjustments. The RTC
         time is never updated, it relies on external facilities to maintain it.
         If at all possible, use RTC in UTC by calling
         'timedatectl set-local-rtc 0'.

çıktından görüldüğü gibi sunucuz time zone u Asia/Shanghai olarak ayarlanmış görülmektedir. bunu ülkemize uygun olarak değiştireceğiz. öncelikle listede istanbul varmı kontrolü yapalım.

root@test:# timedatectl list-timezones | grep Istanbul
Europe/Istanbul

artık değişikliği yapabiliriz.

root@test:# timedatectl set-timezone Europe/Istanbul

time zone değişikliğini yapmış olduk. duruma ait kontroli tekrarlayalım.

root@test:# timedatectl status
                      Local time: Thu 2020-10-29 19:15:30 +03
                  Universal time: Thu 2020-10-29 16:15:30 UTC
                        RTC time: Thu 2020-10-29 19:15:30
                       Time zone: Europe/Istanbul (+03, +0300)
       System clock synchronized: yes
systemd-timesyncd.service active: yes
                 RTC in local TZ: yes

Warning: The system is configured to read the RTC time in the local time zone.
         This mode can not be fully supported. It will create various problems
         with time zone changes and daylight saving time adjustments. The RTC
         time is never updated, it relies on external facilities to maintain it.
         If at all possible, use RTC in UTC by calling
         'timedatectl set-local-rtc 0'.

wget ile google drive dan büyük boyutlu dosya indirmek

google drive özellike büyük boyutlu dosya indirecekseniz bu bazen sorun olabiliyor. öncelikle google drivedaki paylaşımı açılmış dosya bağlantısını alın.

https://drive.google.com/file/d/DRIVE_DOSYA_ID/view?usp=sharing

buradaki DRIVE_DOSYA_ID yazan alanı aşagıdaki komutta ile değiştirin ve dosya adı vermeyide unutmayın.. kod çok temiz ama çalışmaktadır.

wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=DRIVE_DOSYA_ID' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=DRIVE_DOSYA_ID" -O DOSYA_ADI && rm -rf /tmp/cookies.txt

wordpress kalıcı bağlantılar sorunu

seo uyumu için wordpress de kalıcı bağlantılar altında değişikli yaptınız ve siteniz linkleri doğru olarak çalışmıyorsa temelde kontrol etmeniz gereken bir kaç nokta var. ubuntu + apache kullanıdığı varsılarak kontrol edilmesi gerekenlerden ilki ve temel sorunu sitenize ait .htaccess dosyası ve içeriğinin kontrolüdür.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

kalıcı bağlantılar altında değişik yaptığınız dosya sistemi izinleri doğru şekilde yapılandırıldıysa wordpress .htaccess içeriğine yukarıdaki satırları ekleyecektir. .htacesss içeriği kontrol edilmeli ve içerik boşsa en temel olan yukarıdaki satırlar eklenmelidir.

daha genel bir sorun ise mod_rewrite eklentisi sorunları olabilir. modul aktif edilmeli ve apache yeniden başlatılmadır

sudo a2enmod rewrite

sudo systemctl restart apache2

bunu yaptınız ve hala düzelmiyorsa birde apache.conf dosyasının kontrol edilmesinde fayda var. AllowOverride parametlerisini All olarak değiştirin.

    <Directory /var/www/html>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Require all granted
    </Directory>

ssh root erişimini engelleme

en temel güvenlik ihtiyaçlarından bir tanesidir root kullanıcısının ssh ile bağlantısının engellenmesi.

$ sudo nano /etc/ssh/sshd_config

ssh konfigürasyon dosyasını açıyoruz ve PermitRootLogin ve PasswordAuthentication parametlerini no olarak değiştiriyoruz.

PermitRootLogin no
PasswordAuthentication no

sonrasında takibi sunucumu yeniden başlatmayı ihmal etmiyoruz.

sudo service ssh restart
Back To Top