¹Ø¼üµã
1.ÔÚ·Ö²¼Ê½µÄ¡¢¿ÉÀ©Õ¹µÄϵͳ£¨Í¨³£°üº¬²»Îȶ¨µÄ»ù´¡ÉèÊ©£©ÖÐÅųý¹ÊÕϵÄЧÂÊͨ³£È¡¾öÓÚÊÇ·ñÓгä·ÖµÄÈÕÖ¾¼Ç¼ºÍËÑË÷É豸¡£
2.ΨһʼþID¡¢ÊÂÎñ×·×Ù¼¼ÊõºÍ½á¹¹»¯µÄÈÕÖ¾Êä³öµÈ¼¼Êõ£¬ÈÃÎÒÃǵÃÒÔ͸³¹µØÁ˽âÓ¦ÓóÌÐòµÄÐÐΪ£¬ÒÔ¼°Ó¦ÓóÌÐòÊÇ·ñÔÚÕý³£ÔË×÷¡£
3.ÈÕÖ¾¼Ç¼²»ÔٻᡰÍÏÂý¡±ÏµÍ³ÐÔÄÜ£¬Ïà·´µØ£¬ËüÔÚϵͳ¹ÊÕϻָ´ÖÐÓÐÖØÒªµÄËÙ¶ÈÔöÒæ£¬ÓÈÆäÊÇÔÚʹÓÃÁËÈÕÖ¾¾ÛºÏµÄÇé¿öÏ¡£
4.ÎÒÃÇÐèÒª²âÊÔºËÐIJÙ×÷ÐèÇó£¬ÈçÈÕÖ¾¼Ç¼¡£
5.ÎÒÃÇ¿ÉÒÔ²ÉÓÃÀàËÆ¹¦ÄÜÐÔÐèÇóµÄ·½Ê½À´²âÊÔÈÕÖ¾£¬±ÈÈçÓû§¹ÊʺÍBDD³¡¾°µÈ¡£
ÏÖ´úÈÕÖ¾¾ÛºÏºÍËÑË÷¹¤¾ßΪÍŶӵĽ¨Á¢¡¢²âÊÔºÍÔËÐÐÈí¼þϵͳÌṩÁËÖØÒªµÄй¦ÄÜ¡£Í¨¹ý°ÑÈÕÖ¾×÷Ϊһ¸öºËÐÄϵͳ×é¼þ£¬²¢Ê¹ÓÃÈçΨһʼþID¡¢ÊÂÎñ×·×Ù¼¼ÊõºÍ½á¹¹»¯µÄÈÕÖ¾Êä³öµÈ¼¼Êõ£¬ÎÒÃÇ¿ÉÒÔ»ñµÃ¶ÔÓ¦ÓóÌÐòµÄÐÐΪºÍÕý³£ÔË×÷µÄ·á¸»µÄ¼û½â£¬ÓÈÆäÊÇ¿ç×é¼þµÄÊÓͼ¡£ÕâÆªÎÄÕ½âÊÍÁËΪʲô²âÊÔÈÕÖ¾ÊÇÓмÛÖµµÄºÍÈçºÎÓÃÏÖ´úÈÕÖ¾¾ÛºÏ¹¤¾ß×öÈÕÖ¾²âÊÔ¡£ÕâÖÖ·½·¨Ê¹ÈÕÖ¾³ÉΪÁËÒ»ÖÖÇþµÀ£¬Ê¹·Ö²¼Ê½ÏµÍ³¸ü¾ß¿É²âÊÔÐÔ¡£
ÈÕÖ¾ÔÚÕûÌåÉÏ»áΪ¸÷·½ÃæÌáËÙ
°´Ò»Ö±ÒÔÀ´µÄ¹Ûµã£¬Ðí¶àÈËÈÏΪ£¬ÈÕÖ¾»á¡°ÍÏÂý¡±Èí¼þ¡£Èç¹ûʹÓõÄÊÇͬ²½ÎļþI
/ O¡¢ÂýËÙ´ÅÅÌ´æ´¢¡¢ÉõÖÁ¸üÂýµÄÍøÂçËÙ¶È£¬´ÓÕâЩ·½ÃæÀ´¿´ÕâÖÖ¹ÛµãÓÐÒ»¶¨µÄµÀÀí¡£Òò´Ë£¬ÎÒÃÇÍùÍù¶ÔÔÚÏÖ³¡»·¾³ÖÐÔËÐеÄÈí¼þÖмǼÏÂÀ´µÄÈÕÖ¾£¬±§×ÅÉóÉ÷µÄ̬¶È¡£È»¶ø£¬Òì²½ÎļþI/OºÍSSD´æ´¢ÕýÔÚ³ÉΪ³£Ì¬£¬1GB¡¢10GB£¬ÉõÖÁ100GbÒÔÌ«ÍøÒ²Ô½À´Ô½ÆÕ±é£¬ÈÕÖ¾µÄÐÔÄÜÌØÐÔÏÖÔÚÒѾ±äµÃ²»Í¬¡£
ÏÖÔÚ£¬³ýÁËʱ¼ä¹Ø¼üÐ͵ÄÓ¦ÓóÌÐò£¬Èç½ðÈÚ½»Ò×ºÍÆäËû¸´ÔÓËã·¨µÄÇé¿öÏ£¬ÔÚÈí¼þϵͳÖÐÎÒÃÇÒѾºÜÉÙµ¥´¿µØÓÅ»¯Èí¼þµÄÔËÐÐËÙ¶ÈÁË¡£ÌرðÊÇÔÚ·Ö²¼Ê½ÏµÍ³¡¢ÔƺÍÎïÁªÍø£¨IoT£©µÄ±³¾°Ï£¬ÎÒÃÇÐèÒª¿¼ÂǵÄÊÇÔÚ·¢Éú´íÎóºó£¬»Ö¸´·þÎñµÄʱ¼ä£¨Í¨³£±»³ÆÎª¡°Æ½¾ù»Ö¸´Ê±¼ä¡±£¬Mean
Time to Recovery£¬MTTR£©¡£Í¬Ê±£¬ÎÒÃÇÒ²Òª¿¼ÂÇÔÚÉÏÓΣ¨²âÊÔ£©»·¾³Àȷ¶¨ÎÊÌâÔÒòËùÐèÒªµÄʱ¼ä¡£
ÏÖ´úÈÕÖ¾¾ÛºÏºÍËÑË÷¹¤¾ß¡ª¡ª±ÈÈçElasticSearch¡¢Logstash¡¢Kibana¡¢LogEntries¡¢Loggly¡¢SematextµÈµÈ¡ª¡ª¸øÎÒÃÇÌṩÁ˷ḻµÄ·½·¨ÓëÎÒÃǵÄÈí¼þµÄ½øÐн»»¥£¬ËüÌṩÁ˷ḻµÄÓû§½Ó¿ÚÈ¥ÅжÏÓ¦ÓóÌÐòµÄÐÐΪ£¬Ò²ÌṩÁ˿ɱà³ÌµÄREST
APIÀ´ÔÚ¶ą̀·þÎñÆ÷Ö®¼äËÑË÷ºÍ¹ØÁªÊ¼þ¡£

ËäÈ»¶îÍâµÄÈÕÖ¾¼Ç¼¿ÉÄܻᵼÖÂÈí¼þ³ÌÐòµÄÖ´ÐÐËÙ¶ÈϽµ5%-10%¡£µ«Èç¹ûÔÚÒªËÑË÷µÄλÖþßÓÐÏêϸµÄ¿ÉÓÃÐÅÏ¢¾Í¿ÉÒÔ°ïÖúÎÒÃǸüѸËÙµØÕï¶ÏÎÊÌ⣬¼Ó¿ìÎÒÃǶԹÊÕϵÄÏìÓ¦£¬²¢ÇÒÍùÍù¿ÉÒÔÏÔÖøµØ¼õÉÙ·¢ÏÖһЩÒþ²ØµÃ·Ç³£ÉîµÄ´íÎóµÄʱ¼ä£¡
¿ìËÙµÄI / OºÍ´æ´¢ÒÔ¼°ÏÖ´úÈÕÖ¾¹¤¾ßµÄ×éºÏ¡ª¡ªÌرðÊǵ±Óй¤¾ßÌṩ¸øËùÓвâÊÔÈËÔ±ºÍ¿ª·¢ÈËԱʱ£¬¾ÍʹÎÒÃÇÄܹ»°ÑÈÕÖ¾×÷ΪÎÒÃǵÄÈí¼þϵͳµÄÒ»¸öÖØÒª×é³É²¿·Ö£»Õâ»áÈÃÎÒÃDzúÉúÒÉÎÊ£ºÈç¹ûÈÕÖ¾ÊÇÎÒÃǵÄÈí¼þϵͳµÄÒ»¸öÖØÒª×é³É²¿·Ö£¬ÎÒÃǸÃÈçºÎ²âÊÔËüÄØ£¿
ÒÔ°ü¹ü×·×Ù×öÀà±È
ÎÒÃÇ´ó¶àÊýÈ˶¼·Ç³£ÊìϤÔÚÏß°ü¹ü×·×Ù¹¤¾ß¡£ÕâЩ¹¤¾ßʹÎÒÃÇÖ»ÒªÓÐÒ»¸ö×·×ÙID¾ÍÄܹ»¿´µ½ÎÒÃǵİü¹üÔÚÄÄÀï¡£ÕâЩ¹¤¾ßÓÐÁ½¸öÓÐȤµÄ¹¦ÄÜ£ºÍ¨¹ýÅÉËÍÍøÂçÄܹ»¸ú×ÙÒ»¸öÌØ¶¨µÄ°ü¹ü£¬²¢ÇÒÒ²¿ÉÒÔÏÔʾ³öÉæ¼°µ½µÄÕâ¸ö°ü¹üÔÚ²»Í¬µÄʱ¼äµÄ¸÷ÖÖ²»Í¬µÄ״̬£¨»òʼþ£©¡£
ÔÚ¸ú×ÙÒ»¸ö°ü¹üʱ£¬ÎÒÃÇ¿ÉÒÔ¿´µ½ÕâЩ״̬£¬±ÈÈç¡°µ½´ï²Ö¿â¡±¡¢¡°ÔËÊäÖС±ºÍ¡°ÒÑËʹµÈµÈ£»ÕâЩ¶¼´ú±íÁËÌØ¶¨µÄ״̬»òʼþ£¬²¢ÇÒÿһ¸ö¶¼ÓÐÒ»¸öϵͳÄÚµÄÄÚ²¿±êʶ·û£¨ID£©¡ª¡ªÊ¼þID¡£
ÔÚÏÖ´úµÄÒì²½·Ö²¼Ê½Èí¼þϵͳÖУ¬ÎÒÃÇ¿ÉÒÔʹÓÃÒ»ÖÖÀàËÆµÄ¼¼ÊõÀ´¸ú×ٿ粻ͬģ¿éµÄÔË×÷Ö´ÐÐÇé¿ö¡£ÎªÁ˰ïÖúÎÒÃÇ×öµ½ÕâÒ»µã£¬ÎÒÃǶ¨ÒåÁËһЩÎÒÃÇ×Ô¼ºµÄʼþID£¬²¢°ÑÕâЩʼþIDÓëÎÒÃÇÕýÔÚʹÓõÄϵͳÏà¹ØÁªÆðÀ´¡£
Ô¤ÆÚʼþºÍÏà¹ØÐÔIDµÄ²âÊÔ
ÎÒÃDz»Ó¦¸Ã°Ñʱ¼ä»¨ÔÚ²âÊÔÈÕÖ¾×Óϵͳ±¾ÉíÖ®ÉÏ£¬±ÈÈçlog4net¡¢log4j£¬µÈµÈ£»ÎÒÃÇÓ¦¸Ã¼ÙÉèÈÕÖ¾µÄ¹¦ÄÜ£¨Ð´Èë´ÅÅÌ¡¢ÇÐתÈÕÖ¾Îļþ¡¢Ë¢Ð»º³å£¬µÈµÈ£©¶¼ÒѾ¾ÍÐ÷ÁË¡£Ïà·´£¬ÎÒÃÇÓ¦¸Ã¼¯Öо«Á¦È·±£Èý¸ö¶ÀÁ¢µ«Ïà¹ØµÄ¶«Î÷£º
1.ÎÒÃÇÏ£Íû·¢ÉúµÄʼþÒªÔÚÈÕÖ¾Á÷ÖÐÕýÈ·µØ³öÏÖ
2.ÊÂÎñ±êʶ·û£¨Ò²¾ÍÊǹØÁªID£©ÈçÔ¤ÆÚÒ»Ñùͨ¹ýÈÕÖ¾Á÷
3.ʼþ°´Êʵ±µÄ¼¶±ð±»¼Ç¼£¨Info¡¢Error¡¢DebugµÈ£©¡ª¡ªÈç¹ûÎÒÃÇÕýÔÚʹÓÿÉÅäÖõÄÈÕÖ¾¼¶±ð
µ±È»£¬Í¨¹ý¼ì²éÕâЩ¶«Î÷£¬ÎÒÃÇÒѾÊÔÓÃÁËÈÕÖ¾×ÓϵͳºÍ²¢ÇÒÒþº¬µØ¶ÔËüÒ²½øÐÐÁ˲âÊÔ¡£Í¨¹ý°ÑÈÕÖ¾×÷Ϊһ¸ö¿É²âÊÔµÄϵͳ×é¼þ£¬ÎÒÃÇÒ²ÍùÍù»á¼õÉÙÎÊÌâµÄ¡°¼ì²âʱ¼ä¡±£¬Ôö¼ÓÍŶӲÎÓ룬¼ÓÇ¿ºÏ×÷£¬Ìá¸ßÈí¼þ¿É²Ù×÷ÐÔ¡£
ÎÒÃÇÐèÒª¶¨ÒåÒ»×éʼþÀàÐÍID£¬ÕâЩʼþÀàÐÍID¶ÔÓ¦ÓÚÎÒÃǵÄÈí¼þÖÐÓÐÓõĺ͹ؼüµÄ²Ù×÷»òÖ´Ðе㡣µ½µ×Òª¶¨Òå¶àÉÙÕâÑùµÄIDÈ¡¾öÓÚÄãµÄÈí¼þ£¬µ«ÖÁÉÙÎÒÃÇÓÐApplicationStartedºÍDatabaseConnectionFailed»òDocumentStoreUnavailableÀàËÆµÄ¶«Î÷£¨µ±ÒªÓõ½ÕâЩ¶«Î÷ʱÔÙÈ¥¶¨ÒåÏàÓ¦µÄ¶îÍâµÄID£¬²»ÒªÊÔͼÊÂÏȶ¨ÒåËùÓпÉÄܵÄʼþ£©¡£
ÀýÈ磬Èç¹ûÎÒÃÇÕýÔÚÓÃC#¹¹½¨µç×ÓÉÌÎñÓ¦ÓóÌÐò£¬ÎÒÃÇ¿ÉÄܻ᣺
public enum EventID { // Badly-initialised logging data NotSet = 0, // An unrecognised event has occurred UnexpectedError = 10000,
ApplicationStarted = 20000,
ApplicationShutdownNoticeReceived = 20001,
PageGenerationStarted = 30000,
PageGenerationCompleted = 30001,
MessageQueued = 40000,
MessagePeeked = 40001,
BasketItemAdded = 60001,
BasketItemRemoved = 60002,
CreditCardDetailsSubmitted = 70001,
// ...
}
|
ÎÒÃÇʹÓÃÈËÀà¿É¶ÁµÄÃû³ÆÔÙ¼ÓÉÏÒ»¸öΨһÕûÊýÖµÒ»Æð×÷ΪʼþID£¬ÕâÑù¾Í¿ÉÒÔ½«Ïà¹Ø»òÏàÀàËÆÊ¼þ×éºÏÔÚÒ»Æð£ºÔÚÕâÀËùÓÐÓйء°Àº×Ó¡±µÄʼþÀàÐÍ»áʹÓÃ60000µ½69999Ö®¼äµÄÕûÊýID¡£µ±ÎÒÃǵÄÈí¼þÔÚ´úÂëÖд¦Àíµ½ÏàÓ¦µÄ״̬ʱ£¬Ëü»á½«Ïà¹ØµÄʼþÀàÐ͵ÄIDÓëÆäËûÈÕÖ¾Êý¾ÝÒ»ÆðдÈëÈÕÖ¾ÎļþÖС£Õâ·´¹ýÀ´ÓÖ±»ÈÕÖ¾¾ÛºÏϵͳÊÕ¼¯ÆðÀ´£¬¿ÉÒÔÌṩ¸øËÑË÷£¨Í¨¹ýä¯ÀÀÆ÷ºÍÒ»¸öAPI£©Ê¹Óá£
Èç¹ûÎÒÃÇÏë°ÑÒ»¸ö¹ØÓÚ·¢ÉúÔÚÈÕÖ¾Á÷ÖÐÔ¤ÆÚ»òÒâÍâʼþµÄ²âÊÔÓÃÀý×Ô¶¯»¯£¬ÎÒÃÇ¿ÉÒÔͨ¹ýcurl×öÒ»¸ö¼òµ¥µÄAPIµ÷ÓÃÀ´½øÐвéѯ¡£
ÀýÈ磬ÎÒÃÇ¿ÉÄÜÏë¼ì²é·¢ÉúÁËÒ»´ÎÊý¾Ý¿â²éѯ£¨Ô¤ÆÚ·¢ÉúʼþDatabasePreQuery
ºÍDatabasePostQuery£©²¢ÇÒûÓгöÏÖÁ¬½ÓÎÊÌ⣨ͻ·¢Ê¼þDatabaseConnectionFailed£©¡£
ÕâÀïÊÇΪDatabasePreQueryʼþ£¨ÄãÒ²¿ÉÒÔÔÚGitHubÕÒµ½Ëü£©²éѯElasticsearch
API £¨ÔÚ±¾µØÔËÐУ©µÄcurlÃüÁ
$ curl -XGET 'http://localhost:9200/_search?q=message:DatabasePreQuery&pretty'
|
Õâ¸ö²éѯµÄ½á¹û¿ÉÄÜÊÇ£¬ÀýÈ磨ΪÁËÇåÎú¶ÈÖØÐ¸ñʽ»¯¹ý£¬²¢Ìí¼ÓÁËÐÐÊýÒÔ¹©²Î¿¼£©£º
{ 2 "took" : 19, 3 "timed_out" : false, 4 "_shards" : { 5 "total" : 20, 6 "successful" : 20, 7 "failed" : 0 8 }, 9 "hits" : { 10 "total" : 1, 11 "max_score" : 11.516103, 12 "hits" : [ { 13 "_index" : "logstash-2016.05.06", 14 "_type" : "logs", 15 "_id" : "gHEKyHasRb6GaUhM1gywpg", 16 "_score" : 11.516103, 17 "_source":{"message": 18 "[2016-05-06 17:07:42] slim-skeleton.INFO: DatabasePreQuery [] []", 19 "@version":"1", 20 "@timestamp":"2016-05-06T16:07:42.749Z", 21 "host":"vagrant-ubuntu-trusty-64", 22 "path":"/var/www/wibble/logs/app.log"} 23 } ] 24 } 24 25 }
|
ÒÔÉϵĵÚ10ÐбíÃ÷£¬²éѯ¾«È·µØÆ¥ÅäÉÏÁËÒ»ÌõÈÕÖ¾£¨×ÜÃüÖÐÁ¿Îª1£©£¬²¢ÔÚµÚ13ÐпªÊ¼ÊDzéѯÏìÓ¦£¬Êµ¼ÊµÄÈÕÖ¾ÏûÏ¢ÔÚµÚ18ÐпªÊ¼µÄ¡£
ÄÇô£¬ÎÒÃÇ¿ÉÒÔʹÓÃÎÒÃǵÄÑ¡Ôñ¹¤¾ß£¬½«ÕâЩËÑË÷½á¹ûÊäÈëµ½ÎÒÃǵÄÊý¾Ý¿âÖвéѯ²âÊÔ£¬ÒÔ½âÎöJSONµÄÏìÓ¦²¢ÇÒÈ·¶¨Ê¼þÊÇ·ñ·¢ÉúÁË¡£
ÀýÈ磬²âÊÔÓÃÀýµÄ»ù±¾RubyʵÏÖ£¨ÄãÒ²¿ÉÒÔÔÚGitHubÉÏÕÒµ½Ëü£©£º
require 'json' 2 3 file = open("Database_prequery_search.json") 4 prequery = JSON.parse(file.read) 5 6 file = open("Database_postquery_search.json") 7 postquery = JSON.parse(file.read) 8 9 file = open("Database_connectionfailed_search.json") 10 connectionfailed = JSON.parse(file.read) 11 12 expected_prequery_event = (prequery["hits"]["total"] == 1) 13 expected_postquery_event = (postquery["hits"]["total"] == 1) 14 unexpected_connectionfailed_event = (connectionfailed["hits"]["total"] == 0) 15 16 expected_prequery_event && expected_postquery_event && unexpected_connectionfailed_event
|
ÎÒÃÇʹÓÃ'json' Ruby gem°üÈ¥½âÎö²éѯǰºóµÄcurlËÑË÷½á¹û£¬ÕâЩ½á¹ûÊÇÎÒÃÇÏÈǰ±£´æÔÚÖØÃüÃûºóµÄÎļþÖеģ¨Ç°10ÐУ©¡£µÚ12Ðе½µÚ14ÐÐ˵Ã÷ÁËÎÒÃǶԲâÊÔ½á¹ûµÄÔ¤ÆÚ£¨¼´ÈÕÖ¾Á÷ÖÐÓ¦¸Ã°üº¬Ò»¸öµ¥Ò»µÄDatabasePreQueryʼþ£¬Ò»¸öµ¥Ò»µÄDatabasePostQueryʼþ£¬²¢ÇÒûÓÐDatabaseConnectionFailed»òÆäËûʼþ£©¡£×îºóÒ»ÐÐÊÇʵ¼ÊµÄ²âÊÔ£¨Èç¹ûÎÒÃÇµÄÆÚÍû¶¼ÊÇÕýÈ·µÄRuby½«·µ»Ø¡°ture¡±£¬·ñÔò¾Í»á·µ»Øfalse£©¡£
¸ü¸´ÔӵIJâÊÔ£¨»ò¶ÔʼþµÄ·ÖÎö£©¿ÉÄÜ£¬±ÈÈç˵£¬ÐèÒªÔÚ¸ø¶¨Ê±¼äÄÚËÑË÷ËùÓÐÊý¾Ý¿âʼþ¡¢¼ÆËã²éѯ´ÎÊý¡¢¹ÊÕϵȡ£È»¶ø£¬Ê¹Óõķ½·¨ºÍÉÏÃæÃèÊöµÄÊÇÒ»ÑùµÄ£¬Ö»ÊÇÔÚÒ»¸ö½Ï´óµÄJSONÏìÓ¦°üÖÐÒªÖ´ÐÐÉÔ΢¸´Ôӵĵü´ú´úÂë¡£
ÕâÊÇÒ»¸ö¶ÔÕâÀà²âÊÔ½øÐÐcurl²éѯµÄÀý×Ó£¨ÄãÒ²¿ÉÒÔÔÚGitHubÕÒµ½Ëü£©£º
$ curl -XGET 'http://localhost:9200/_search?q=message:Database*&pretty' -d ' { "query" : { "range" : { "@timestamp" : { "gte" : "now-10m/m" } } } }'
|
ÎÒÃÇÒ²¿ÉÒÔÔÚϵͳÖиú×ÙÒ»Ìõµ¥Ò»µÄÖ´Ðз¾¶£¬Ê¹Óõ±»î¶¯×î³õ±»Æô¶¯Ê±ÎÒÃÇ×¢ÈëϵͳµÄÏà¹ØµÄID£º±ÈÈ磬Óû§µã»÷Ò»¸ö°´Å¥»òÒ»¸öÅúÁ¿×÷Òµ¿ªÊ¼¡£Ö»Òª¹ØÁªID¶ÔÓÚÎÒÃÇÔÚÈÕÖ¾¾ÛºÏ¹¤¾ßÖеÄËÑË÷ÊÇÄܹ»±£Ö¤Î¨Ò»µÄ£¬ÎÒÃǽ«¿´µ½Ö»Óë¸Ã²éѯÓйصĽá¹û¡£
ͨ¹ýËÑË÷¹ØÁªID£¬ÎÒÃǾͿÉÒÔ¾«È·µØÈ·¶¨µ½µ×ÊÇÄÄЩ·þÎñÆ÷»òÈÝÆ÷²ÎÓëÁËÇëÇóµÄ´¦ÀíºÍÖØ½¨ÇëÇóµÄ¹ý³Ì¡£ÓÐһЩÉÌÒµ¹¤¾ßÄÜÌṩÕâÑùµÄ¹¦ÄÜ£¬µ«Í¨¹ýÎÒÃÇ×Ô¼º½¨Á¢ÕâЩ¹¦ÄÜÖеÄÒ»²¿·Ö¹¦ÄÜ£¬ÎÒÃÇÒ²¿ÉÒÔ»ñµÃ¶ÔϵͳÔËÐÐÇé¿öµÄÓÐÒæ¼û½â¡£
²âÊÔÈÕÖ¾µÄÓû§¹ÊÊÂ
±ÈÈç˵£¬ÎÒÃÇÓÐÒ»¸ö¹ØÓÚ·¨ÂÉÊг¡µÄ»ùÓÚä¯ÀÀÆ÷µÄϵͳ£¬Õâ¸öϵͳÔÊÐíרҵµÄ·¨ÂÉ´ÓÒµÕßÀ´±à¼ºÍ±£´æÎĵµ¡£½«ÎĵµÊý¾Ý±£´æµ½Îĵµ´æ´¢Êý¾Ý¿â£¬²¢½«ÏûÏ¢·ÅÔÚÏûÏ¢¶ÓÁÐÉÏ¡£È»¶ø£¬×÷Ϊһ¸ö¹ú¼ÒµÄ¼à¹ÜÖÆ¶ÈµÄÒ»²¿·Ö£¬ÎÒÃÇÐèҪȷ±£¸ÃÎļþ·ûºÏÒ»¶¨µÄÒªÇó£¬ËùÒÔÐèÒªÌṩ¡°É󼯡±·þÎñ¼àÌýÏûÏ¢¶ÓÁÐÉϵÄÏûÏ¢£¬È»ºó¼ì²é×î½ü¸üйýµÄÎĵµ£º

ÔÚÕâÀÎÒÃÇÒѾÓÐÁËÒ»¸öÒì²½µÄ¡¢·Ö²¼Ê½µÄϵͳ¡£µ±ÔÚä¯ÀÀÆ÷ÖÐÓ¦ÓóÌÐòÃ÷È·µØÏÔʾÁ˳ɹ¦¡ª¡ª¸ÃÎĵµÒѾ³É¹¦¸üÐÂʱ£¬¿ÉÄÜʵ¼ÊÉÏ»¹ÐèÒªÆô¶¯½øÒ»²½µÄ¹¤×÷Á÷³Ì£¨ÀýÈ磬Èç¹ûÎĵµÉ󼯷¢ÏÖÁËÎļþµÄÎÊÌ⣩¡£
ͨ¹ýʹÓÃʼþIDºÍÊÂÎñ¸ú×ÙµÄÈÕÖ¾¾ÛºÏ¹¦ÄÜ£¬ÎÒÃǾÍÓÐÄÜÁ¦¶ÏÑÔ£¬»ùÓÚÔÚÖ÷ÒªÊÂÎñϵͳÖеÄijЩ²Ù×÷£¬Ä³Ð©Ìض¨µÄÈÕÖ¾ÏûÏ¢Ó¦¸Ã³öÏÖÔÚÈÕÖ¾¾ÛºÏϵͳ֮ÖУº
¾ßÌåÀ´Ëµ£¬Èç¹ûÎÒÃÇÖªµÀ£¬É󼯷þÎñÓ¦ÒÔʼþID¡°AuditRecordCreated¡±Ð´Ò»ÌõÈÕÖ¾ÐÅÏ¢£¬ÎÒÃÇÔÚWebÓ¦ÓóÌÐòµÄÓû§ËÑË÷Íê³Éºó£¬¾Í¿ÉÒÔÔËÐÐÒ»¸ö²âÊÔÀ´Ñ°ÕÒÄǸöID£º
ÓÐÁËÕâ¸öÄÜÁ¦È¥¶ÏÑÔÎÒÃǶÔϵͳµÄÐÐΪµÄÆÚÍûÖ®ºó£¬ÎÒÃÇ¿ÉÒÔд³öÀàËÆÕâÑùµÄÐÐΪˮƽ²âÊÔ£º
Given I run a scenario as a Lawyer And I create a document [And I wait 5 seconds] When I search the logs API Then I should find a recent entry for ¡°AuditRecordCreated¡± |
ÕâÒâζ×Å£¬ÈÕÖ¾¼Ç¼ÒѾ³ÉΪÁËÒ»ÖÖ¿ÉÒÔÀ©Õ¹ÎÒÃǶԷֲ¼Ê½ÏµÍ³µÄ²âÊԵķ½Ê½£¬Ö»ÒªÄܹ»Ã÷È·ÔÚijЩ¾ßÌåʱ¿ÌÎÒÃÇÆÚÍûÄÄЩÐÐΪ»òʼþ»á±»¼Ç¼ÏÂÀ´£¬È»ºóÔÙÈ¥ËÑË÷¾ÍºÃÁË¡£
½áÂÛ
¶Ô·Ö²¼Ê½µÄ¡¢¿ÉÀ©Õ¹µÄϵͳ£¨Í¨³£°üº¬²»Îȶ¨µÄ»ù´¡ÉèÊ©£©½øÐйÊÕÏÅųý£¬È¡¾öÓÚÊÇ·ñÓÐ×ã¹»µÄÈÕÖ¾¼Ç¼ºÍËÑË÷É豸¡£ÎÒÃÇÐèÒª¼Ç¼·¢ÉúÔÚÎÒÃǵÄϵͳÖеÄÖØÒªµÄʼþ£¬²¢Í¨¹ýÒ»¸öΨһµÄ¹ØÁªID½«ËüÃǹØÁªµ½Ò»¸öÌØ¶¨µÄÒµÎñ½»Ò×£¨Èç°ü¹ü¿ìµÝ£©ÉÏ¡£ÈÕÖ¾¾ÛºÏºÍËÑË÷¹¤¾ßʹÎÒÃÇÄܹ»ÓÃÒ»¸ö¼òµ¥µÄID²éѯÀ´¸ú×ÙÖն˵½Öն˵ÄÒµÎñ½»Òס£ÎÒÃÇÒ²¿ÉÒÔ²éѯһ¸öÀà±ðµÄʼþÒÔµ÷²é×é¼þ»òϵͳ¹ÊÕÏ£¨ÀýÈ磬ΪÁËÕÒµ½µ¼ÖÂij´Î¹ÊÕϵÄËùÓеÄÊý¾Ý¿âʼþ£©¡£×îºó£¬ÎÒÃÇ¿´µ½£¬ÎÒÃÇ¿ÉÒÔ¶øÇÒÎÒÃÇÒ²Ó¦¸ÃÒÔÓ빦ÄÜÐèÇóÀàËÆµÄ·½Ê½À´²âÊÔÕâЩ²Ù×÷ÐèÇ󣬼´Í¨¹ýÓû§¹ÊʺÍBDDµÄ³¡¾°¡£
|