SQL Server 2017 Slack Entegrasyonu

By | 22 June 2018

Selamlar,

Bugün sizlere SQL Server’dan Slack’e nasıl bildirim gönderebilirsiniz bunu anlatıyor olacağım. Bildiğiniz gibi SQL Server’dan bildirim almanın en bilindik çözümü e-maildir ve genellikle bir çok konu hakkında SQL Server’dan kendimize yada ekibimize / ilgililere bu konuda e-mail gönderimi yapacak şekilde sistemi kurguluyor oluruz. Fakat bir süre sonra gelen çok sayıda e-mail önemli hata uyarılarının gözden kolayça kaybolmasına olanak sağlayabilir. Bu yüzden farklı bir bildirim kanalı arayışım vardı ve bunu da Slack ile çözüme kavuşturdum.

Microsoft SQL Server 2017 ile gelen yeni özelliklerden biri Python desteğinin gelmiş olması. Slack’de bilindiği gibi bulut tabanlı bir mesajlaşma servisidir. Bu servisin kullanımı ile yaşanan bildirimleri ve hataları slack üzerinde oluşturulan kanallar ile bir çok kişiye ulaşmasını sağlıyor olacağız. Hadi şimdi bu işi reklam taraflarını bırakıp nasıl yapılabilir anlatmaya başlayalım.

İlk adım olarak slacker isimli python paketinin kurulması gerekiyor. Bu işlem için yönetici olarak komut satırını ( cmd ) ekranın açmanız ve aşağıdaki kod bloğunu çalıştırmanız yeterli olacaktır.

cd C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES\Scripts
pip install slacker

Kurulum sonrası ;

SQL Server 2017 ile gelen ve bizim python kodumuzun çalışmasını sağlayacak stored procede aktif etmemiz gerekiyor. Bu işlem için aşağıdaki adımları kullanabiliriz.

EXEC sp_configure 'external scripts enabled',1
RECONFIGURE

Bu kodu çalıştırdıktan sonra kontrol ettiğinizde aşağıdaki run_value değerini 1 olarak görmeniz gerekiyor. Eğer bu değer 1 olmuyor ise SQL Server Launchpad servisini restart etmeniz gerekmektedir.

Gerekli ayarlarımızı da yaptıktan sonra temel bazı python kodlarını çalıştırıp sonuçlarını görelim. Bakalım SQL Server 2017 de ne gibi sorgulamaları yapabiliyoruz.


exec sp_execute_external_script

@language =N'Python',

@script=N'import sys

OutputDataSet = pandas.DataFrame([sys.version])'

WITH RESULT SETS ((python_version nvarchar(max)))

Pandas’dan sistem versiyon bilgisini elde ediyoruz.

 

Şimdi ise bu sorgulamalardan sonra aşağıdaki kod bloğu ile istediğimiz slack kanalına istediğimiz mesajı göndereceğimiz stored procedure’ü yazalım.


DROP PROCEDURE IF EXISTS SendToAlertOnSlack

GO

CREATE PROCEDURE SendToAlertOnSlack @message_txt varchar(4000), @slack_channel varchar(256)

AS

BEGIN

EXEC sp_execute_external_script @language =N'Python',

@script=N'

from slacker import Slacker

slack = Slacker(''token bilgisi'')

slack.chat.post_message(slack_channel_in, message_txt_in)

',

@params = N'@message_txt_in varchar(4000), @slack_channel_in varchar(256)',

@message_txt_in = @message_txt,

@slack_channel_in = @slack_channel

END

Yazdığımız SP’yi çalıştıralım.


exec SendToAlertOnSlack @message_txt ='www.caglarozenc.com | SQL Server Slack API Test' ,@slack_channel ='sqlserver'

SP’yi çalıştırmadan önce değiştirilmesi gereken “https://api.slack.com/” adresine girip bir application oluşturmanız ve devamında bir application credentials oluşturmanız ve sonrasında “https://api.slack.com/custom-integrations/legacy-tokens” bu adresten çalışmak istediğiniz workspace için bir token oluşturup bu token’ı sp’de gerekli yere yazmanız gerekmektedir.

İlave olarak Slack API Tester yazısınının yazmasını değilde sizin istediğinzi bir isim yazmasını istiyorsanız sp’yi de aşağıdaki ile değiştirebilirsiniz. Bu gibi ilave geliştirmeler için Slack methodları ihtiyacınızı görecektir.


DROP PROCEDURE IF EXISTS SendToAlertOnSlackBySender

GO

CREATE PROCEDURE SendToAlertOnSlackBySender @message_txt varchar(4000), @slack_channel varchar(256),@Sender varchar(100)

AS

BEGIN

EXEC sp_execute_external_script @language =N'Python',

@script=N'

from slacker import Slacker

slack = Slacker(''xoxp-123850536662-243389677140-384890135333-bdcc1aaec217a22a6d459d4ab69e39cc'')

slack.chat.post_message(slack_channel_in, message_txt_in,as_user )

',

@params = N'@message_txt_in varchar(4000), @slack_channel_in varchar(256),@as_user varchar(100)',

@message_txt_in = @message_txt,

@slack_channel_in = @slack_channel,

@as_user = @Sender

END

Kullanım:


exec SendToAlertOnSlackBySender 
@message_txt = 'www.caglarozenc.com | SQL Server Slack API Test' ,
@slack_channel ='sqlserver' ,
@Sender = 'Caglar Ozenc'

Sonuc :

SQL Server 2017 ile Slack entegrasyonunu sağlamış olduk. Python desteği ile daha çok çalışma yapılabilir. Bu sadece bir başlangıç örneği olabilir fakat ekiplerin haberleşmesinden bu çalışma başarılı olacaktır.

Edit : Slack ekranlarını küçük ekranlar halinde koydum. Yaptığım tüm testleri görmek isterseniz. Buradan bakabilirsiniz.

Share

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.