±à¼ÍƼö: |
ÎÄÕÂÖ÷Òª½éÉÜÁËʱ¼äÐòÁÐÊý¾ÝµÄÌØµã¡¢´æ´¢¡¢·ÖƬ·½·¨ÒÔ¼°¼¸¿îµ±Ï±ȽÏÁ÷ÐеĿªÔ´Ê±ÐòÊý¾Ý¿âµÄ²¿ÊðʹÓúͲúÆ·¶Ô±È¡£
±¾ÎÄÀ´×Ôcsdn£¬ÓÉ»ðÁú¹ûÈí¼þLuca±à¼¡¢ÍƼö¡£ |
|
1.»ù´¡
1.1 ʱÐòÊý¾ÝµÄ¶¨Òå
ʲôÊÇʱ¼äÐòÁÐÊý¾Ý£¨Time Series Data£¬TSD£¬ÒÔϼò³ÆÊ±Ðò£©´Ó¶¨ÒåÉÏÀ´Ëµ£¬¾ÍÊÇÒ»´®°´Ê±¼äά¶ÈË÷ÒýµÄÊý¾Ý¡£ÓÃÃèÊöÐÔµÄÓïÑÔÀ´½âÊÍʲôÊÇʱÐòÊý¾Ý£¬¼òµ¥µÄ˵£¬¾ÍÊÇÕâÀàÊý¾ÝÃèÊöÁËij¸ö±»²âÁ¿µÄÖ÷ÌåÔÚÒ»¸öʱ¼ä·¶Î§ÄÚµÄÿ¸öʱ¼äµãÉϵIJâÁ¿Öµ¡£ËüÆÕ±é´æÔÚÓÚIT»ù´¡ÉèÊ©¡¢ÔËά¼à¿ØÏµÍ³ºÍÎïÁªÍøÖС£
¶ÔʱÐòÊý¾Ý½øÐн¨Ä£µÄ»°£¬»á°üº¬Èý¸öÖØÒª²¿·Ö£¬·Ö±ðÊÇ£ºÖ÷Ì壬ʱ¼äµãºÍ²âÁ¿Öµ¡£Ì×ÓÃÕâÌ×Ä£ÐÍ£¬Äã»á·¢ÏÖÄãÔÚÈÕ³£¹¤×÷Éú»îÖУ¬ÎÞʱÎ޿̲»ÔÚ½Ó´¥×ÅÕâÀàÊý¾Ý¡£
Èç¹ûÄãÊÇÒ»¸ö¹ÉÃñ£¬Ä³Ö»¹ÉƱµÄ¹É¼Û¾ÍÊÇÒ»ÀàʱÐòÊý¾Ý£¬Æä¼Ç¼×Åÿ¸öʱ¼äµã¸Ã¹ÉƱµÄ¹É¼Û¡£
Èç¹ûÄãÊÇÒ»¸öÔËάÈËÔ±£¬¼à¿ØÊý¾ÝÊÇÒ»ÀàʱÐòÊý¾Ý£¬ÀýÈç¶ÔÓÚ»úÆ÷µÄCPUµÄ¼à¿ØÊý¾Ý£¬¾ÍÊǼǼ×Åÿ¸öʱ¼äµã»úÆ÷ÉÏCPUµÄʵ¼ÊÏûºÄÖµ¡£
ʱÐòÊý¾Ý´Óʱ¼äά¶ÈÉϽ«¹ÂÁ¢µÄ¹Û²âÖµÁ¬³ÉÒ»ÌõÏߣ¬´Ó¶ø½ÒʾÈíÓ²¼þϵͳµÄ״̬±ä»¯¡£¹ÂÁ¢µÄ¹Û²âÖµ²»ÄܽÐʱÐòÊý¾Ý£¬µ«Èç¹û°Ñ´óÁ¿µÄ¹Û²âÖµÓÃʱ¼äÏß´®ÆðÀ´£¬ÎÒÃǾͿÉÒÔÑо¿ºÍ·ÖÎö¹Û²âÖµµÄÇ÷ÊÆ¼°¹æÂÉ¡£
1.2 ʱÐòÊý¾ÝµÄÌØµã
1.2.1 ʱÐòÊý¾ÝµÄÊýѧģÐÍ
ÉÏÃæ½éÉÜÁËʱÐòÊý¾ÝµÄ»ù±¾¸ÅÄҲ˵Ã÷ÁË·ÖÎöʱÐòÊý¾ÝµÄÒâÒå¡£ÄÇôʱÐòÊý¾Ý¸ÃÔõÑù´æ´¢ÄØ£¿Êý¾ÝµÄ´æ´¢Òª¿¼ÂÇÆäÊýѧģÐͺÍÌØµã£¬Ê±ÐòÊý¾Ýµ±È»Ò²²»ÀýÍâ¡£ËùÒÔÕâÀïÏȽéÉÜʱÐòÊý¾ÝµÄÊýѧģÐͺÍÌØµã¡£
ÏÂͼΪһ¶ÎʱÐòÊý¾Ý£¬¼Ç¼ÁËÒ»¶Îʱ¼äÄÚµÄij¸ö¼¯ÈºÀï¸÷»úÆ÷Éϸ÷¶Ë¿ÚµÄ³öÈëÁ÷Á¿£¬Ã¿°ëСʱ¼Ç¼һ¸ö¹Û²âÖµ¡£ÕâÀïÒÔͼÖеÄÊý¾ÝΪÀý£¬½éÉÜÏÂʱÐòÊý¾ÝµÄÊýѧģÐÍ£¨²»Í¬µÄʱÐòÊý¾Ý¿âÖУ¬»ù±¾¸ÅÄîµÄ³ÆÎ½ÓпÉÄܲ»Í¬£¬ÕâÀïÒÔÌÚѶCTSDBΪ׼£©£º
measurement£º ¶ÈÁ¿µÄÊý¾Ý¼¯£¬ÀàËÆÓÚ¹ØÏµÐÍÊý¾Ý¿âÖÐµÄ table£»
point£º Ò»¸öÊý¾Ýµã£¬ÀàËÆÓÚ¹ØÏµÐÍÊý¾Ý¿âÖÐµÄ row£»
timestamp£º ʱ¼ä´Á£¬±íÕ÷²É¼¯µ½Êý¾ÝµÄʱ¼äµã£»
tag£º ά¶ÈÁУ¬´ú±íÊý¾ÝµÄ¹éÊô¡¢ÊôÐÔ£¬±íÃ÷ÊÇÄĸöÉ豸/Ä£¿é²úÉúµÄ£¬Ò»°ã²»Ëæ×Åʱ¼ä±ä»¯£¬¹©²éѯʹÓã»
field£º Ö¸±êÁУ¬´ú±íÊý¾ÝµÄ²âÁ¿Öµ£¬ËæÊ±¼äƽ»¬²¨¶¯£¬²»ÐèÒª²éѯ¡£

ÈçÉÏͼËùʾ£¬Õâ×éÊý¾ÝµÄmeasurementΪNetwork£¬Ã¿¸öpointÓÉÒÔϲ¿·Ö×é³É£º
timestamp£ºÊ±¼ä´Á
Á½¸ötag£ºhost¡¢port£¬´ú±íÿ¸öpoint¹éÊôÓÚÄĄ̈»úÆ÷µÄÄĸö¶Ë¿Ú
Á½¸öfield£ºbytes_in¡¢bytes_out£¬´ú±ípiontµÄ²âÁ¿Öµ£¬°ëСʱÄÚ³öÈëÁ÷Á¿µÄƽ¾ùÖµ
ͬһ¸öhost¡¢Í¬Ò»¸öport£¬Ã¿°ëСʱ²úÉúÒ»¸öpoint£¬Ëæ×Åʱ¼äµÄÔö³¤£¬field£¨bytes_in¡¢bytes_out£©²»¶Ï±ä»¯¡£Èçhost£ºhost4£¬port£º51514£¬timestamp´Ó02:00
µ½02:30µÄʱ¼ä¶ÎÄÚ£¬bytes_in ´Ó 37.937ÉÏÕǵ½38.089£¬bytes_out´Ó2897.26ÉÏÕǵ½3009.86£¬ËµÃ÷ÕâÒ»¶Îʱ¼äÄڸö˿ڷþÎñѹÁ¦Éý¸ß¡£
1.2.2 ʱÐòÊý¾ÝÌØµã
Êý¾Ýģʽ£º ʱÐòÊý¾ÝËæÊ±¼äÔö³¤£¬Ïàͬά¶ÈÖØ¸´È¡Öµ£¬Ö¸±êƽ»¬±ä»¯£ºÕâµã´ÓÉÏÃæµÄNetwork±íµÄÊý¾Ý±ä»¯¿ÉÒÔ¿´³ö¡£
дÈ룺 ³ÖÐø¸ß²¢·¢Ð´È룬ÎÞ¸üвÙ×÷£ºÊ±ÐòÊý¾Ý¿âÃæ¶ÔµÄÍùÍùÊǰÙÍòÉõÖÁǧÍòÊýÁ¿¼¶ÖÕ¶ËÉ豸µÄʵʱÊý¾ÝдÈ루ÈçĦ°Ýµ¥³µ2017ÄêÈ«¹ú³µÁ¾ÊýΪǧÍò¼¶£©£¬µ«Êý¾Ý´ó¶à±íÕ÷É豸״̬£¬Ð´Èëºó²»»á¸üС£
²éѯ£º °´²»Í¬Î¬¶È¶ÔÖ¸±ê½øÐÐͳ¼Æ·ÖÎö£¬ÇÒ´æÔÚÃ÷ÏÔµÄÀäÈÈÊý¾Ý£¬Ò»°ãÖ»»áƵ·±²éѯ½üÆÚÊý¾Ý¡£
1.3 ʱÐòÊý¾ÝµÄ´æ´¢
1.3.1 ´«Í³¹ØÏµÐÍÊý¾Ý¿â´æ´¢Ê±ÐòÊý¾ÝµÄÎÊÌâ
ÓÐÁËʱÐòÊý¾Ýºó£¬¸Ã´æ´¢ÔÚÄÄÀïÄØ£¿Ê×ÏÈÎÒÃÇ¿´Ï´«Í³µÄ¹ØÏµÐÍÊý¾Ý¿â½â¾ö·½°¸Ôڴ洢ʱÐòÊý¾Ýʱ»áÓöµ½Ê²Ã´ÎÊÌâ¡£
ºÜ¶àÈË¿ÉÄÜÈÏΪÔÚ´«Í³¹ØÏµÐÍÊý¾Ý¿âÉϼÓÉÏʱ¼ä´ÁÒ»ÁоÍÄÜ×÷ΪʱÐòÊý¾Ý¿â¡£Êý¾ÝÁ¿ÉÙµÄʱºòȷʵҲûÎÊÌâ¡£µ«Ê±ÐòÊý¾ÝÍùÍùÊÇÓɰÙÍò¼¶ÉõÖÁǧÍò¼¶ÖÕ¶ËÉ豸²úÉúµÄ£¬Ð´Èë²¢·¢Á¿±È½Ï¸ß£¬ÊôÓÚº£Á¿Êý¾Ý³¡¾°¡£
MySQLÔÚº£Á¿µÄʱÐòÊý¾Ý³¡¾°Ï´æÔÚÈçÏÂÎÊÌ⣺
´æ´¢³É±¾´ó£º¶ÔÓÚʱÐòÊý¾ÝѹËõ²»¼Ñ£¬ÐèÕ¼ÓôóÁ¿»úÆ÷×ÊÔ´£»
ά»¤³É±¾¸ß£ºµ¥»úϵͳ£¬ÐèÒªÔÚÉϲãÈ˹¤µÄ·Ö¿â·Ö±í£¬Î¬»¤³É±¾¸ß£»
дÈëÍÌ͵ͣºµ¥»úдÈëÍÌ͵ͣ¬ºÜÄÑÂú×ãʱÐòÊý¾ÝǧÍò¼¶µÄдÈëѹÁ¦£»
²éѯÐÔÄܲÊÊÓÃÓÚ½»Ò×´¦Àí£¬º£Á¿Êý¾ÝµÄ¾ÛºÏ·ÖÎöÐÔÄܲ
ÁíÍ⣬ʹÓÃHadoopÉú̬£¨Hadoop¡¢SparkµÈ£©´æ´¢Ê±ÐòÊý¾Ý»áÓÐÒÔÏÂÎÊÌ⣺
Êý¾ÝÑӳٸߣºÀëÏßÅú´¦Àíϵͳ£¬Êý¾Ý´Ó²úÉúµ½¿É·ÖÎö£¬ºÄʱÊýСʱ¡¢ÉõÖÁÌì¼¶£»
²éѯÐÔÄܲ²»ÄܺܺõÄÀûÓÃË÷Òý£¬ÒÀÀµMapReduceÈÎÎñ£¬²éѯºÄʱһ°ãÔÚ·ÖÖÓ¼¶¡£
¿ÉÒÔ¿´µ½Ê±ÐòÊý¾Ý¿âÐèÒª½â¾öÒÔϼ¸¸öÎÊÌ⣺
ʱÐòÊý¾ÝµÄдÈ룺ÈçºÎÖ§³ÖÿÃëÖÓÉÏǧÍòÉÏÒÚÊý¾ÝµãµÄдÈë¡£
ʱÐòÊý¾ÝµÄ¶ÁÈ¡£ºÈçºÎÖ§³ÖÔÚÃë¼¶¶ÔÉÏÒÚÊý¾ÝµÄ·Ö×é¾ÛºÏÔËËã¡£
³É±¾Ãô¸Ð£ºÓɺ£Á¿Êý¾Ý´æ´¢´øÀ´µÄÊdzɱ¾ÎÊÌâ¡£ÈçºÎ¸üµÍ³É±¾µÄ´æ´¢ÕâЩÊý¾Ý£¬½«³ÉΪʱÐòÊý¾Ý¿âÐèÒª½â¾öµÄÖØÖÐÖ®ÖØ¡£
1.3.2 ʱÐòÊý¾Ý¿â
***ʱÐòÊý¾Ý¿â²úÆ·µÄ·¢Ã÷¶¼ÊÇΪÁ˽â¾ö´«Í³¹ØÏµÐÍÊý¾Ý¿âÔÚʱÐòÊý¾Ý´æ´¢ºÍ·ÖÎöÉϵIJ»×ãºÍȱÏÝ£¬ÕâÀà²úÆ·±»Í³Ò»¹éÀàΪʱÐòÊý¾Ý¿â¡£***Õë¶ÔʱÐòÊý¾ÝµÄÌØµã¶ÔдÈë¡¢´æ´¢¡¢²éѯµÈÁ÷³Ì½øÐÐÁËÓÅ»¯£¬ÕâЩÓÅ»¯ÓëʱÐòÊý¾ÝµÄÌØµãϢϢÏà¹Ø£º
´æ´¢³É±¾£º
ÀûÓÃʱ¼äµÝÔö¡¢Î¬¶ÈÖØ¸´¡¢Ö¸±êƽ»¬±ä»¯µÄÌØÐÔ£¬ºÏÀíÑ¡Ôñ±àÂëѹËõËã·¨£¬Ìá¸ßÊý¾ÝѹËõ±È£»
ͨ¹ýÔ¤½µ¾«¶È£¬¶ÔÀúÊ·Êý¾Ý×ö¾ÛºÏ£¬½ÚÊ¡´æ´¢¿Õ¼ä¡£
¸ß²¢·¢Ð´È룺
ÅúÁ¿Ð´ÈëÊý¾Ý£¬½µµÍÍøÂ翪Ïú£»
Êý¾ÝÏÈдÈëÄڴ棬ÔÙÖÜÆÚÐÔµÄdumpΪ²»¿É±äµÄÎļþ´æ´¢¡£
µÍ²éѯÑÓʱ£¬¸ß²éѯ²¢·¢£º
ÓÅ»¯³£¼ûµÄ²éѯģʽ£¬Í¨¹ýË÷ÒýµÈ¼¼Êõ½µµÍ²éѯÑÓʱ£»
ͨ¹ý»º´æ¡¢routingµÈ¼¼ÊõÌá¸ß²éѯ²¢·¢¡£
1.3.3 ʱÐòÊý¾ÝµÄ´æ´¢ÔÀí
´«Í³Êý¾Ý¿â´æ´¢²ÉÓõͼÊÇ B tree£¬ÕâÊÇÓÉÓÚÆäÔÚ²éѯºÍ˳Ðò²åÈëʱÓÐÀûÓÚ¼õÉÙѰµÀ´ÎÊýµÄ×éÖ¯ÐÎʽ¡£ÎÒÃÇÖªµÀ´ÅÅÌѰµÀʱ¼äÊǷdz£ÂýµÄ£¬Ò»°ãÔÚ
10ms ×óÓÒ¡£´ÅÅ̵ÄËæ»ú¶ÁдÂý¾ÍÂýÔÚѰµÀÉÏÃæ¡£¶ÔÓÚËæ»úдÈë B tree »áÏûºÄ´óÁ¿µÄʱ¼äÔÚ´ÅÅÌѰµÀÉÏ£¬µ¼ÖÂËٶȺÜÂý¡£ÎÒÃÇÖªµÀ
SSD ¾ßÓиü¿ìµÄѰµÀʱ¼ä£¬µ«²¢Ã»ÓдӸù±¾ÉϽâ¾öÕâ¸öÎÊÌâ¡£
¶ÔÓÚ 90% ÒÔÉϳ¡¾°¶¼ÊÇдÈëµÄʱÐòÊý¾Ý¿â£¬B tree ºÜÃ÷ÏÔÊDz»ºÏÊʵġ£
Òµ½çÖ÷Á÷¶¼ÊDzÉÓà LSM tree Ìæ»» B tree£¬±ÈÈç Hbase, Cassandra µÈ
nosql ¡£ÕâÀïÎÒÃÇÏêϸ½éÉÜһϡ£
LSM tree °üÀ¨ÄÚ´æÀïµÄÊý¾Ý½á¹¹ºÍ´ÅÅÌÉϵÄÎļþÁ½²¿·Ö¡£·Ö±ð¶ÔÓ¦ Hbase ÀïµÄ MemStore
ºÍ HLog£»¶ÔÓ¦ Cassandra ÀïµÄ MemTable ºÍ sstable¡£
LSM tree ²Ù×÷Á÷³ÌÈçÏ£º
Êý¾ÝдÈëºÍ¸üÐÂʱÊ×ÏÈдÈëλÓÚÄÚ´æÀïµÄÊý¾Ý½á¹¹¡£ÎªÁ˱ÜÃâÊý¾Ý¶ªÊ§Ò²»áÏÈдµ½ WAL ÎļþÖС£
ÄÚ´æÀïµÄÊý¾Ý½á¹¹»á¶¨Ê±»òÕß´ïµ½¹Ì¶¨´óС»áË¢µ½´ÅÅÌ¡£ÕâЩ´ÅÅÌÉϵÄÎļþ²»»á±»Ð޸ġ£
Ëæ×Å´ÅÅÌÉÏ»ýÀÛµÄÎļþÔ½À´Ô½¶à£¬»á¶¨Ê±µÄ½øÐкϲ¢²Ù×÷£¬Ïû³ýÈßÓàÊý¾Ý£¬¼õÉÙÎļþÊýÁ¿¡£

¿ÉÒÔ¿´µ½ LSM tree ºËÐÄ˼Ïë¾ÍÊÇͨ¹ýÄÚ´æÐ´ºÍºóÐø´ÅÅ̵Ä˳ÐòдÈë»ñµÃ¸ü¸ßµÄдÈëÐÔÄÜ£¬±ÜÃâÁËËæ»úдÈë¡£µ«Í¬Ê±Ò²ÎþÉüÁ˶ÁÈ¡ÐÔÄÜ£¬ÒòΪͬһ¸ö
key µÄÖµ¿ÉÄÜ´æÔÚÓÚ¶à¸ö HFile ÖС£ÎªÁË»ñÈ¡¸üºÃµÄ¶ÁÈ¡ÐÔÄÜ£¬¿ÉÒÔͨ¹ý bloom filter
ºÍ compaction µÃµ½£¬ÕâÀïÏÞÓÚÆª·ù¾Í²»Ïêϸչ¿ª¡£
###1.3.4 ·Ö²¼Ê½´æ´¢
ʱÐòÊý¾Ý¿âÃæÏòµÄÊǺ£Á¿Êý¾ÝµÄдÈë´æ´¢¶ÁÈ¡£¬µ¥»úÊÇÎÞ·¨½â¾öÎÊÌâµÄ¡£ËùÒÔÐèÒª²ÉÓöà»ú´æ´¢£¬Ò²¾ÍÊÇ·Ö²¼Ê½´æ´¢¡£
·Ö²¼Ê½´æ´¢Ê×ÏÈÒª¿¼ÂǵÄÊÇÈçºÎ½«Êý¾Ý·Ö²¼µ½¶ą̀»úÆ÷ÉÏÃæ£¬Ò²¾ÍÊÇ·ÖÆ¬£¨sharding£©ÎÊÌâ¡£ÏÂÃæÎÒÃǾÍʱÐòÊý¾Ý¿â·ÖƬÎÊÌâÕ¹¿ª½éÉÜ¡£·ÖƬÎÊÌâÓÉ·ÖÆ¬·½·¨µÄÑ¡ÔñºÍ·ÖƬµÄÉè¼Æ×é³É¡£
####·ÖƬ·½·¨
ʱÐòÊý¾Ý¿âµÄ·ÖƬ·½·¨ºÍÆäËû·Ö²¼Ê½ÏµÍ³ÊÇÏàͨµÄ¡£
¹þÏ£·ÖƬ£ºÕâÖÖ·½·¨ÊµÏÖ¼òµ¥£¬¾ùºâÐԽϺ㬵«ÊǼ¯Èº²»Ò×À©Õ¹¡£
Ò»ÖÂÐÔ¹þÏ££ºÕâÖÖ·½°¸¾ùºâÐԺ㬼¯ÈºÀ©Õ¹ÈÝÒ×£¬Ö»ÊÇʵÏÖ¸´ÔÓ¡£´ú±íÓÐ Amazon µÄ DynamoDB
ºÍ¿ªÔ´µÄ Cassandra¡£
·¶Î§»®·Ö£ºÍ¨³£ÅäºÏÈ«¾ÖÓÐÐò£¬¸´ÔÓ¶ÈÔÚÓںϲ¢ºÍ·ÖÁÑ¡£´ú±íÓÐ Hbase¡£
·ÖƬÉè¼Æ
·ÖƬÉè¼Æ¼òµ¥À´Ëµ¾ÍÊÇÒÔʲô×ö·ÖƬ£¬ÕâÊǷdz£Óм¼Çɵ쬻áÖ±½ÓÓ°ÏìдÈë¶ÁÈ¡µÄÐÔÄÜ¡£
**½áºÏʱÐòÊý¾Ý¿âµÄÌØµã£¬¸ù¾Ý measurement+tags ·ÖƬÊDZȽϺõÄÒ»ÖÖ·½Ê½£¬ÒòΪÍùÍù»á°´ÕÕÒ»¸öʱ¼ä·¶Î§²éѯ£¬ÕâÑùÏàͬ
metric ºÍ tags µÄÊý¾Ý»á·ÖÅ䵽һ̨»úÆ÷ÉÏÁ¬Ðø´æ·Å£¬Ë³ÐòµÄ´ÅÅ̶ÁÈ¡ÊǺܿìµÄ¡£**ÔÙ½áºÏÉÏÃæ½²µ½µÄµ¥»ú´æ´¢ÄÚÈÝ£¬¿ÉÒÔ×öµ½¿ìËÙ²éѯ¡£
½øÒ»²½ÎÒÃÇ¿¼ÂÇʱÐòÊý¾Ýʱ¼ä·¶Î§ºÜ³¤µÄÇé¿ö£¬ÐèÒª¸ù¾Ýʱ¼ä·¶Î§Ôٷֳɼ¸¶Î£¬·Ö±ð´æ´¢µ½²»Í¬µÄ»úÆ÷ÉÏ£¬ÕâÑù¶ÔÓÚ´ó·¶Î§Ê±ÐòÊý¾Ý¾Í¿ÉÒÔÖ§³Ö²¢·¢²éѯ£¬ÓÅ»¯²éѯËÙ¶È¡£
ÈçÏÂͼ£¬µÚÒ»Ðк͵ÚÈýÐж¼ÊÇͬÑùµÄ tag£¨sensor=95D8-7913;city=
ÉϺ££©£¬ËùÒÔ·ÖÅ䵽ͬÑùµÄ·ÖƬ£¬¶øµÚÎåÐÐËäȻҲÊÇͬÑùµÄ tag£¬µ«ÊǸù¾Ýʱ¼ä·¶Î§ÔٷֶΣ¬±»·Öµ½Á˲»Í¬µÄ·ÖƬ¡£µÚ¶þ¡¢ËÄ¡¢ÁùÐÐÊôÓÚͬÑùµÄ
tag£¨sensor=F3CC-20F3;city= ±±¾©£©Ò²ÊÇÒ»ÑùµÄµÀÀí¡£

1.4 ¿ªÔ´Ê±ÐòÊý¾Ý¿â½éÉÜ
1.4.1¿ªÔ´Ê±ÐòÊý¾Ý¿â¶Ô±È
ĿǰÐÐÒµÄڱȽÏÁ÷ÐеĿªÔ´Ê±ÐòÊý¾Ý¿â²úÆ·ÓÐ InfluxDB¡¢OpenTSDB¡¢Prometheus¡¢GraphiteµÈ£¬Æä²úÆ·ÌØÐÔ¶Ô±ÈÈçÏÂͼËùʾ£º

1.4.2 InfluxDB½éÉÜ
InfluxDBÊÇÒ»¸ö¿ªÔ´µÄʱÐòÊý¾Ý¿â£¬Ê¹ÓÃGOÓïÑÔ¿ª·¢£¬ÌرðÊʺÏÓÃÓÚ´¦ÀíºÍ·ÖÎö×ÊÔ´¼à¿ØÊý¾ÝÕâÖÖʱÐòÏà¹ØÊý¾Ý¡£¶øInfluxDB×Ô´øµÄ¸÷ÖÖÌØÊ⺯ÊýÈçÇó±ê×¼²î£¬Ëæ»úÈ¡ÑùÊý¾Ý£¬Í³¼ÆÊý¾Ý±ä»¯±ÈµÈ£¬Ê¹Êý¾Ýͳ¼ÆºÍʵʱ·ÖÎö±äµÃÊ®·Ö·½±ã¡£
ÖØÒª¸ÅÄî
influxdbÀïÃæÓÐÒ»Ð©ÖØÒª¸ÅÄdatabase£¬timestamp£¬field
key£¬ field value£¬ field set£¬tag key£¬tag value£¬tag
set£¬measurement£¬ retention policy £¬series£¬point¡£½áºÏÏÂÃæµÄÀý×ÓÊý¾ÝÀ´ËµÃ÷Õ⼸¸ö¸ÅÄ
name: census
-¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª
time butterflies honeybees location scientist
2015-08-18T00:00:00Z 12 23 1 langstroth
2015-08-18T00:00:00Z 1 30 1 perpetua
2015-08-18T00:06:00Z 11 28 1 langstroth
2015-08-18T00:06:00Z 3 28 1 perpetua
2015-08-18T05:54:00Z 2 11 2 langstroth
2015-08-18T06:00:00Z 1 10 2 langstroth
2015-08-18T06:06:00Z 8 23 2 perpetua
2015-08-18T06:12:00Z 7 22 2 perpetua
¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª |
timestamp
¼ÈÈ»ÊÇʱ¼äÐòÁÐÊý¾Ý¿â£¬influxdbµÄÊý¾Ý¶¼ÓÐÒ»ÁÐÃûΪtimeµÄÁУ¬ÀïÃæ´æ´¢UTCʱ¼ä´Á¡£
field key£¬field value£¬field
set
butterfliesºÍhoneybeesÁ½ÁÐÊý¾Ý³ÆÎª×Ö¶Î(fields)£¬influxdbµÄ×Ö¶ÎÓÉfield
keyºÍfield value×é³É¡£ÆäÖÐbutterfliesºÍhoneybeesΪfield key£¬ËüÃÇΪstringÀàÐÍ£¬ÓÃÓÚ´æ´¢ÔªÊý¾Ý¡£
¶øbutterfliesÕâÒ»ÁеÄÊý¾Ý12-7ΪbutterfliesµÄfield value£¬Í¬Àí£¬honeybeesÕâÒ»ÁеÄ23-22ΪhoneybeesµÄfield
value¡£field value¿ÉÒÔΪstring£¬float£¬integer»òbooleanÀàÐÍ¡£field
valueͨ³£¶¼ÊÇÓëʱ¼ä¹ØÁªµÄ¡£
field keyºÍfield value¶Ô×é³ÉµÄ¼¯ºÏ³ÆÖ®Îªfield
set¡£ÈçÏ£º
butterflies =
12 honeybees = 23
butterflies = 1 honeybees = 30
butterflies = 11 honeybees = 28
butterflies = 3 honeybees = 28
butterflies = 2 honeybees = 11
butterflies = 1 honeybees = 10
butterflies = 8 honeybees = 23
butterflies = 7 honeybees = 22 |
ÔÚinfluxdbÖУ¬×ֶαØÐë´æÔÚ¡£×¢Ò⣬×Ö¶ÎÊÇûÓÐË÷ÒýµÄ¡£Èç¹ûʹÓÃ×Ö¶Î×÷Ϊ²éѯÌõ¼þ£¬»áɨÃè·ûºÏ²éѯÌõ¼þµÄËùÓÐ×Ö¶ÎÖµ£¬ÐÔÄܲ»¼°tag¡£Àà±Èһϣ¬fieldsÏ൱ÓÚSQLµÄûÓÐË÷ÒýµÄÁС£
tag key£¬tag value£¬tag set
locationºÍscientistÕâÁ½ÁгÆÎª±êÇ©(tags)£¬±êÇ©ÓÉtag
keyºÍtag value×é³É¡£locationÕâ¸ötag keyÓÐÁ½¸ötag value£º1ºÍ2£¬scientistÓÐÁ½¸ötag
value£ºlangstrothºÍperpetua¡£tag keyºÍtag value¶Ô×é³ÉÁËtag
set£¬Ê¾ÀýÖеÄtag setÈçÏ£º
location = 1,
scientist = langstroth
location = 2, scientist = langstroth
location = 1, scientist = perpetua
location = 2, scientist = perpetua |
tagsÊÇ¿ÉÑ¡µÄ£¬µ«ÊÇÇ¿ÁÒ½¨ÒéÄãÓÃÉÏËü£¬ÒòΪtagÊÇÓÐË÷ÒýµÄ£¬tagsÏ൱ÓÚSQLÖеÄÓÐË÷ÒýµÄÁС£tag
valueÖ»ÄÜÊÇstringÀàÐÍ Èç¹ûÄãµÄ³£Óó¡¾°ÊǸù¾ÝbutterfliesºÍhoneybeesÀ´²éѯ£¬ÄÇôÄã¿ÉÒÔ½«ÕâÁ½¸öÁÐÉèÖÃΪtag£¬¶øÆäËûÁ½ÁÐÉèÖÃΪfield£¬tagºÍfieldÒÀ¾Ý¾ßÌå²éѯÐèÇóÀ´¶¨¡£
measurement
measurementÊÇfields£¬tagsÒÔ¼°timeÁеÄÈÝÆ÷£¬measurementµÄÃû×ÖÓÃÓÚÃèÊö´æ´¢ÔÚÆäÖеÄ×Ö¶ÎÊý¾Ý£¬ÀàËÆmysqlµÄ±íÃû¡£ÈçÉÏÃæÀý×ÓÖеÄmeasurementΪcensus¡£measurementÏ൱ÓÚSQLÖÐµÄ±í£¬±¾ÎÄÖÐÎÒÔÚ²¿·ÖµØ·½»áÓñíÀ´Ö¸´úmeasurement¡£
retention policy
retention policyÖ¸Êý¾Ý±£Áô²ßÂÔ£¬Ê¾ÀýÊý¾ÝÖеÄretention policyΪĬÈϵÄautogen¡£Ëü±íʾÊý¾ÝÒ»Ö±±£ÁôÓÀ²»¹ýÆÚ£¬¸±±¾ÊýÁ¿Îª1¡£ÄãÒ²¿ÉÒÔÖ¸¶¨Êý¾ÝµÄ±£Áôʱ¼ä£¬Èç30Ìì¡£
series
seriesÊǹ²Ïíͬһ¸öretention policy£¬measurementÒÔ¼°tag
setµÄÊý¾Ý¼¯ºÏ¡£Ê¾ÀýÖÐÊý¾ÝÓÐ4¸öseries£¬ÈçÏÂ:
Arbitrary series
number Retention policy Measurement Tag set
series 1 autogen census location = 1,scientist
= langstroth
series 2 autogen census location = 2,scientist
= langstroth
series 3 autogen census location = 1,scientist
= perpetua
series 4 autogen census location = 2,scientist
= perpetua |
point
pointÔòÊÇͬһ¸öseriesÖоßÓÐÏàͬʱ¼äµÄfield set£¬pointsÏ൱ÓÚSQLÖеÄÊý¾ÝÐС£ÈçÏÂÃæ¾ÍÊÇÒ»¸öpoint£º
name: census
-----------------
time butterflies honeybees location scientist
2015-08-18T00:00:00Z 1 30 1 perpetua |
database
ÉÏÃæÌáµ½µÄ½á¹¹¶¼´æ´¢ÔÚÊý¾Ý¿âÖУ¬Ê¾ÀýµÄÊý¾Ý¿âΪmy_database¡£Ò»¸öÊý¾Ý¿â¿ÉÒÔÓжà¸ömeasurement£¬retention
policy£¬ continuous queriesÒÔ¼°user¡£influxdbÊÇÒ»¸öÎÞģʽµÄÊý¾Ý¿â£¬¿ÉÒÔºÜÈÝÒ×µÄÌí¼ÓеÄmeasurement£¬tags£¬fieldsµÈ¡£¶øËüµÄ²Ù×÷È´ºÍ´«Í³µÄÊý¾Ý¿âÒ»Ñù£¬¿ÉÒÔʹÓÃÀàSQLÓïÑÔ²éѯºÍÐÞ¸ÄÊý¾Ý¡£
influxdb²»ÊÇÒ»¸öÍêÕûµÄCRUDÊý¾Ý¿â£¬Ëü¸üÏñÊÇÒ»¸öCR-udÊý¾Ý¿â¡£ËüÓÅÏÈ¿¼ÂǵÄÊÇÔö¼ÓºÍ¶ÁÈ¡Êý¾Ý¶ø²»ÊǸüкÍɾ³ýÊý¾ÝµÄÐÔÄÜ£¬¶øÇÒËü×èÖ¹ÁËijЩ¸üкÍɾ³ýÐÐΪʹµÃ´´½¨ºÍ¶ÁÈ¡Êý¾Ý¸ü¼Ó¸ßЧ¡£
2.²¿Êð
2.1 influxdb²¿Êð
yum²¿Êð£º
<1> ÅäÖÃYUMÔ´
cat <<EOF|
sudo tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository- RHEL\$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/
\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF |
<2> yum°²×°
yum install
influxdb -y
systemctl start influxdb
systemctl enable influxdb |
rpm²¿Êð£º
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.5.2.x86_64.rpm
yum -y localinstall influxdb-1.5.2.x86_64.rpm |
docker²¿Êð£º
docker run --name=influxdb
-d -p 8086:8086 -v /etc/localtime:/etc/localtime
daocloud.io/liukuan73/influxdb:1.4 |
±¸×¢£º¼ÙÈçÊÇÊÕ¼¯collectdµÄÄÚÈÝ£¬»¹ÐèÒªÓ³Éä25826¶Ë¿Ú-p 25826:25826
##2.2 grafana²¿Êð
rpm²¿Êð£º
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.0.4-1.x86_64.rpm
yum -y localinstall grafana-5.0.4-1.x86_64.rpm
systemctl enable grafana-server
systemctl start grafana-server |
docker²¿Êð£º
docker run -d
-p 3000:3000 --name=grafana -e "GF_SERVER_HTTP_PORT=3000"
-e "GF_AUTH_BASIC_ENABLED=false" -e
"GF_AUTH_ANONYMOUS_ENABLED=true" -e
"GF_AUTH_ANONYMOUS_ORG_ROLE=Admin" -e
"GF_SERVER_ROOT_URL=/" daocloud.io/liukuan73/grafana:5.0.0 |
3.ʹÓÃ
ÓÐÈýÖÖ·½·¨¿ÉÒÔ½«Êý¾ÝдÈëInfluxDB£¬°üÀ¨£º
¿Í»§¶Ë¿â
µ÷ÓÃrestapi
ÃüÁîÐУ¨ÀàsqlÓï¾ä£©
##3.1 µ÷Óÿͻ§¶Ë¿â²Ù×÷influxdb
ÒÔcollectd+influxdb+grafanaΪÀý½éÉÜͨ¹ýcollectd²É¼¯Ö÷»úÐÔÄÜÖ¸±ê£¬È»ºóͨ¹ýinfluxdbµÄ¿Í»§¶Ë¿âдÈëinfluxdb£¬×îºóÔÚgrafanaչʾµÄÍêÕû¹ý³Ì¡£
3.1.1 collectd²¿Êð
1¡¢yum°²×°
sudo yum -y
install epel-release
sudo yum -y install collectd |
2¡¢Êý¾ÝдÈë influxdb ,ÐÞ¸ÄÅäÖÃ
vi /etc/collectd.conf
LoadPlugin network
<Plugin network>
# # client setup:
Server "10.142.232.155" "25826"
# <Server "239.192.74.66" "25826">
</Plugin>
systemctl enable collectd
systemctl start collectd
systemctl status collectd |
3.1.2 influxdbÅäÖÃ
1¡¢´´½¨collectdÊý¾Ý¿â
influx -host
'10.142.232.155' -port '8086'
Connected to http://127.0.0.1:8086 version 1.5.2
InfluxDB shell version: 1.5.2
> create database collectd
> use collectd
> create user "collectd" with password
'123456' with all privileges |
2¡¢ÅäÖÃinfluxdb£¬¿ªÆô¶ÔcollectdÊý¾ÝµÄ½ÓÊÕ
vim /etc/influxdb/influxdb.conf
[[collectd]]
enabled = true
port = 25826
database = "collectd" #¸Õ´´½¨µÄcollectdÊý¾Ý¿â£¬À´×ÔcollectdµÄÊý¾ÝдÈëÕâ¸öÊý¾Ý¿â¡£Ã»ÊÂÏÈ´´½¨ºÃµÄ»°»áÆô¶¯Ê§°Ü |
3.1.3 grafanaÅäÖÃ
1¡¢ÅäÖÃinfluxdbÊý¾ÝÔ´
µã»÷¡°Add data source¡±ÅäÖÃÊý¾ÝÔ´£º

2.ÅäÖÃdashboard
ÍøÂçÁ÷Á¿Í³¼Æ
´´½¨graph£¬Çл»±à¼Ä£Ê½¡°Toggle Edit Mode¡±, È»ºóÊäÈë×Ô¶¨ÒåSQL²éѯ

ÊäÈë²éѯÓï¾ä£º
SELECT derivative("value")
AS "value" FROM "interface_rx"
WHERE "host" = 'k8sslave04' AND "type"
= 'if_octets' AND "instance" = 'eno16777984' |
±¸×¢£º
º¯Êý derivative ÒâΪµ¼Êý, ΢»ý·ÖÖеĸÅÄî. value
Ϊ´«Êä×ÜÁ¿(×Ö½Ú), derivative(¡°value¡±) Ϊ value ÔÚʱ¼äÉϵÄÔöÁ¿.ÆäÖУº
host = k8sslave04
type = if_octets
instance = eno16777984 |
ϵͳ¸ºÔØ

ÊäÈë²éѯÓï¾ä£º
SELECT mean("value")
FROM "load_longterm" WHERE "host"
= 'k8sslave04' AND $timeFilter GROUP BY time($interval)
fill(null)
SELECT mean("value") FROM "load_midterm"
WHERE "host" = 'k8sslave04' AND $timeFilter
GROUP BY time($interval) fill(null)
SELECT mean("value") FROM "load_shortterm"
WHERE "host" = 'k8sslave04' AND $timeFilter
GROUP BY time($interval) fill(null) |
ÄÚ´æÓÃÁ¿

ÊäÈë²éѯÓï¾ä£º
SELECT mean("value")
FROM "memory_value" WHERE "type_instance"
= 'used' AND $timeFilter GROUP BY time($interval)
fill(null) |
Ч¹û

3.2 RestAPI²Ù×÷
3.2.1 ʵÀý
´´½¨Êý¾Ý¿â£º
Òª´´½¨Êý¾Ý¿â£¬Ç뽫POSTÇëÇó·¢Ë͵½/queryÖÕ½áµã£¬²¢½«URL²ÎÊýqÉèÖÃΪCREATE
DATABASE¡£ ÏÂÃæµÄʾÀýÖ÷»úÉÏÔËÐеÄInfluxDB·¢ËÍÇëÇ󣬲¢´´½¨Êý¾Ý¿âtest£º
curl -i -XPOST
http://influxdb-ip:8086/query --data-urlencode
"q=CREATE DATABASE test" |
дÈëµ¥ÌõÊý¾Ý:
ͨ¹ýÏò/write¶Ëµã·¢ËÍPOSTÇëÇó£¬HTTP-APIÊǽ«Êý¾ÝдÈëInfluxDBµÄÖ÷Òª·½Ê½¡£ÏÂÃæµÄÀý×ÓÏòtestÊý¾Ý¿âдÁËÒ»¸öµã¡£
Êý¾ÝÓɶÈÁ¿cpu_load_short£¬±êÇ©¼ühostºÍregionºÍ¶ÔÓ¦µÄ±êǩֵserver01ºÍus-west£¬×Ö¶ÎֵΪ0.64µÄ×ֶμüvalueºÍʱ¼ä´Á1434055562000000000×é³É¡£
curl -i -XPOST
'http://influxdb-ip:8086/write?db=test' --data-binary
'cpu_load_short,host=server01,region=us-west value=0.64
1434055562000000000' |
дÈëµãʱ£¬±ØÐëÔÚdb²éѯ²ÎÊýÖÐÖ¸¶¨Ò»¸öÏÖÓеÄÊý¾Ý¿â¡£ Èç¹ûÄúûÓÐʹÓÃrp²éѯ²ÎÊýÌṩ±£Áô²ßÂÔ£¬Ôò»á½«µãдÈëÊý¾Ý¿âµÄĬÈϱ£Áô²ßÂÔ¡£
Çë²ÎÔÄAPI²Î¿¼ÎĵµÒÔ»ñÈ¡¿ÉÓòéѯ²ÎÊýµÄÍêÕûÁÐ±í¡£
дÈë¶àÌõÊý¾Ý£º
Ò»´Î½«¶à¸öµãPostµ½²»Í¬ÐòÁУ¬Ö»ÐèÒªÓÃÐн«¶à¸öµã·Ö¸ô¼´¿É¡£ÕâÖÖÅúÁ¿·½Ê½¾ßÓиßÐÔÄÜ¡£ÒÔÏÂʾÀý½«Èý¸öµãдÈëÊý¾Ý¿âmydb¡£
µÚÒ»µãÊôÓÚÓµÓжÈÁ¿cpu_load_short¼°±êÇ©¼¯host = server02ÇÒÓ÷þÎñÆ÷±¾µØÊ±¼ä´ÁµÄÐòÁС£µÚ¶þµãÊôÓÚÓµÓжÈÁ¿cpu_load_short¼°±êÇ©¼¯host
= server02£¬region =us-westÇÒ¾ßÓÐÖ¸¶¨Ê±¼ä´Á1422568543702900257µÄÐòÁС£µÚÈý¸öµãÓëµÚ¶þ¸öµã¾ßÓÐÏàͬµÄÖ¸¶¨Ê±¼ä´Á£¬µ«Êǽ«ÆäдÈëÓµÓжÈÁ¿cpu_load_shortºÍ±êÇ©¼¯direction=in,host=server01,region=us-westµÄÐòÁС£
curl -i -XPOST
'http://influxdb-ip:8086/write?db=test' --data-binary
'cpu_load_short,host=server02 value=0.67
cpu_load_short,host=server02,region=us-west value=0.55
1422568543702900257
cpu_load_short,direction=in,host=server01,region=us-west
value=2.0 1422568543702900257' |
дÈëÀ´×ÔÎļþµÄÊý¾Ý£º
ͨ¹ý½«@filename´«¸øcurlÀ´´ÓÎļþÖÐдÈëµã¡£ÎļþÖеÄÊý¾ÝÓ¦¸Ã×ñÑInfluxDBµÄÐÐÐÒéÓï·¨¡£¸ñʽÕýÈ·µÄÎļþʾÀý£¨cpu_data.txt£©£º
cpu_load_short,host=server02
value=0.67
cpu_load_short,host=server02,region=us-west value=0.55
1422568543702900257
cpu_load_short,direction=in,host=server01,region=us-west
value=2.0 1422568543702900257 |
½«cpu_data.txtÖÐÊý¾ÝдÈëmydbÊý¾Ý¿â£º
curl -i -XPOST
'http://influxdb-ip:8086/write?db=test' --data-binary
@cpu_data.txt |
×¢Ò⣺Èç¹ûÊý¾ÝÎļþÖг¬¹ý5,000¸öµã£¬¿ÉÄÜÐèÒª½«¸ÃÎļþ·Ö³É¼¸¸öÎļþ£¬ÒԱ㽫Êý¾ÝÅúÁ¿Ð´ÈëInfluxDB¡£
ĬÈÏÇé¿öÏ£¬HTTPÇëÇóÔÚÎåÃëÖÓºó³¬Ê±¡£ InfluxDBÔÚ³¬Ê±Ö®ºóÈÔÈ»»á³¢ÊÔд³öÕâЩµã£¬µ«ÊDz»ÄÜÈ·ÈÏËüÃÇÊÇ·ñ³É¹¦Ð´Èë¡£
###3.2.2 HTTPÏìÓ¦×ܽá
2xx£ºÈç¹ûÄãµÄдÇëÇóÊÕµ½HTTP 204 No Content£¬ÄǾͳɹ¦ÁË£¡
4xx£ºInfluxDBÎÞ·¨Àí½âÇëÇó¡£
5xx£ºÏµÍ³¹ýÔØ»òÑÏÖØÊÜËð¡£
Î޼ܹ¹Éè¼Æ
InfluxDBÊÇÒ»¸öÎ޼ܹ¹µÄÊý¾Ý¿â¡£ Äú¿ÉÒÔËæÊ±Ìí¼ÓеĶÈÁ¿£¬±êÇ©ºÍ×ֶΡ£Çë×¢Ò⣬Èç¹ûÄú³¢ÊÔдÈëÓëÒÑдÈëÊý¾ÝÀàÐͲ»ÏàͬµÄÊý¾Ý£¨ÀýÈ磬½«×Ö·û´®Ð´Èë֮ǰ½ÓÊÜÕûÊýµÄ×ֶΣ©£¬InfluxDB½«¾Ü¾øÕâЩÊý¾Ý¡£
´íÎóÏìÓ¦µÄÀý×Ó£º
½«¸¡µãÊýдÈëÏÈǰ½ÓÊܲ¼¶ûÖµµÄ×Ö¶ÎÖУº
curl -i -XPOST
'https://influxdb-ip:8086/writedb=hamlet' --data-binary
'tobeornottobe booleanonly=true'
curl -i -XPOST 'https://influxdb-ip:8086/writedb=hamlet'
--data-binary 'tobeornottobe booleanonly=5' |
·µ»Ø£º
HTTP/1.1 400
Bad Request
Content-Type: application/json
Request-Id: [...]
X-Influxdb-Version: 1.4.x
Date: Wed, 01 Mar 2017 19:38:01 GMT
Content-Length: 150
{"error":"field type conflict:
input field \"booleanonly\" on measurement
\"tobeornottobe\" is type float, already
exists as type boolean dropped=1"}
Writing a point to a database that doesn¡¯t exist:
curl -i -XPOST 'https://localhost:8086/writedb=atlantis'
--data-binary 'liters value=10'
returns:
HTTP/1.1 404 Not Found
Content-Type: application/json
Request-Id: [...]
X-Influxdb-Version: 1.4.x
Date: Wed, 01 Mar 2017 19:38:35 GMT
Content-Length: 45
{"error":"database not found: \"atlantis\""}
Next steps
Now that you know how to write data with the built-in
HTTP API discover how to query them with the Querying
Data guide! For more information about writing
data with the HTTP API, please see the API reference
documentation. |
½«µãдÈë²»´æÔÚµÄÊý¾Ý¿â
curl -i -XPOST
'https://localhost:8086/writedb=atlantis' --data-binary
'liters value=10' |
·µ»Ø£º
HTTP/1.1 404
Not Found
Content-Type: application/json
Request-Id: [...]
X-Influxdb-Version: 1.4.x
Date: Wed, 01 Mar 2017 19:38:35 GMT
Content-Length: 45
{"error":"database not found: \"atlantis\""} |
3.3ÃüÁîÐвÙ×÷
InfluxDBÌṩÀàSQLÓï·¨£¬Èç¹ûÊìϤSQLµÄ»°»á·Ç³£ÈÝÒ×ÉÏÊÖ¡£ |