שאלה האם פינג דרך אמינה לבדוק אם השרת זמין?


ביישום שלי אני pinging שרת ומחכה לתגובה. אני משתמש זה כדי לקבוע אם השרת זמין ו תגובה או לא.

האם זו דרך אמינה לקבוע זמינות? אני מניח שחומת אש יכולה להיות סינון תנועה icmp ... האם יש חסרונות אחרים? האם יש שיטה אמינה יותר?


89
2017-09-19 10:00






תשובות:


הדרך הטובה ביותר לדעת אם כל שירות מרחוק הוא חי הוא לבקש את זה כדי להגיש בקשה באופן שבו זה נועד - למעשה זו הדרך היחידה לדעת באמת משהו עובד כראוי.

כדוגמה אני תמיד מקבל עומס שלי balancers כדי לקבל בפועל 'ראש' תגובה בחזרה מתוך שרתי האינטרנט שלנו, אתה יכול לעשות את אותו הדבר עבור קטן לבחור על תיבת DB אם אתה רוצה, או מה שרת בפועל שלך משמש. בתור עצה אתה יכול ליצור 'online.txt' (או מה השם שאתה רוצה לתת את זה) על שרתי האינטרנט שלך, יש LBs שלך מנסה לקבל את הקובץ ואם זה נכשל ואז זה מסיר את השרת מן VIP, זה דרך נחמדה של לקיחה ידנית של שרתים בודדים מתוך ה- VIP שלך פשוט על ידי שינוי שם של קובץ יחיד.

פינג רק בדיקות היכולת להגיב על pings, אז זה הבסיס של מערכת ההפעלה, חלקים של מחסנית ה- IP ואת הקישורים הפיזיים - אבל זה הכל, כל השאר יכול להיות למטה ואתה לא יודע.

אני יודע את זה מוזכר להלן, אבל זה חוזר חוזר שוב ושוב.

בקשות הד ICMP (aka "Pings") (aka סוג ICMP 8) בנויים על מפרט מחסנית ה- IP, כן, אך לא נדרשים להיות מיושמים או בשימוש. למעשה, ישנם מספר גדול של ספקי אינטרנט אשר מסרבים להעביר אותם בשקט בשקט אלה בקשות, כפי שהם צורה של התקפה ברשת (נקרא pingflood).

כפי שצוין לעיל, זה מטופל על ידי מערכת ההפעלה (במיוחד ברמת הרשת מחסנית) ולכן זה תלוי בתצורת מערכת ההפעלה להגיב על אלה או לא. אם זה כבה (אמצעי זהירות?), אתה לא יכול לעשות שום דבר על קבלת תגובות פינג מהקצה השני. זו הסיבה שזה לא אמין.


137
2017-09-19 10:10



מה שאמר האיש! אני תמיד ממליץ ללקוחות כי הדרך הטובה ביותר לדעת אם השרת הוא כרגע מציע שירות X היא שירות הבקשה X. - MadHatter
אנחנו למעשה בונים "מבחן" ממשק API RESTful לתוך היישומים שלנו פשוט לזה. אז אנחנו יודעים שאם אפליקציה מגיבה ל- blah / what_app / pulse זה תלוי, שירות בקשות, יש את כל הכלים שהוא צריך (DB, dependancies וכו '), - tsykoduk
כדי להוסיף MadHatter, זה לעתים קרובות רעיון טוב לעשות ping ו בקשה. בדרך זו אתה יכול לדעת מיד אם אתה מתמודד עם קישוריות לרשת או הפסקת שירות ... או אחד נוטה ליצור דברים שונים לחלוטין מאשר אחרים. - user606723
פינג הוא אפילו לא מבחן אמין כי השרת עצמו יכול להגיב פינג - אם זה לא אז כל מה שאתה יודע הוא כי משהו בינך לבין זה הוא סינון תנועה ICMP - Rob Moir
בהנחה שהמכונה מגיבה לפינג בנסיבות רגילות, אתה יכול להשתמש פינג כמו מסנן בלום: אם פינג נכשל, השירות הוא בהחלט למטה (יש לך בעיה ברשת, מאז הקמנו את עבודות פינג בדרך כלל). עם זאת, אם ping succeds השירות עדיין יכול להיות למטה כמתואר בתשובה זו - 3Doubloons


רוב הזמן, כן, עם זאת:

  • כמה שרתים לחסום בקשות פינג

  • רק בגלל שהשרת מגיב אינו מתכוון אוטומטית לאתר (או כל שירות שאתה מצפה להשתמש) עובד, עליך לבדוק אם התגובה תואמת את התוכן הצפוי.


10
2017-09-19 10:08





זה נכון שבמקרים רבים התנועה ICMP מסוננת כך שזה יכול להיות אמין ...

דרך טובה יותר אולי יכול להיות Telnet השרת בנמל שירות אתה מעוניין.

כלומר Telnet 127.0.0.1 8080


5
2017-09-19 10:07





אם השרת נדרש רק להגיב פינג אז זה שיטה טובה של קביעת הזמינות של זה. אם הוא נדרש לספק שירות אינטרנט למשל אז אתה צריך לבצע צורה כלשהי של הבדיקה כדי לראות אם זה עובד באופן דומה עבור קבצים וכו '


5
2017-09-19 10:10





פינג יש 2 חסרונות:

  • פינג שולח ICMP, זה יכול להיות מסונן על ידי חומת האש
  • את tcp או udp היציאה היישום שלך משתמש יכול להיות עסוק או לא פתוח - פינג לא לבדוק את זה

פתרון טוב יותר הוא לבדוק את יציאת udp / tcp שלך ישירות, כדי לראות אם השירות עדיין זמין ... :-)


3
2017-09-19 19:20





ישנם כלים מיוחדים לבדיקה וניטור כמו נאגיוס / איסינגה.
עם כלים אלה אתה יכול (כמובן) לעשות בודק עם הבדיקה ping שונים, אלא גם לעשות בדיקות על השירותים שלך.

כל המחאות יכולות להשתמש בערך המוחזר כדי לסווג את התוצאה כ"טובה "," אזהרה "או" קריטית "וניתן לכתוב כמעט בכל שפת תכנות.

כמובן לא קל להתקנה (כמו הצבע ולחץ), אבל להתאמה אישית, אמין להרחבה. פועל היטב על לינוקס ו- Linux הפצות שונות.


3
2017-09-19 18:24





בדוק את השירותים שאתה מחפש, רק פינג שרת לא אומר השירותים עובד.

לדוגמה:

תארו לעצמכם שרת אינטרנט עם תריסר אתרי אינטרנט, אז אני צריך לדעת אם אתרי אינטרנט הוא מעלה, עשיתי לעצמי סקריפט זעיר ב- PHP ולהפעיל אותו כל 10 דקות.

את התסריט בצע את ->

<?php
    $website1 = "http://www.mywebsite.com/";
    $myWebsite = file_get_contents($website1);
    $message = 'My website' . $website1 . ' is DOWN at the moment.';
    if (empty($myWebsite)) mail('mail@server.com', 'Website is DOWN', $message);
?>

2
2017-11-28 15:42





שימוש ב- ping כדי לקבוע אם שרת זמין הוא כמו רופא ER בודק אם החולה נושם. כן, זה מקום טוב להתחיל בו, אבל אולי יש בעיות אחרות.


2
2017-09-19 18:39





רק שני הסנטים שלי: יש לנו יישום מורשת המשתמשת בשיטה זו, והיה צריך שירות זה בגלל פינג היה לא מספיקה לקביעת זמינות השירות.

פינג רק מראה כי השרת מסוגל להקשיב, אבל במקרה שלנו השירות לא היה מסוגל להתחיל ללא התערבות אנושית.

כתוצאה מכך יחידות, אשר נניח להניח השרת היה זמין, היו מנסים להתחבר פסק זמן. במקום להציג את ההודעה "שרת אינו זמין".

-

היישום הנוכחי שלנו, המתקשר דרך XMLHTTPRequests לשרת אינטרנט, שולח הודעה שנוצרה על-ידי השרת כדי להגיב עם קוד מצב. קוד הסטטוס מחושב על ידי השרת עושה מספר בדיקות על מנת להבטיח כי תת מערכות שונות באינטרנט (DB, ספריות הדרושים ניתן לכתיבה, וכו ')


0
2017-08-24 23:59