View
252
Download
2
Category
Preview:
Citation preview
1000台のサーバをリアルタイムに分析するということ
利用広がるSNMP監視
SNMP table: HOST-RESOURCES-MIB::hrStorageTable
hrStorageIndex hrStorageType hrStorageDescr hrStorageAllocationUnits hrStorageSize hrStorageUsed1 HOST-RESOURCES-TYPES::hrStorageFixedDisk C:¥ Label:Acer Serial Number dc55ed43 4096 Bytes 118146047 412409782 HOST-RESOURCES-TYPES::hrStorageCompactDisc D:¥ 0 Bytes 0 03 HOST-RESOURCES-TYPES::hrStorageRemovableDisk F:¥ Label:TOSHIBA Serial Number 893867a8 16384 Bytes 943873 104656
4 HOST-RESOURCES-TYPES::hrStorageVirtualMemory Virtual Memory 65536 Bytes 149636 460185 HOST-RESOURCES-TYPES::hrStorageRam Physical Memory 65536 Bytes 129156 43369
hrStorageIndex 3
hrStorageType HOST-RESOURCES-
TYPES::hrStorageRemovableDisk
hrStorageDescr F:¥ Label:TOSHIBA Serial Number 893867a8
hrStorageAllocationUnits 16384 Bytes
hrStorageSize 943873
hrStorageUsed 104656
ストレージ情報
SNMP table: HOST-RESOURCES-MIB::hrSWRunTable
hrSWRunIndex hrSWRunName hrSWRunPath hrSWRunParameters hrSWRunStatus1 "init" "/sbin/init" "" runnable2 "kthreadd" "kthreadd" "" runnable3 "migration/0" "migration/0" "" runnable
4 "ksoftirqd/0" "ksoftirqd/0" "" runnable5 "stopper/0" "stopper/0" "" runnable6 "watchdog/0" "watchdog/0" "" runnable
5221 "rsyslogd" "/sbin/rsyslogd" "-i /var/run/syslogd.pid -c 5" runnable5240 "httpd" "/usr/sbin/httpd" "" runnable5252 "crond" "crond" "" runnable
プロセス情報
hrSWRunIndex 5313
hrSWRunName "sendmail"
hrSWRunPath "sendmail: Queue runner@01:00:00 for
/var/spool/cli..."
hrSWRunParameters ""
hrSWRunStatus runnable
秒間 10,000 を超えるデータ量って?
秒間 10,000 を超える監視項目
データをストリームで扱い分析する
1日100件の警告では無意味
1億件/日からどうやって100件を出すか
正規分布されたデータを自動判別・異常検知
<fixme>
異常検知と変化検知 (機械学習プロフェッショナルシリーズ)
より
StarBED 環境 insert 状況
insert query update delete getmore command flushes vsize res qr|qw ar|aw netIn netOut conn time
3937 *0 *0 *0 0 2|0 0 32.3G 12.1G 0|0 0|3 836k 24k 16 21:55:34
5288 *0 *0 *0 0 2|0 0 32.3G 12.0G 0|0 0|4 1m 25k 16 21:55:35
5306 *0 *0 *0 0 3|0 0 32.3G 12.1G 0|0 0|5 1m 25k 16 21:55:36
4144 *0 *0 *0 0 2|0 0 32.3G 12.1G 0|0 0|3 876k 25k 16 21:55:37
4109 *0 *0 *0 0 3|0 0 32.3G 12.0G 0|0 0|3 881k 25k 16 21:55:38
2989 *0 *0 *0 0 2|0 0 32.3G 12.3G 0|0 0|4 631k 24k 16 21:55:39
4330 *0 *0 *0 0 2|0 0 32.3G 11.9G 0|0 0|7 930k 24k 16 21:55:40
5166 *0 *0 *0 0 3|0 0 32.3G 11.8G 0|0 0|4 1m 24k 16 21:55:41
5653 *0 *0 *0 0 2|0 0 32.3G 11.7G 0|0 0|1 1m 24k 16 21:55:42
4755 *0 *0 *0 0 3|0 0 32.3G 11.8G 0|0 0|4 1m 25k 16 21:55:43
insert query update delete getmore command flushes vsize res qr|qw ar|aw netIn netOut conn time
4306 *0 *0 *0 0 3|0 0 32.3G 11.9G 0|0 0|3 961k 25k 16 21:55:44
4124 *0 *0 *0 0 2|0 0 32.3G 11.9G 0|0 0|1 895k 25k 16 21:55:45
2204 *0 *0 *0 0 3|0 0 32.3G 11.8G 0|0 0|4 516k 23k 14 21:55:46
4983 *0 *0 *0 0 2|0 0 32.3G 11.9G 0|0 0|2 1m 23k 14 21:55:47
5356 *0 *0 *0 0 3|0 0 32.3G 12.0G 0|0 0|5 1m 23k 14 21:55:48
6000 *0 *0 *0 0 2|0 0 32.3G 12.0G 0|0 0|6 1m 23k 14 21:55:49
5103 *0 *0 *0 0 2|0 0 32.3G 12.1G 0|0 0|5 1m 23k 14 21:55:50
6356 *0 *0 *0 0 3|0 0 32.3G 12.2G 0|0 0|5 1m 23k 14 21:55:51
5662 *0 *0 *0 0 2|0 0 32.3G 12.2G 0|0 0|3 1m 23k 14 21:55:52
5207 *0 *0 *0 0 3|0 0 32.3G 12.2G 0|0 0|4 1m 23k 14 21:55:53
同等構成の環境でどれくらいスケールするか確認
mongoDBはこんな感じでメモリを使ってます
mmap (insert)
mmap (aggregate)
WiredTiger (insert) ※cachesize = 1GB
WiredTiger (aggregate) ※cachesize = 1GB
StrageEngineが選択できるようになって、メモリ管理が自前でできるようになった。
Current Fan Temperature Voltage
ifHCInBroadca
stPktsifHCInOctets
ifHCInUcastPkt
s
ifHCInMulticast
Pkts
...
IPMI~Hardware_Resource~Current
IPMI~Hardware_Resource~Fan
IPMI~Hardware_Resource~Temperature
IPMI~Hardware_Resource~Voltage
...
SNMP~IF-MIB~ifHCInBroadcastPkts
SNMP~IF-MIB~ifHCInMulticastPkts
SNMP~IF-MIB~ifHCInOctets
SNMP~IF-MIB~ifHCInUcastPkts
...
All
"time" : 1262271600,
"major" : "MAJORNAME1",
"node" : "NODENAME1",
"item" : "ITEMNAME1",
"d" : [
{
"p" : "PARAMETER1",
"v" : 1.1
},
...
{
"p" : "PARAMETER3",
"v" : 3.3
}
]
"time" : 1262271600,
"major" : "MAJORNAME1",
"node" : "NODENAME1",
"item" : "ITEMNAME1",
"d" : [
{
"p" : "PARAMETER1",
"v" : 1.1
},
...
{
"p" : "PARAMETER3",
"v" : 3.3
}
]
比較
詰め込み型
個別型
検索文:db.daily.aggregate(
{'$match':{'major':'MAJORNAME3'
,'node':{'$in':['NODENAME7','NODENAME17','NODENAME27','NODENAME37','NODENAME47']}
,'time':{'$gte':1262314800,'$lt':1262401200}}} // 2010-01-01 12:00:00 ~ 2010-01-02 12:00:00
,{'$unwind':'$d'}
,{'$match':{'d.p':'PARAMETER2'}}
,{'$sort':{'time':1}}
,{'$group':{'_id':{'p':'$d.p','node':'$node'},'d':{'$push':{'time':'$time','v':'$d.v'}}}}
,{'$sort':{'_id.node':1}}
,{'$group':{'_id':{'p':'$_id.p'},'d':{'$push':{'node':'$_id.node','d':'$d'}}}}
)
データ:● major 種類 = 100、node 種類 = 100、item 種類 = 2
● 1組みのデータについて、time = 2880 ( 1 日 1 分に 1 データとして 2 日分 )
● インデックスは、(詰め込み型)major+node、(個別型) node に昇順で作成
検索:● major = 全体の 1/100、node = 全体の 1/20、timeレンジ = 全体の 1/2、綜合して、全体の 0.02 %
程度のデータを集計。
詰め込み型 vs 個別型
詰め込み型 個別型 (1/100)
データ件数 57,600,000 576,000
データサイズ 13183 MB 131 MB
インデックスサイズ 2270 MB 15 MB
インデックスなしでのクエリー時間 1m27.123s 0m3.567s
インデックスありでのクエリー時間 (初回) 1m21.860s 0m0.717s
インデックスありでのクエリー時間 (続けて2回目) 0m0.642s 0m0.628s
分析基盤
ソートするとデータサイズは割といい
ソートしないとデータサイズはほんとうにわるい
InfiniDBは、入れ方まちがえるとこうなります!当たり前ですが。。。
InfiniDB 使い方間違えたらこうなる!
+------------+
| count(*) |
+------------+
| 8083961328 |
+------------+
databaseSizeReport: /home/icm/insight/lib/libz.so.1: no version information available (required by
/usr/lib64/libxml2.so.2)
Schema Table Column Size
snmp raw major (token) 3.125771 GB
snmp raw major (string) 0.949005 GB
snmp raw minor (token) 3.230759 GB
snmp raw minor (string) 0.949005 GB
snmp raw date 3.125763 GB
snmp raw time 1.564735 GB
snmp raw offset 1.564728 GB
snmp raw node (token) 21.396988 GB
snmp raw node (string) 23.714630 GB
snmp raw item (token) 3.350883 GB
snmp raw item (string) 0.952698 GB
snmp raw p1name (token) 3.230728 GB
snmp raw p1name (string) 0.949005 GB
snmp raw p1value 2.500069 GB
snmp raw p2name (token) 3.230736 GB
snmp raw p2name (string) 0.949005 GB
snmp raw p2value 2.591858 GB
snmp raw p3name (token) 3.125763 GB
snmp raw p3name (string) 0.949005 GB
snmp raw p3value 1.564728 GB
Total 83.015862 GB
基本中の基本。ソートしてないとこうなる!
InfiniDB 使い方間違えたらこうなる!
+------------+
| count(*) |
+------------+
| 1063563513 |
+------------+
databaseSizeReport: /home/icm/insight/lib/libz.so.1: no version information available (required by /usr/lib64/libxml2.so.2)
Schema Table Column Size
snmp raw_201608 node (token) 0.462891 GB
snmp raw_201608 node (string) 0.125488 GB
snmp raw_201608 nodehash 0.462906 GB
snmp raw_201608 majorminor (token) 0.482422 GB
snmp raw_201608 majorminor (string) 0.125488 GB
snmp raw_201608 majorminorhash 0.504456 GB
snmp raw_201608 item (token) 0.465240 GB
snmp raw_201608 item (string) 0.125977 GB
snmp raw_201608 time 0.416954 GB
snmp raw_201608 offset 0.231689 GB
snmp raw_201608 p1name (token) 0.482460 GB
snmp raw_201608 p1name (string) 0.125488 GB
snmp raw_201608 p1value 0.460922 GB
snmp raw_201608 p1alertavg 0.300049 GB
snmp raw_201608 p1alertstddev 0.295891 GB
snmp raw_201608 p1invalid 0.277184 GB
snmp raw_201608 alertidhash (token) 4.030823 GB
snmp raw_201608 alertidhash (string) 11.750488 GB
snmp raw_201608 insdate 0.462891 GB
snmp raw_201608 timehour 0.258949 GB
Total 21.848656 GB
ユニークキーをInfiniDB
に入れようとしたら圧縮されなかった。当然!
InfiniDBデータ圧縮具合の確認
試験データとして、86,400,000 件 ( テスト環境 SNMP 1 日分ののおおよそ ⅔ 程度 ) を登録。
InfiniDB テーブル
+----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| node | varchar(40) | YES | | NULL | |
| nodehash | char(8) | YES | | NULL | |
| majorminor | varchar(64) | YES | | NULL | |
| majorminorhash | char(8) | YES | | NULL | |
| item | varchar(160) | YES | | NULL | |
| time | int(11) | YES | | NULL | |
| offset | float | YES | | NULL | |
| p1name | varchar(80) | YES | | NULL | |
| p1value | float | YES | | NULL | |
| p1alertavg | float | YES | | NULL | |
| p1alertstddev | float | YES | | NULL | |
| p1invalid | int(11) | YES | | 0 | |
...
| p8name | varchar(80) | YES | | NULL | |
| p8value | float | YES | | NULL | |
| p8alertavg | float | YES | | NULL | |
| p8alertstddev | float | YES | | NULL | |
| p8invalid | int(11) | YES | | 0 | |
| insdate | datetime | YES | | NULL | |
| timehour | int(11) | YES | | NULL | |
+----------------+--------------+------+-----+---------+-------+
データサイズ
サイズ インポート用ファイルと比べての割合
インポート用ファイル(csv形式のplain text)
40.56 GB
InfiniDB データファイル(アロケート分)
6.89 GB 約 1/6
実データ(カラム圧縮された後のサイズ)
4.96 GB 約 1/8
ソートしないとエクステントマップも無意味ない
ソートされていない
mysql> select count(*) from snmp.raw_201609 where nodehash='a94517c0' /*'192.10.12.101'*/ and majorminorhash='88abe3de' /*'IP-
MIB~ipSystemStatsInBcastPkts'*/ and time>=1472655600 and time<1473087600;
+----------+
| count(*) |
+----------+
| 1383 |
+----------+
1 row in set, 1 warning (6.79 sec)
(トレース情報)
mysql> select calgettrace();
+-----------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------+
| calgettrace()
|
+-----------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------+
|
Desc Mode Table TableOID ReferencedColumns PIO LIO PBE Elapsed Rows
BPS PM raw_201609 7460 (majorminorhash,nodehash,time) 857296 530026 1272528 6.645 44032
TAS UM - - - - - - 6.481 1
|
+-----------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------+
検索 (9/1から9/5までのデータ数をカウント)
ソートされている
mysql> select count(*) from snmp.raw_201609 where nodehash='a94517c0' /*'192.10.12.101'*/ and majorminorhash='88abe3de' /*'IP-
MIB~ipSystemStatsInBcastPkts'*/ and time>=1474383600 and time<1474815600;
+----------+
| count(*) |
+----------+
| 1437 |
+----------+
1 row in set, 1 warning (3.15 sec)
(トレース情報)
mysql> select calgettrace();
+--------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------
----+
| calgettrace()
|
+--------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------
----+
|
Desc Mode Table TableOID ReferencedColumns PIO LIO PBE Elapsed Rows
BPS PM raw_201609 7460 (majorminorhash,nodehash,time) 388388 247396 1362640 3.115 21504
TAS UM - - - - - - 3.084 1
|
+--------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------
----+
検索 (9/21から9/25までのデータ数をカウント)
ソートしてないときは、6.79
sec
ソートしてないときは、857,296 /
530,026
エクステントマップのTips
Tips1:
文字列キーでエクステントマップを聞かせたい場合は、長さに注意。char 型で 8 バイト、varchar 型で 7 バイトまでのものしかエクステントマップが利かない! Tips2:
1エクステントのデータ件数が 8,000,000 件 (=行)
ということは、定型的にその数の中で繰り返し発生するようなデータについては、エクステントマップが利かない!
3,000,000,000 件を10秒強で集計する
mysql> select majorminor,count(*),min(p1value),max(p1value),avg(p1value),stddev(p1value) from
snmp.raw_201609 where nodehash = '934af399' /*192.10.72.105*/ group by 1;
...
229 rows in set (14.77 sec)
新技術が可能にするセキュリティツールの可能性
内部漏洩が80%
http://www.secomtrust.net/infomeasure/rouei/column1.html
ICMカメラの仕組み
Unknown person!
OpenFaceとは Free and open source face recognition with deep neural networks.
http://cmusatyalab.github.io/openface/
利用が広がるカメラ
コンビニでのマーケティングカメラ利用例http://itpro.nikkeibp.co.jp/article/Watcher/20140519/557622/
マルチデータベース環境におけるSQL分析
プロアクティブ監視が実現するハードウェアダウンタイムの削減
IPMIの主な監視項目
SMART監視で見るディスクの故障パターン例
ご清聴ありがとうございました。
Recommended