ענן אביב - שירותי איתור עם Zipkin

1. סקירה כללית

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

מאמר זה אינו מאמר מבוא למעקב מבוזר או ענן קפיץ. אם ברצונך לקבל מידע נוסף אודות מעקב מבוזר, קרא את מבואנו למפגע האביב.

2. שירות ציפקין

שֶׁלָנוּ זיפקין השירות ישמש כחנות לכל התוחלות שלנו. כל טווח נשלח לשירות זה ונאסף לעקבות לזיהוי עתידי.

2.1. להכין

צור פרויקט Spring Boot חדש והוסף תלות אלה ל pom.xml:

 io.zipkin.java zipkin-server io.zipkin.java זמן ריצה zipkin-autoconfigure-ui 

לעיון: תוכלו למצוא את הגרסה האחרונה ב- מייבן סנטרל (שרת zipkin, zipkin-autoconfigure-ui). גרסאות התלות עוברות בירושה מהאב האב-אתחול-ההתחלה.

2.2. הפעלת שרת Zipkin

כדי לאפשר את זיפקין בשרת, עלינו להוסיף כמה הערות למחלקת היישומים הראשית:

@SpringBootApplication @EnableZipkinServer המחלקה הציבורית ZipkinApplication {...}

ההערה החדשה @EnableZipkinServer יגדיר שרת זה להאזנה לטווחים נכנסים וישמש כמשק המשתמש שלנו לשאילתות.

2.3. תְצוּרָה

ראשית, בואו ניצור קובץ שנקרא bootstrap.properties ב src / main / resources. זכור שיש צורך בקובץ זה כדי להביא את התצורה שלנו משרת התצורה.

בואו נוסיף אליו את המאפיינים הבאים:

spring.cloud.config.name = zipkin spring.cloud.config.discovery.service-id = config spring.cloud.config.discovery.enabled = אמיתי spring.cloud.config.username = config משתמש spring.cloud.config.password = configPassword eureka.client.serviceUrl.defaultZone = // דיסק משתמש: [מוגן בדוא"ל]: 8082 / eureka /

עכשיו בואו נוסיף קובץ תצורה לרישום התצורה שלנו שנמצא בכתובת c: \ Users \ {username} \ ב- Windows או / home / {username} / על * ניקס.

בספרייה זו בואו להוסיף קובץ בשם zipkin. נכסים והוסף תכנים אלה:

spring.application.name = zipkin server.port = 9411 eureka.client.region = ברירת מחדל eureka.client.registryFetchIntervalSeconds = 5 logging.level.org.springframework.web = debug

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

2.4. לָרוּץ

עכשיו בוא נפעיל את היישום שלנו ונעבור אל // localhost: 9411. צריך לברך אותנו עם של זיפקין דף הבית:

גדול! כעת אנו מוכנים להוסיף כמה תלות ותצורה לשירותים שאנו רוצים להתחקות אחריהם.

3. תצורת שירות

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

3.1. להכין

כדי להתחיל לשלוח טווחים שלנו זיפקין שרת, נוסיף את התלות הזו שלנו pom.xml קוֹבֶץ:

 org.springframework.cloud spring-cloud-starter-zipkin 

לעיון: תוכלו למצוא את הגרסה האחרונה ב- מייבן סנטרל (אביב-ענן-התחל-זיפקין).

3.2. אביב קונפיג

עלינו להוסיף תצורה כלשהי כך שירות ספרים אשתמש יוריקה למצוא את שלנו זיפקין שֵׁרוּת. לִפְתוֹחַ BookServiceApplication.java והוסף קוד זה לקובץ:

@ EurekaClient פרטי eurowClient פרטי; @ אוטומטי פרטי SpanMetricReporter spanMetricReporter; @ ZipkinProperties פרטיים אוטומטיים zipkinProperties; @Value ("$ {spring.sleuth.web.skipPattern}") מחרוזת פרטית skipPattern; // ... השיטה העיקרית הולכת כאן @Bean הציבור ZipkinSpanReporter makeZipkinSpanReporter () {להחזיר ZipkinSpanReporter חדש () {נציג פרטי HttpZipkinSpanReporter; בסיס מחרוזת פרטי; @ דווח על ריק ריקות ציבורי (טווח טווח) {InstanceInfo instance = eurekaClient .getNextServerFromEureka ("zipkin", false); אם (! (baseUrl! = null && instance.getHomePageUrl (). שווה ל- (baseUrl))) {baseUrl = instance.getHomePageUrl (); נציג = HttpZipkinSpanReporter חדש (RestTemplate חדש (), baseUrl, zipkinProperties.getFlushInterval (), spanMetricReporter); אם (! span.name.matches (skipPattern)) delegate.report (span); }}}; }

התצורה לעיל רושמת מותאם אישית ZipkinSpanReporter שמקבל את כתובת האתר שלה מיוריקה. קוד זה גם עוקב אחר כתובת ה- URL הקיימת ומעדכן רק את ה- HttpZipkinSpanReporter אם כתובת האתר משתנה. בדרך זו לא משנה לאן נפרוס את שרת ה- Zipkin שלנו תמיד נוכל לאתר אותו מבלי להפעיל מחדש את השירות.

אנו גם מייבאים את מאפייני ברירת המחדל של Zipkin הנטענים באמצעות אתחול האביב ומשתמשים בהם לניהול הכתב המותאם אישית שלנו.

3.3. תְצוּרָה

עכשיו בואו להוסיף קצת תצורה שלנו book-service.properties קובץ במאגר התצורה:

spring.sleuth.sampler.percentage = 1.0 spring.sleuth.web.skipPattern = (^ ניקוי. *)

זיפקין עובד על ידי דגימת פעולות בשרת. על ידי הגדרת ה- spring.sleuth.sampler. אחוז ל 1.0, אנו מגדירים את קצב הדגימה ל 100%. דפוס הדלג הוא פשוט regex המשמש להוצאת טווחים ששמם תואם.

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

3.4. שירות דירוג

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

3.5. שירות שער

בצע את אותם השלבים שירות ספרים. אך כשמוסיפים את התצורה לשער.נכסים הוסף אלה במקום:

spring.sleuth.sampler.percentage = 1.0 spring.sleuth.web.skipPattern = (^ ניקוי. * |. + favicon. *)

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

3.6. לָרוּץ

אם עדיין לא עשית זאת, התחל את config, תַגלִית, כְּנִיסָה, סֵפֶר, דֵרוּג, ו זיפקין שירותים.

נווט אל // localhost: 8080 / book-service / books.

פתח כרטיסייה חדשה ונווט אל // localhost: 9411. בחר שירות ספרים ולחץ על כפתור 'מצא עקבות'. אתה אמור לראות עקבות בתוצאות החיפוש. לחץ על עקבות פתיחתו:

בדף העקיבה נוכל לראות את הבקשה לפי שירות. שני הטווחים הראשונים נוצרים על ידי כְּנִיסָה, והאחרון נוצר על ידי שירות ספרים. זה מראה לנו כמה זמן הבקשה השקיעה בעיבוד שירות ספרים, 18.379 אלפי שניות, וב- כְּנִיסָה, 87.961 אלפיות השנייה.

4. מסקנה

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

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

כמו תמיד תוכל למצוא את קוד המקור ב- Github.


$config[zx-auto] not found$config[zx-overlay] not found