ÀÖÓãµç¾º

  • ½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

    È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

    ÔÆ¼ÆËã´óÊý¾Ý£ºELK¼¼ÊõÕ»½éÉÜ

    ¸üÐÂʱ¼ä:2017Äê12ÔÂ18ÈÕ16ʱ32·Ö À´Ô´:ÀÖÓã²¥¿Í ä¯ÀÀ´ÎÊý:

    Ò»¡¢ ELK¹¤×÷Õ»¼ò½é

    1. ¼ò½é

    ELK Stack ÊÇ Elasticsearch¡¢Logstash¡¢Kibana Èý¸ö¿ªÔ´Èí¼þµÄ×éºÏ¡£ÔÚʵʱÊý¾Ý¼ìË÷ºÍ·ÖÎö³¡ºÏ£¬ÈýÕßͨ³£ÊÇÅäºÏ¹²Ó㬶øÇÒÓÖ¶¼ÏȺó¹éÓÚ Elastic.co ¹«Ë¾ÃûÏ£¬¹ÊÓд˼ò³Æ¡£

    ELK Stack ÔÚ×î½üÁ½ÄêѸËÙáÈÆð£¬³ÉΪ»úÆ÷Êý¾Ý·ÖÎö£¬»òÕß˵ʵʱÈÕÖ¾´¦ÀíÁìÓò£¬¿ªÔ´½çµÄµÚһѡÔñ¡£ºÍ´«Í³µÄÈÕÖ¾´¦Àí·½°¸Ïà±È£¬ELK Stack ¾ßÓÐÈçϼ¸¸öÓŵ㣺

    ´¦Àí·½Ê½Áé»î¡£Elasticsearch ÊÇʵʱȫÎÄË÷Òý£¬²»ÐèÒªÏñ storm ÄÇÑùÔ¤Ïȱà³Ì²ÅÄÜʹÓÃ;

    ÅäÖüòÒ×ÉÏÊÖ¡£Elasticsearch È«²¿²ÉÓà JSON ½Ó¿Ú£¬Logstash ÊÇ Ruby DSL Éè¼Æ£¬¶¼ÊÇĿǰҵ½ç×îͨÓõÄÅäÖÃÓï·¨Éè¼Æ;

    ¼ìË÷ÐÔÄܸßЧ¡£ËäȻÿ´Î²éѯ¶¼ÊÇʵʱ¼ÆË㣬µ«ÊÇÓÅÐãµÄÉè¼ÆºÍʵÏÖ»ù±¾¿ÉÒԴﵽȫÌìÊý¾Ý²éѯµÄÃë¼¶ÏìÓ¦;

    ¼¯ÈºÏßÐÔÀ©Õ¹¡£²»¹ÜÊÇ Elasticsearch ¼¯Èº»¹ÊÇ Logstash ¼¯Èº¶¼ÊÇ¿ÉÒÔÏßÐÔÀ©Õ¹µÄ;

    ǰ¶Ë²Ù×÷ìÅÀö¡£Kibana ½çÃæÉÏ£¬Ö»ÐèÒªµã»÷Êó±ê£¬¾Í¿ÉÒÔÍê³ÉËÑË÷¡¢¾ÛºÏ¹¦ÄÜ£¬Éú³ÉìÅÀöµÄÒDZí°å¡£

    µ±È»£¬ELK Stack Ò²²¢²»ÊÇʵʱÊý¾Ý·ÖÎö½çµÄÁ鵤ÃîÒ©¡£ÔÚ²»Ç¡µ±µÄ³¡¾°£¬·´¶ø»áʱ¶¹¦°ë¡£ÎÒ×Ô 2014 Äê³õ¿ª QQ Ⱥ½»Á÷ ELK Stack£¬·¢ÏÖÍøÓÑÃÇ¶Ô ELK Stack µÄÔ­Àí¸ÅÄ³£ÓÐÎó½âÎóÓÃ;¶ÔʵÏÖµÄЧ¹û£¬ÓÖ¶àÓв»ÄÜÀí½â»òÕß¹ý¶àÆÚÍû¶øÊ§ÍûÖ®´¦¡£¸üÁîÎÒ¾ªÆæµÄÊÇ£¬ÍøÓÑÃǹ㷺·Ö²¼ÔÚ´«Í³ÆóÒµºÍ»¥ÁªÍø¹«Ë¾¡¢¿ª·¢ºÍÔËάÁìÓò¡¢Linux ºÍ Windows ƽ̨£¬´ó¼Ò¶Ô·Çר¾«ÁìÓòµÄ֪ʶ£¬Ò»°ã¶¼È±·¦Á˽⣬ÕâÒ²³ÉΪʹÓà ELK Stack ʱµÄÒ»¸öÕϰ­¡£

    ¶þ¡¢ LogstashÊý¾Ý²É¼¯¹¤¾ß°²×°ºÍʹÓÃ

    1. ¹Ù·½ÍøÕ¾

    https://www.elastic.co/products/logstash#

    2. ¼ò½é

    LogstashÊÇÒ»¿îÇáÁ¿¼¶µÄÈÕÖ¾ËѼ¯´¦Àí¿ò¼Ü£¬¿ÉÒÔ·½±ãµÄ°Ñ·ÖÉ¢µÄ¡¢¶àÑù»¯µÄÈÕÖ¾ËѼ¯ÆðÀ´£¬²¢½øÐÐ×Ô¶¨ÒåµÄ´¦Àí£¬È»ºó´«Êäµ½Ö¸¶¨µÄλÖ㬱ÈÈçij¸ö·þÎñÆ÷»òÕßÎļþ¡£

    3. °²×°

    ÏÂÔØºóÖ±½Ó½âѹ£¬¾Í¿ÉÒÔÁË¡£

    4. hellowordʹÓÃ

    ͨ¹ýÃüÁîÐУ¬½øÈëµ½logstash/binĿ¼£¬Ö´ÐÐÏÂÃæµÄÃüÁ

    logstash -e ""

    ¿ÉÒÔ¿´µ½ÌáʾÏÂÃæÐÅÏ¢(Õâ¸öÃüÁîÉÔºó½éÉÜ)£¬ÊäÈëhello world!

    ÔÆ¼ÆËã´óÊý¾Ý

    ¿ÉÒÔ¿´µ½logstashβÎÒÃÇ×Ô¶¯Ìí¼ÓÁ˼¸¸ö×ֶΣ¬Ê±¼ä´Á@timestamp£¬°æ±¾@version£¬ÊäÈëµÄÀàÐÍtype£¬ÒÔ¼°Ö÷»úÃûhost¡£

    4.1. ¼òµ¥µÄ¹¤×÷Ô­Àí

    LogstashʹÓùܵÀ·½Ê½½øÐÐÈÕÖ¾µÄËѼ¯´¦ÀíºÍÊä³ö¡£ÓеãÀàËÆ*NIXϵͳµÄ¹ÜµÀÃüÁî xxx | ccc | ddd£¬xxxÖ´ÐÐÍêÁË»áÖ´ÐÐccc£¬È»ºóÖ´ÐÐddd¡£

    ÔÚlogstashÖУ¬°üÀ¨ÁËÈý¸ö½×¶Î:

    ÊäÈëinput --> ´¦Àífilter(²»ÊDZØÐëµÄ) --> Êä³öoutput

    ÔÆ¼ÆËã´óÊý¾Ý

    ÿ¸ö½×¶Î¶¼ÓɺܶàµÄ²å¼þÅäºÏ¹¤×÷£¬±ÈÈçfile¡¢elasticsearch¡¢redisµÈµÈ¡£

    ÿ¸ö½×¶ÎÒ²¿ÉÒÔÖ¸¶¨¶àÖÖ·½Ê½£¬±ÈÈçÊä³ö¼È¿ÉÒÔÊä³öµ½elasticsearchÖУ¬Ò²¿ÉÒÔÖ¸¶¨µ½stdoutÔÚ¿ØÖÆÌ¨´òÓ¡¡£

    ÓÉÓÚÕâÖÖ²å¼þʽµÄ×éÖ¯·½Ê½£¬Ê¹µÃlogstash±äµÃÒ×ÓÚÀ©Õ¹ºÍ¶¨ÖÆ¡£

    4.2. ÃüÁîÐÐÖг£ÓõÄÃüÁî

    -f£ºÍ¨¹ýÕâ¸öÃüÁî¿ÉÒÔÖ¸¶¨LogstashµÄÅäÖÃÎļþ£¬¸ù¾ÝÅäÖÃÎļþÅäÖÃlogstash

    ÔÆ¼ÆËã´óÊý¾Ý

    -e£ººóÃæ¸ú×Å×Ö·û´®£¬¸Ã×Ö·û´®¿ÉÒÔ±»µ±×ölogstashµÄÅäÖÃ(Èç¹ûÊÇ“” ÔòĬÈÏʹÓÃstdin×÷ΪÊäÈ룬stdout×÷ΪÊä³ö)

    ÔÆ¼ÆËã´óÊý¾Ý

    -l£ºÈÕÖ¾Êä³öµÄµØÖ·(ĬÈϾÍÊÇstdoutÖ±½ÓÔÚ¿ØÖÆÌ¨ÖÐÊä³ö)

    -t£º²âÊÔÅäÖÃÎļþÊÇ·ñÕýÈ·£¬È»ºóÍ˳ö¡£

    ÔÆ¼ÆËã´óÊý¾Ý

    4.3. ÅäÖÃÎļþ˵Ã÷

    Ç°Ãæ½éÉܹýlogstash»ù±¾ÉÏÓÉÈý²¿·Ö×é³É£¬input¡¢outputÒÔ¼°Óû§ÐèÒª²ÅÌí¼ÓµÄfilter£¬Òò´Ë±ê×¼µÄÅäÖÃÎļþ¸ñʽÈçÏ£º

    input {...}

    filter {...}

    output {...}

    ÔÆ¼ÆËã´óÊý¾Ý

    ÔÚÿ¸ö²¿·ÖÖУ¬Ò²¿ÉÒÔÖ¸¶¨¶à¸ö·ÃÎÊ·½Ê½£¬ÀýÈçÎÒÏëÒªÖ¸¶¨Á½¸öÈÕÖ¾À´Ô´Îļþ£¬Ôò¿ÉÒÔÕâÑùд£º

    input {

    file { path =>"/var/log/messages" type =>"syslog"}

    file { path =>"/var/log/apache/access.log" type =>"apache"}

    }

    ÀàËÆµÄ£¬Èç¹ûÔÚfilterÖÐÌí¼ÓÁ˶àÖÖ´¦Àí¹æÔò£¬Ôò°´ÕÕËüµÄ˳ÐòÒ»Ò»´¦Àí£¬µ«ÊÇÓÐһЩ²å¼þ²¢²»ÊÇḬ̈߳²È«µÄ¡£

    ±ÈÈçÔÚfilterÖÐÖ¸¶¨ÁËÁ½¸öÒ»ÑùµÄµÄ²å¼þ£¬ÕâÁ½¸öÈÎÎñ²¢²»Äܱ£Ö¤×¼È·µÄ°´Ë³ÐòÖ´ÐУ¬Òò´Ë¹Ù·½Ò²ÍƼö±ÜÃâÔÚfilterÖÐÖØ¸´Ê¹Óòå¼þ¡£

    ˵ÍêÕâЩ£¬¼òµ¥µÄ´´½¨Ò»¸öÅäÖÃÎļþµÄСÀý×Ó¿´¿´£º

    input {

    file {

    #Ö¸¶¨¼àÌýµÄÎļþ·¾¶£¬×¢Òâ±ØÐëÊǾø¶Ô·¾¶

    path => "E:/software/logstash-1.5.4/logstash-1.5.4/data/test.log"

    start_position => beginning

    }

    }

    filter {

    }

    output {

    stdout {}

    }

    ÈÕÖ¾´óÖÂÈçÏ£º×¢Òâ×îºóÓÐÒ»¸ö¿ÕÐС£

    1 hello,this is first line in test.log!

    2 hello,my name is xingoo!

    3 goodbye.this is last line in test.log!

    4

    Ö´ÐÐÃüÁîµÃµ½ÈçÏÂÐÅÏ¢£º

    ÔÆ¼ÆËã´óÊý¾Ý

    5. ×î³£ÓõÄinput²å¼þ——file¡£

    Õâ¸ö²å¼þ¿ÉÒÔ´ÓÖ¸¶¨µÄĿ¼»òÕßÎļþ¶ÁÈ¡ÄÚÈÝ£¬ÊäÈëµ½¹ÜµÀ´¦Àí£¬Ò²ËãÊÇlogstashµÄºËÐIJå¼þÁË£¬´ó¶àÊýµÄʹÓó¡¾°¶¼»áÓõ½Õâ¸ö²å¼þ£¬Òò´ËÕâÀïÏêϸ½²Êöϸ÷¸ö²ÎÊýµÄº¬ÒåÓëʹÓá£

    5.1. ×îС»¯µÄÅäÖÃÎļþ

    ÔÚLogstashÖпÉÒÔÔÚ input{} ÀïÃæÌí¼ÓfileÅäÖã¬Ä¬ÈϵÄ×îС»¯ÅäÖÃÈçÏ£º

    input {

    file {

    path => "E:/software/logstash-1.5.4/logstash-1.5.4/data/*"

    }

    }

    filter {

    }

    output {

    stdout {}

    }

    µ±È»Ò²¿ÉÒÔ¼àÌý¶à¸öÄ¿±êÎļþ£º

    input {

    file {

    path => ["E:/software/logstash-1.5.4/logstash-1.5.4/data/*","F:/test.txt"]

    }

    }

    filter {

    }

    output {

    stdout {}

    }

    5.2. ÆäËûµÄÅäÖÃ

    ÁíÍ⣬´¦ÀípathÕâ¸ö±ØÐëµÄÏîÍ⣬file»¹ÌṩÁ˺ܶàÆäËûµÄÊôÐÔ£º

    input {

    file {

    #¼àÌýÎļþµÄ·¾¶

    path => ["E:/software/logstash-1.5.4/logstash-1.5.4/data/*","F:/test.txt"]

    #Åųý²»Ïë¼àÌýµÄÎļþ

    exclude => "1.log"

    #Ìí¼Ó×Ô¶¨ÒåµÄ×Ö¶Î

    add_field => {"test"=>"test"}

    #Ôö¼Ó±êÇ©

    tags => "tag1"

    #ÉèÖÃÐÂʼþµÄ±êÖ¾

    delimiter => "\n"

    #ÉèÖö೤ʱ¼äɨÃèĿ¼£¬·¢ÏÖÐÂÎļþ

    discover_interval => 15

    #ÉèÖö೤ʱ¼ä¼ì²âÎļþÊÇ·ñÐÞ¸Ä

    stat_interval => 1

    #¼àÌýÎļþµÄÆðʼλÖã¬Ä¬ÈÏÊÇend

    start_position => beginning

    #¼àÌýÎļþ¶ÁÈ¡ÐÅÏ¢¼Ç¼µÄλÖÃ

    sincedb_path => "E:/software/logstash-1.5.4/logstash-1.5.4/test.txt"

    #ÉèÖö೤ʱ¼ä»áдÈë¶ÁÈ¡µÄλÖÃÐÅÏ¢

    sincedb_write_interval => 15

    }

    }

    filter {

    }

    output {

    stdout {}

    }

    ÆäÖÐÖµµÃ×¢ÒâµÄÊÇ£º

    1 path

    ÊDZØÐëµÄÑ¡Ïÿһ¸öfileÅäÖ㬶¼ÖÁÉÙÓÐÒ»¸öpath

    2 exclude

    ÊDz»Ïë¼àÌýµÄÎļþ£¬logstash»á×Ô¶¯ºöÂÔ¸ÃÎļþµÄ¼àÌý¡£ÅäÖõĹæÔòÓëpathÀàËÆ£¬Ö§³Ö×Ö·û´®»òÕßÊý×飬µ«ÊÇÒªÇó±ØÐëÊǾø¶Ô·¾¶¡£

    3 start_position

    ÊǼàÌýµÄλÖã¬Ä¬ÈÏÊÇend£¬¼´Ò»¸öÎļþÈç¹ûûÓмǼËüµÄ¶ÁÈ¡ÐÅÏ¢£¬Ôò´ÓÎļþµÄĩβ¿ªÊ¼¶ÁÈ¡£¬Ò²¾ÍÊÇ˵£¬½ö½ö¶ÁÈ¡ÐÂÌí¼ÓµÄÄÚÈÝ¡£¶ÔÓÚһЩ¸üеÄÈÕÖ¾ÀàÐ͵ļàÌý£¬Í¨³£Ö±½ÓʹÓÃend¾Í¿ÉÒÔÁË;Ïà·´£¬beginning¾Í»á´ÓÒ»¸öÎļþµÄÍ·¿ªÊ¼¶ÁÈ¡¡£µ«ÊÇÈç¹û¼Ç¼¹ýÎļþµÄ¶ÁÈ¡ÐÅÏ¢£¬Õâ¸öÅäÖÃÒ²¾Íʧȥ×÷ÓÃÁË¡£

    4 sincedb_path

    Õâ¸öÑ¡ÏîÅäÖÃÁËĬÈϵĶÁÈ¡ÎļþÐÅÏ¢¼Ç¼ÔÚÄĸöÎļþÖУ¬Ä¬ÈÏÊǰ´ÕÕÎļþµÄinodeµÈÐÅÏ¢×Ô¶¯Éú³É¡£ÆäÖмǼÁËinode¡¢Ö÷É豸ºÅ¡¢´ÎÉ豸ºÅÒÔ¼°¶ÁÈ¡µÄλÖá£Òò´Ë£¬Èç¹ûÒ»¸öÎļþ½ö½öÊÇÖØÃüÃû£¬ÄÇôËüµÄinodeÒÔ¼°ÆäËûÐÅÏ¢¾Í²»»á¸Ä±ä£¬Òò´ËÒ²²»»áÖØÐ¶ÁÈ¡ÎļþµÄÈκÎÐÅÏ¢¡£ÀàËÆµÄ£¬Èç¹û¸´ÖÆÁËÒ»¸öÎļþ£¬¾ÍÏ൱ÓÚ´´½¨ÁËÒ»¸öеÄinode£¬Èç¹û¼àÌýµÄÊÇÒ»¸öĿ¼£¬¾Í»á¶ÁÈ¡¸ÃÎļþµÄËùÓÐÐÅÏ¢¡£

    5 ÆäËûµÄ¹ØÓÚɨÃèºÍ¼ì²âµÄʱ¼ä£¬°´ÕÕĬÈϵÄÀ´¾ÍºÃÁË£¬Èç¹ûƵ·±´´½¨ÐµÄÎļþ£¬ÏëÒª¿ìËÙ¼àÌý£¬ÄÇô¿ÉÒÔ¿¼ÂÇËõ¶Ì¼ì²âµÄʱ¼ä¡£

    6 add_field

    ¾ÍÊÇÔö¼ÓÒ»¸ö×ֶΣ¬ÀýÈ磺

    file {

    add_field => {"test"=>"test"}

    path => "D:/tools/logstash/path/to/groksample.log"

    start_position => beginning

    }

    ÔÆ¼ÆËã´óÊý¾Ý

    6. ¡¡KafkaÓëLogstashµÄÊý¾Ý²É¼¯¶Ô½Ó

    »ùÓÚLogstashÅÜͨKafka»¹ÊÇÐèҪעÒâºÜ¶à¶«Î÷£¬×îÖØÒªµÄ¾ÍÊÇÀí½âKafkaµÄÔ­Àí¡£

    6.1. Logstash¹¤×÷Ô­Àí

    ÓÉÓÚKafka²ÉÓýâñîµÄÉè¼ÆË¼Ï룬²¢·ÇԭʼµÄ·¢²¼¶©ÔÄ£¬Éú²úÕ߸ºÔð²úÉúÏûÏ¢£¬Ö±½ÓÍÆË͸øÏû·ÑÕß¡£¶øÊÇÔÚÖмä¼ÓÈë³Ö¾Ã»¯²ã——broker,Éú²úÕß°ÑÊý¾Ý´æ·ÅÔÚbrokerÖУ¬Ïû·ÑÕß´ÓbrokerÖÐÈ¡Êý¾Ý¡£ÕâÑù¾Í´øÀ´Á˼¸¸öºÃ´¦:

    1 Éú²úÕߵĸºÔØÓëÏû·ÑÕߵĸºÔؽâñî

    2 Ïû·ÑÕß°´ÕÕ×Ô¼ºµÄÄÜÁ¦fetchÊý¾Ý

    3 Ïû·ÑÕß¿ÉÒÔ×Ô¶¨ÒåÏû·ÑµÄÊýÁ¿

    ÁíÍ⣬ÓÉÓÚbroker²ÉÓÃÁËÖ÷Ìâtopic-->·ÖÇøµÄ˼Ï룬ʹµÃij¸ö·ÖÇøÄÚ²¿µÄ˳Ðò¿ÉÒÔ±£Ö¤ÓÐÐòÐÔ£¬µ«ÊÇ·ÖÇø¼äµÄÊý¾Ý²»±£Ö¤ÓÐÐòÐÔ¡£ÕâÑù£¬Ïû·ÑÕß¿ÉÒÔÒÔ·ÖÇøÎªµ¥Î»£¬×Ô¶¨Òå¶ÁÈ¡µÄλÖ×—offset¡£

    Kafka²ÉÓÃzookeeper×÷Ϊ¹ÜÀí£¬¼Ç¼ÁËproducerµ½brokerµÄÐÅÏ¢£¬ÒÔ¼°consumerÓëbrokerÖÐpartitionµÄ¶ÔÓ¦¹ØÏµ¡£Òò´Ë£¬Éú²úÕß¿ÉÒÔÖ±½Ó°ÑÊý¾Ý´«µÝ¸øbroker£¬brokerͨ¹ýzookeeper½øÐÐleader-->followersµÄÑ¡¾Ù¹ÜÀí;Ïû·ÑÕßͨ¹ýzookeeper±£´æ¶ÁÈ¡µÄλÖÃoffsetÒÔ¼°¶ÁÈ¡µÄtopicµÄpartition·ÖÇøÐÅÏ¢¡£

    ÓÉÓÚÉÏÃæµÄ¼Ü¹¹Éè¼Æ£¬Ê¹µÃÉú²úÕßÓëbrokerÏàÁ¬;Ïû·ÑÕßÓëzookeeperÏàÁ¬¡£ÓÐÁËÕâÑùµÄ¶ÔÓ¦¹ØÏµ£¬¾ÍÈÝÒײ¿Êðlogstash-->kafka-->logstashµÄ·½°¸ÁË¡£

    ½ÓÏÂÀ´£¬°´ÕÕÏÂÃæµÄ²½Öè¾Í¿ÉÒÔʵÏÖlogstashÓëkafkaµÄ¶Ô½ÓÁË¡£

    ÔÆ¼ÆËã´óÊý¾Ý

    6.2. Æô¶¯kafka

    Æô¶¯zookeeper£º

    $zookeeper/bin/zkServer.sh start

    Æô¶¯kafka£º

    $kafka/bin/kafka-server-start.sh $kafka/config/server.properties &

    6.3. ´´½¨Ö÷Ìâ

    ´´½¨Ö÷Ìâ:

    $kafka/bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --create --topic hello --replication-factor 1 --partitions 1

    ²é¿´Ö÷Ìâ:

    $kafka/bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --describe

    6.4. ²âÊÔ»·¾³

    Ö´ÐÐÉú²úÕ߽ű¾:

    $kafka/bin/kafka-console-producer.sh --broker-list 10.0.67.101:9092 --topic hello

    Ö´ÐÐÏû·ÑÕ߽ű¾£¬²é¿´ÊÇ·ñдÈë:

    $kafka/bin/kafka-console-consumer.sh --zookeeper 127.0.0.1:2181 --from-beginning --topic hello

    6.5. ÏòkafkaÖÐÊä³öÊý¾Ý

    input{

    stdin{}

    }

    output{

    kafka{

    topic_id => "hello"

    bootstrap_servers => "192.168.0.4:9092,172.16.0.12:9092"

    # kafkaµÄµØÖ·

    batch_size => 5

    codec => plain {

    format => "%{message}"

    charset => "UTF-8"

    }

    }

    stdout{

    codec => rubydebug

    }

    }

    6.6. ´ÓkafkaÖжÁÈ¡Êý¾Ý

    logstashÅäÖÃÎļþ:

    input{

    kafka {

    codec => "plain"

    group_id => "logstash1"

    auto_offset_reset => "smallest"

    reset_beginning => true

    topic_id => "hello"

    zk_connect => "192.168.0.5:2181"

    }

    }

    output{

    stdout{

    codec => rubydebug

    }

    }

    7. Filter

    7.1. ¹ýÂ˲å¼þgrok×é¼þ

    #ÈÕÖ¾

    55.3.244.1 GET /index.html 15824 0.043

    bin/logstash -e '

    input { stdin {} }

    filter {

    grok {

    match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }

    }

    }

    output { stdout {codec => rubydebug} }'

    7.2. ·Ö¸î²å¼þsplit

    filter {

    mutate {

    split => { "message" => " " }

    add_field => {

    "event_type" => "%{message[3]}"

    "current_map" => "%{message[4]}"

    "current_X" => "%{message[5]}"

    "current_y" => "%{message[6]}"

    "user" => "%{message[7]}"

    "item" => "%{message[8]}"

    "item_id" => "%{message[9]}"

    "current_time" => "%{message[12]}"

    }

    remove_field => [ "message" ]

    }

    }

    Èý¡¢ ElasticSearchË÷Òý·þÎñ°²×°ºÍʹÓÃ

    1. ¼ò½é

    ElasticSearchÊÇÒ»¸ö»ùÓÚLuceneµÄËÑË÷·þÎñÆ÷¡£ËüÌṩÁËÒ»¸ö·Ö²¼Ê½¶àÓû§ÄÜÁ¦µÄÈ«ÎÄËÑË÷ÒýÇæ£¬»ùÓÚRESTful web½Ó¿Ú¡£ElasticsearchÊÇÓÃJava¿ª·¢µÄ£¬²¢×÷ΪApacheÐí¿ÉÌõ¿îϵĿª·ÅÔ´Âë·¢²¼£¬Êǵ±Ç°Á÷ÐÐµÄÆóÒµ¼¶ËÑË÷ÒýÇæ¡£Éè¼ÆÓÃÓÚÔÆ¼ÆËãÖУ¬Äܹ»´ïµ½ÊµÊ±ËÑË÷£¬Îȶ¨£¬¿É¿¿£¬¿ìËÙ£¬°²×°Ê¹Ó÷½±ã¡£

    ÎÒÃǽ¨Á¢Ò»¸öÍøÕ¾»òÓ¦ÓóÌÐò£¬²¢ÒªÌí¼ÓËÑË÷¹¦ÄÜ£¬ÁîÎÒÃÇÊÜ´ò»÷µÄÊÇ£ºËÑË÷¹¤×÷ÊǺÜÄѵġ£ÎÒÃÇÏ£ÍûÎÒÃǵÄËÑË÷½â¾ö·½°¸Òª¿ì£¬ÎÒÃÇÏ£ÍûÓÐÒ»¸öÁãÅäÖúÍÒ»¸öÍêÈ«Ãâ·ÑµÄËÑË÷ģʽ£¬ÎÒÃÇÏ£ÍûÄܹ»¼òµ¥µØÊ¹ÓÃJSONͨ¹ýHTTPµÄË÷ÒýÊý¾Ý£¬ÎÒÃÇÏ£ÍûÎÒÃǵÄËÑË÷·þÎñÆ÷ʼÖÕ¿ÉÓã¬ÎÒÃÇÏ£ÍûÄܹ»Ò»Ì¨¿ªÊ¼²¢À©Õ¹µ½Êý°Ù£¬ÎÒÃÇҪʵʱËÑË÷£¬ÎÒÃÇÒª¼òµ¥µÄ¶à×â»§£¬ÎÒÃÇÏ£Íû½¨Á¢Ò»¸öÔÆµÄ½â¾ö·½°¸¡£ElasticsearchÖ¼ÔÚ½â¾öËùÓÐÕâЩÎÊÌâºÍ¸ü¶àµÄÎÊÌâ¡£

    2. ES¸ÅÄî

    cluster

    ´ú±íÒ»¸ö¼¯Èº£¬¼¯ÈºÖÐÓжà¸ö½Úµã£¬ÆäÖÐÓÐÒ»¸öΪÖ÷½Úµã£¬Õâ¸öÖ÷½ÚµãÊÇ¿ÉÒÔͨ¹ýÑ¡¾Ù²úÉúµÄ£¬Ö÷´Ó½ÚµãÊǶÔÓÚ¼¯ÈºÄÚ²¿À´ËµµÄ¡£esµÄÒ»¸ö¸ÅÄî¾ÍÊÇÈ¥ÖÐÐÄ»¯£¬×ÖÃæÉÏÀí½â¾ÍÊÇÎÞÖÐÐĽڵ㣬ÕâÊǶÔÓÚ¼¯ÈºÍⲿÀ´ËµµÄ£¬ÒòΪ´ÓÍⲿÀ´¿´es¼¯Èº£¬ÔÚÂß¼­ÉÏÊǸöÕûÌ壬ÄãÓëÈκÎÒ»¸ö½ÚµãµÄͨÐźÍÓëÕû¸öes¼¯ÈºÍ¨ÐÅÊǵȼ۵ġ£

    shards

    ´ú±íË÷Òý·ÖƬ£¬es¿ÉÒÔ°ÑÒ»¸öÍêÕûµÄË÷Òý·Ö³É¶à¸ö·ÖƬ£¬ÕâÑùµÄºÃ´¦ÊÇ¿ÉÒÔ°ÑÒ»¸ö´óµÄË÷Òý²ð·Ö³É¶à¸ö£¬·Ö²¼µ½²»Í¬µÄ½ÚµãÉÏ¡£¹¹³É·Ö²¼Ê½ËÑË÷¡£·ÖƬµÄÊýÁ¿Ö»ÄÜÔÚË÷Òý´´½¨Ç°Ö¸¶¨£¬²¢ÇÒË÷Òý´´½¨ºó²»Äܸü¸Ä¡£

    replicas

    ´ú±íË÷Òý¸±±¾£¬es¿ÉÒÔÉèÖöà¸öË÷ÒýµÄ¸±±¾£¬¸±±¾µÄ×÷ÓÃÒ»ÊÇÌá¸ßϵͳµÄÈÝ´íÐÔ£¬µ±Ä³¸ö½Úµãij¸ö·ÖƬË𻵻ò¶ªÊ§Ê±¿ÉÒÔ´Ó¸±±¾Öлָ´¡£¶þÊÇÌá¸ßesµÄ²éѯЧÂÊ£¬es»á×Ô¶¯¶ÔËÑË÷ÇëÇó½øÐиºÔؾùºâ¡£

    recovery

    ´ú±íÊý¾Ý»Ö¸´»ò½ÐÊý¾ÝÖØÐ·ֲ¼£¬esÔÚÓнڵã¼ÓÈë»òÍ˳öʱ»á¸ù¾Ý»úÆ÷µÄ¸ºÔضÔË÷Òý·ÖƬ½øÐÐÖØÐ·ÖÅ䣬¹ÒµôµÄ½ÚµãÖØÐÂÆô¶¯Ê±Ò²»á½øÐÐÊý¾Ý»Ö¸´¡£

    river

    ´ú±íesµÄÒ»¸öÊý¾ÝÔ´£¬Ò²ÊÇÆäËü´æ´¢·½Ê½(È磺Êý¾Ý¿â)ͬ²½Êý¾Ýµ½esµÄÒ»¸ö·½·¨¡£ËüÊÇÒÔ²å¼þ·½Ê½´æÔÚµÄÒ»¸öes·þÎñ£¬Í¨¹ý¶ÁÈ¡riverÖеÄÊý¾Ý²¢°ÑËüË÷Òýµ½esÖУ¬¹Ù·½µÄriverÓÐcouchDBµÄ£¬RabbitMQµÄ£¬TwitterµÄ£¬WikipediaµÄ¡£

    gateway

    ´ú±íesË÷Òý¿ìÕյĴ洢·½Ê½£¬esĬÈÏÊÇÏȰÑË÷Òý´æ·Åµ½ÄÚ´æÖУ¬µ±ÄÚ´æÂúÁËʱÔٳ־û¯µ½±¾µØÓ²ÅÌ¡£gateway¶ÔË÷Òý¿ìÕÕ½øÐд洢£¬µ±Õâ¸öes¼¯Èº¹Ø±ÕÔÙÖØÐÂÆô¶¯Ê±¾Í»á´ÓgatewayÖжÁÈ¡Ë÷Òý±¸·ÝÊý¾Ý¡£esÖ§³Ö¶àÖÖÀàÐ͵Ägateway£¬Óб¾µØÎļþϵͳ(ĬÈÏ)£¬·Ö²¼Ê½Îļþϵͳ£¬HadoopµÄHDFSºÍamazonµÄs3ÔÆ´æ´¢·þÎñ¡£

    discovery.zen

    ´ú±íesµÄ×Ô¶¯·¢ÏÖ½Úµã»úÖÆ£¬esÊÇÒ»¸ö»ùÓÚp2pµÄϵͳ£¬ËüÏÈͨ¹ý¹ã²¥Ñ°ÕÒ´æÔڵĽڵ㣬ÔÙͨ¹ý¶à²¥Ð­ÒéÀ´½øÐнڵãÖ®¼äµÄͨÐÅ£¬Í¬Ê±Ò²Ö§³Öµã¶ÔµãµÄ½»»¥¡£

    Transport

    ´ú±íesÄÚ²¿½Úµã»ò¼¯ÈºÓë¿Í»§¶ËµÄ½»»¥·½Ê½£¬Ä¬ÈÏÄÚ²¿ÊÇʹÓÃtcpЭÒé½øÐн»»¥£¬Í¬Ê±ËüÖ§³ÖhttpЭÒé(json¸ñʽ)¡¢thrift¡¢servlet¡¢memcached¡¢zeroMQµÈµÄ´«ÊäЭÒé(ͨ¹ý²å¼þ·½Ê½¼¯³É)¡£

    3. °²×°

    1¡¢ ´´½¨Óû§

    esÆô¶¯Ê±ÐèҪʹÓ÷ÇrootÓû§£¬ËùÒÔ´´½¨Ò»¸öîëÍ­Óû§

    2¡¢ °²×°jdk(jdkÒªÇó1.8.20»ò1.7.55ÒÔÉÏ)

    3¡¢ ÉÏ´«es°²×°°ü

    4¡¢ tar -zxvf elasticsearch-2.3.1.tar.gz -C /bigdata/

    5¡¢ ÐÞ¸ÄÅäÖÃ

    vi /bigdata/elasticsearch-2.3.1/config/elasticsearch.yml

    #¼¯ÈºÃû³Æ£¬Í¨¹ý×é²¥µÄ·½Ê½Í¨ÐÅ£¬Í¨¹ýÃû³ÆÅжÏÊôÓÚÄĸö¼¯Èº

    cluster.name: bigdata

    #½ÚµãÃû³Æ£¬ÒªÎ¨Ò»

    node.name: es-1

    #Êý¾Ý´æ·ÅλÖÃ

    path.data: /data/es/data

    #ÈÕÖ¾´æ·ÅλÖÃ

    path.logs: /data/es/logs

    #es°ó¶¨µÄipµØÖ·

    network.host: 172.16.0.14

    #³õʼ»¯Ê±¿É½øÐÐÑ¡¾ÙµÄ½Úµã

    discovery.zen.ping.unicast.hosts: ["node-4.itcast.cn", "node-5.itcast.cn", "node-6.itcast.cn"]

    6¡¢ ʹÓÃscp¿½±´µ½ÆäËû½Úµã

    scp -r elasticsearch-2.3.1/ node-5.itcast.cn:$PWD

    scp -r elasticsearch-2.3.1/ node-6.itcast.cn:$PWD

    7¡¢ ÔÚÆäËû½ÚµãÉÏÐÞ¸ÄesÅäÖã¬ÐèÒªÐ޸ĵÄÓÐnode.nameºÍnetwork.host

    8¡¢ Æô¶¯es(/bigdata/elasticsearch-2.3.1/bin/elasticsearch -h²é¿´°ïÖúÎĵµ)

    /bigdata/elasticsearch-2.3.1/bin/elasticsearch –d

    9¡¢ ÓÃä¯ÀÀÆ÷·ÃÎÊesËùÔÚ»úÆ÷µÄ9200¶Ë¿Ú

    http://172.16.0.14:9200/

    {

    "name" : "es-1",

    "cluster_name" : "bigdata",

    "version" : {

    "number" : "2.3.1",

    "build_hash" : "bd980929010aef404e7cb0843e61d0665269fc39",

    "build_timestamp" : "2016-04-04T12:25:05Z",

    "build_snapshot" : false,

    "lucene_version" : "5.5.0"

    },

    "tagline" : "You Know, for Search"

    }

    kill `ps -ef | grep Elasticsearch | grep -v grep | awk '{print $2}'`

    4. es°²×°²å¼þÏÂÔØes²å¼þ

    /bigdata/elasticsearch-2.3.1/bin/plugin install mobz/elasticsearch-head

    #±¾µØ·½Ê½°²×°head²å¼þ

    ./plugin install file:///home/bigdata/elasticsearch-head-master.zip

    #·ÃÎÊhead¹ÜÀíÒ³Ãæ

    http://172.16.0.14:9200/_plugin/head

    5. esµÄRESTful½Ó¿Ú²Ù×÷

    RESTful½Ó¿ÚURLµÄ¸ñʽ£º

    http://localhost:9200///[]

    ÆäÖÐindex¡¢typeÊDZØÐëÌṩµÄ¡£

    idÊÇ¿ÉÑ¡µÄ£¬²»Ìṩes»á×Ô¶¯Éú³É¡£

    index¡¢type½«ÐÅÏ¢½øÐзֲ㣬ÀûÓÚ¹ÜÀí¡£

    index¿ÉÒÔÀí½âΪÊý¾Ý¿â;typeÀí½âΪÊý¾Ý±í;idÏ൱ÓÚÊý¾Ý¿â±íÖмǼµÄÖ÷¼ü£¬ÊÇΨһµÄ¡£

    #ÏòstoreË÷ÒýÖÐÌí¼ÓһЩÊé¼®

    curl -XPUT 'http://172.16.0.14:9200/store/books/1' -d '{

    "title": "Elasticsearch: The Definitive Guide",

    "name" : {

    "first" : "Zachary",

    "last" : "Tong"

    },

    "publish_date":"2015-02-06",

    "price":"49.99"

    }'

    #ͨ¹ýä¯ÀÀÆ÷²éѯ

    http://172.16.0.14:9200/store/books/1

    #ÔÚlinuxÖÐͨ¹ýcurlµÄ·½Ê½²éѯ

    curl -XGET 'http://172.16.0.14:9200/store/books/1'

    #ÔÚÌí¼ÓÒ»¸öÊéµÄÐÅÏ¢

    curl -XPUT 'http://172.16.0.14:9200/store/books/2' -d '{

    "title": "Elasticsearch Blueprints",

    "name" : {

    "first" : "Vineeth",

    "last" : "Mohan"

    },

    "publish_date":"2015-06-06",

    "price":"35.99"

    }'

    # ͨ¹ýID»ñµÃÎĵµÐÅÏ¢

    curl -XGET 'http://172.16.0.14:9200/bookstore/books/1'

    #ÔÚä¯ÀÀÆ÷Öв鿴

    http://172.16.0.14:9200/bookstore/books/1

    # ͨ¹ý_source»ñȡָ¶¨µÄ×Ö¶Î

    curl -XGET 'http://172.16.0.14:9200/store/books/1?_source=title'

    curl -XGET 'http://172.16.0.14:9200/store/books/1?_source=title,price'

    curl -XGET 'http://172.16.0.14:9200/store/books/1?_source'

    #¿ÉÒÔͨ¹ý¸²¸ÇµÄ·½Ê½¸üÐÂ

    curl -XPUT 'http://172.16.0.14:9200/store/books/1' -d '{

    "title": "Elasticsearch: The Definitive Guide",

    "name" : {

    "first" : "Zachary",

    "last" : "Tong"

    },

    "publish_date":"2016-02-06",

    "price":"99.99"

    }'

    # »òÕßͨ¹ý _update APIµÄ·½Ê½µ¥¶À¸üÐÂÄãÏëÒª¸üеÄ

    curl -XPOST 'http://172.16.0.14:9200/store/books/1/_update' -d '{

    "doc": {

    "price" : 88.88

    }

    }'

    curl -XGET 'http://172.16.0.14:9200/store/books/1'

    #ɾ³ýÒ»¸öÎĵµ

    curl -XDELETE 'http://172.16.0.14:9200/store/books/1'

    # ×î¼òµ¥filter²éѯ

    # SELECT * FROM books WHERE price = 35.99

    # filtered ²éѯ¼Û¸ñÊÇ35.99µÄ

    curl -XGET 'http://172.16.0.14:9200/store/books/_search' -d '{

    "query" : {

    "filtered" : {

    "query" : {

    "match_all" : {}

    },

    "filter" : {

    "term" : {

    "price" : 35.99

    }

    }

    }

    }

    }'

    #Ö¸¶¨¶à¸öÖµ

    curl -XGET 'http://172.16.0.14:9200/store/books/_search' -d '{

    "query" : {

    "filtered" : {

    "filter" : {

    "terms" : {

    "price" : [35.99, 88.88]

    }

    }

    }

    }

    }'

    # SELECT * FROM books WHERE publish_date = "2015-02-06"

    curl -XGET 'http://172.16.0.14:9200/store/books/_search' -d '{

    "query" : {

    "filtered" : {

    "filter" : {

    "term" : {

    "publish_date" : "2015-02-06"

    }

    }

    }

    }

    }'

    # bool¹ýÂ˲éѯ£¬¿ÉÒÔ×ö×éºÏ¹ýÂ˲éѯ

    # SELECT * FROM books WHERE (price = 35.99 OR price = 99.99) AND (publish_date != "2016-02-06")

    # ÀàËÆµÄ£¬ElasticsearchÒ²ÓÐ and, or, notÕâÑùµÄ×éºÏÌõ¼þµÄ²éѯ·½Ê½

    # ¸ñʽÈçÏ£º

    # {

    # "bool" : {

    # "must" : [],

    # "should" : [],

    # "must_not" : [],

    # }

    # }

    #

    # must: Ìõ¼þ±ØÐëÂú×㣬Ï൱ÓÚ and

    # should: Ìõ¼þ¿ÉÒÔÂú×ãÒ²¿ÉÒÔ²»Âú×㣬Ï൱ÓÚ or

    # must_not: Ìõ¼þ²»ÐèÒªÂú×㣬Ï൱ÓÚ not

    curl -XGET 'http://172.16.0.14:9200/bookstore/books/_search' -d '{

    "query" : {

    "filtered" : {

    "filter" : {

    "bool" : {

    "should" : [

    { "term" : {"price" : 35.99}},

    { "term" : {"price" : 99.99}}

    ],

    "must_not" : {

    "term" : {"publish_date" : "2016-02-06"}

    }

    }

    }

    }

    }

    }'

    # ǶÌײéѯ

    # SELECT * FROM books WHERE price = 35.99 OR ( publish_date = "2016-02-06" AND price = 99.99 )

    curl -XGET 'http://172.16.0.14:9200/bookstore/books/_search' -d '{

    "query" : {

    "filtered" : {

    "filter" : {

    "bool" : {

    "should" : [

    { "term" : {"price" : 35.99}},

    { "bool" : {

    "must" : [

    {"term" : {"publish_date" : "2016-02-06"}},

    {"term" : {"price" : 99.99}}

    ]

    }}

    ]

    }

    }

    }

    }

    }'

    # range·¶Î§¹ýÂË

    # SELECT * FROM books WHERE price >= 20 AND price < 100

    # gt : > ´óÓÚ

    # lt : < СÓÚ

    # gte : >= ´óÓÚµÈÓÚ

    # lte : <= СÓÚµÈÓÚ

    curl -XGET 'http://172.16.0.14:9200/store/books/_search' -d '{

    "query" : {

    "filtered" : {

    "filter" : {

    "range" : {

    "price" : {

    "gt" : 20.0,

    "lt" : 100

    }

    }

    }

    }

    }

    }'

    # ÁíÍâÒ»ÖÖ and£¬ or£¬ not²éѯ

    # ûÓÐbool, Ö±½ÓʹÓÃand , or , not

    # ×¢Òâ: ²»´øboolµÄÕâÖÖ²éѯ²»ÄÜÀûÓûº´æ

    # ²éѯ¼Û¸ñ¼ÈÊÇ35.99£¬publish_dateÓÖΪ"2015-02-06"µÄ½á¹û

    curl -XGET 'http://172.16.0.14:9200/bookstore/books/_search' -d '{

    "query": {

    "filtered": {

    "filter": {

    "and": [

    {

    "term": {

    "price":59.99

    }

    },

    {

    "term": {

    "publish_date":"2015-02-06"

    }

    }

    ]

    },

    "query": {

    "match_all": {}

    }

    }

    }

    }'

    6. Logstash¶ÁÈ¡fileдÈëes

    input {

    file {

    path => "/var/nginx_logs/*.log"

    codec => "json"

    discover_interval => 5

    start_position => "beginning"

    }

    }

    output {

    elasticsearch {

    index => "flow-%{+YYYY.MM.dd}"

    hosts => ["172.16.0.14:9200", "172.16.0.15:9200", "172.16.0.16:9200"]

    }

    }

    7. Logstash+kafka+es

    input {

    kafka {

    type => "accesslogs"

    codec => "plain"

    auto_offset_reset => "smallest"

    group_id => "elas1"

    topic_id => "accesslogs"

    zk_connect => "172.16.0.11:2181,172.16.0.12:2181,172.16.0.13:2181"

    }

    kafka {

    type => "gamelogs"

    auto_offset_reset => "smallest"

    codec => "plain"

    group_id => "elas2"

    topic_id => "gamelogs"

    zk_connect => "172.16.0.11:2181,172.16.0.12:2181,172.16.0.13:2181"

    }

    }

    filter {

    if [type] == "accesslogs" {

    json {

    source => "message"

    remove_field => [ "message" ]

    target => "access"

    }

    }

    if [type] == "gamelogs" {

    mutate {

    split => { "message" => " " }

    add_field => {

    "event_type" => "%{message[3]}"

    "current_map" => "%{message[4]}"

    "current_X" => "%{message[5]}"

    "current_y" => "%{message[6]}"

    "user" => "%{message[7]}"

    "item" => "%{message[8]}"

    "item_id" => "%{message[9]}"

    "current_time" => "%{message[12]}"

    }

    remove_field => [ "message" ]

    }

    }

    }

    output {

    if [type] == "accesslogs" {

    elasticsearch {

    index => "accesslogs"

    codec => "json"

    hosts => ["172.16.0.14:9200", "172.16.0.15:9200", "172.16.0.16:9200"]

    }

    }

    if [type] == "gamelogs" {

    elasticsearch {

    index => "gamelogs"

    codec => plain {

    charset => "UTF-16BE"

    }

    hosts => ["172.16.0.14:9200", "172.16.0.15:9200", "172.16.0.16:9200"]

    }

    }

    }

    ËÄ¡¢ Kibana±¨±í¹¤¾ßµÄ°²×°ºÍʹÓÃ

    1. ¼ò½é

    Logstash ÔçÆÚÔø¾­×Ô´øÁËÒ»¸öÌØ±ð¼òµ¥µÄ logstash-web ÓÃÀ´²é¿´ ES ÖеÄÊý¾Ý¡£Æä¹¦ÄÜÌ«¹ý¼òµ¥£¬ÓÚÊÇ Rashid Khan Óà PHP дÁËÒ»¸ö¸üºÃÓÃµÄ web£¬È¡Ãû½Ð Kibana¡£Õâ¸ö PHP °æ±¾µÄ Kibana ·¢²¼Ê±¼äÊÇ 2011 Äê 12 Ô 11 ÈÕ¡£

    Kibana ѸËÙÁ÷ÐÐÆðÀ´£¬²»¾ÃµÄ 2012 Äê 8 Ô 19 ÈÕ£¬Rashid Khan Óà Ruby ÖØÐ´ÁË Kibana£¬Ò²±»½Ð×ö Kibana2¡£ÒòΪ Logstash Ò²ÊÇÓà Ruby дµÄ£¬ÕâÑù Kibana ¾Í¿ÉÒÔÌæ´úÔ­ÏÈÄǸö¼òªµÄ logstash-web Ò³ÃæÁË¡£

    ĿǰÎÒÃÇ¿´µ½µÄ angularjs °æ±¾ kibana ÆäʵԭÃû½Ð elasticsearch-dashboard£¬µ«¸ú Kibana2 ×÷ÕßÊÇͬһ¸öÈË£¬»»¾ä»°Ëµ£¬kibana ±È logstash »¹Ôç¾Í½øÁË elasticsearch ÃûÏ¡£Õâ¸öÏîÄ¿¸ÄÃû Kibana ÊÇÔÚ 2014 Äê 2 Ô£¬Ò²±»½Ð×ö Kibana3¡£È«ÐµÄÉè¼ÆÒ»ÏÂ×Ó·çÃÒ DevOps ½ç¡£ËæºóÆäËûÉçÇø·×·×½è¼ø£¬Graphite Ŀǰ×îÁ÷ÐÐµÄ Grafana ½çÃæ¾ÍÊÇÓɴ˶øÀ´£¬ÖÁ½ñ´úÂëÖл¹Áô´æÓÐÊ®Óà´¦ kbn ×ÖÑù¡£

    2014 Äê 4 Ô£¬Kibana3 Í£Ö¹¿ª·¢£¬ES ¹«Ë¾¼¯ÖÐÈËÁ¦¿ªÊ¼ Kibana4 µÄÖØ¹¹£¬ÔÚ 2015 Äê³õ·¢²¼ÁËʹÓà JRuby ×öºó¶ËµÄ beta °æºó£¬ÓÚ 3 ÔÂÕýÊ½ÍÆ³öʹÓà node.js ×öºó¶ËµÄÕýʽ°æ¡£ÓÉÓÚÉè¼ÆË¼Â·ÉϵIJî±ð£¬Ò»Ð© K3 ÊÊÒ˵ij¡¾°²¢²»ÔÚ K4 ¿¼ÂÇ·¶Î§ÄÚ£¬ËùÒÔ£¬ÖÁ½ñ K3 ºÍ K4 ²¢´æÊ¹Óá£

    2. °²×°

    ½âѹºó£¬ÐÞ¸Äkibanna.yml£¬Ìí¼Óelasticsearch.url: "http://172.16.0.14:9200"ÐÅÏ¢£¬È»ºóÆô¶¯¡£

    3. µ¼ÈëÊý¾Ý

    ÎÒÃǽ«Ê¹ÓÃɯʿ±ÈÑÇÈ«¼¯×÷ΪÎÒÃǵÄʾÀýÊý¾Ý¡£Òª¸üºÃµÄʹÓà Kibana£¬ÄãÐèҪΪ×Ô¼ºµÄÐÂË÷ÒýÓ¦ÓÃÒ»¸öÓ³É伯(mapping)¡£ÎÒÃÇÓÃÏÂÃæÕâ¸öÓ³É伯´´½¨"ɯʿ±ÈÑÇÈ«¼¯"Ë÷Òý¡£Êµ¼ÊÊý¾ÝµÄ×ֶαÈÕâÒª¶à£¬µ«ÊÇÎÒÃÇÖ»ÐèÒªÖ¸¶¨ÏÂÃæÕâЩ×ֶεÄÓ³Éä¾Í¿ÉÒÔÁË¡£×¢Òâµ½ÎÒÃÇÉèÖÃÁË¶Ô speaker ºÍ play_name ²»·ÖÎö¡£Ô­Òò»áÔÚÉÔºó½²Ã÷¡£

    ÔÚÖÕ¶ËÔËÐÐÏÂÃæÃüÁ

    curl -XPUT http://localhost:9200/shakespeare -d '

    {

    "mappings" : {

    "_default_" : {

    "properties" : {

    "speaker" : {"type": "string", "index" : "not_analyzed" },

    "play_name" : {"type": "string", "index" : "not_analyzed" },

    "line_id" : { "type" : "integer" },

    "speech_number" : { "type" : "integer" }

    }

    }

    }

    }

    ';

    ÎÒÃÇÕâ¾Í´´½¨ºÃÁËË÷Òý¡£ÏÖÔÚÐèÒª×öµÄʱµ¼ÈëÊý¾Ý¡£É¯Ê¿±ÈÑÇÈ«¼¯µÄÄÚÈÝÎÒÃÇÒѾ­ÕûÀí³ÉÁË elasticsearch ÅúÁ¿ µ¼ÈëËùÐèÒªµÄ¸ñʽ£¬Äã¿ÉÒÔͨ¹ýshakeseare.jsonÏÂÔØ¡£

    ÓÃÈçÏÂÃüÁîµ¼ÈëÊý¾Ýµ½Äã±¾µØµÄ elasticsearch ½ø³ÌÖС£

    curl -XPUT localhost:9200/_bulk --data-binary @shakespeare.json

    4. ·ÃÎÊ Kibana ½çÃæ

    ´ò¿ªä¯ÀÀÆ÷£¬·ÃÎÊÒѾ­·¢²¼ÁË Kibana µÄ±¾µØ·þÎñÆ÷¡£

    ÔÆ¼ÆËã´óÊý¾Ý

    Èç¹ûÄã½âѹ·¾¶ÎÞÎó(ÒëÕß×¢£ºÊ¹Óà github Ô´ÂëµÄ¶ÁÕß¼Çס·¢²¼Ä¿Â¼Ó¦¸ÃÊÇ kibana/src/ ÀïÃæ)£¬ÄãÒѾ­¾Í¿ÉÒÔ¿´µ½ÉÏÃæÕâ¸ö¿É°®µÄ»¶Ó­Ò³Ãæ¡£µã»÷ Sample Dashboard Á´½Ó

    ÔÆ¼ÆËã´óÊý¾Ý

    ºÃÁË£¬ÏÖÔÚÏÔʾµÄ¾ÍÊÇÄãµÄ sample dashboard!Èç¹ûÄãÊÇÓÃÐ嵀 elasticsearch ½ø³Ì¿ªÊ¼±¾½Ì³ÌµÄ£¬Äã»á¿´µ½Ò»¸ö°Ù·Ö±ÈÕ¼±ÈºÜÖØµÄ±ýͼ¡£ÕâÀïÏÔʾµÄÊÇÄãµÄË÷ÒýÖУ¬ÎĵµÀàÐ͵ÄÇé¿ö¡£ÈçÄãËù¼û£¬99% ¶¼ÊÇ lines£¬Ö»ÓÐÉÙÁ¿µÄ acts ºÍscenes¡£

    ÔÙÏÂÃæ£¬Äã»á¿´µ½Ò»³¤¶Î JSON ¸ñʽµÄɯʿ±ÈÑÇÊ«ÎÄ¡£

    5. µÚÒ»´ÎËÑË÷

    Kibana ÔÊÐíʹÓÃÕß²ÉÓà Lucene Query String Óï·¨ËÑË÷ Elasticsearch ÖеÄÊý¾Ý¡£ÇëÇó¿ÉÒÔÔÚÒ³Ãæ¶¥²¿µÄÇëÇóÊäÈë¿òÖÐÊéд¡£

    ÔÆ¼ÆËã´óÊý¾Ý

    ÔÚÇëÇó¿òÖÐÊäÈëÈçÏÂÄÚÈÝ¡£È»ºó²é¿´±í¸ñÖеÄǰ¼¸ÐÐÄÚÈÝ¡£

    friends, romans, countrymen

    ÔÆ¼ÆËã´óÊý¾Ý

    ¹ØÓÚËÑË÷ÇëÇóµÄÓï·¨£¬ÇëÔĶÁÉÔºó Query ºÍ Filtering С½Ú¡£

    6. ÅäÖÃÁíÒ»¸öË÷Òý

    Ŀǰ Kibana Ö¸ÏòµÄÊÇ Elasticsearch Ò»¸öÌØÊâµÄË÷Òý½Ð _all¡£ _all ¿ÉÒÔÀí½âΪȫ²¿Ë÷ÒýµÄ´ó¼¯ºÏ¡£Ä¿Ç°ÄãÖ»ÓÐÒ»¸öË÷Òý£¬ shakespeare£¬µ«Î´À´Äã»áÓиü¶àÆäËû·½ÃæµÄË÷Òý£¬Äã¿Ï¶¨²»Ï£Íû Kibana ÔÚÄãÖ»ÏëËÑ¡¶Âó¿Ë°×¡·ÀïÐİ®µÄ¾ä×ÓµÄʱºò»¹ÒªËÑË÷È«²¿ÄÚÈÝ¡£

    ÅäÖÃË÷Òý£¬µã»÷ÓÒÉϽǵÄÅäÖð´Å¥£º

    ÔÆ¼ÆËã´óÊý¾Ý

    ÔÚÕâÀÄã¿ÉÒÔÉèÖÃÄãµÄË÷ÒýΪ shakespeare £¬ÕâÑù Kibana ¾ÍÖ»»áËÑË÷ shakespeare Ë÷ÒýµÄÄÚÈÝÁË¡£

    ÔÆ¼ÆËã´óÊý¾Ý

    ÔÆ¼ÆËã´óÊý¾Ý

    ÕâÊÇÒòΪ ES1.4 ÔöÇ¿ÁËȨÏÞ¹ÜÀí¡£ÄãÐèÒªÔÚ ES ÅäÖÃÎļþ elasticsearch.yml ÖÐÌí¼ÓÏÂÁÐÅäÖò¢ÖØÆô·þÎñºó²ÅÄÜÕý³£·ÃÎÊ£º

    http.cors.enabled: true

    http.cors.allow-origin: "*"

    ¼Çס kibana3 Ò³ÃæÒ²ÒªË¢Ð»º´æ²ÅÐС£

    ´ËÍ⣬Èç¹ûÄã¿ÉÒÔºÜÃ÷È·×Ô¼º kibana ÒÔÍâûÓÐÆäËû http ·ÃÎÊ£¬¿ÉÒÔ°Ñ kibana µÄÍøÖ·Ð´ÔÚhttp.cors.allow-origin ²ÎÊýµÄÖµÖС£±ÈÈ磺

    http.cors.allow-origin: "/https?:\/\/kbndomain/"

    ±¾ÎİæÈ¨¹éÀÖÓã²¥¿ÍÔÆ¼ÆËã´óÊý¾ÝѧԺËùÓУ¬»¶Ó­×ªÔØ£¬×ªÔØÇë×¢Ã÷×÷Õß³ö´¦¡£Ð»Ð»£¡
    ×÷ÕߣºÀÖÓã²¥¿ÍÔÆ¼ÆËã´óÊý¾ÝѧԺ
    Ê×·¢£ºhttp://www.itcast.cn/javayun
    0 ·ÖÏíµ½£º
    ºÍÎÒÃÇÔÚÏß½»Ì¸£¡
    ¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿