Avalanchego’yuTelegram Bot’u yardımı ile izlemek
Avalanchego’yu Telegram Bot’u ile “gerçek zamanlı” uyarı mesajları alarak izlemek
21 Eylül 2020'de mainnet’e çıkan Avalanche’da validator yani onaylayıcı olmak için 2000 Avax sahibi olmak ve node kurmak gerekmektedir. Birçok Validator Node’u Ubuntu işletim sisteminde yani Linux üzerinde çalışmaktadır (henüz windows versiyonu deneyseldir). Bu yazıda Validator’lerin “Avalancego” process’ini kendilerine özel bir Telegram Bot’u yaratarak nasıl gerçek zamanlı izleyebilecekleri yani monitor edecekleri detaylı bir şekilde anlatılmıştır.
Avalanche Discord ve Telegram kanallarında Mainnet sonrası en çok sorulan sorulardan biri, validator’larin kurmuş oldukları “Avalanchego” yu nasıl takip edecekleri, eğer bir şekilde avalanche kapanırsa/sağlıklı çalışmazsa,CPU kaynak kullanımı yüksek seyir ederse bundan vakit kaybetmeden nasıl haberdar olabilecekleri ile ilgilidir. Bunun için arzu edenler geliştirmiş olduğumuz Telegram bot uygulamasından yararlanabilir. Öncelikle bu alarmları Telegram aracılığı ile alabilmeniz için, Telegram’da kendinize özel bir bot yaratmanız gerekmektedir.
Telegram BOT oluşturma adımları:
1. İlk adımda, BotFather ile kendi botumuzun hesabını oluşturmalıyız. BotFather kendimiz için bir Telegram botu oluşturmamızı sağlar.
Telegram’da “arama” kısmına “BotFather” yazın. Yanında mavi tik’li olanı seçin.
BotFather’e tıkladığınızda gelen ekranın aşağısındaki butonla “BotFather” ile mesajlaşmayı başlatın. START butonuna bastıktan sonra konuşmaya başlamış olucaksınız. Sizi BotFather’in yardım(help) mesajı karşılayacak.Bu mesajı okuyarak kendi botunuzu oluşturabilirsiniz.
2. Botfather ile konuşmayı başlattıktan sonra, /newbot yazıp Enter’a basarak yeni bot oluşturma komutunu çalıştıralım. Şu şekilde bir cevap gelmeli:
3. /newbot komutunu mesaj olarak gönderdikten sonra sizden botun ismini isteyecektir. Deneme için bu yazıda örnek olarak testavalanchego ismini vericeğiz. Siz istediğiniz ismi verebilirsiniz.
4. Sonrasında sizden telegram botunuz için kullanıcı ismi isteyecektir. Bunun için seçtiğiniz ismin son 3 hanesinde dikkat etmemiz gereken bir kural var. Seçtiğiniz isim ya Bot ya da _bot ile bitmeli. Örneğin testavalanchegoBot, testavalanchego_bot gibi kullanıcı adları kullanılmalıdır. Biz örneğimizde şu şekilde yaptık:
5. Kullanıcı adı seçtikten sonra BotFather size botunuzun telegram url’sini ve token değerini içeren bir cevap verecektir.
NOT: Gelen ekrandaki HTTP API: sonrasında yazan bölüm TOKEN kısmıdır. Elde ettiğimiz TOKEN değerini script kurulumunda kullanacağız.
Bu aşamaya kadar kendimize özel bir bot oluşturduk, TOKEN i gördük gelen cevapta, ama bot şu an aktif değil. Yani botun çalışması için ikinci adımı gerçekleştirmeliyiz.
Öncelikle yeni oluşturduğumuz bot’un ismini “Testavalanchego” aratıp bulalım. Gelen sonucun üzerine tıklayalım.
Tıkladığımızda aşağıdaki gibi bir ekran gelecek. En alttaki “start” butonuna tıklayalım.
Gelen ekranda aşağıdaki gibi “/start” yazıp enter yapalım.
Şimdi aşağıdaki gibi TOKEN’ı kullanarak CHAT ID’mizi öğreneceğiz.
Node’umuzun kurulu olduğu makinede aşağıdaki 3 komutu çalıştırarak CHAT_ID’ mizi öğrenebiliriz. TOKEN ve CHAT_ID bize telegram botumuza mesaj yollayabilmemiz için lazım olacak.
# install jq
sudo apt-get install jq -y
# Set TOKEN variable
TOKEN=1386633333:AAHAAAAAAAA-afV-oAAAAAAAAAAAAAAAAAA914s8
# Get CHAT_ID
curl -s https://api.telegram.org/bot$TOKEN/getUpdates | jq .result[0].message.chat.id
10522222228
CHAT_ID: 10522222228
Eğer CHAT_ID gelmez ise, telegram a gidip botunuza tekrar birkaç kez /start komutu gönderdikten sonra yukarıdaki curl komutu ile CHAT ID’nizi alabilirsiniz.
Monitor Scripti ve Kurulum Adımları :
Bu aşamaya kadar Telegram bot’unu yaratıp kullanım için hazırlamış olduk. Şimdi avalanchego’yu izlememizi sağlayan script’i kuralım.
Bu scriptin 3 temel görevi var: avalanchego’yu her dakika healthy API’sini çağırıp sağlıklı durumda olup olmadığını anlamak, unhealthy ise veya erişemez/node kapalı ise yada makinenin CPU durumu belli bir eşik değerini( varsayılan %40) geçerse Telegram üzerinden alarm bildirimlerini alabilmek.
Sciript parametre olarak TOKEN, CHAT ID, CPU Eşik değeri (threshold) ve IP bilgilerini almaktadır. TOKEN ve CHAT ID değerlerinin verilmesi sizin oluşturduğunuz bota alert göndermek açısından zorunludur. CPU ve IP parametreleri ise opsiyoneldir. Bir çok kullanıcı API’leri 127.0.0.1 IP’sinden istek yaparak almaktadır. Eğer varsayılan olarak verilen %40 CPU değeri sizin için uygun ise ve 127.0.0.1 IP ‘sini kullanıyorsanız bu opsiyonel parametreleri değiştirmenize gerek bulunmamaktadır. CPU eşik değerini değiştirmek isteyenler veya API’leri için başka IP kullananlar bunları değiştirip kendi bilgilerini girebilirler.
Kurulum ve çalıştırma adımları:
1-) Home dizinine cd komutu ile gidilir.
# go to home directory
cd
2-) Github’dan monitor scripti download edilir.
# Git clone:
git clone https://github.com/burcusan/telegram-monitor-scripts.git
cd telegram-monitor-scripts
3-) “install_avax_monitor.sh” script’i ile kurulum gerçekleştirilir. Aşağıdaki örnek komutta daha önce anlatıldığı gibi elde edilen TOKEN değeri ve CHAT ID değeri parametre olarak kullanılmalıdır.
NOT : Kurulum scriptini çalıştırmadan önce mutlaka bot ekranında “/start” yazıp enter yapalım. Bu komutun birden fazla girilmesinde problem yok.
Aşağıdaki TOKEN ve CHAT_ID değerleri sadece örnektir. Sizin kendi yarattığınız telegram BOT’unuza ait TOKEN ve CHAT_ID değerlerini kullanmanız gerekiyor.
# Usage:
./install_avax_monitor.sh -t <YOUR TELEGRAM TOKEN> -c <YOUR TELEGRAM CHAT ID>
# Example:
./install_avax_monitor.sh -t 13031231111111AAEx-kIC9E1237L111111111123ongZ3_c-g -c 10522222228
CPU eşik değeri %40 olarak alınmıştır. Yani makinanızdaki CPU kaynak kullanımı %40'ı aşar ise alarm üretilecektir.
CPU eşik değeri ve IP parametrelerini farklı vermek isteyenler aşağıdaki adımları takip edebilir. Varsayılan değerleri kullanacak olanlar direk 4. adıma geçebilir.
CPU için değerini istediğiniz gibi değiştirebilirsiniz. Dikkat edilmesi gereken şey ayıraç olarak nokta(.) kullanmak ve iki basamak vermektir. Örneğin 09.00 veya 60.15 veya 75.00 gibi.
# Usage:
./install_avax_monitor.sh -t <YOUR TELEGRAM TOKEN> -c <YOUR TELEGRAM CHAT ID> -p <CPU THRESHOLD>
# Example:
./install_avax_monitor.sh -t 13031231111111AAEx-kIC9E1237L111111111123ongZ3_c-g -c 10522222228 -p 50.00
IP olarak 127.0.0.1'den farklı bir API çağırma IP’si kullanıyor iseniz onu da parametrik hale getirdik. Büyük bir çoğunluk gibi siz de 127.0.0.1 kullanıyor iseniz birşey yapmanıza gerek yok (genelde avalanchego’yu “–http-host=“ parametresi vererek çalıştıranlar farklı IP’den dinlemiş oluyorlar).
# Usage:
./install_avax_monitor.sh -t <YOUR TELEGRAM TOKEN> -c <YOUR TELEGRAM CHAT ID> -i <IP>
# Example:
./install_avax_monitor.sh -t 13031231111111AAEx-kIC9E1237L111111111123ongZ3_c-g -c 10522222228 -i 33.44.55.xxx
Arzu edenler CPU ve IP parametlerinin ikisini de değiştirmek isterse aşağıdaki gibi tek komut ile verebilirler.
# Usage:
./install_avax_monitor.sh -t <YOUR TELEGRAM TOKEN> -c <YOUR TELEGRAM CHAT ID> -p <CPU THRESHOLD> -i <IP>
# Example:
./install_avax_monitor.sh -t 13031231111111AAEx-kIC9E1237L111111111123ongZ3_c-g -c 10522222228 -p 50.00 -i 33.44.55.xxx
4-) Kurulum sonrası script’in çalışıp çalışmadığı test edilir.
./check_avalanchego_status.sh > check_avalanchego_status.log
cat check_avalanchego_status.log
# Example Output :
>>>> : Fri Oct 2 15:20:30 +03 2020
>>>> : TOKEN=<TELEGRAM TOKEN>
>>>> : CHAT_ID=<CHAT ID>
>>>> : HTTP_CODE= 200
>>>> : CURL_STATUS= 0
>>>> : FILE= /tmp/tmp_check_Avalanchego
>>>> : Avalanchego node is running!
>>>> : Fri Oct 2 15:20:30 +03 2020 - [INFO] Avalanchego node is healthy ! - health.getLiveness result.healthy=true hostname=oracl
>>>> : true
>>>> : CPU_LOAD=2.28
>>>> : CPU_LOAD_CRITICAL=40.00
5-) Kurulum sonrası script’in çalışıp çalışmadığı örnek bir telegram mesajı ile test edilir.
./check_avalanchego_status.sh test
>>>> : Fri Oct 2 16:25:53 +03 2020 — [TEST] [TEST] Avalanchego node TEST message !!!..
Örnek telegram test mesajı:
Örnek telegram ALERT mesajı :
Örnek telegram ALERT RESOLVED mesajı :
CPU eşik değeri geçildiğinde ve CPU kullanımı normale döndüğünde gelecek örnek mesajlar da şu şekildedir.
SONUÇ:
Geliştirdiğimiz script, bir sorun tespit ettiğinde alert’i telegram üzerinden mesajla bildirmektedir. Her dakika yaptığı kontrollerine hata devam ederse 5. dakikada, 15. dakikada, 30. dakikada, 1. saatte, 2. saatte ve 6 saat, 12 saat ve 24. saat başında [ALERT FIRING] etiketi ile alert üretmeye devam etmekte, 24 saat geçtikten sonra ise hala müdehale edilmemiş ve sorun giderilmemiş ise daha fazla alarm üretmemek adına artık uyarı vermemektedir. Yani 1 gün sorun devam ederse, alınacak mesaj sayısı 1. dakikada, 5. dakikada, 15 ve 30. dakikalarda, 2. saatte, 6. saatte, 12. ve 24. saatlerde olmak üzere toplam 8 tane olacaktır. Sorun düzelirse de zaman kısıtı olmadan düzeldiğinde [ALERT RESOLVED] etiketini kullanarak Telegram bot’una mesaj gönderecektir.
Tüm adımları başarı ile yaptıysanız, artık node’unuz her dakika başı kontrol edilecek. Eğer “/ext/health” API sonucu “unhealtly”(sağlıksız) ise, kapalı ise,herhangi bir hata dönüyor ise, CPU kullanımı oranı belirlediğiniz limiti aşmış ise artık size Telegramdan alert gelecek, problem düzeldiğinde de düzeldi bildirimi gelecektir.
NOT:
ALARMLAR İÇİN KURULAN YAPIYI DEVREDEN ÇIKARTMAK İSTERSEK:
Peki scripti devreden çıkartmak isterseniz, artık alarm almak istemezseniz ne yapmalısınız? Bu durumda, crontab’ınızdan script’in her dakika çalışmasını sağlayan satırı silmeniz veya satırın başına # koyarak comment’lemeniz yani o satırı devreden çıkartmanız yeterli. Yapmanız gereken crontab -e komutu ile crontab dosyanızın içine girip aşağıdakine benzer satırı silmeniz yada comment’lemeniz:
#sample output
#* * * * * /home/username/telegram-monitor-scripts/check_avalanchego_status.sh > /home/username/telegram-monitor-scripts/check_avalanchego_status.log 2>&1
Sağlıklı günleriniz, sağlıklı çalışan node’larınız olsun dileğimle…
https://docs.avax.network/build/avalanchego-apis/health-api
Avalanche ile ilgili Linkler ve Platformlar:
Website | Whitepapers | Twitter | Discord | GitHub | Documentation | Explorer | Avalanche-X | Telegram | Facebook | LinkedIn | Reddit | YouTube
Avalanchego’yuTelegram Bot’u yardımı ile izlemek was originally published in Avalanche Hub on Medium, where people are continuing the conversation by highlighting and responding to this story.