±à¼ÍƼö: |
±¾ÎÄÖ÷Ҫ̸ÂÛÎå¸ö·½Ã棺ʱÐòÊý¾Ý¿âÑ¡ÐÍ¡¢influxdb»ù±¾¸ÅÄî¡¢´æ´¢ÒýÇæ¡¢Êµ¼ù¡¢Êý¾Ý¾ÛºÏ¡£
±¾ÎÄÀ´×Ôcsdn,ÓÉ»ðÁú¹ûÈí¼þÁõ衱à¼ÍƼö |
|
ʱÐòÊý¾Ý¿âÑ¡ÐÍ
Influxdb vs Prometheus
influxdb¼¯³ÉÒÑÓеĸÅÄ±ÈÈç²éѯÓï·¨ÀàËÆsql£¬ÒýÇæ´ÓLSMÓÅ»¯¶øÀ´£¬Ñ§Ï°³É±¾Ïà¶ÔµÍ¡£
influxdbÖ§³ÖµÄÀàÐÍÓÐfloat£¬integers£¬strings£¬booleans£¬prometheusĿǰֻ֧³Öfloat¡£
influxdbµÄʱ¼ä¾«¶ÈÊÇÄÉÃ룬prometheusµÄÔòÊǺÁÃë¡£
influxdb½ö½öÊǸöÊý¾Ý¿â£¬¶øprometheusÌṩµÄÊÇÕûÌ×¼à¿Ø½â¾ö·½°¸£¬µ±È»influxdbÒ²ÌṩÁËÕûÌ×¼à¿Ø½â¾ö·½°¸¡£
influxdbÖ§³ÖµÄmath function±È½ÏÉÙ£¬prometheusÏà¶ÔÀ´Ëµ¸ü¶à£¬influxdb¾ÍĿǰʹÓÃÉÏÒѾÂú×㹦ÄÜ¡£
2015Äêprometheus»¹ÔÚ¿ª·¢½×¶Î£¬Ïà¶ÔÀ´Ëµinfluxdb¸ü¼ÓÎȶ¨¡£
influxdbÖ§³Öevent log£¬prometheus²»Ö§³Ö¡£
¸üÏêϸµÄ¶Ô±ÈÇë²Î¿¼£º¶Ô±Èhttps://db-engines.com/en/system/Graphite%3BInfluxDB%3BPrometheus¡£
ÎÒÃÇÆäʵ½ö½öÐèÒªµÄÊÇÒ»¸öÊý¾Ý¿â£¬ÆäËû×é¼þ¶¼ÊÇ×Ô¼º¿ª·¢µÄ£¬¶øÇÒ´æ´¢µÄÊý¾ÝÀàÐͲ»½ö½öÊÇÊý×Ö£¬Òò´ËÑ¡ÔñÁËinfluxdb¡£Ï£ÍûÉÏÃæµÄ±È½Ï¶Ô´ó¼ÒÓаïÖú¡£
Influxdb»ù±¾¸ÅÄî
Database
Êý¾Ý¿âÊǸöÂß¼ÈÝÆ÷£¬°üº¬ÁËmeasurement¡¢retention policies¡¢continuous queries¡¢time series data£¬ÀàËÆÓÚmysqlµÄdatabase¡£
Measurement
ÃèÊöÁËÏà¹ØÊý¾ÝµÄ´æ´¢½á¹¹£¬ÀàËÆÓÚmysqlµÄtable£¬µ«ÊDz»ÐèÒª´´½¨£¬Ð´ÈëÊý¾ÝµÄʱºò×Ô¶¯´´½¨¡£¹ØÓÚschemaµÄÉè¼Æ½¨Òé²Î¿¼£ºÉè¼Æ½¨Òé¡£
Line Protocol
Line Protocol¶¨ÒåÁËinfluxdbµÄÊý¾ÝдÈë¸ñʽ£¬ÈçÏ£º

Tag
ÉÏÃæµÄlocationºÍserver¾ÍÊÇtag key£¬usºÍhost1ÊÇtag value£¬tagÊÇ¿ÉÑ¡µÄ¡£²»¹ýдÈëÊý¾Ýʱ×îºÃ¼ÓÉÏtag£¬ÒòΪËü¿ÉÒÔ±»Ë÷Òý¡£tagµÄÀàÐÍÖ»ÄÜÊÇ×Ö·û´®¡£
Field
ÉÏÃæµÄtemperatureÊÇfield key£¬82ÊÇfield value¡£field value»áÓÃÓÚչʾ£¬valueÖ§³ÖµÄÀàÐÍÓÐfloats£¬integers£¬strings£¬booleans¡£
Timestamp
¸ñʽÊÇ£ºRFC3339 UTC¡£Ä¬ÈϾ«È·µ½ÄÉÃ룬¿ÉÑ¡¡£
Series
measurement, tag set, retention policyÏàͬµÄÊý¾Ý¼¯ºÏËã×öÒ»¸ö series¡£Àí½âÕâ¸ö¸ÅÄîÖÁ¹ØÖØÒª£¬ÒòΪÕâЩÊý¾Ý´æ´¢ÔÚÄÚ´æÖУ¬Èç¹ûseriesÌ«¶à£¬»áµ¼ÖÂOOM¡£
Retention Policy
±£Áô²ßÂÔ°üÀ¨ÉèÖÃÊý¾Ý±£´æµÄʱ¼äÒÔ¼°ÔÚ¼¯ÈºÖеĸ±±¾¸öÊý¡£Ä¬ÈÏÅäÖÃÊÇ£ºRPÊÇautogen£¬±£Áôʱ¼äÊÇÓÀ¾Ã£¬¸±±¾Îª1¡£ÕâЩÅäÖÃÔÚ´´½¨Êý¾Ý¿âʱ¿ÉÒÔÐ޸ġ£
Continuous Query
CQÊÇÔ¤ÏÈÅäÖúõÄһЩ²éѯÃüÁ¶¨ÆÚ×Ô¶¯Ö´ÐÐÕâЩÃüÁî²¢½«²éѯ½á¹ûдÈëÖ¸¶¨µÄmeasurementÖУ¬Õâ¸ö¹¦ÄÜÖ÷ÒªÓÃÓÚÊý¾Ý¾ÛºÏ¡£¾ßÌå²Î¿¼£ºCQ¡£
Shard
´æ´¢Ò»¶¨Ê±¼ä¼ä¸ôµÄÊý¾Ý£¬Ã¿¸öĿ¼¶ÔÓ¦Ò»¸öshard£¬Ä¿Â¼µÄÃû×Ö¾ÍÊÇshard id¡£Ã¿Ò»¸öshard¶¼ÓÐ×Ô¼ºµÄcache¡¢wal¡¢tsm fileÒÔ¼°compactor£¬Ä¿µÄ¾ÍÊÇͨ¹ýʱ¼äÀ´¿ìËÙ¶¨Î»µ½Òª²éѯÊý¾ÝµÄÏà¹Ø×ÊÔ´£¬¼ÓËÙ²éѯµÄ¹ý³Ì£¬²¢ÇÒÒ²ÈÃÖ®ºóµÄÅúÁ¿É¾³ýÊý¾ÝµÄ²Ù×÷±äµÃ·Ç³£¼òµ¥ÇÒ¸ßЧ¡£
´æ´¢ÒýÇæ
TSM TreeÊÇÔÚLSM TreeµÄ»ù´¡ÉÏÉÔ×÷ÐÞ¸ÄÓÅ»¯¶øÀ´¡£ËüÖ÷Òª°üº¬Ëĸö²¿·Ö£ºcache¡¢wal¡¢tsm file¡¢compactor¡£
Cache£º²åÈëÊý¾Ýʱ£¬ÏÈÍùcacheÖÐдÈëÔÙдÈëwalÖУ¬¿ÉÒÔÈÏΪcacheÊÇwalÎļþÖеÄÊý¾ÝÔÚÄÚ´æÖеĻº´æ¡£
WAL£ºÔ¤Ð´ÈÕÖ¾£¬¶Ô±ÈmysqlµÄbinlog¡£Æä×÷ÓþÍÊÇΪÁ˳־û¯Êý¾Ý£¬µ±ÏµÍ³±ÀÀ£ºó¿ÉÒÔͨ¹ýwalÎļþ»Ö¸´cache¡£
TSM File£ºÃ¿¸ötsmÎļþµÄ´óСÉÏÏÞÊÇ2GB¡£µ±´ïµ½cache-snapshot-memory-size,cache-max-memory-sizeµÄÏÞÖÆÊ±»á´¥·¢½«cacheдÈëtsmÎļþ¡£
Compactor£ºÖ÷Òª½øÐÐÁ½ÖÖ²Ù×÷£¬Ò»ÖÖÊÇcacheÊý¾Ý´ïµ½·§Öµºó£¬½øÐпìÕÕ£¬Éú³ÉÒ»¸öеÄtsmÎļþ¡£ÁíÍâÒ»ÖÖ¾ÍÊǺϲ¢µ±Ç°µÄtsmÎļþ£¬½«¶à¸öСµÄtsmÎļþºÏ²¢³ÉÒ»¸ö£¬¼õÉÙÎļþµÄÊýÁ¿£¬²¢ÇÒ½øÐÐһЩÊý¾Ýɾ³ý²Ù×÷¡£ ÕâЩ²Ù×÷¶¼ÔÚºǫ́×Ô¶¯Íê³É¡£
Ŀ¼½á¹¹
InfluxDBµÄÊý¾Ý´æ´¢ÓÐÈý¸öĿ¼£¬·Ö±ðÊÇmeta¡¢wal¡¢data¡£metaÓÃÓÚ´æ´¢Êý¾Ý¿âµÄһЩԪÊý¾Ý£¬metaĿ¼ÏÂÓÐÒ»¸ömeta.dbÎļþ¡£walĿ¼´æ·ÅԤдÈÕÖ¾Îļþ£¬ÒÔ.wal½áβ¡£dataĿ¼´æ·Åʵ¼Ê´æ´¢µÄÊý¾ÝÎļþ£¬ÒÔ.tsm½áβ¡£»ù±¾½á¹¹ÈçÏ£º

ÆäÖÐ testÊÇÊý¾Ý¿âÃû³Æ£¬autogenÊÇ´æ´¢²ßÂÔÃû³Æ£¬ÔÙÏÂÒ»²ãĿ¼ÖеÄÒÔÊý×ÖÃüÃûµÄĿ¼ÊÇ shard µÄ ID Öµ£¬±ÈÈç autogen´æ´¢²ßÂÔÏÂÓÐÁ½¸ö shard£¬ID ·Ö±ðΪ 1 ºÍ 2£¬shard´æ´¢ÁËijһ¸öʱ¼ä¶Î·¶Î§ÄÚµÄÊý¾Ý¡£ÔÙÏÂÒ»¼¶µÄĿ¼ÔòΪ¾ßÌåµÄÎļþ£¬·Ö±ðÊÇ .walºÍ .tsm½áβµÄÎļþ¡£
¸üÏêϸµÄ²Î¿¼£ºInfluxDBÏê½âÖ®TSM´æ´¢ÒýÇæ
½âÎö £¨http://blog.fatedier.com/2016/08/05/detailed-in-influxdb-tsm-storage-engine-one/£©¡£
ʵ¼ù
gatewayÓÃÓÚ¼ì²âºÍѹËõinfluxdbµÄÊý¾Ý£¬ÓÃÓÚ¿ç»ú·¿´«Ê䣬²ÉÓÃudp½ÓÊÜÊý¾Ý¡£
influxdb-relayÊǹٷ½ÌṩµÄ¸ß¿ÉÓ÷½°¸£¬µ«ÊÇËüÖ»Ìṩ¼òµ¥µÄдÈ빦ÄÜ¡£
influxdb-proxyÊÇÓÃÓÚÌæ´úinfluxdb-relayµÄ¸ß¿ÉÓ÷½°¸¡£
ǰÆÚ¼Ü¹¹Í¼

ʹÓÃÎÊÌâ
influxdb-relayÊǹٷ½ÌṩµÄ¸ß¿ÉÓ÷½°¸£¬µ«ÊÇËüÖ»Ìṩ¼òµ¥µÄдÈ빦ÄÜ¡£ÔÚ³õÆÚʹÓÃʱ£¬²¢Ã»Óжà´óµÄÎÊÌâ£¬Ëæ×ÅinfluxdbÔÚ¹«Ë¾µÄÍÆ¹ã£¬½ÓÈë·½Ô½À´Ô½¶à£¬Òâζ×Ųéѯ·½Ô½À´Ô½¶à£¬Õâ¾Í´øÀ´ÁËÒÔÏÂÎÊÌ⣺
grafanaÐèÒªÅäÖúܶà¸öÊý¾ÝÔ´¡£
Óû§²»Äܸù¾ÝmeasurementÀ´¶©ÔÄÊý¾Ý¡£
Êý¾Ý¿â¹Òµô£¬¾ÍÐèÒªÐÞ¸ÄgrafanaµÄÊý¾ÝÔ´¡£
ά»¤À§ÄÑ£¬±ÈÈçÐèÒªÐÂÔöÊý¾Ý¿â£¬Óû§ÐèÒªÅäÖöà¸öÊý¾ÝÔ´£¬²»ÄÜͳһ½ÓÈëµã¡£
Óû§²éѯֱÁ¬Êý¾Ý¿â£¬Óû§select *Êý¾Ý¿âÖ±½ÓOOM£¬Êý¾Ý¿â»áÖØÆô¡£
relayÌṩµÄÖØÐ´¹¦ÄÜ£¬Êý¾ÝÊDZ£ÁôÔÚÄÚ´æÖУ¬Ò»µ©influxdb¹Òµô£¬¾Í»áµ¼ÖÂrelay»úÆ÷ÄÚ´æ·èÕÇ¡£
²È¹ýµÄ¿Ó
max-row-limit²»Îª0£¬»áµ¼ÖÂinfluxdb OOM¡£Ä¿Ç°Õâ¸öÎÊÌâÒѾÐÞ¸´£¬µ«ÊÇgrafanaչʾʱ»á´æÔÚÎÊÌ⣬ÅäÖÃʱÇëÉèÖÃΪ0¡£
ÅäÖòéѯÏÞÖÆ²ÎÊýʱ£¬»áµ¼ÖÂÒ»Ð©Ææ¹ÖµÄÎÊÌ⣬¹Ù·½ÊDz»ÏÞÖÆ£¬Çë±£ÁôĬÈÏÅäÖá£
ûÓÐÖÆ¶¨schema¹æ·¶£¬½ÓÈë·½°Ñfieldд³ÉtagÁË£¬µ¼ÖÂÄÚ´æ·èÕÇ£¬×îºóOOM¡£Àí½âseriesµÄ¸ÅÄîºÜÖØÒª¡£
дÈ볬ʱʱ¼äĬÈÏÊÇ10s£¬ÓÐʱºòÊý¾ÝдÈëÁ˵«·µ»Ø500¡£¿ÉÒÔ½«Õâ¸öʱ¼äÉèÖóɴóµã¡£
ÓÅ»¯ºóµÄ¼Ü¹¹Í¼

influxdb-proxyÊÇΪÁ˽â¾öÉÏÃæµÄʹÓÃÎÊÌâ¶ø¿ª·¢³öÀ´µÄ¡£¾ßÓÐÒÔϹ¦ÄÜ£º
ͬʱ֧³ÖдºÍ²éѯ¹¦ÄÜ£¬Í³Ò»½ÓÈëµã£¬ÀàËÆcluster¡£
Ö§³ÖÖØÐ´¹¦ÄÜ£¬Ð´Èëʧ°ÜʱдÈëÎļþ£¬ºó¶Ë»Ö¸´Ê±ÔÙдÈë¡£
ÏÞÖÆ²¿·Ö²éѯÃüÁîºÍÈ«²¿É¾³ý²Ù×÷¡£
ÒÔmeasurementΪÁ£¶ÈÇø·ÖÊý¾Ý£¬Ö§³Ö°´Ðè¶©ÔÄ¡£
measurementÓÅÏȾ«È·Æ¥Å䣬Ȼºóǰ׺ƥÅä¡£
ÌṩÊý¾Ýͳ¼Æ£¬±ÈÈçqps£¬ºÄʱµÈµÈ¡£
Êý¾Ý¾ÛºÏ
influxdbÌṩÊý¾Ý¾ÛºÏµÄ¹¦ÄÜ£¬¾ÍÊÇÉÏÃæ»ù±¾¸ÅÄîÀïÌáµ½µÄContinuous Query¡£Ô¤Ïȶ¨ÒåºÃcq£¬¾Í¿ÉÒÔ¶¨ÆÚ¸ù¾Ý²»Í¬µÄtag½øÐоۺÏÊý¾Ý¡£Ä¿Ç°ËüÓиöÉè¼ÆÎÊÌ⣺cqÊÇ˳ÐòÖ´Ðеģ¬cqÔ½¶à£¬Êý¾ÝÑÓ³ÙÔ½¸ß£¬Ò»°ãÑÓ³ÙÔÚ¼¸·ÖÖÓÄÚ¡£Èç¹ûÐèÒª¸üʵʱµÄ¾ÛºÏ£¬cq²»ÄÜÂú×㣬ÐèÒªÒýÈëÆäËû¹¤¾ß£¬±ÈÈçSpark¡£
Spark
¾¹ýÄÚ²¿µ÷ÑУ¬·¢ÏÖspark+kafkaÊǸö¸üºÃµÄ¾ÛºÏ·½°¸¡£sparkÖ§³ÖÁ÷ʽ´¦ÀíÇÒÖ§³Ösql¹¦ÄÜ£¬ÎÒÃÇÖ»ÐèÒª½«cq¸Ä³Ésql¾ÍÐС£Ä¿Ç°Õâ¸ö´¦ÓÚ³¢ÊԽ׶Σ¬ÒѾÉÏÏß²¿·Ö¹¦ÄÜ¡£Ä¿Ç°µÄ´¦ÀíÁ÷³ÌÈçÏ£º

×ܽá
ÉÏÎĽ²µÄÕûÌ׼ܹ¹ÒѾ֧³ÅÆð¶öÁËô2Íǫ̀»úÆ÷µÄ¼à¿Ø£¬Ä¿Ç°Ã¿ÃëдÈëµÄµãÊýÊÇ300k¡£ºó¶ËinfluxdbµÄ»úÆ÷ÊýÁ¿ÊÇ20̨×óÓÒ£¬Î¬»¤³É±¾»ù±¾Ç÷ÓÚÁã¡£ÎÒÃǵĽ¹µãĿǰÒѾ´Óinfluxdb×ªÒÆµ½Êý¾Ý¾ÛºÏºÍ·ÖÎöÉÏ¡£
|