Ò»¡¢ÈçºÎ¼à¿Ø NGINX£¨µÚһƪ£©

NGINX ÊÇʲô?
NGINX (·¢ÒôΪ ¡°engine X¡±) ÊÇÒ»ÖÖÁ÷ÐÐµÄ HTTP ºÍ·´Ïò´úÀí·þÎñÆ÷¡£×÷Ϊһ¸ö HTTP
·þÎñÆ÷£¬NGINX ¿ÉÒÔʹÓýÏÉÙµÄÄÚ´æ·Ç³£¸ßЧ¿É¿¿µØÌṩ¾²Ì¬ÄÚÈÝ¡£×÷Ϊ·´Ïò´úÀí£¬Ëü¿ÉÒÔÓÃ×÷¶à¸öºó¶Ë·þÎñÆ÷»òÀàËÆ»º´æºÍ¸ºÔØÆ½ºâÕâÑùµÄÆäËüÓ¦Óõĵ¥Ò»·ÃÎÊ¿ØÖƵ㡣NGINX
ÊÇÒ»¸ö×ÔÓÉ¿ªÔ´µÄ²úÆ·£¬²¢ÓÐÒ»¸ö¾ß±¸¸üÈ«µÄ¹¦ÄܵĽÐ×ö NGINX Plus µÄÉÌÒµ°æ¡£
NGINX Ò²¿ÉÒÔÓÃ×÷Óʼþ´úÀíºÍͨÓÃµÄ TCP ´úÀí£¬µ«±¾ÎIJ¢²»Ö±½ÓÌÖÂÛ NGINX µÄÄÇЩÓÃÀýµÄ¼à¿Ø¡£
NGINX Ö÷ÒªÖ¸±ê
ͨ¹ý¼à¿Ø NGINX ¿ÉÒÔ ²¶»ñµ½Á½ÀàÎÊÌ⣺NGINX ±¾ÉíµÄ×ÊÔ´ÎÊÌ⣬ºÍ³öÏÖÔÚÄãµÄ»ù´¡ÍøÂçÉèÊ©µÄÆäËüÎÊÌâ¡£´ó¶àÊý
NGINX Óû§»áÓõ½ÒÔÏÂÖ¸±êµÄ¼à¿Ø£¬°üÀ¨Ã¿ÃëÇëÇóÊý£¬ËüÌṩÁËÒ»¸öÓÉËùÓÐ×îÖÕÓû§»î¶¯×é³ÉµÄÉϲãÊÓͼ£»·þÎñÆ÷´íÎóÂÊ
£¬Õâ±íÃ÷ÄãµÄ·þÎñÆ÷ÒѾ¶à³¤Ã»Óд¦Àí¿´ËÆÓÐЧµÄÇëÇó£»»¹ÓÐÇëÇó´¦Àíʱ¼ä£¬Õâ˵Ã÷ÄãµÄ·þÎñÆ÷´¦Àí¿Í»§¶ËÇëÇóµÄ×ܹ²Ê±³¤£¨²¢ÇÒ¿ÉÒÔ¿´³öÐÔÄܽµµÍ»òµ±Ç°»·¾³µÄÆäËûÎÊÌ⣩¡£
¸üÒ»°ãµØ£¬ÖÁÉÙÓÐÈý¸öÖ÷ÒªµÄÖ¸±êÀà±ðÀ´¼àÊÓ£º
»ù±¾»î¶¯Ö¸±ê
´íÎóÖ¸±ê
ÐÔÄÜÖ¸±ê
ÏÂÃæÎÒÃǽ«·ÖÎöÔÚÿ¸öÀà±ðÖÐ×îÖØÒªµÄ NGINX Ö¸±ê£¬ÒÔ¼°ÓÃÒ»¸öÏ൱ÆÕ±éµ«ÊÇÖµµÃÌØ±ðÌáµ½µÄ°¸ÀýÀ´ËµÃ÷£ºÊ¹ÓÃ
NGINX Plus ×÷·´Ïò´úÀí¡£ÎÒÃÇ»¹½«½éÉÜÈçºÎʹÓÃͼÐι¤¾ß»ò¿ÉÑ¡ÔñµÄ¼à¿Ø¹¤¾ßÀ´¼à¿ØËùÓеÄÖ¸±ê¡£
±¾ÎÄÒýÓÃÖ¸±êÊõÓïÀ´×ÔÎÒÃǵġ°¼à¿Ø 101 ϵÁС±,£¬ËüÌṩÁËÒ»¸öÖ¸±êÊÕ¼¯ºÍ¾¯¸æ¿ò¼Ü¡£
»ù±¾»îÔ¾Ö¸±ê
ÎÞÂÛÄãÔÚÔõÑùµÄÇé¿öÏÂʹÓà NGINX£¬ºÁÎÞÒÉÎÊÄãÒª¼àÊÓ·þÎñÆ÷½ÓÊÕ¶àÉÙ¿Í»§¶ËÇëÇóºÍÈçºÎ´¦ÀíÕâЩÇëÇó¡£
NGINX Plus ÉÏÏñ¿ªÔ´ NGINX Ò»Ñù¿ÉÒÔ±¨¸æ»ù±¾»îÔ¾Ö¸±ê£¬µ«ËüÒ²ÌṩÁËÂÔÓв»Í¬µÄ¸¨ÖúÄ£¿é¡£ÎÒÃÇÊ×ÏÈÌÖÂÛ¿ªÔ´µÄ
NGINX£¬ÔÙÀ´ËµÃ÷ NGINX Plus ÌṩµÄÆäËûÖ¸±êµÄ¹¦ÄÜ¡£
NGINX
ÏÂͼÏÔʾÁËÒ»¸ö¿Í»§¶ËÁ¬½ÓµÄ¹ý³Ì£¬ÒÔ¼°¿ªÔ´°æ±¾µÄ NGINX ÈçºÎÔÚÁ¬½Ó¹ý³ÌÖÐÊÕ¼¯Ö¸±ê¡£

connection, request states
Accepts£¨½ÓÊÜ£©¡¢Handled£¨ÒÑ´¦Àí£©¡¢Requests£¨ÇëÇóÊý£©ÊÇÒ»Ö±ÔÚÔö¼ÓµÄ¼ÆÊýÆ÷¡£Active£¨»îÔ¾£©¡¢Waiting£¨µÈ´ý£©¡¢Reading£¨¶Á£©¡¢Writing£¨Ð´£©Ëæ×ÅÇëÇóÁ¿¶øÔö¼õ¡£

*ÑϸñµÄÀ´Ëµ£¬¶ªÆúµÄÁ¬½ÓÊÇ Ò»¸ö×ÊÔ´±¥ºÍÖ¸±ê£¬µ«ÊÇÒòΪ±¥ºÍ»áµ¼Ö NGINX
Í£Ö¹·þÎñ£¨¶ø²»ÊÇÑÓºó¸ÃÇëÇ󣩣¬ËùÒÔ£¬¡°ÒѶªÆú¡±ÊÓ×÷ Ò»¸ö¹¤×÷Ö¸±ê ±È½ÏºÏÊÊ¡£
NGINX worker ½ø³Ì½ÓÊÜ OS µÄÁ¬½ÓÇëÇóʱ Accepts ¼ÆÊýÆ÷Ôö¼Ó£¬¶øHandled
Êǵ±Êµ¼ÊµÄÇëÇóµÃµ½Á¬½Óʱ£¨Í¨¹ý½¨Á¢Ò»¸öеÄÁ¬½Ó»òÖØÐÂʹÓÃÒ»¸ö¿ÕÏеģ©¡£ÕâÁ½¸ö¼ÆÊýÆ÷µÄֵͨ³£¶¼ÊÇÏàͬµÄ£¬Èç¹ûËüÃÇÓвî±ðÔò±íÃ÷Á¬½Ó±»Dropped£¬ÍùÍùÕâÊÇÓÉÓÚ×ÊÔ´ÏÞÖÆ£¬±ÈÈçÒѾ´ïµ½
NGINX µÄworker_connectionsµÄÏÞÖÆ¡£
Ò»µ© NGINX ³É¹¦´¦ÀíÒ»¸öÁ¬½Óʱ£¬Á¬½Ó»áÒÆ¶¯µ½Active״̬£¬ÔÚÕâÀï¶Ô¿Í»§¶ËÇëÇó½øÐд¦Àí£º
Active״̬
Waiting: »îÔ¾µÄÁ¬½ÓÒ²¿ÉÒÔ´¦ÓÚ Waiting ×Ó״̬£¬Èç¹ûÓÐÔÚ´Ë¿ÌûÓлîÔ¾ÇëÇóµÄ»°¡£ÐÂÁ¬½Ó¿ÉÒÔÈÆ¹ýÕâ¸ö״̬²¢Ö±½Ó±äΪµ½
Reading ״̬£¬×î³£¼ûµÄÊÇÔÚʹÓá°accept filter£¨½ÓÊܹýÂËÆ÷£©¡± ºÍ ¡°deferred
accept£¨ÑÓ³Ù½ÓÊÜ£©¡±Ê±£¬ÔÚÕâÖÖÇé¿öÏ£¬NGINX ²»»á½ÓÊÕ worker ½ø³ÌµÄ֪ͨ£¬Ö±µ½Ëü¾ßÓÐ×ã¹»µÄÊý¾Ý²Å¿ªÊ¼ÏìÓ¦¡£Èç¹ûÁ¬½ÓÉèÖÃΪ
keep-alive £¬ÄÇôËüÔÚ·¢ËÍÏìÓ¦ºó½«´¦Óڵȴý״̬¡£
Reading: µ±½ÓÊÕµ½ÇëÇóʱ£¬Á¬½ÓÀ뿪 Waiting ״̬£¬²¢ÇÒ¸ÃÇëÇó±¾Éíʹ
Reading ״̬¼ÆÊýÔö¼Ó¡£ÔÚÕâÖÖ״̬Ï NGINX »á¶ÁÈ¡¿Í»§¶ËÇëÇóÊײ¿¡£ÇëÇóÊײ¿ÊDZȽÏСµÄ£¬Òò´ËÕâͨ³£ÊÇÒ»¸ö¿ìËٵIJÙ×÷¡£
Writing: ÇëÇó±»¶Áȡ֮ºó£¬Æäʹ Writing ״̬¼ÆÊýÔö¼Ó£¬²¢±£³ÖÔÚ¸Ã״̬£¬Ö±µ½ÏìÓ¦·µ»Ø¸ø¿Í»§¶Ë¡£ÕâÒâζ×Å£¬¸ÃÇëÇóÔÚ
Writing ״̬ʱ£¬ Ò»·½Ãæ NGINX µÈ´ýÀ´×ÔÉÏÓÎϵͳµÄ½á¹û£¨ÏµÍ³·ÅÔÚ NGINX ¡°ºóÃæ¡±£©£¬ÁíÍâÒ»·½Ã棬NGINX
Ò²ÔÚͬʱÏìÓ¦¡£ÇëÇóÍùÍù»áÔÚ Writing ״̬»¨·Ñ´óÁ¿µÄʱ¼ä¡£
ͨ³££¬Ò»¸öÁ¬½ÓÔÚͬһʱ¼äÖ»½ÓÊÜÒ»¸öÇëÇó¡£ÔÚÕâÖÖÇé¿öÏ£¬Active Á¬½ÓµÄÊýÄ¿
== Waiting µÄÁ¬½Ó + Reading ÇëÇó + Writing ¡£È»¶ø£¬½ÏÐ嵀 SPDY ºÍ
HTTP/2 ÐÒéÔÊÐí¶à¸ö²¢·¢ÇëÇó/ÏìÓ¦¸´ÓÃÒ»¸öÁ¬½Ó£¬ËùÒÔ Active ¿ÉСÓÚ Waiting µÄÁ¬½Ó¡¢
Reading ÇëÇó¡¢Writing ÇëÇóµÄ×ܺ͡£ £¨ÔÚ׫д±¾ÎÄʱ£¬NGINX ²»Ö§³Ö HTTP/2£¬µ«Ô¤¼Æµ½2015ÄêÆÚ¼ä½«»áÖ§³Ö¡££©
NGINX Plus
ÕýÈçÉÏÃæÌáµ½µÄ£¬ËùÓпªÔ´ NGINX µÄÖ¸±êÔÚ NGINX Plus ÖÐÊÇ¿ÉÓõ쬵«ÁíÍâÒ²ÌṩÆäËûµÄÖ¸±ê¡£±¾½Ú½ö˵Ã÷ÁË
NGINX Plus ¿ÉÓõÄÖ¸±ê¡£

connection, request states
Accepted £¨ÒѽÓÊÜ£©¡¢Dropped£¬×ÜÊýÊDz»¶ÏÔö¼ÓµÄ¼ÆÊýÆ÷¡£Active¡¢
Idle£¨¿ÕÏУ©ºÍ´¦ÓÚ Current£¨µ±Ç°£©´¦Àí½×¶ÎµÄ¸÷ÖÖ״̬ϵÄÁ¬½Ó»òÇë??ÇóµÄµ±Ç°ÊýÁ¿Ëæ×ÅÇëÇóÁ¿¶øÔö¼õ¡£

*ÑϸñµÄÀ´Ëµ£¬¶ªÆúµÄÁ¬½ÓÊÇ Ò»¸ö×ÊÔ´±¥ºÍÖ¸±ê£¬µ«ÊÇÒòΪ±¥ºÍ»áµ¼Ö NGINX
Í£Ö¹·þÎñ£¨¶ø²»ÊÇÑÓºó¸ÃÇëÇ󣩣¬ËùÒÔ£¬¡°ÒѶªÆú¡±ÊÓ×÷ Ò»¸ö¹¤×÷Ö¸±ê ±È½ÏºÏÊÊ¡£
µ± NGINX Plus worker ½ø³Ì½ÓÊÜ OS µÄÁ¬½ÓÇëÇóʱ Accepted ¼ÆÊýÆ÷µÝÔö¡£Èç¹û
worker ½ø³ÌΪÇëÇó½¨Á¢Á¬½Óʧ°Ü£¨Í¨¹ý½¨Á¢Ò»¸öеÄÁ¬½Ó»òÖØÐÂʹÓÃÒ»¸ö¿ÕÏУ©£¬Ôò¸ÃÁ¬½Ó±»¶ªÆú£¬ Dropped
¼ÆÊýÔö¼Ó¡£Í¨³£Á¬½Ó±»¶ªÆúÊÇÒòΪ×ÊÔ´ÏÞÖÆ£¬Èç NGINX Plus µÄworker_connectionsµÄÏÞÖÆÒѾ´ïµ½¡£
Active ºÍ Idle ºÍÈçÉÏËùÊöµÄ¿ªÔ´ NGINX µÄ¡°active¡± ºÍ ¡°waiting¡±×´Ì¬ÊÇÏàͬµÄ£¬µ«ÊÇÓÐÒ»µã¹Ø¼üµÄ²»Í¬£ºÔÚ¿ªÔ´
NGINX ÉÏ£¬¡°waiting¡±×´Ì¬°üÀ¨ÔÚ¡°active¡±ÖУ¬¶øÔÚ NGINX Plus ÉÏ¡°idle¡±µÄÁ¬½Ó±»ÅųýÔÚ¡°active¡±
¼ÆÊýÍâ¡£Current ºÍ¿ªÔ´ NGINX ÊÇÒ»ÑùµÄÒ²ÊÇÓÉ¡°reading + writing¡± ״̬×é³É¡£
Total Ϊ¿Í»§¶ËÇëÇóµÄÀÛ»ý¼ÆÊý¡£Çë×¢Ò⣬µ¥¸ö¿Í»§¶ËÁ¬½Ó¿ÉÉæ¼°¶à¸öÇëÇó£¬ËùÒÔÕâ¸öÊý×Ö¿ÉÄÜ»á±ÈÁ¬½ÓµÄÀۼƴÎÊýÃ÷ÏÔ´ó¡£ÊÂʵÉÏ£¬£¨total
/ accepted£©ÊÇÿ¸öÁ¬½ÓµÄƽ¾ùÇëÇóÊýÁ¿¡£
¿ªÔ´ ºÍ Plus Ö®¼äÖ¸±êµÄ²»Í¬

±»¶ªÆúµÄÁ¬½ÓÊýÄ¿µÈÓÚ Accepts ºÍ Handled Ö®²î£¨NGINX
ÖУ©£¬»òÊÇ¿ÉÖ±½ÓµÃµ½µÄ±ê×¼Ö¸±ê£¨NGINX Plus ÖУ©¡£ÔÚÕý³£Çé¿öÏ£¬¶ªÆúÁ¬½ÓÊýÓ¦¸ÃÊÇÁã¡£Èç¹ûÔÚÿ¸öµ¥Î»Ê±¼äÄÚ¶ªÆúÁ¬½ÓµÄËÙ¶È¿ªÊ¼ÉÏÉý£¬ÄÇôӦ¸Ã¿´¿´ÊÇ·ñ×ÊÔ´±¥ºÍÁË¡£

Dropped connections
ÌáÐÑÖ¸±ê: ÿÃëÇëÇóÊý
°´¹Ì¶¨Ê±¼ä¼ä¸ô²ÉÑùÄãµÄÇëÇóÊý¾Ý£¨¿ªÔ´ NGINX µÄrequests»òÕß NGINX Plus ÖÐtotal£©
»áÌṩ¸øÄ㵥λʱ¼äÄÚ£¨Í¨³£ÊÇ·ÖÖÓ»òÃ룩Ëù½ÓÊܵÄÇëÇóÊýÁ¿¡£¼à²âÕâ¸öÖ¸±ê¿ÉÒԲ鿴½øÈëµÄ Web Á÷Á¿¼â·å£¬ÎÞÂÛÊǺϷ¨µÄ»¹ÊǶñÒâµÄ£¬»òÕßͻȻµÄϽµ£¬Õâͨ³£¶¼´ú±í×ųöÏÖÁËÎÊÌ⡣ÿÃëÇëÇóÊýÈô·¢Éú¼±¾ç±ä»¯¿ÉÒÔÌáÐÑÄãµÄ»·¾³³öÏÖÎÊÌâÁË£¬¼´Ê¹Ëü²»ÄܸæËßÄãÈ·ÇÐÎÊÌâµÄλÖÃËùÔÚ¡£Çë×¢Ò⣬ËùÓеÄÇëÇó¶¼Í¬Ñù¼ÆÊý£¬ÎÞÂÛ
URL ÊÇʲô¡£

Requests per second
ÊÕ¼¯»îÔ¾Ö¸±ê
¿ªÔ´µÄ NGINX ÌṩÁËÒ»¸ö¼òµ¥×´Ì¬Ò³ÃæÀ´ÏÔʾ»ù±¾µÄ·þÎñÆ÷Ö¸±ê¡£¸Ã״̬ÐÅÏ¢ÒÔ±ê×¼¸ñʽÏÔʾ£¬Êµ¼ÊÉÏÈκÎͼÐλò¼à¿Ø¹¤¾ß¿ÉÒÔ±»ÅäÖÃÈ¥½âÎöÕâЩÏà¹ØÊý¾Ý£¬ÒÔÓÃÓÚ·ÖÎö¡¢¿ÉÊÓ»¯¡¢»òÌáÐÑ¡£NGINX
Plus Ìṩһ¸ö JSON ½Ó¿ÚÀ´¹©¸ø¸ü¶àµÄÊý¾Ý¡£ÔĶÁÏà¹ØÎÄÕ¡°NGINX Ö¸±êÊÕ¼¯¡±À´ÆôÓÃÖ¸±êÊÕ¼¯µÄ¹¦ÄÜ¡£
´íÎóÖ¸±ê

NGINX ´íÎóÖ¸±ê¸æËßÄã·þÎñÆ÷ÊÇ·ñ¾³£·µ»Ø´íÎó¶ø²»ÊÇÕý³£¹¤×÷¡£¿Í»§¶Ë´íÎó·µ»Ø4XX״̬Â룬·þÎñÆ÷¶Ë´íÎó·µ»Ø5XX״̬Âë¡£
ÌáÐÑÖ¸±ê: ·þÎñÆ÷´íÎóÂÊ
·þÎñÆ÷´íÎóÂʵÈÓÚÔÚµ¥Î»Ê±¼ä£¨Í¨³£ÎªÒ»µ½Îå·ÖÖÓ£©ÄÚ5xx´íÎó״̬´úÂëµÄ×ÜÊý³ýÒÔ״̬Â루1XX£¬2XX£¬3XX£¬4XX£¬5XX£©µÄ×ÜÊý¡£Èç¹ûÄãµÄ´íÎóÂÊËæ×Åʱ¼äµÄÍÆÒÆ¿ªÊ¼ÅÊÉý£¬µ÷²é¿ÉÄܵÄÔÒò¡£Èç¹ûͻȻÔö¼Ó£¬¿ÉÄÜÐèÒª²ÉÈ¡½ô¼±Ðж¯£¬ÒòΪ¿Í»§¶Ë¿ÉÄÜÊÕµ½´íÎóÐÅÏ¢¡£

Server error rate
¹ØÓÚ¿Í»§¶Ë´íÎóµÄ×¢ÒâÊÂÏËäÈ»¼à¿Ø4XXÊǺÜÓÐÓõ쬵«´Ó¸ÃÖ¸±êÖÐÄã½ö¿ÉÒÔ²¶×½ÓÐÏÞµÄÐÅÏ¢£¬ÒòΪËüÖ»ÊǺâÁ¿¿Í»§µÄÐÐΪ¶ø²»²¶×½ÈκÎÌØÊâµÄ
URL¡£»»¾ä»°Ëµ£¬4xx³öÏֵı仯¿ÉÄÜÊÇÒ»¸öÐźţ¬ÀýÈçÍøÂçɨÃèÆ÷ÕýÔÚѰÕÒÄãµÄÍøÕ¾Â©¶´Ê±¡£
ÊÕ¼¯´íÎó¶ÈÁ¿
ËäÈ»¿ªÔ´ NGINX ²»ÄÜÂíÉϵõ½ÓÃÓÚ¼à²âµÄ´íÎóÂÊ£¬µ«ÖÁÉÙÓÐÁ½ÖÖ·½·¨¿ÉÒԵõ½£º
ʹÓÃÉÌÒµÖ§³ÖµÄ NGINX Plus ÌṩµÄÀ©Õ¹×´Ì¬Ä£¿é
ÅäÖà NGINX µÄÈÕ־ģ¿é½«ÏìÓ¦ÂëдÈë·ÃÎÊÈÕÖ¾
¹ØÓÚÕâÁ½ÖÖ·½·¨£¬ÇëÔĶÁÏà¹ØÎÄÕ¡°NGINX Ö¸±êÊÕ¼¯¡±¡£
ÐÔÄÜÖ¸±ê

ÌáÐÑÖ¸±ê: ÇëÇó´¦Àíʱ¼ä
ÇëÇó´¦Àíʱ¼äÖ¸±ê¼Ç¼ÁË NGINX ´¦Àíÿ¸öÇëÇóµÄʱ¼ä£¬´Ó¶Áµ½¿Í»§¶ËµÄµÚÒ»¸öÇëÇó×Ö½Úµ½Íê³ÉÇëÇ󡣽ϳ¤µÄÏìӦʱ¼ä˵Ã÷ÎÊÌâÔÚÉÏÓΡ£
ÊÕ¼¯´¦Àíʱ¼äÖ¸±ê
NGINX ºÍ NGINX Plus Óû§¿ÉÒÔͨ¹ýÌí¼Ó $request_time ±äÁ¿µ½·ÃÎÊÈÕÖ¾¸ñʽÖÐÀ´²¶??×½´¦Àíʱ¼äÊý¾Ý¡£¹ØÓÚÅäÖÃÈÕÖ¾¼à¿ØµÄ¸ü¶àϸ½ÚÔÚNGINXÖ¸±êÊÕ¼¯¡£
·´Ïò´úÀíÖ¸±ê

·´Ïò´úÀíÊÇ NGINX ×î³£¼ûµÄʹÓ÷½·¨Ö®Ò»¡£ÉÌÒµÖ§³ÖµÄ NGINX Plus
ÏÔʾÁË´óÁ¿Óйغó¶Ë£¨»ò¡°ÉÏÓÎ upstream¡±£©µÄ·þÎñÆ÷Ö¸±ê£¬ÕâЩÓë·´Ïò´úÀíÉèÖÃÏà¹ØµÄ¡£±¾½ÚÖØµã½éÉÜÁ˼¸¸ö
NGINX Plus Óû§¿ÉÓõĹؼüÉÏÓÎÖ¸±ê¡£
NGINX Plus Ê×ÏȽ«ËüµÄÉÏÓÎÖ¸±ê°´×é·Ö¿ª£¬È»ºóÊÇÕë¶Ôµ¥¸ö·þÎñÆ÷µÄ¡£Òò´Ë£¬ÀýÈ磬ÄãµÄ·´Ïò´úÀí½«ÇëÇó·ÖÅäµ½Îå¸öÉÏÓεÄ
Web ·þÎñÆ÷ÉÏ£¬Äã¿ÉÒÔÒ»ÑÛ¿´³öÊÇ·ñÓе¥¸ö·þÎñÆ÷ѹÁ¦¹ý´ó£¬Ò²¿ÉÒÔ¿´³öÉÏÓÎ×éÖзþÎñÆ÷µÄ½¡¿µ×´¿ö£¬ÒÔÈ·±£Á¼ºÃµÄÏìӦʱ¼ä¡£
»îÔ¾Ö¸±ê
ÿÉÏÓηþÎñÆ÷µÄ»îÔ¾Á¬½ÓµÄÊýÁ¿¿ÉÒÔ°ïÖúÄãÈ·ÈÏ·´Ïò´úÀíÊÇ·ñÕýÈ·µÄ·ÖÅ乤×÷µ½ÄãµÄÕû¸ö·þÎñÆ÷×éÉÏ¡£Èç¹ûÄãÕýÔÚʹÓÃ
NGINX ×÷Ϊ¸ºÔؾùºâÆ÷£¬ÈκÎһ̨·þÎñÆ÷´¦ÀíµÄÁ¬½ÓÊýµÄÃ÷ÏÔÆ«²î¶¼¿ÉÄܱíÃ÷·þÎñÆ÷ÕýÔÚŬÁ¦Ïû»¯ÇëÇ󣬻òÕßÊÇÄãÅäÖÃʹÓõĸºÔؾùºâµÄ·½·¨£¨ÀýÈçround-robin
»ò IP hashing£©²»ÊÇ×îÊʺÏÄãÁ÷Á¿Ä£Ê½µÄ¡£
´íÎóÖ¸±ê
´íÎóÖ¸±ê£¬ÉÏÃæËù˵µÄ¸ßÓÚ5XX£¨·þÎñÆ÷´íÎó£©×´Ì¬Â룬ÊÇ¼à¿ØÖ¸±êÖÐÓмÛÖµµÄÒ»¸ö£¬ÓÈÆäÊÇÏìÓ¦Â벿·Ö¡£ NGINX
Plus ÔÊÐíÄãÇáËɵØÌáȡÿ¸öÉÏÓηþÎñÆ÷µÄ 5xx ´íÎó´úÂëµÄÊýÁ¿£¬ÒÔ¼°ÏìÓ¦µÄ×ÜÊýÁ¿£¬ÒÔ´ËÀ´È·¶¨Ä³¸öÌØ¶¨·þÎñÆ÷µÄ´íÎóÂÊ¡£
¿ÉÓÃÐÔÖ¸±ê
¶ÔÓÚ web ·þÎñÆ÷µÄÔËÐÐ×´¿ö£¬»¹ÓÐÁíÒ»ÖֽǶȣ¬NGINX ¿ÉÒÔͨ¹ýÿ¸ö×éÖе±Ç°¿ÉÓ÷þÎñÆ÷µÄ×ÜÁ¿ºÜ·½±ã¼à¿ØÄãµÄÉÏÓÎ×éµÄ½¡¿µ¡£ÔÚÒ»¸ö´óµÄ·´Ïò´úÀíÉÏ£¬Äã¿ÉÄܲ»»á·Ç³£¹ØÐÄÆäÖÐÒ»¸ö·þÎñÆ÷µÄµ±Ç°×´Ì¬£¬¾ÍÏñÄãÖ»ÒªÓпÉÓõķþÎñÆ÷×éÄܹ»´¦Àíµ±Ç°µÄ¸ºÔؾÍÐÐÁË¡£µ«¼àÊÓÉÏÓÎ×éÄÚµÄËùÓй¤×÷µÄ·þÎñÆ÷×ÜÁ¿¿ÉΪÅжÏ
Web ·þÎñÆ÷µÄ½¡¿µ×´¿öÌṩһ¸ö¸ü¸ß²ãÃæµÄÊӽǡ£
ÊÕ¼¯ÉÏÓÎÖ¸±ê
NGINX Plus ÉÏÓÎÖ¸±êÏÔʾÔÚÄÚ²¿ NGINX Plus µÄ¼à¿ØÒDZíÅÌÉÏ£¬²¢ÇÒÒ²¿Éͨ¹ýÒ»¸öJSON
½Ó¿ÚÀ´·þÎñÓÚ¸÷ÖÖÍⲿ¼à¿ØÆ½Ì¨¡£ÔÚÎÒÃǵÄÏà¹ØÎÄÕ¡°NGINXÖ¸±êÊÕ¼¯¡±ÖÐÓиöÀý×Ó¡£
½áÂÛ
ÔÚÕâÆªÎÄÕÂÖУ¬ÎÒÃÇÒѾ̸µ½ÁËһЩÓÐÓõÄÖ¸±ê£¬Äã¿ÉÒÔʹÓñí¸ñÀ´¼à¿Ø NGINX ·þÎñÆ÷¡£Èç¹ûÄãÊǸտªÊ¼Ê¹ÓÃ
NGINX£¬¼à¿ØÏÂÃæÌṩµÄ´ó²¿·Ö»òÈ«²¿Ö¸±ê£¬¿ÉÒÔÈÃÄãºÜºÃµÄÁ˽âÄãµÄÍøÂç»ù´¡ÉèÊ©µÄ½¡¿µºÍ»îÔ¾³Ì¶È£º
1.ÒѶªÆúµÄÁ¬½Ó
2.ÿÃëÇëÇóÊý
3.·þÎñÆ÷´íÎóÂÊ
4.ÇëÇó´¦ÀíÊý¾Ý
×îÖÕ£¬Äã»áѧµ½¸ü¶à£¬¸üרҵµÄºâÁ¿Ö¸±ê£¬ÓÈÆäÊǹØÓÚÄã×Ô¼º»ù´¡ÉèÊ©ºÍʹÓÃÇé¿öµÄ¡£µ±È»£¬¼à¿ØÄÄÒ»ÏîÖ¸±ê½«È¡¾öÓÚÄã¿ÉÓõŤ¾ß¡£²Î¼ûÏà¹ØµÄÎÄÕÂÀ´Öð²½Ö¸µ¼ÄãµÄÖ¸±êÊÕ¼¯£¬²»¹ÜÄãʹÓÃ
NGINX »¹ÊÇ NGINX Plus¡£
ÔÚ Datadog ÖУ¬ÎÒÃÇÒѾ¼¯³ÉÁË NGINX ºÍ NGINX Plus£¬ÕâÑùÄã¾Í¿ÉÒÔÒÔ×îÉÙµÄÉèÖÃÀ´ÊÕ¼¯ºÍ¼à¿ØËùÓÐ
Web ·þÎñÆ÷µÄÖ¸±ê¡£ ÔÚ±¾ÎÄÖÐÁ˽âÈçºÎÓà NGINX DatadogÀ´¼à¿Ø£¬²¢¿ªÊ¼Ãâ·ÑÊÔÓà Datadog°É¡£
¶þ¡¢ÈçºÎÊÕ¼¯ NGINX Ö¸±ê
ÈçºÎ»ñÈ¡ÄãËùÐèÒªµÄ NGINX Ö¸±ê
ÈçºÎ»ñÈ¡ÐèÒªµÄÖ¸±êÈ¡¾öÓÚÄãÕýÔÚʹÓÃµÄ NGINX °æ±¾ÒÔ¼°ÄãÏ£Íû¿´µ½ÄÄЩָ±ê¡££¨²Î¼û ÈçºÎ¼à¿Ø NGINX£¨µÚһƪ£©
À´ÉîÈëÁ˽âNGINXÖ¸±ê¡££©×ÔÓÉ¿ªÔ´µÄ NGINX ºÍÉÌÒµ°æµÄ NGINX Plus ¶¼ÓпÉÒÔ±¨¸æÖ¸±ê¶ÈÁ¿µÄ״̬ģ¿é£¬NGINX
Ò²¿ÉÒÔÔÚÆäÈÕÖ¾ÖÐÅäÖÃÊä³öÌØ¶¨Ö¸±ê£º
Ö¸±ê¿ÉÓÃÐÔ

Ö¸±êÊÕ¼¯£ºNGINX£¨¿ªÔ´°æ£©
¿ªÔ´°æµÄ NGINX »áÔÚÒ»¸ö¼òµ¥µÄ×´Ì¬Ò³ÃæÉÏÏÔʾ¼¸¸öÓë·þÎñÆ÷״̬ÓйصĻù±¾Ö¸±ê£¬ËüÃÇÓÉÄãÆôÓÃµÄ HTTP
stub status module ËùÌṩ¡£Òª¼ì²é¸ÃÄ£¿éÊÇ·ñÒÑÆôÓã¬ÔËÐÐÒÔÏÂÃüÁ
nginx -V 2>&1 | grep -o with-http_stub_status_module |
Èç¹ûÄã¿´µ½ÖÕ¶ËÊä³öÁË httpstubstatus_module£¬ËµÃ÷¸Ã״̬ģ¿éÒÑÆôÓá£
Èç¹û¸ÃÃüÁîûÓÐÊä³ö£¬ÄãÐèÒªÆôÓøÃ״̬ģ¿é¡£Äã¿ÉÒÔÔÚ´ÓÔ´´úÂë¹¹½¨ NGINX ʱʹÓà ¨Cwith-http_stub_status_module
ÅäÖòÎÊý:
./configure \ ¡ \ --with-http_stub_status_module make sudo make install |
ÔÚÑéÖ¤¸ÃÄ£¿éÒѾÆôÓûòÄã×Ô¼ºÆôÓÃËüºó£¬Ä㻹ÐèÒªÐÞ¸Ä NGINX ÅäÖÃÎļþ£¬À´¸ø×´Ì¬Ò³ÃæÉèÖÃÒ»¸ö±¾µØ¿É·ÃÎʵÄ
URL£¨ÀýÈ磺 /nginx_status£©£º
server { location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } } |
×¢£ºnginx ÅäÖÃÖÐµÄ server ¿éͨ³£²¢²»·ÅÔÚÖ÷ÅäÖÃÎļþÖУ¨ÀýÈ磺/etc/nginx/nginx.conf£©£¬¶øÊÇ·ÅÔÚÖ÷ÅäÖûá¼ÓÔØµÄ¸¨ÖúÅäÖÃÎļþÖС£ÒªÕÒµ½Ö÷ÅäÖÃÎļþ£¬Ê×ÏÈÔËÐÐÒÔÏÂÃüÁ
´ò¿ªÁгöµÄÖ÷ÅäÖÃÎļþ£¬ÔÚÒÔ http ¿é½áβµÄ¸½½ü²éÕÒÒÔ include ¿ªÍ·µÄÐУ¬È磺
include /etc/nginx/conf.d/*.conf; |
ÔÚÆäÖÐÒ»¸ö°üº¬µÄÅäÖÃÎļþÖУ¬ÄãÓ¦¸Ã»áÕÒµ½Ö÷ server ¿é£¬Äã¿ÉÒÔÈçÉÏËùʾÅäÖà NGINX µÄÖ¸±êÊä³ö¡£¸ü¸ÄÈκÎÅäÖúó£¬Í¨¹ýÖ´ÐÐÒÔÏÂÃüÁîÖØÐ¼ÓÔØÅäÖÃÎļþ£º
ÏÖÔÚ£¬Äã¿ÉÒÔä¯ÀÀ״̬ҳ¿´µ½ÄãµÄÖ¸±ê£º
Active connections: 24 server accepts handled requests 1156958 1156958 4491319 Reading: 0 Writing: 18 Waiting : 6 |
Çë×¢Ò⣬Èç¹ûÄãÏ£Íû´ÓÔ¶³Ì¼ÆËã»ú·ÃÎʸÃ×´Ì¬Ò³Ãæ£¬ÔòÐèÒª½«Ô¶³Ì¼ÆËã»úµÄ IP µØÖ·Ìí¼Óµ½ÄãµÄ״̬ÅäÖÃÎļþµÄ°×Ãûµ¥ÖУ¬ÔÚÉÏÃæµÄÅäÖÃÎļþÖеİ×Ãûµ¥½öÓÐ
127.0.0.1¡£
NGINX µÄ×´Ì¬Ò³ÃæÊÇÒ»ÖÖ¿ìËٲ鿴ָ±ê×´¿öµÄ¼òµ¥·½·¨£¬µ«µ±Á¬Ðø¼à²âʱ£¬ÄãÐèÒª°´ÕÕ±ê×¼¼ä¸ô×Ô¶¯¼Ç¼¸ÃÊý¾Ý¡£¼à¿Ø¹¤¾ßÏä
Nagios »òÕß Datadog£¬ÒÔ¼°ÊÕ¼¯Í³¼ÆÐÅÏ¢µÄ·þÎñ collectD ÒѾ¿ÉÒÔ½âÎö NGINX
µÄ״̬ÐÅÏ¢ÁË¡£
Ö¸±êÊÕ¼¯: NGINX Plus
ÉÌÒµ°æµÄ NGINX Plus ͨ¹ýËüµÄ ngxhttpstatus_module ÌṩÁ˱ȿªÔ´°æ NGINX
¸ü¶àµÄÖ¸±ê¡£NGINX Plus ÒÔ×Ö½ÚÁ÷µÄ·½Ê½ÌṩÕâЩ¶îÍâµÄÖ¸±ê£¬ÌṩÁ˹ØÓÚÉÏÓÎϵͳºÍ¸ßËÙ»º´æµÄÐÅÏ¢¡£NGINX
Plus Ò²»á±¨¸æËùÓÐµÄ HTTP ״̬ÂëÀàÐÍ£¨1XX£¬2XX£¬3XX£¬4XX£¬5XX£©µÄ¼ÆÊý¡£Ò»¸ö NGINX
Plus ״̬±¨¸æÀý×Ó¿ÉÔڴ˲鿴£º

NGINX Plus status board
×¢£ºNGINX Plus ÔÚ״̬ÒDZíÅÌÖеġ°Active¡±Á¬½ÓµÄ¶¨ÒåºÍ¿ªÔ´ NGINX ͨ¹ý stubstatusmodule
ÊÕ¼¯µÄ¡°Active¡±Á¬½ÓÖ¸±êÂÔÓв»Í¬¡£ÔÚ NGINX Plus Ö¸±êÖУ¬¡°Active¡±Á¬½Ó²»°üÀ¨Waiting״̬µÄÁ¬½Ó£¨¼´¡°Idle¡±Á¬½Ó£©¡£
NGINX Plus Ò²¿ÉÒÔÊä³ö JSON ¸ñʽµÄÖ¸±ê£¬¿ÉÒÔÓÃÓÚ¼¯³Éµ½ÆäËû¼à¿ØÏµÍ³¡£ÔÚ NGINX Plus
ÖУ¬Äã¿ÉÒÔ¿´µ½ ¸ø¶¨µÄÉÏÓηþÎñÆ÷×éµÄÖ¸±êºÍ½¡¿µ×´¿ö£¬»òÕß¼òµ¥µØ´ÓÉÏÓηþÎñÆ÷µÄµ¥¸ö·þÎñÆ÷µÃµ½ÏìÓ¦´úÂëµÄ¼ÆÊý£º
{"1xx":0,"2xx":3483032,"3xx":0,"4xx":23,"5xx":0,"total":3483055} |
ÒªÆô¶¯ NGINX Plus Ö¸±êÒDZíÅÌ£¬Äã¿ÉÒÔÔÚ NGINX ÅäÖÃÎļþµÄ http ¿éÄÚÌí¼Ó״̬ server
¿é¡£ (²Î¼ûÉÏÒ»½Ú£¬ÎªÊÕ¼¯¿ªÔ´°æ NGINX Ö¸±ê¶øÈçºÎ²éÕÒÏà¹ØµÄÅäÖÃÎļþµÄ˵Ã÷¡££©ÀýÈ磬ҪÉèÖÃÒ»¸ö״̬ÒDZíÅÌ
£¨http://your.ip.address:8080/status.html£©ºÍÒ»¸ö JSON ½Ó¿Ú£¨http://your.ip.address:8080/status£©£¬¿ÉÒÔÌí¼ÓÒÔÏÂ
server ¿éÀ´É趨£º
server { listen 8080; root /usr/share/nginx/html; location /status { status; } location = /status.html { } } |
µ±ÄãÖØÐ¼ÓÔØ NGINX ÅäÖúó£¬×´Ì¬Ò³¾Í¿ÉÒÔÓÃÁË£º
¹ØÓÚÈçºÎÅäÖÃÀ©Õ¹×´Ì¬Ä£¿é£¬¹Ù·½ NGINX Plus ÎĵµÓÐ Ïêϸ½éÉÜ ¡£
Ö¸±êÊÕ¼¯£ºNGINX ÈÕÖ¾
NGINX µÄ ÈÕ־ģ¿é »á°Ñ¿É×Ô¶¨ÒåµÄ·ÃÎÊÈÕ־дµ½ÄãÅäÖõÄÖ¸¶¨Î»Öá£Äã¿ÉÒÔͨ¹ýÌí¼Ó»òÒÆ³ý±äÁ¿À´×Ô¶¨ÒåÈÕÖ¾µÄ¸ñʽºÍ°üº¬µÄÊý¾Ý¡£Òª´æ´¢ÏêϸµÄÈÕÖ¾£¬×î¼òµ¥µÄ·½·¨ÊÇÌí¼ÓÏÂÃæÒ»ÐÐÔÚÄãÅäÖÃÎļþµÄ
server ¿éÖУ¨²Î¼ûÉÏÉϽڣ¬ÎªÊÕ¼¯¿ªÔ´°æ NGINX Ö¸±ê¶øÈçºÎ²éÕÒÏà¹ØµÄÅäÖÃÎļþµÄ˵Ã÷¡££©£º
access_log logs/host.access.log combined; |
¸ü¸Ä NGINX ÅäÖÃÎļþºó£¬Ö´ÐÐÈçÏÂÃüÁîÖØÐ¼ÓÔØÅäÖÃÎļþ£º
ĬÈϰüº¬µÄ ¡°combined¡± µÄÈÕÖ¾¸ñʽ£¬»á°üÀ¨Ò»ÏµÁйؼüµÄÊý¾Ý£¬Èçʵ¼ÊµÄ HTTP ÇëÇóºÍÏàÓ¦µÄÏìÓ¦´úÂë¡£ÔÚÏÂÃæµÄʾÀýÈÕÖ¾ÖУ¬NGINX
¼Ç¼ÁËÇëÇó /index.html ʱµÄ 200£¨³É¹¦£©×´Ì¬ÂëºÍ·ÃÎʲ»´æÔÚµÄÇëÇóÎļþ /fail µÄ 404£¨Î´ÕÒµ½£©´íÎó¡£
127.0.0.1 - - [19/Feb/2015:12:10:46 -0500] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0
(Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/40.0.2214.111 Safari 537.36" 127.0.0.1 - - [19/Feb/2015:12:11:05 -0500] "GET
/fail HTTP/1.1" 404 570 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36" |
Äã¿ÉÒÔͨ¹ýÔÚ NGINX ÅäÖÃÎļþÖÐµÄ http ¿éÌí¼ÓÒ»¸öеÄÈÕÖ¾¸ñʽÀ´¼Ç¼ÇëÇó´¦Àíʱ¼ä£º
log_format nginx '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent $request_time ' '"$http_referer" "$http_user_agent"'; |
²¢ÐÞ¸ÄÅäÖÃÎļþÖÐ server ¿éµÄ access_log ÐУº
access_log logs/host.access.log nginx; |
ÖØÐ¼ÓÔØÅäÖÃÎļþºó£¨ÔËÐÐ nginx -s reload£©£¬ÄãµÄ·ÃÎÊÈÕÖ¾½«°üÀ¨ÏìӦʱ¼ä£¬ÈçÏÂËùʾ¡£µ¥Î»ÎªÃ룬¾«¶Èµ½ºÁÃë¡£ÔÚÕâ¸öÀý×ÓÖУ¬·þÎñÆ÷½ÓÊÕµ½Ò»¸ö¶Ô
/big.pdf µÄÇëÇóʱ£¬·¢ËÍ 33973115 ×Ö½Úºó·µ»Ø 206£¨³É¹¦£©×´Ì¬Âë¡£´¦ÀíÇëÇóÓÃʱ 0.202
Ã루202ºÁÃ룩£º
127.0.0.1 - - [19/Feb/2015:15:50:36 -0500] "GET /big.pdf HTTP/1.1"
206 33973115 0.202 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36" |
Äã¿ÉÒÔʹÓø÷ÖÖ¹¤¾ßºÍ·þÎñÀ´½âÎöºÍ·ÖÎö NGINX ÈÕÖ¾¡£ÀýÈ磬rsyslog ¿ÉÒÔ¼àÊÓÄãµÄÈÕÖ¾£¬²¢½«Æä´«µÝ¸ø¶à¸öÈÕÖ¾·ÖÎö·þÎñ£»ÄãÒ²¿ÉÒÔʹÓÃ×ÔÓÉ¿ªÔ´¹¤¾ß£¬±ÈÈç
logstash À´ÊÕ¼¯ºÍ·ÖÎöÈÕÖ¾£»»òÕßÄã¿ÉÒÔʹÓÃÒ»¸öͳһÈÕÖ¾¼Ç¼²ã£¬Èç Fluentd À´ÊÕ¼¯ºÍ½âÎöÄãµÄ
NGINX ÈÕÖ¾¡£
½áÂÛ
¼àÊÓ NGINX µÄÄÄÒ»ÏîÖ¸±ê½«È¡¾öÓÚÄã¿ÉÓõŤ¾ß£¬ÒÔ¼°¼à¿ØÖ¸±êËùÌṩµÄÐÅÏ¢ÊÇ·ñÂú×ãÄãÃǵÄÐèÒª¡£¾ÙÀýÀ´Ëµ£¬´íÎóÂʵÄÊÕ¼¯ÊÇ·ñ×ã¹»ÖØÒªµ½ÐèÒªÄãÃǹºÂò
NGINX Plus £¬»¹ÊǼÜÉèÒ»¸ö¿ÉÒÔ²¶»ñºÍ·ÖÎöÈÕÖ¾µÄϵͳ¾Í¹»ÁË£¿
ÔÚ Datadog ÖУ¬ÎÒÃÇÒѾ¼¯³ÉÁË NGINX ºÍ NGINX Plus£¬ÕâÑùÄã¾Í¿ÉÒÔÒÔ×îСµÄÉèÖÃÀ´ÊÕ¼¯ºÍ¼à¿ØËùÓÐ
Web ·þÎñÆ÷µÄÖ¸±ê¡£ÔÚ±¾ÎÄÖÐÁ˽âÈçºÎÓà NGINX Datadog À´¼à¿Ø £¬²¢¿ªÊ¼ Datadog
µÄÃâ·ÑÊÔÓðɡ£
|