Weitere ähnliche Inhalte Ähnlich wie [data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎 (20) Mehr von Insight Technology, Inc. (20) [data analytics showcase] B12: サーバー1,000台を監視するということ by 株式会社インサイトテクノロジー 小幡 一郎3. SNMP table: HOST-RESOURCES-MIB::hrStorageTable
hrStorageIndex hrStorageType hrStorageDescr hrStorageAllocationUnits hrStorageSize hrStorageUsed
1 HOST-RESOURCES-TYPES::hrStorageFixedDisk C:¥ Label:Acer Serial Number dc55ed43 4096 Bytes 118146047 41240978
2 HOST-RESOURCES-TYPES::hrStorageCompactDisc D:¥ 0 Bytes 0 0
3 HOST-RESOURCES-TYPES::hrStorageRemovableDisk F:¥ Label:TOSHIBA Serial Number 893867a8 16384 Bytes 943873 104656
4 HOST-RESOURCES-TYPES::hrStorageVirtualMemory Virtual Memory 65536 Bytes 149636 46018
5 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
ストレージ情報
4. SNMP table: HOST-RESOURCES-MIB::hrSWRunTable
hrSWRunIndex hrSWRunName hrSWRunPath hrSWRunParameters hrSWRunStatus
1 "init" "/sbin/init" "" runnable
2 "kthreadd" "kthreadd" "" runnable
3 "migration/0" "migration/0" "" runnable
4 "ksoftirqd/0" "ksoftirqd/0" "" runnable
5 "stopper/0" "stopper/0" "" runnable
6 "watchdog/0" "watchdog/0" "" runnable
5221 "rsyslogd" "/sbin/rsyslogd" "-i /var/run/syslogd.pid -c 5" runnable
5240 "httpd" "/usr/sbin/httpd" "" runnable
5252 "crond" "crond" "" runnable
プロセス情報
hrSWRunIndex 5313
hrSWRunName "sendmail"
hrSWRunPath "sendmail: Queue runner@01:00:00 for
/var/spool/cli..."
hrSWRunParameters ""
hrSWRunStatus runnable
19. 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
22. Current Fan Temperature Voltage
ifHCInBroadca
stPkts
ifHCInOctets
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
}
]
比較
詰め込み型
個別型
23. 検索文:
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 %
程度のデータを集計。
24. 詰め込み型 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
28. 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
基本中の基本。
ソートしてない
とこうなる!
29. 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
に入れようとしたら圧縮
されなかった。
当然!
30. 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
33. 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までのデータ数をカウント)
35. 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
37. 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)
41. OpenFaceとは Free and open source face recognition with deep neural networks.
http://cmusatyalab.github.io/openface/