MicroStrategy: C# ile Intelligence Service Durumunu Takip Etmek

Merhaba arkadaşlar,

Bugün yine enteresan bir konuyla karşınızdayım. Eğer siz de MicroStrategy 10 ile beraber gelen Operations Manager’i sevmeyenlerdenseniz işte doğru yerdesiniz.

Benim burada sizlere göstereceğim konu ve mantığı aslında çok basit. Eğer intelligence server’larımızdan birisi herhangi bir nedenle durursa bize mail atsın ve bu kontrolü 5 dakikada bir yapsın.

Bunun için Visual Studio ortamında bir Windows Console Application oluşturmamız yeterli.

Ortamı oluşturduktan sonra windows servislerini kontrol etmemiz için gerekli olan ServiceProcess kütüphanesindeki ServiceController fonksiyonunu kullanacağız.

ServiceController da bize izlemek istediğimiz ilgili servisin durumunu (status) sonuç olarak dönecek.

Eğer MicroStrategy Intelligence servislerimizden herhangi birisi “Running” dışında bir değer almışsa console uygulamamız bize mail gönderecek.

Şimdi örnek kodu sizlerle paylaşıyorum.

using System;
using System.ServiceProcess;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Mail;

namespace MSTR
{
    class Program
    {
        static void Main(string[] args)
        {
            SmtpClient smtp = new SmtpClient();
            smtp.Port = 25;
            smtp.Host = "Mail_Host_Adresiniz";
            MailMessage mail = new MailMessage();
            mail.From = new MailAddress("Mail_Adresiniz", "Ad_Soyad");
            mail.To.Add("Mail_Adresiniz");

            string css = @"<style type=""text/css""> table.imagetable {font-family:tahoma,arial,sans-serif; font-size:11px; color:#333333; border-width: 1px; border-color: #999999; border-collapse: collapse;} table.imagetable th {background:#b5cfd2; border-width: 1px;padding: 8px;border-style: solid; border-color: #999999;} table.imagetable td {background:#dcddc0; border-width: 1px; padding: 8px; border-style: solid; border-color: #999999;} </style>";

            string link = @"<img src=""http://www.ebi.com.tr/wp-content/uploads/yootheme/demo_pie.gif"" />";

            string sign = @"<br><br>Bilginize,<br>----------------------------------------------------<br>Bu e-posta mesaji ve ekleri sadece gonderildigi kisi veya kuruma ozeldir.<br>Dogru aliciya ulasmamis olmasi halinde, bu mesajin baska bir aliciya yonlendirilmesi, kopyalanmasi veya kullanilmasi yasaktir.<br>----------------------------------------------------<br>This e-mail and any attachments transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed.<br>If you are not the intended recipient you are hereby notified that any forwarding, copying or use of the information is prohibited.";

            try
            {
                ServiceController EBMSTRPRD = new ServiceController("MicroStrategy Intelligence Server", "Sunucu_Adi_Ya_Da_IP_Adresi");
                ServiceController YGMSTRDEV = new ServiceController("MicroStrategy Intelligence Server", "Sunucu_Adi_Ya_Da_IP_Adresi");
                ServiceController YGMSTRPRD = new ServiceController("MicroStrategy Intelligence Server", "Sunucu_Adi_Ya_Da_IP_Adresi");
                ServiceController DGMSTRPRD = new ServiceController("MicroStrategy Intelligence Server", "Sunucu_Adi_Ya_Da_IP_Adresi");
                ServiceController SGMSTRPRD = new ServiceController("MicroStrategy Intelligence Server", "Sunucu_Adi_Ya_Da_IP_Adresi");
                ServiceController SPMSTRPRD = new ServiceController("MicroStrategy Intelligence Server", "Sunucu_Adi_Ya_Da_IP_Adresi");
                ServiceController ESMSTRDEV = new ServiceController("MicroStrategy Intelligence Server", "Sunucu_Adi_Ya_Da_IP_Adresi");

                if (EBMSTRPRD.Status.ToString() != "Running" || YGMSTRDEV.Status.ToString() != "Running" || YGMSTRPRD.Status.ToString() != "Running" || DGMSTRPRD.Status.ToString() != "Running" || SGMSTRPRD.Status.ToString() != "Running" || SPMSTRPRD.Status.ToString() != "Running" || ESMSTRDEV.Status.ToString() != "Running")
                {
                    string sonuc = @"<p><font size=""2"" face=""Tahoma"">Sayın <b>Yetkili,</b><br /><br />MSTR sunucularının durumu aşağıdaki gibidir.</font></p><table class=""imagetable"" border=""1"" cellpadding=""0"" cellspacing=""0"" width=""500""><th>Sunucu</th><th>Durum</th>";

                    string table1 = @"<tr><font size=""2"" face=""Tahoma""><td align=center>EBMSTRPRD</td><td align=center>" + EBMSTRPRD.Status + "</td></font></tr>";
                    string table2 = @"<tr><font size=""2"" face=""Tahoma""><td align=center>YGMSTRDEV</td><td align=center>" + YGMSTRDEV.Status + "</td></font></tr>";
                    string table3 = @"<tr><font size=""2"" face=""Tahoma""><td align=center>YGMSTRPRD</td><td align=center>" + YGMSTRPRD.Status + "</td></font></tr>";
                    string table4 = @"<tr><font size=""2"" face=""Tahoma""><td align=center>DGMSTRPRD</td><td align=center>" + DGMSTRPRD.Status + "</td></font></tr>";
                    string table5 = @"<tr><font size=""2"" face=""Tahoma""><td align=center>SGMSTRPRD</td><td align=center>" + SGMSTRPRD.Status + "</td></font></tr>";
                    string table6 = @"<tr><font size=""2"" face=""Tahoma""><td align=center>SPMSTRPRD</td><td align=center>" + SPMSTRPRD.Status + "</td></font></tr>";
                    string table7 = @"<tr><font size=""2"" face=""Tahoma""><td align=center>ESMSTRDEV</td><td align=center>" + ESMSTRDEV.Status + "</td></font></tr>";

                    sonuc = sonuc + table1 + table2 + table3 + table4 + table5 + table6 + table7; 

                    string total = css + sonuc + "</table><br />" + link + sign;

                    mail.Body = total;

                    mail.IsBodyHtml = true;
                    mail.Subject = "MSTR DOWN";
                    smtp.Send(mail);
                    Environment.Exit(0);
                }
            }

            catch (Exception ex)
            {
                mail.IsBodyHtml = true;
                mail.Body = ex.Message;
                mail.Subject = "MSTR CHECK FAILED";
                smtp.Send(mail);
                Environment.Exit(0);
            }
        }
    }
}

Eğer Intelligence Server’larınızdan herhangi birisinde sıkıntı çıkarsa size hangi sunucuda problem çıktığına dair aşağıdaki gibi bir bilgilendirme maili gelecek.

mstr_down

Kolay gelsin 😉

Bir Cevap Yazın