monitoring intelligence
Post on 14-Apr-2017
2.766 Views
Preview:
TRANSCRIPT
MonitoringIntelligence
北島直紀MicrosoftJune 27 2016
Microsoft Cloud Network
2010 2015
100K MillionsCompute
Instances
10’s of PBExabytesAzure
Storage
10’s of TbpsDatacenter
Network Pbps
4
問題解決フロー
Chaotic
Manage
DefineMeasure
Continuous
Improvement
新たなデータ収集の必要性
迅速なコラボレーション必要→セルフサービス型の
データ解析、共有プラットフォームが必要
閾値、警報を定義
5
問題解決フロー
Chaotic
Manage
DefineMeasure
Continuous
Improvement
新たなデータ収集の必要性
迅速なコラボレーション必要→セルフサービス型の
データ解析、共有プラットフォームが必要
閾値、警報を定義
ここをもっと何とかしたい。と始めたのが2.5年前
• すぐに新たな時系列データ収集を開始できること(SNMP, CLI, etc.)
データ収集段階
• 最新のライブデータを多角的に分析できるUIを備えること
• 元データに簡単なAPIでアクセスできること
分析段階
• 分析結果やモデルを簡単に共有し、最新データに適用できること
共有段階
• 各ネットワークエンジニアがすぐに直接check-in(または追加変更)できること
全過程を通じて
プラットフォームへの要求
データ収集 蓄積 分析時系列データを扱うためのOSS
Graphite
fluentd
Kafka
Influx DB, OpenTSDB
Druid
Grafana (Kibana)
NorikraStorm
ElasticSearch Kibana
Graphiteで何ができるか 基本機能デモ
誰かが作ったdashboard
を使う
自分のdashboardを作ってみんなと共有
時系列データを収集して蓄積する
API経由でデータを分析する
Use case 1: Router code upgrade dashboard
9
http://gnsgraphite/dashboard#temp-
RFC535884
非公開
Use case 2: Fiber cut時の挙動とその相関
10
http://gnsgraphite/dashboard#temp-
RFC535884
非公開
Use case 3: ISIS table size per region
11
非公開
Use case 4: IGP収束時間
12
非公開
Use case 5: 各ルータの微視的データの相関
13
http://gnsgraphite/dashboard#temp-
RFC535884
非公開
Graphite、Grafanaと各モジュールの関係
Router Router Router
whisper
SNMP, CLI, etc
Data Feeders
User
StatsD/Carbon
(Twisted Python)
Graphite-web
Django on
WSGI
MySQL or sqlite
8125/udp
2003/tcp
80/tcp
Grafana
provides more
rich UI
Code
Graphite[carbon]へのデータの送り方
Perl sample codeuse IO::Socket;
our $CARBON_SERVER = '10.20.1.1';our $CARBON_PORT = 2003;
our $sock = IO::Socket::INET->new(PeerAddr => $CARBON_SERVER,PeerPort => $CARBON_PORT,Proto => 'tcp'
);
my $time = time; my $value = something;
$sock->send("test.metric_name $value $time¥n");16
Graphite[carbon]へのデータの送り方 2
Graphiteからのデータの取得
http://10.20.1.1/render?target=rtrA.isis.table.active_cnt&from=-60min&rawData=true&format=csv
Graphiteからのデータの取得 2
• ifInErrorsカウンタの上位10インターフェースリストwget 'http://10.10.1.1/render?target=highestMax(perSecond(*.intf. *.ifInErrors),10) &from=-15min&rawData=true&format=csv‘
• 便利な関数• perSecond()
• HighestAverage(*, 10)
• HighestCurrent(*, 10)
• sumSeries(*, 10)
• movingAverage(*, ’1hour’)
• timeShift(*, ’30d’)
• mostDeviant(10, *)
どんなデータを送っているか• データソース
• SNMP, CLI, syslog
• データ量• 400K+700Kくらい (e.g. 1,000 router x 100 intf x 5 snmp = 500K)
様々な試み –デモ [Use case 6, 7]• Recent Code Upgrade – New code, new eyeballs, new problems
• Fabric – Understanding an overall health
Use case 8: Optical LevelとifInErrorsの関係
Use case 9: Black Hole検知
Use case 10: Black Hole検知
Use case 11: Black Hole検知
Scripted Dashboard• URL e.g.
• http://<server>/dashboard/script/<script_name>.js?router=<router_name>
• Javascript code on Grafana serverdashboard = { rows : [] };
routerName = ARGS.router;
dashboard.rows.push({
"panels": [
{"targets": [{"target": "prefix." + routerName + ".5minloadavg"}]}
]
});
return dashboard;
学んだこと• Data-driven decision makingの有意性
• コラボレーションの素晴らしさと難しさ• トレーニング、データ収集、分析、APIを通じて
• ダッシュボードのライフサイクル管理• 生成タイミング、手法、寿命
• システム管理コスト
© 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions,
it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
top related