Upload
kekekekenta
View
313
Download
0
Embed Size (px)
Citation preview
アプリケーション開発と分析のためのLog Analytics
第5回 Tokyo Jazug Night 2016/11/24
JAZUG Kentaro Aoki
https://twitter.com/kekekekenta
自己紹介
{
"objectType": "User",
“displayName”: “Kentaro Aoki",
“Twitter": "@kekekekenta",
“Blog”: “http://kentablog.cluscore.com/”
“company”: “MITSUI KNOWLEDGE INDUSTRY CO., LTD",
"onPremisesSecurityIdentifier": “MAS”
}
2
ちょうど一年前ぐらい
• Raspberry PiのログをLogAnalytics(当時はOperational Insights)で収集
3http://kentablog.cluscore.com/2015/12/raspberry-pi-iot-oms_62.html
Log Analyticsのプラン
• Log Analyticsは2つのプランから選択。(続く)
4
https://azure.microsoft.com/ja-jp/pricing/details/log-analytics/
OMS Log Analyticsのプランとしては
• OMSのE2を選ぶことにより本当の力が発揮される
– プランを選んだ後に、ソリューションパックを追加
5
お試しはこちら: https://experience.mms.microsoft.com/
OMSの詳細はこちら
6
https://www.microsoft.com/en-us/cloud-platform/operations-management-suite-pricing
Log Analytics
• Log Analyticsはログデータを収集と分析を提供するプラットフォーム
7OMSとかOperational Insightsとかサービス名が変わっているが、今はLog Analyticsで落ち着いている。
Log Analytics検索について
• 取集されたログデータの検索には、Log Analyticsの検索言語を使用します。
• 一般的なクエリ構文
– フィルタは、収集されたログデータを絞り込む条件を記述
– コマンドは、フィルタによって絞り込まれたログデータを加工するアクションを記述
14
フィルタ | コマンド1 | コマンド2 …
Log Analyticsの検索言語:フィルタ
• プロパティ値により絞り込む
– “:”, “=“ 演算子で値が同じものを絞り込む
– “!=“ 演算子で値が異なるものを絞り込む
– “>”, “<“, “>=”, “<=“ 演算子で数値条件で絞り込む
– [xx..xx]を使うと連続する値で絞り込む(”:”演算子利用)
16
Type=Perf ObjectName=Processor InstanceName=0 CounterName="% Processor Time"
Type=Perf ObjectName=Processor InstanceName:[0..2] CounterName="% Processor Time"
※↑InstanceNameは文字列が入ってくるので、あまり良くない例です
Log Analyticsの検索言語:フィルタ
• 複数のフィルタ使用して絞り込む
– スペースはANDと同じ。ANDを明示的に使うこともできる
– OR、NOTなどがある。
17
Type=Syslog Facility=authprivNOT(SeverityLevel=notice OR SeverityLevel=info)
Log Analyticsの検索言語:フィルタ
• 期間を指定して絞り込む
– “>”, ”<“, “>=“, “<=“などを使用して期間を絞り込む
– 注意点としては暗黙的にポータルには期間設定が含まれているため、「ポータル画面で設定されている期間」と「検索クエリのフィルタで指定した期間」の重なる期間が出力される。
18
* TimeGenerated>NOW-60MINUTES
* TimeGenerated>=2016-11-22
ポータル画面で設定されている期間
検索クエリのフィルタで指定した期間
Log Analyticsの検索言語:フィルタ
• 期間を指定して絞り込む
– 日付/時刻の構文
19
yyyy-mm-ddThh:mm:ss.dddZyyyy-mm-ddThh:mm:ss.ddd
yyyy-mm-ddThh:mm:ssyyyy-mm-ddThh:mm
yyyy-mm-dd
Log Analyticsの検索言語:フィルタ
• 期間を指定して絞り込む
– 日時/時刻をまるめて指定する構文。DatetimeをUnitでまとめます。午前0時を設定する場合はUnitをDAYにする。
– オフセットにより期間指定する構文。DatetimeからCountの時間を指定します。このCountは繋げると計算されます。Unitも使える。
– 例20
Datetime/Unit
Datetime[+|-]count/Unit
* TimeGenerated>NOW+1HOUR-10MONTHS/MINUTE
Log Analyticsの検索言語:フィルタ
• 期間を指定して絞り込む
– YEAR、YEARS(年)
– MONTH、MONTHS(月)
– DAY、DAYS、DATE(日)
– HOUR、HOURS(時間)
– MINUTE、MINUTES(分)
– SECOND、SECONDS(秒)
– MILLISECOND、MILLISECONDS、MILLI、MILLIS(ミリ秒)
21
Log Analyticsの検索言語:コマンド
• フィルタされたデータを特定のフィールドを基準に並べ替え
– Sort:asc/desc プレフィックスを使用(省略可能)
• フィルタされたデータを指定した数の上位に制限
– Top/Limit:制限数を指定
22
* TimeGenerated>=2016-11-22 | sort TimeGenerated asc
* TimeGenerated>=2016-11-22 | sort TimeGenerated asc | Top 5
Log Analyticsの検索言語:コマンド
• フィルタされたデータのプロパティを指定して出力
– Select:プロパティ名を並べて指定
• フィルタされたデータの数をスキップ
– Skip :スキップ数を指定
23
Type=Syslog | select TimeGenerated,SyslogMessage
* TimeGenerated>=2016-11-22 | sort TimeGenerated asc | Skip 3 | Top 5
Log Analyticsの検索言語:コマンド
• コマンドとしてフィルターする
– Where:演算子により条件を指定
• 重複しない一連の値を出力
– Distinct:プロパティを指定
24
Type=Perf CounterName:"% Processor Time" | Measure Avg(CounterValue) as AVGCPU by Computer | where AVGCPU > 80
Type=Syslog| Distinct Facility
Log Analyticsの検索言語:コマンド
• フィルタされたデータに集計関数を使用する
– measure:下記の関数を指定
• Count、Max、Min、Sum、Avg、Stddev、Countdistinct、Percentile##(Pct##)
25
Type=Syslog| Measure count() by Facility
* | Measure Min(TimeGenerated) by Computer
Type=Perf CounterName:"% Processor Time" | Measure Avg(CounterValue) by Computer
Log Analyticsの検索言語:コマンド
• Measureを指定した時間間隔で集計する
– Interval:間隔を指定する(複数のデータがある場合は複数の線でグラフが表示される)
26
Type=Perf CounterName:"% Processor Time" OR
CounterName:"% Privileged Time" | measure
avg(CounterValue) by CounterName Interval 1HOUR
Log Analyticsの検索言語:コマンド
• プロパティを関数により作成
– Extend:関数により値を作成
• Abs, acos, and, asin, atan, atan2, cbrt, ceil, cos, cosh, def, deg, div, dist, exists, exp, floor, hypo, if, linear, ln, log, map, max, min, mod, ms, not, or, pow, product, recip, rad, rint, sin, sinh, scale, sqrt, strdist, sub, sum, termfreq, tan, tanh
27
Type=Perf ObjectName=Processor InstanceName=_Total CounterName="% Privileged Time" | Extend product(CounterValue, 10) AS CounterValuex10
Log Analyticsの検索言語:コマンド
• サブ検索を使用する
– IN, NOT IN:Measureコマンドにより集計されたデータをサブ検索として利用(クエリの最後のフィルターとして使用)
28
Type=Syslog Computer IN {Type=Perf CounterName:"% Processor Time" | Measure Avg(CounterValue) as AVGCPU by Computer | where AVGCPU > 80}
カスタムフィールドについて
• テキストログなどの中に含まれる文字を抜き出して、プロパティを作成。これはFlashExtract という Microsoft Research のテクノロジを使用してプロパティを特定しています。 ユーザーが明示的な設定をしなくても自動で目的のデータを認識します。
30
カスタムフィールドで異なるログを横断検索
• カスタムフィールドを使うことで異なるログメッセージから同じ意味の値を抽出することができる。これにより、異なるログを横断的に検索することが可能になる。
34
Log Analytics APIs
38
• Log Analytics HTTP Data Collector API– OMS Log Analyticsに、ログ(JSON)を送信するためのAPI
• https://docs.microsoft.com/ja-jp/azure/log-analytics/log-analytics-data-collector-api
• Log Search API– Log Analyticsに収集されたログを検索するためのAPI。Azure Resource
Manager API から利用する。• https://docs.microsoft.com/ja-jp/azure/log-analytics/log-
analytics-log-search-api• Alert API
– Log Analyticsに収集されたログを定期的に検索して条件によりアクションを実行するためのAPI。Azure Resource Manager APIから利用する。• https://docs.microsoft.com/ja-jp/azure/log-analytics/log-
analytics-api-alerts
Log Analytics HTTP Data Collector API
• リクエストURI
• リクエストヘッダ
– 'content-type': “application/json”
– ‘Authorization’: 署名文字列
– ‘Log-Type’: タイプ
– ‘x-ms-date’: rfc1123形式による日付
– ‘time-generated-field‘: ISO 8601形式による日付
39
'https://' + ワークスペース ID + '.ods.opinsights.azure.com' + キー + '?api-version=2016-04-01'
Azure Quickstart Templates
• https://azure.microsoft.com/en-us/resources/templates/
47
Deploy Azure Resource Manager template
• 自分で作ったARM Templateからデプロイ
– https://docs.microsoft.com/en-us/azure/operations-management-suite/operations-management-suite-solutions
48
例
• ARMを使ってソリューションを作成
– Web App Monitoring
• https://github.com/Azure/azure-quickstart-templates/tree/master/101-webappazure-oms-monitoring
– SQL Azure Monitoring
• https://github.com/Azure/azure-quickstart-templates/tree/master/101-sqlazure-oms-monitoring
49
さいごに
• 検索言語は、色々なところで使われる
– データソースの異なる横断的なログの検索
– 検索結果のグラフの作成
– アラートの条件
• 検索言語を知ると色々なことができるようになる
• まずは、検索言語から!
50
参考資料など
51
• Operations Management Suite (OMS) API
– Azure Automation
– Azure Backup
– Log Analytics
– Azure Site Recovery
– https://docs.microsoft.com/ja-jp/azure/operations-management-suite/operations-management-suite-sdk
参考資料など
• Log Analytics 検索リファレンス
– https://docs.microsoft.com/ja-jp/azure/log-analytics/log-analytics-search-reference
• デモサイト(Log Analytics だけでなくOMSのフル機能提供)
– https://experience.mms.microsoft.com/
• パフォーマンスカウンタについて
– https://technet.microsoft.com/ja-jp/library/cc748731.aspx
52