ניטור אירוח עצמי ליישומי אתחול האביב

1. הקדמה

אחד המאפיינים הרבים והגדולים של Spring Boot הוא סט המפעילים המובנה. מפעילים אלה מספקים דרך קלה לניטור ולבקרה כמעט על כל היבט ביישום Spring Boot.

במדריך זה נבחן שימוש במפעיל המדדים ליצירת פתרון ניטור המתארח בעצמו עבור יישומי Spring Boot.

2. מאגר מדדים

החלק הראשון של ניטור יישומי Spring Boot הוא בחירת מסד נתונים של מדדים. כברירת מחדל, Spring Boot יגדיר רישום מדדי מיקרומטר בכל יישום.

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

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

שים לב שבכל פעם ש- Spring Boot מזהה מסד נתונים אחר של מדדים על מסלול הכיתה, הוא מבטל באופן אוטומטי את הרישום בזיכרון.

2.1. InfluxDB

InfluxDB הוא בסיס נתונים של קוד פתוח של קוד פתוח. הדרך המהירה ביותר להתחיל עם InfluxDB היא להריץ אותו באופן מקומי כמיכל Docker:

docker הפעל -p 8086: 8086 -v / tmp: / var / lib / influxdb influxdb

שים לב שהדבר יאחסן מדדים במקומי / tmp חֲלוּקָה. זה בסדר פיתוח ובדיקה, אך לא יהיה בחירה טובה עבור סביבות ייצור.

ברגע ש- InfluxDB פועל, אנו יכולים להגדיר את יישום Spring Boot שלנו לפרסום מדדים אליו על ידי הוספת התלות המתאימה למיקרומטר:

 io.micrometer מיקרומטר-רישום זרם 

בנוסף, עלינו להוסיף ערך חדש ל- application.properties קוֹבֶץ:

management.metrics.export.influx.uri = // localhost: 8086

מחוץ לקופסה, שם מסד הנתונים מוגדר ל mydbואילו שם המשתמש והסיסמה לא מוגדרים.

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

management.metrics.export.influx.db = customDbName management.metrics.export.influx.user-name = myUserName management.metrics.export.influx.password = mySecret

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

2.2. פרומתאוס

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

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

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

 io.micrometer micrometer-registry-prometheus 

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

לאחר מכן, עלינו להגדיר את פרומתאוס לסקר את היישום שלנו על ידי הוספת התצורה הרצויה ל- פרומתיאוס.ימל קוֹבֶץ.

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

scrape_configs: - job_name: 'spring-actuator' metrics_path: '/ actuator / prometheus' scrape_interval: 5s static_configs: - יעדים: ['127.0.0.1:8080']

לבסוף, אנו יכולים להפעיל שרת מקומי של פרומתאוס באמצעות Docker. זה מניח שקובץ התצורה המותאם אישית שלנו נמצא בקובץ המקומי /etc/prometheus/prometheus.yml:

הפעלת העגינה -d \ --name = prometheus \ -p 9090: 9090 \ -v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \ prom / prometheus \ --config.file = / etc / פרומתיאוס / פרומתיאוס.ימל

פרומתאוס מספק כלי הדמיה משלו לצפייה במדדים שנאספו. ניתן לגשת אליו בכתובת האתר // localhost: 9090 /.

2.3. גרָפִיט

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

רציף docker -d \ - שם גרפיט \ --restart = תמיד \ -p 80:80 \ -p 2003-2004: 2003-2004 \ -p 2023-2024: 2023-2024 \ -p 8125: 8125 / udp \ -p 8126: 8126 \ graphiteapp / graphite-statsd

אז נוכל להגדיר את Spring Boot כך שיפרסם מדדים למופע שלנו על ידי הוספת תלות מיקרומטר-רישום-גרפיט:

 io.micrometer מיקרומטר-רישום-גרפיט 

כמו גם הוספת מאפייני התצורה ל application.properties:

management.metrics.export.graphite.host = 127.0.0.1 management.metrics.export.graphite.port = 2004

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

3. כלים להדמיה

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

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

3.1. גרפנה

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

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

כדי להריץ את Grafana באופן מקומי, אנו יכולים להפעיל אותו באמצעות Docker:

docker run -d -p 3000: 3000 גרפנה / גרפנה

כעת אנו יכולים לגשת לדף הבית של גרפנה בכתובת האתר // localhost: 3000 /.

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

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

4. מסקנה

במאמר זה בדקנו יצירת פיתרון ניטור עצמי לאפליקציות Spring Boot.

בדקנו שלושה מאגרי נתונים של מדדים ש- Spring Boot תומכים בהם בקלות וראינו כיצד להפעיל אותם באופן מקומי.

הסתכלנו בקצרה על Grafana, כלי הדמיה רב עוצמה שיכול להציג נתוני מדדים ממגוון מקורות.


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