NELER YENI?
Yukleniyor...

Zabbix ile Infobip API Kullanarak SMS Göndermek

Bu gönderide kendi yazdığım bir scripti paylaşacağım.

Zabbix'in SMS gönderme yeteneği var ancak bu bir SMS Gateway kullanarak mümkün. Infobip veya Infobip altyapısını kullanan bir bayi ile çalışıyorsanız, Infobip API'sini kullanarak SMS göndermeniz mümkün. Kritik uyarıları Zabbix'in Infobip API'si Kullanarak SMS göndermesini istiyorsanız yazıyı okumaya devam edin.


İlk önce yazdığım script dosyasını aşağıdaki linkten indirin.
https://yadi.sk/d/028neITBmURmw
Bu dosyayı notepad++ gibi editörle açın ve aşağıdaki satırı kendi bilgilerinizle değiştirin.
date_default_timezone_set('Europe/Istanbul'); //Saat Dilimi
$baglanti         = 'https://api.infobip.com/sms/1/text/advanced'; //Api URL adresi
$kullanici = 'kullanici'; //Kullanici Adi
$parola         = 'parola'; //Parola
$gonderici = 'ZabbixSys'; //Godnerici Isim
$hataayiklama         = false; //Debug ayari

  • İlk satır bulunduğunuz coğrafyanın saat dilimi. Tam listesini bu linke tıklayarak görebilirsiniz.
  • İkinci satır api URLsi. Farklı bir hizmetin apisini kullanıyorsanız bu script çalışmayabilir.
  • Üçüncü satıra tırnaklar ' arasına aldığınız hizmetin kullanıcı adını yazın.
  • Dördüncü satıra tırnaklar ' arasına aldığınız hizmetin kullanıcı parolasını adını yazın.
  • Beşinci satır SMS mesajında kimden kısmının görünen adıdır. Kendinize uygun olarak değiştirebilirsiniz.
  • Altıncı be son satır ise debug ayarıdır. true yazarsanız /tmp klasöründe her işlem için kayıt tutar.
Bunların dışında herhangi bir şey silmeyin veya değiştirmeyin. Kaydettikten sonra bu scripti Zabbix sunucusuna yüklemeniz gerekiyor. İlk önce Zabbix Sunucuya ssh girişi yaparak conf dosyasını görüntüleyin.
 nano /etc/zabbix/zabbix_server.conf
Conf dosyasında aşağı doğru gelerek şu satırı bulun.
### Option: AlertScriptsPath
#       Full path to location of custom alert scripts.
#       Default depends on compilation options.
#
# Mandatory: no
# Default:
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts
Kırmızı ile işaretlediğim satırda AlertScriptPath parametresinin gösterdiği dizin '/usr/lib/zabbix/alertscripts' şeklindedir. Buradan kontrol etmelisiniz sizde farklı bir yer olabilir.

Conf dosyasında bir değişiklik yapmadan çıkıyoruz. Zabbix sunucu ile SFTP bağlantısı yaparak ilgili içeriğe giriyoruz ve script dosyasını bu dizin altına yolluyoruz. Yükleme yaptıktan sonra izinlerini 755 yapmalıyız. Bunu bağlantı yaptığınız destekliyorsa SFTP arayüzünden (Filezilla gibi) yapabileceğiniz gibi ssh üzerinden de yapabilirsiniz. SSH için;
cd /usr/lib/zabbix/alertscripts
chmod 755 cli_sms_nfbp_zabbix.php
Komutlarını çalıştırmanız yeterlidir. Zabbix arayüzünden ayarlamaya geçmeden önce bir test yapalım. Zabbix sunucusuna SSH ile bağlanın ve scriptin bulunduğu klasöre giriş yapın.
cd /usr/lib/zabbix/alertscripts
Telefon numaranızı yazarak scripti çalıştırın.
./cli_sms_nfbp_zabbix.php 905991234567 "Deneme Mesaj"
Eğer ayarlarınız başarılı ise cep telefonunuza SMS gelecektir bir hata oldu ise ekranda çıktısını görebilirsiniz.

Artık Zabbix arayüzüne bağlanalım ve gerekli ayarları yapalım. Administration >> Media Types sayfasına giriş yapın. Sağ üst köşede bulunan Create media type butonuna tıklayın. 

Bir isim verin ben Infobip SMS yazdım.
Type kısmından script'i seçin.
Script name kısmına yüklediğiniz scriptin tam adını yazın: cli_sms_nfbp_zabbix.php
Enabled işaretli olmalıdır.
Add butonuna basarak ekleyin.

Administration >> User sayfasına gelin, sağ üst köşedeki seçenek Users groupsta seçili ise değiştirip Users'ı seçin sayfada değişecektir. Ben burada Admini ayarlayacağım. Admin adının üzerine tıklayın. Bu sayfadan Media sekmesine tıklayın ve add yazısına tıklayın yeni bir pencere açılacaktır.
Type kısmından eklediğiniz script ismini seçin. Sent to kısmına telefon numarasını yazın. Add butonuna tıklayın. Daha sonra update butonuna tıklayıp değişiklikleri kaydedin.

En son aşamada uyarı SMS'i gönderecek actionu oluşturalım. Configuration >> Actions sayfasında sağ üst köşede bulunan Create action butonuna tıklayın. 
Yeni bir isim verin.
SMS gönderilirken mesaj olarak sadece Subject (konu) alanında bilgiler kullanılır. Ben burayı olduğu gibi bırakıyorum.
Message kısmını siliyorum. 
Conditions sekmesinden otomatik gelen koşulları remove ile kaldırıp, New condition kısmından yeni bir trigger seçip alttaki küçük add yazısına tıklıyorum
Operation sekmesine geçip New yazısına tıklayın.
Send only to kısmından eklediğimiz script adını seçin.
Send to Users kısmından add butonuna tıklayıp, Admin kullanıcısını seçin.
Seçim işlemleri bittiğinde alttaki küçük add yazısına tıklayınve en son Add butonuna tıklayarak kaydedin.. 

Artık seçtiğiniz trigger uyarı verdiğinde telefonunuza SMS mesajı gelecek. Test edebilirsiniz. 
Trigger, Action ile ilgili bilginiz yok ise bunla ilgili ve daha fazla bilgiyi Zabbix Yapılandırma konu başlığı ile yazdığım gönderiden alabilirsiniz.
http://www.akindemircan.com/2015/12/zabbix-yaplandrma.html


22 yorum: Yorumunuzu Yazın

  1. dediklerinizi uyguladığımda şu hata çıkmakta yardımcı olursanız sevinirim.

    PHP Warning: curl_error(): 4 is not a valid cURL handle resource in

    YanıtlaSil
    Yanıtlar
    1. Bu hatayı konsol çıktısında mı alıyorsunuz?
      Eğer öyle ise indirdiğini dosyayı açın 86. satırda şu kodu bulun:

      die(curl_error($ch)."\n");

      ve şunula değiştirin:

      die(curl_error($ch).' - '.$httpCode."\n");

      Aldığınız hatanın sonuna bir numara daha eklenecektir onu burada paylaşın.

      Sil
    2. Birde isletim sisteminizde libcurl kutuphanesinin yuklu oldugundan emin olun.

      Sil
  2. Evet consolda veriyor hatayı centos 7 üzerinde kurulu zabbix

    [root@localhost ~]# curl -V
    curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.19.1 Basic ECC zlib/1.2.7 libidn/1.28 libssh2/1.4.3


    çıktı sonucu bu versiyon kontrolü yaptığımda


    dosyada söylediğiniz değişikliği yaptıktan sonra yine çıkan hatalar aynı

    PHP Warning: curl_error(): 4 is not a valid cURL handle resource in /usr/lib/zabbix/alertscripts/cli_sms_nfbp_zabbix.php on line 85
    PHP Warning: curl_error(): 4 is not a valid cURL handle resource in /usr/lib/zabbix/alertscripts/cli_sms_nfbp_zabbix.php on line 86

    YanıtlaSil
    Yanıtlar
    1. Eğer yazdığım scripti infobip dışında farklı bir altyapı sağlayan bir sağlayacı ile denerseniz bu script çalışmaz. Siteye baktığımda XML, SOAP ve HTTP (curl) olarak uygunlar ancak tabiki infobip için hazırladığım curl parametlereleri bahsettiğiniz sağlayıcı ile uyumsuz.

      Sil
  3. Bizim kullandığımız sms firması mobildev kendi siteleri üzerinden yayınladıkları örnek scripti denediğimde consol üzerinde aşağıdaki hataları almaktayım.

    ./zabbixsms.php: line 1: ?php: No such file or directory
    ./zabbixsms.php: line 3: syntax error near unexpected token `$prmPostAddress,$prmSendData'
    ./zabbixsms.php: line 3: ` function HTTPPoster($prmPostAddress,$prmSendData){'



    mobildev üzerinden indirdiğim script içeriği

    ",$arrDonus);
    echo $strDonus;
    }

    function MesajGonder(){
    $strQuery = "username=test&company=mb1000&password=87542&action=0&message=Deneme&numbers=5327654321,5427654321,5557654321";
    $strDonus = HTTPPoster("http://gateway.mobilus.net/gateway.asp?",$strQuery);
    echo $strDonus;
    }

    function Raporla1(){
    $strQuery = "username=test&company=mb1000&password=89tr34&action=1&msgid=2947582";
    $strDonus = HTTPPoster("http://gateway.mobilus.net/gateway.asp?",$strQuery);
    $arrDonus = explode(Chr(10),$strDonus);
    $strDonus = implode("
    ",$arrDonus);
    echo $strDonus;
    }

    ?>





    username ,company ve password kısımlarını düzenledikten sonra çalışması gerekmekte ama çalışmıyor sizin dosyanızdan farklı olarak company kısmına bayi kodu girilmesi gerekli .

    YanıtlaSil
    Yanıtlar
    1. Mobildev için yeni bir script hazırlamak gerekiyor bu da zaman meselesi. Orada bir hesabım olmadığı için scripti deneyemeyeceğim. Bu hafta zaman bulabilirsem bir script yazıp denemeniz için burada yayınlarım

      Sil
  4. Teşekkürler inşallah zaman bulabilirsiniz

    YanıtlaSil
    Yanıtlar
    1. Merhaba,

      Aşağıdaki linkten dosyayı indirebilirsiniz.

      https://yadi.sk/d/JYgSSDCQrvTaf


      $kullanici degiskenine kullanıcı adınızı, $parola degiskenine parolanizi, $gonderici degiskeninize ise bayi kodunu yazıp dosyayı yükleyin.
      Dosyaya 755 izni verdikten sonra aşağıdaki şekilde çalıştırın.

      ./cli_sms_mbldv_zabbix.php 905991234567 "Deneme Mesaj"

      İlgili API mesajda boşluk kabul etmediğinden boşluklar yerine alt tire koyuyor otomatik "_" ( parametlerler url (get) şeklinde gittiğinden boşluk yerine %20 işe yararmı deneme yapamadığım için bilmiyorum)

      Sonucu paylaşırsanız sevinirim.

      Sil
    2. Birde çalıştırdıktan sonra sonuç olarak hata koldarı olan 01, 02, 04, 05, 06 verisi konsola gelmemesi gerekiyor.

      01 Hatalı Kullanıcı Adı Hatalı Şifre Hatalı Bayi Kodu
      02 Yetersiz kredi (Mesaj gönderimi), Böyle bir mesaj kodu (ID) yok, Paket işlenmemiş ya da Gateway tarafında beklemede (Raporlama)
      04 Eksik parametre girişi
      05 Hatalı parametre girişi
      06 Tanımsız Originator bilgisi

      Sil
  5. Merhaba Akın Bey çok teşekkürler sms scripti sorunsuz çalıştı lakin sizinde dediğiniz gibi mesaj kısmına boşluk bırakılınca _ gözükmekte gönderilen mesajlarda bunla ilgili bir çözüm üretebilirmiyiz acaba. Diğer bir sorum ben zabbix içerisinde e-mail ayarlamalarını yapıyorum ancak bir uyarı maili gelmiyor sistem tarafından bazı yabancı sayfalarda email içinde script kullanıldığını veya smtp için sunucuya mail kurulumu yapılmış nasıl bir yol izlemem gerekmekte yardımcı olursanız sevinirim.

    YanıtlaSil
  6. Ssh üzerinden komut ile sms göndermeyi denediğimde anında sms telefonuma geliyor ancak zibbax üzerinden sms gönderildi yani sent yazsada telefonuma gelen bir mesaj yok bu neden olabilir.

    YanıtlaSil
  7. Merhaba,

    Aşağıdaki dosyayı yükleyerek tekrar deneyin gelen mesajda boşluk sorununu kontrol edin.

    https://yadi.sk/d/kIYVLk-3s2Bes

    Eğer _ yeine %20 gibi bir şey gelirse bunu mobildev'e sormanız gerekiyor.

    dosyaya 19. satırda bir $hataayıklama değişkeni yerleştirdim karşılığını false yerine true yazın, kaydedin ve zabbix ile tekrar gondermeyi deneyin. /tmp klasörününzün altında smszabbix_ ile başlayan bir dosya olacaktır içeriğini burada paylaşın sorun neymiş buradan bakalım.

    E-Posta olayında Zabbix 2.x sürümlerinde maalesef kullanıcı adı parola yazacağınız bir yer bulunmuyor. Ben mail sunucu üstünden zabbix IPsine relay hakkı vererek sorunu çözdüm. Relay olayını internetten araştırabilirsiniz ancak dikkatli olun IP gözetmeksizin relay hakkı verirseniz mail sunucunuz spam dağıtan bir merkeze döüşür. Scriptle uğraşmadım, o yüzden size örneğini verebileceğim bir dosya elimde yok.

    YanıtlaSil
  8. Cevaplarınız için teşekkürler ,şuan benim kullanmakta olduğum zabbix 3.x sürümü ve bunda kullanıcı adı parola kısımları mevcut ancak yinede mail gönderimi sağlayamadım sizin dediğiniz işlemi netten kontrol edicem en kötü script üzerinden denemeyi düşünüyorum.

    Sms değişikliklerini yapıp denedikten sonra tekrar geri dönüş yaparım.

    YanıtlaSil
  9. Şuan yapılan son değişiklikten sonra sms gönderimi düzeldi _ çıkmıyor boşluk olarak gözükmekte.Email ile ilgili tmp klasörüne baktığımda bir hata logu yok şuan için ilk başlarda denemesini yaptığım ve gönderimde hata aldığım zabbixsms logları mevcut.

    YanıtlaSil
    Yanıtlar
    1. Dosyada 19. satır aşağıdaki gibi olmalı:

      $hataayiklama = true; //Debug ayari

      Zabbixte script nameyi belirttiğiniz yeri de bu dosyanın adı olarak güncellemeniz gerekiyor. Ben denediğimde /tmp klasöründe dosya oluşturuyor. Oluşturduğunuz Actionu ve ayarlarınızı yeniden gözden geçirin.

      Sil
  10. Merhaba printscreen yaptığım resimlere alt taraftaki linklerden ulaşıp bakarsanız sevinirim lakin dediklerinizin hepsini kontrol etmeme rağmen farklı birşey görmedim.

    http://i.hizliresim.com/6n2P1E.jpg

    http://i.hizliresim.com/bb5D10.jpg

    http://i.hizliresim.com/NEqABY.jpg

    http://i.hizliresim.com/7vkgna.jpg

    YanıtlaSil
  11. Sanırım sorunun buldum media types kısmında script name hemen altında script parameter kısmı var oraya alt kısma yazdığım makroları girmem gerekiyor sanırım

    {ALERT.SENDTO}
    {ALERT.SUBJECT}
    {ALERT.MESSAGE}

    YanıtlaSil
  12. Actions kısmında Operations sekmesinde send only to seçeneğinde, script için oluşturduğunuz media type'i seçmeniz gerekiyor. Users kısmında admin kullanıcısının media sekmesinde oluşturduğunuz media için cep telefon numarasını girmeniz gerekiyor. Zabbix 3.0'ı henüz denemediğimden dolayı parametre girilmesi zorunlumu bilmiyorum ama zorunlu olsa bile scriptin tmp klasründe bir log bırakması gerekiyor. Sisteminiz henüz script dosyasını tetiklemiyor. Hatalı da olsa çaıştırsın ki hatanın ne olduğunu yakalayalım.

    YanıtlaSil
  13. Bahsediğiniz kısımların hepsi olması gerektiği gibi şuan bitane sms göndermesi için hatalı bir host bilgisi girip bunuda sms script içerisine ve actions kısımlarına tanımladım.

    Bağlanamayıp hata verdiğinde sms göndermeye çalışacak o zaman net olarak sorunun devam edip etmediği ortaya çıkacak.

    YanıtlaSil
  14. Şuan sms gönderimi sorunsuz çalışmakta ,e-mail gönderimiyle alakalıda uyarı oluşturdum ancak gönderim yapmıyor şuan in proggress yazıyor bununla alakalı ne hatası verdiğine ait bakabileceğim veya kontrol yapabileceğim bir kısım varmı acaba

    YanıtlaSil
    Yanıtlar
    1. /var/log/zabbix/zabbix_server.log dosyasını inceleyebilirsiniz.

      Sil