Merhaba,
Bu makalemizde Solarwinds Orion platformunun en karmaşık konularından olan Alarm’ları işliyor olacağız.
Aslında konunun çok bir karmaşık tarafı olmamakla beraber tek dikkat edilmesi gereken nokta iyi bir planlamanın yapılması ve devamında alarmların düzgün bir şekilde tanımlanmasıdır. Eğer plansız ve default gelen alarmları hızlıca devreye alırsanız daha sonrasında hata çözme alarm geldi-gelmedi noktalarında çok büyük sorunlar ile karşılaşabilir ve büyük bir zamanınızı bu işe ayırmak zorunda kalabilirsiniz.
Benim alarm tanımlarken yapacağım yaklaşım default gelen bir alarmı alarak belirlediğim isimlendirme mantığına göre kullanmak olacaktır. Alarm tanımlamadan önce e-mail ayarlarınızın yapıldığından emin olunuz yoksa oluşan alarmların sonunda Action alamayacak ve sadece alarm ekranında göreceksiniz. E-Mail ayarları makalesi burada.
Her monitoring programında olduğu gibi Alert > Trigger > Action > Reset > Action yöntemi Solarwinds üzerinde de mevcut. Yani bir alarm meydana geldiğinde onun bağlı olduğu Trigger’lar mevcut ve bu tigger’larında birer Action’ları bulunuyor. Bu Action E-Mail gönderme olarak bizim yapımızda devrede olacak. Sizler farklı Action’lar ile (SMS, Discord.. vs) yapınızda Alarmlar üretildiğinde aksiyon alabilirsiniz.
Sözü fazla uzatmadan işlemlerimize başlayalım.
Ana sekmede bulunan Alerts & Activity kısımına tıkladığımda kurulum sonrası gelen default Alarmları görüntülüyorum. Bunlar her kurulum sonrası otomatik olarak gelmektedir. Biz yapıyı kendi üreteceğimiz alarmları tanımlayarak kontrol edeceğiz ve her yeni alarm sonrası default gelenler tek tek kapatıyor olacağız. Öncelikle sağ üst kısımdan Manage Alert yazan kısma tıklıyorum.
Kullanacağım Alarm Default olarak gelen Node is warning or Critical State Alarm’ı olacak bu alarm bir Node için durumunun Warning yada Critical olması durumunda devreye giriyor ve default olarak aktif bir şekilde gelmektedir. İlgili alarma tıklıyorum ve Duplicate and edit diyerek bir kopyasını alıyorum. Zaten Solarwinds default gelen alarmlar için üzerinde değişiklik yaptırmıyor ve bir kopyasının üzerinde çalışmanız için sizi zorluyor.
1:Properties: Gelen ekran bize var olan alarmın bir kopyasını oluşturdu ve üzerinde değişiklik yapılacak yerlerini de editlenebilir olarak açık bir şekilde sundu. Şimdi bizde kendi ayarlarımıza göre alarmı şekillendirmeye başlayalım. Ben yapı gereği default gelen tüm tanımlamaların başına “CHN_” ifadesini koyarak ilerliyor olacağım. Bu sayede kem kendi tanımladığım alarmları bulmak kolay olacak hem de belirli bir standarda göre gitmiş olacağım. Ben bu alarm için Warning ve Critical durumlarına ek olarak Down olma durumunu da ekleyeceğim için tüm isimlendirmemi ona göre yaptım.
Burada dikkat edilmesi gereken nokta Alarmı (On/Off) yazan kısımdan aktif ediyoruz ve Evaluation Frequency of Alert yazan kısmı 1 dk olarak ayarlıyoruz. Bu alan tanımlayacağımız Alarmın ne sıklıkla kontrol edileceğinin frekansıdır. Yani şöyle diyebiliriz her 1 dakikada bir kontrol edecek alarm için uygun bir durum var ise devreye girecek.
2:Trigger Condition sekmesi, bu kısım alarm tanımındaki ikinci sekme ve burada AND/OR mantığını kullanarak alarm tanımlarımızı şekillendiriyoruz. İlk olarak I want to alert on yazan kısma bakalım bu kısım bu Alarm’ın hangi objeler üzerinde tetikleneceğini seçtiğimiz yer ve Node olarak seçilmiş durumda.
Altında ise All Object in my environment seçili isterseniz belirli bir grup içinde bunu tanımlayabilirsiniz.
Devamında bir OR bloğu mevcut ve altında bir Node durumunun Warning ya da Critical olma durumları bu blok altına tanımlanmış durumda. Bu alarmı kendimiz tanımlıyoruz demiştim şimdi buradaki condition durumlarına Down olma durumunu da ekleyelim ve bir Node için Down, Warning ve Critical olma durumlarının tamamını bu alarm ile alalım.
Add And/Or block diyorum ve eklemeye geçiyorum.
Eklediğimiz alandan Node Status is equal to Down alanlarını seçiyorum ve Alarm için Contition tanımlamamı tamamlıyorum. Alt kısımdan Condition must be exist for more than alanını da 2 dk olarak ayarlıyorum. Bu kısım yukarıdaki verdiğimiz Condition durumunun 2 dk süredir aktif olması durumunda işlenecek ve Trigger tetiklenerek işi Action’a devredecek.
3:Reset Condition alanı bu kısımda Trigger tetiklendikten sonra eğer durum normale dönerse Alarm durumunun ne olacağı ile ilgili olan alan. Yani bir Node Down oldu olay gerçekleşti trigger tetiklendi Alarm ekranına düştü gördük ve e-mail bildirimi de aldık. Bir süre geçti ve Node Up oldu her şey normale döndü bu durumda ilgili alarmın silinmesi gerekiyor. O yüzden bu kısımda Reset this alert when trigger condition is no longer true(Recommended) kısmını seçiyoruz.
4:Time of Day sekmesi bize bu alarm için özel bir zaman dilimi ayarlama imkanı sunuyor ancak bizim tanımladığımız alarm her zaman geçerli olacak ve özel bir geçerlilik süresine ihtiyacımız olmayacak. O yüzden Alert is enabled, no scheduled needed seçiyorum.
5: Tigger Action sekmesi, bu kısımda trigger tetiklendikten sonra alınacak olan action için tanımlamalar yapılıyor. Yani bir durum meydana geldi bunun action olayı ne ise onun tüm detay tanımlamaları burada yapılıyor.
Öncelikle Message Display kısmı için bir düzenleme yapalım (kırmızı ile işaretli alan) bu alan Alarm devreye girdiğinde Alarm sekmesinde Alarm mesajının olduğu alanda ne yazacağını belirlediğiniz kısım. Buraya manuel olarak bir tanımlama yapabilirsiniz örneğin Alarm adınızı yazabilirsiniz ancak ben dynamic olarak yapacağım. O yüzden sağdaki turuncu ile işaretli kısımdan Insert Variable alanına tıklıyorum.
Soldaki kısımdan Alert seçiyorum ve variable olarak Alert Name yazan alanı seçip ekliyorum.
“${N=Alerting;M=AlertName}” yazan parametre buraya eklendi bu parametre, variable bize database üzerinden Alarm adımızı getirecek. Devamına ise “${N=Alerting;M=AlertName} – was triggered “ bir tire işareti koyup was triggered diye bir metin ekliyorum. Kısaca hem dynamic hemde kendi koyduğumuz bir metin ile Alarm ekranında yazacak olan görünen metni düzenlemiş olduk.
Altta bulunan Trigger Action tabından ise kırmızı kutucuk olan satır en sağdaki alandan siliyorum ve turuncu ile işaretli olan için kalem ikonuna tıklayarak alt satırdaki action’u editlemeye başlıyorum.
Aciton için yine kendime göre bir isimlendirme kullanıyorum. To kısmına mail adresimi yazıyorum. Reply Addres yazan alana ise Solarwinds üzerinde tanımladığım gmail smtp mail adresini yazıyorum.
Message adımında ise kırmızı kutucuk içindeki alanı siliyorum ve turuncu alandan Insert Variables yazan kısımdan ekleyeceğim Variable değerlerine bakmak için tıklıyorum.
Öncelikle bizim alarm tanımımız bir Node üzerinde tanımlanmıştı buna göre soldan Node seçiyorum ve arama kısmına Status yazarak database üzerinde Node için karşılık gelen Status variable değerini seçiyorum. Daha sonra Format output value yazan kısma tıklıyorum.
Format olarak Status seçip OK diyorum. Mailde metinsel gösterim yapmasını istiyorum yoksa database karşılığı olan rakamları getirecektir.
Aynı şekilde Node objesi için Caption variable değerini seçiyorum ve Format output value değerini düzenliyorum. Caption parametresi bizim için solarwinds tarafında Node Name demek oluyor yani bir Node için görünen ad anlamına gelmektedir. Bu iki variable seçip output değerini de ayarladıktan sonra Insert Varable diyerek ekliyorum.
Yukarıdaki gibi seçtiğim 2 variable değeri de e-mail subject alanına eklendi. Turuncu ile ayırarak gösterdiğim kısım ben daha net görünmesi için aralarına “-“ tire işareti yerleştirdim. Bu bize şunu sağlamış olacak bir alarm meydana geldiğinde Trigger tetiklenecek ve Trigger için tanımlı olan e-mail action devreye girdiğinde gelecek olan e-mail bildiriminde mail başlığında önce Node Status yazacak devamında ise Node Caption yazacak. Bunu bu variable değerleri ile yapmamızın sebebi hangi Node için meydana gelmiş olursa olsun o Node’a ait variable değerleri dynamic olarak database üzerinden gelmiş olacak.
Subject kısımı tamam olduğuna göre alttaki kırmızı alanı silelim ve gelen e-mail Action için mail gövdesinde yazacak olan parametreleri belirleyelim.
Şimdi Subject kısmındaki variable değerlerini olduğu gibi kopyalıyorum ve gövde kısmına yapıştırıyorum. Daha sonra gövde kısmına ekleyeceğim başka variable değerleri için Insert Variable yazan kutucuğa tıklıyorum.
Bir alarm meydana geldiğinde gelen e-mail içinde gövde kısmında alarm ile ilgili durumun kök nedenini görmek isteriz ki bunu anlamlandırmamız kolay olsun. O yüzden yine soldan Node seçili iken arama kısmına Cause yazıyorum ve Node Status Root Cause variable değerini buluyorum. Insert variable diyerek bu değeri ekliyorum.
Gördüğünüz gibi Message yazan kısma yani mail gövde alanına 2. Satıra NodeStatusRootCause variable değeri eklenmiş oldu. Daha sonra 2 satır boşluk bırakıp manuel olarak Alert Details yazıyorum ve bunun yanına alarm detaylarının variable değerini eklemek için tekrar Insert Variable butonuna tıklıyorum.
Bu sefer ekleyeceğim Variable bir alarma ait olduğu için soldaki kutucuktan Alerts seçiyorum ve arama kısmına details yazıyorum. Bana Alert Details Url variable değerini sunuyor ve bunu Insert diyerek ekliyorum. Bu details variable url’li mail gövdesinde bir link olarak gelecek ve oluşmuş olan alarma o link ile kolayca erişme imkanı sağlayacak.
Yukarıdaki gibi AlertDetailsUrl parametresi de eklendi. Devamında yine manuel olarak alt satıra Alarm Name yazıyorum ve onun yanına gelecek olan variable değerini eklemek için Insert Variable kutucuğuna tıklıyorum.
Yine aynı şekilde ekleyeceğim variable bir Alarma ait olduğu için soldan Alert seçiyorum ve arama kutucuğuna name yazıyorum. Alert Name yazan variable değerini seçerek Insert ile ekliyorum.
Yukarıdaki gibi Alarm name: yazdığım metnin yanına ilgili AlertName variable değeri de gelmiş oldu. E-mail gövdesindeki işlemlerimiz ve variable eklemelerimiz bu kadar. Şimdi Next diyerek devam edebiliriz.
Mail gönderecek olan daha önceki tanımladığımız smtp server’ı seçiyorum. Burada sistemde tanımladığınız tüm smtp serverlar listelenecektir istediğiniz üzerinden e-mail göndermeniz alarma tanımlamanız mümkün benim için şuanda sadece bir tane olduğundan dolayı ben gmail smtp seçiyorum.
Time of day kısmında spesifik bir zaman aralığı vermiyorum her zaman geçerli olacak şekilde bu action çalışacak.
Execution setting kısmında ise bu alarm oluştuğunda eğer ki acknowledge edilmiş ise tekrar tekrar e-mail göndermemesi için recommended yazan kısmı işaretliyorum. Devamında ise Save Changes diyerek ayarlarımı kaydediyorum.
Gördüğünüz gibi tanımladığımız Trigger e-mail action “CHN_Action_Node_Trigger_All_Devices” adı ile oluştu. Bu kısma kadar anlattıklarımız baya karışık gelmiş olabilir ancak bundan sonra bu Action’dan kopya alıp çok daha basit bir şekilde Trigger Action ve Reset Action tanımlamaları yapıyor olacağız.
Next diyerek Trigger Action ekranını tamamlıyorum.
Sıra geldi Reset Aciton Tabına; burada karşımıza default olarak gelen 2 tane action var bunları kırmızı ile işaretli kısımdan siliyorum ve turuncu kutucukdaki buton ile “Copy Actions from Trigger Actions Tab” yardımı ile bir önceki oluşturduğumuz Trigger Action’nun bir kopyasını buraya taşıyorum.
Kopyalama başarılı bir şekilde yapıldı “CHN_Action_Node_Trigger_All_Devices” adını verdiğimiz Trigger Action buraya geldi. Şimdi bunu edit yazan kısımdaki kalem simgesine tıklayarak düzenleyelim ve Reset Action olarak kullanalım.
Burada sadece adını değiştiriyorum ve “CHN_Action_Node_Reset_All_Devices” trigger yazan kısma Reset yazıyorum. Next diyerek devam ediyorum. Bunu neden yaptığımızı sorabilirsiniz cevabı çok basit; bir olay oldu ve Node down konuma geçti bize bir mail geldi adı “CHN_Action_Node_Trigger_All_Devices” içerisinde Node Root Casue ve belirli parametreler var okuduk anladık sorun olduğunu gördük ve müdahale ettik.
Sonra o Node normale döndü ve bu sefer bize Reset Action’a ait mailin gelmesi ve bu Node’un UP duruma geçtiğini de mail olarak iletmesi lazım. Bu durumda ise gelen mail “CHN_Action_Node_Reset_All_Devices” action’a ait e-mail action olacak ve içerisinde yine tüm bilgiler yer alacak ve Node’un durumunun Up olduğunu görmüş olacağız.
Kısaca özetlersek;
- Trigger Action > Sorun olan durumu mail atacak.
- Reset Aciton > Sorun düzeldi durumunu mail atacak.
Her iki action içindeki mail variable değerleri subject, mail gövdesi vs aynı sadece birisinin adı Trigger Action diğerinin adı Reset action olay bu kadar basit.
Aynı şekilde herhangi bir ayar değişikliği yapmadan devam ediyorum.
Reset aciton da hazır Trigger action’dan kopyaladık ve sadece adını değiştirdik.
7:Summary sekmesindeyiz, bu kısımda tanımladığımız Alarm için tüm yapılanların bir özetini görmek mümkün. Örneğin en alttaki kısımda Trigger Condition durumunu görüyoruz Warning, Critical ve Down durumları için geçerli olacakmış. Sayfanın aşağısına doğru iniyorum.
Bu Alarm devreye girdiğinde etkilenecek olan Node’lar olduğunu bana söylüyor ve tıkladığımda bunları görebiliyorum. Submit diyerek alarm tanımlamamı tanımlıyorum.
Oluşturduğum alarm Alert Manager ekranında görünüyor ve durumu açık. Her şey yolunda herhangi bir sorun yok. Şimdi kopyasını aldığımız alarm’ı kapatalımki aynı anda 2 alarm devre olmasın.
Biz kendi alarmımızı “Node is in a Warning or Critical State” alarmından kopya alarak oluşturmuştuk şimdi bu alarmı buluyorum ve Off konuma alıyorum.
Ardından ana sekmeden Alerts tabına geçiyorum.
Oluşturduğum alarm çalışıyor ve bazı Node’ların bundan etkilendiğini görüyorum. Trigger time kısmında 11:56 yazıyor yanı bu alarm 11:56 da meydana gelmiş. Message kısmında ise bizim oluşturduğumuz variable değeri bize alarm adını getirmiş. Her şey yolunda J
Alarm ekranında kendi oluşturduğunuz alarmlar için belirlediğiniz isimlendirmeyi kullanmamızdaki amaç buydu. Arama kısmına alarm adını yazdığınızda otomatik olarak o alarmın etkilediği Node’lar gelmektedir. Büyük yapılarda kendi alarmlarınızı oluşturdukça belirli bir isimlendirme ile giderek devamında default alarmları kapatarak çok daha sistematik bir yapı elde etmiş olursunuz.
Şimdi Alarm oluştu da devamındaki e-mail Action çalıştı mı diye mail kutuma gidiyorum ki mailler gelmiş bile J 11:56 da tetiklenen alarm için 1 dakika sonra tamda ayarladığım gibi 11:57 de mail almışım. Şimdi mail içeriklerine göz atalım ve o kadar variable eklemiştik ne işimize yaramış görelim.
Gelen maillerden birisini açıyorum ve bu alanı inceliyorum. Öncelikle 1 yazan kısım bizim Action tanımlarken Subject kısmına eklediğimiz NodeStatus ve NodeCaption variable değerlerinden geliyor.
2 Numaralı kısım mail gövdesi: Bu alana da ilk olarak Subject deki değeri yapıştırmıştık Down – Ubuntu olarak gelmiş yani Node Status ve NodeCaption (Node Adı)
Devamında ise NodeStatusRootCause variable değerini eklemiştik oda çalışıyor ilgili Node için Warning, Critical durumlarına sebep olan tüm kök nedenler sıralı bir şekilde gelmiş durumda.
3 Numaralı kısım AlertDetailsUrl idi oda gelmiş durumda buradaki URL ile ilgili alarmın detay sayfasına gidebiliriz.
4 Numaralı kısım ise Alarm adı idi oda otomatik olarak gelmiş.
Her şey yolunda burada dynamic variable kullanmamızın sebebi bazı durumlarda alarmlar içinden çıkılamaz durumlara dönüşebiliyor o yüzden bir alarm geldiğinde etkilendiği Node Adı, Ip Adresi ve Alarm Adını buraya getirmek onun sorununu çözmek için bizim çok faydamıza bir durumdur.
Buda diğer bir alarm mailinin içeriği. Durumu Warning olan kök nedeninde CPU Load ve MSSQL Application Down durumda olan bir sunucu. Alarmları aldıktan sonra mail içeriğinden bize çok net bilgiler almalıyız ki soruna nokta atışı müdahale edebilelim.
Bir makalemizin daha sonuna geldik, Solarwinds Orion üzerinde Alarm konusu çok çetrefilli bir konudur ancak içine girdiğinizde sistematik ilerlediğinizde sakince alarmları tanımladığınızda hiç de öyle olmadığını göreceksiniz ve çok kolay gelecektir.
Umarım faydalı olmuştur başka bir makalede görüşmek üzere.