新年になって既に半月程が経とうとしていますが皆さんいかがお過ごしでしょうか?私は平々凡々とくらしおてります。
とりあえずブログ書かなくちゃなって思ったのでAzureのSQLDatabaseでAzureStorageにトランザクションログが吐かれなくなっていたので流行りのOMSでログ収集する方法について試した内容を書いていこうかなって思います。
いつの間にかトランザクションログをAzureStorageTableに出力する設定は非推奨になったのでSQLDatabaseで設定できなくなりました・・・。2017年の前半くらいまではできていたと思うんですけどね・・・。
代替案としては診断ログをオンにしてSQLDatabaseログをAzureStorageに出力して、そのログファイルをSSMSで表示するなんてやり方やAzureSchedulerを利用してLog Analitics経由でOMSにログ情報を定期的に送るなんてやり方があるようです。
ただ上記のやり方だと作業フローがめんどくさかったり、ログ収集の方法のためにだけにインスタンスを作成しなくては行けなかったりするので非効率ではあります。
そこで最近プレビューになったOMS Log Analyticsを利用するのが推奨されます。
では設定方法と表示の仕方についてみていきたいと思います。
※本記事は2018年1月時点の情報となります。
設定手順
Azure Portalで新規から「Azure SQL Analytics」と入力して検索しましょう。もしくは「Monitoring + Management」から選択することができます。
※現時点でAzure SQL Analyticsはプレビュー状態です。

Azure SQL Analyticsの設定を行います。とはいってもOMSと紐づけるだけです。OMSのワークスペースを作成していない場合はここで作成してください。

次にSQLDatabaseの設定を行います。「監査と脅威検出」から監査をオンにして、容量の詳細で出力先のAzureStorageを指定します。SQLDatabaseの作成とAzureStorageの作成方法についてはここでは割愛します。
SQLDatabaseとSQLServerで同じ設定をしておくことをお勧めします。基本的にSQLServer側で設定すれば子となるSQLDatabaseに設定が反映されますが複数のSQLDatabaseがある場合はそれぞれに設定する事で別々に設定情報を持つことができます。

容量の詳細で出力先のストレージアカウントとログのリテンション期間を指定します。リテンション期間は0を指定すれば無期限になります。

次にSQLDatabaseの「診断設定」からLog Analiticsの設定を行います。診断をオンにするを選択して診断設定を行います。

診断設定の画面で「Log Analyticsへの送信」を選択し送信先のOMSを選択します。あとは出力するLog情報の選択をします。ここではとりあえず全部にチェックを入れてあります。

これで設定は完了です。ログ出力先のOMSポータルを開いてログを確認してみましょう。
ログの閲覧
OMSのポータルを開くとAzure SQL Analyticsのワークスペースが作成されていると思います。ここでログを確認できるのですがとりあえずログを確認する前にSQLDatabaseに適当なテーブルを作成してSQLの実行を行っておきましょう。私はここではASP.NET COREベースで作成したUserIdentityのテーブルをベースにテストをしてみました。

ダッシュボードを開くと提供されている既存のデザインでデータが表示されます。ログが連携されていない項目に関しては検出されていないと出ますのでここは無視しましょう。

データベースを選択していくとクエリという項目があるのでその中の一つを選択してみます。

任意のクエリ情報を見ると実行されたクエリの実行情報が表示されます。ここら辺の情報はOMSのデザイナーでカスタマイズすることはできるようです。

最近ではAzureのログはだいたいOMSに流すのがモダンになっているのでOMSを利用してログ分析していくことを念頭に置いた方がいいと思います。
ただ、OMSは無料ではないので金額に見合うかどうかを鑑みつつ利用するしないを判断するべきです。
というわけでOMSの価格表を置いておきますね。大体1000~3000円/月の間で利用できます。
予告:次回はOMSとApplicationInsightの統合について試した内容を書こうと思います。
コメント