הפניה לפעולה ולהגדרה של Edge Microgateway

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

Edge Microgateway v. 2.4.x

סקירה כללית

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

ביצוע שינויים בהגדרות

קובצי התצורה שצריך להכיר כוללים:

  • קובץ ברירת המחדל של תצורת המערכת
  • קובץ תצורה ברירת מחדל למכונה של Edge Microgateway שאותחלה לאחרונה
  • קובץ תצורה דינמי למכונות פועלות

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

קובץ ברירת המחדל של תצורת המערכת

כשמתקינים את Edge Microgateway, קובץ ברירת המחדל של תצורת המערכת נמצא כאן:

[prefix]/lib/node_modules/edgemicro/config/default.yaml

כאשר [prefix] היא ספריית התחילית npm. למידע נוסף, ראו איפה מותקנת אפליקציית Edge Microgateway.

אם משנים את קובץ תצורת המערכת, צריך לאתחל מחדש, להגדיר מחדש ולהפעיל מחדש את Edge Microgateway:

  1. התקשרות אל edgemicro init
  2. התקשרות אל edgemicro configure [params]
  3. התקשרות אל edgemicro start [params]

קובץ תצורה המוגדר כברירת מחדל למכונות Edge Microgateway שאותחלו לאחרונה

כאשר מריצים את edgemicro init, קובץ תצורת המערכת (כפי שמתואר למעלה), default.yaml, ממוקם בספרייה הזו: ~/.edgemicro

אם משנים את קובץ התצורה בערך /.edgemicro, צריך להגדיר מחדש את Edge Microgateway ולהפעיל אותו מחדש:

  1. edgemicro stop
  2. edgemicro configure [params]
  3. edgemicro start [params]

קובץ תצורה דינמי למכונות פועלות

כשמפעילים את edgemicro configure [params], נוצר קובץ תצורה דינמי ב- ~/.edgemicro. שם הקובץ תואם לדפוס הבא: [org]-[env]-config.yaml, כאשר org ו-env הם שמות הארגון והסביבות שלך ב-Apigee Edge. אפשר להשתמש בקובץ הזה כדי לבצע שינויים בהגדרות ואז לטעון אותו מחדש ללא זמן השבתה. לדוגמה, אם מוסיפים ומגדירים פלאגין, אפשר לטעון מחדש את התצורה בלי לצבור זמן השבתה, כפי שמוסבר בהמשך.

אם Edge Microgateway פועל (האפשרות של אפס זמן השבתה):

  1. טוענים מחדש את הגדרות Edge Microgateway:
    edgemicro reload -o [org] -e [env] -k [key] -s [secret]
    

    כאשר:

    • org זהו שם הארגון שלך ב-Edge (עליך להיות מנהל מערכת ארגוני).
    • env הוא סביבה בארגון שלכם (למשל test או prod).
    • key הוא המפתח שהוחזר קודם לכן על ידי פקודת ההגדרה.
    • secret הוא המפתח שהוחזר קודם לכן על ידי פקודת התצורה.

    דוגמה

    edgemicro reload -o docs -e test -k 701e70ee718ce6dc188016b3c39177d64a88754d615c74e1f78b6181d000723 -s 05c14356e42ed136b8dd35cf8a18531ff52d7299134677e30ef4e34ab0cc824
    

אם Edge Microgateway נעצר:

  1. מפעילים מחדש את Edge Microgateway:
    edgemicro start -o [org] -e [env] -k [key] -s [secret]
    

    כאשר:

    • org זהו שם הארגון שלך ב-Edge (עליך להיות מנהל מערכת ארגוני).
    • env הוא סביבה בארגון שלכם (למשל test או prod).
    • key הוא המפתח שהוחזר קודם לכן על ידי פקודת ההגדרה.
    • secret הוא המפתח שהוחזר קודם לכן על ידי פקודת התצורה.

    דוגמה

    edgemicro start -o docs -e test -k 701e70ee718ce6dc188016b3c39177d64a88754d615c74e1f78b6181d000723 -s 05c14356e42ed136b8dd35cf8a18531ff52d7299134677e30ef4e34ab0cc824
    

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

edge_config:
  bootstrap: >-
    https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/docs/environment/test
  jwt_public_key: 'https://docs-test.apigee.net/edgemicro-auth/publicKey'
  managementUri: 'https://api.enterprise.apigee.com'
  vaultName: microgateway
  authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
  baseUri: >-
    https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
  bootstrapMessage: Please copy the following property to the edge micro agent config
  keySecretMessage: The following credentials are required to start edge micro
  products: 'https://docs-test.apigee.net/edgemicro-auth/products'
edgemicro:
  port: 8000
  max_connections: 1000
  max_connections_hard: 5000
  config_change_poll_interval: 600
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24
  plugins:
    sequence:
      - oauth
headers:
  x-forwarded-for: true
  x-forwarded-host: true
  x-request-id: true
  x-response-time: true
  via: true
oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  verify_api_key_url: 'https://docs-test.apigee.net/edgemicro-auth/verifyApiKey'
analytics:
  uri: >-
    https://edgemicroservices-us-east-1.apigee.net/edgemicro/axpublisher/organization/docs/environment/test

הגדרת משתני סביבה

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

  • EDGEMICRO_ORG
  • EDGEMICRO_ENV
  • EDGEMICRO_KEY
  • EDGEMICRO_SECRET

ההגדרה של המשתנים האלה היא אופציונלית. אם מגדירים אותן, אין צורך לציין את הערכים שלהן כשמשתמשים בממשק Command-Line Interface (CLI) כדי להגדיר ולהפעיל את Edge Microgateway.

הגדרת SSL בשרת Edge Microgateway

באפשרותך להגדיר את שרת ה-Microgateway להשתמש ב-SSL. לדוגמה, עם הגדרת SSL, תוכלו להפעיל ממשקי API דרך Edge Microgateway באמצעות הפרוטוקול "https", באופן הבא:

https://localhost:8000/myapi

כדי להגדיר SSL בשרת Microgateway, בצע את השלבים הבאים:

  1. תוכלו ליצור או לקבל אישור ומפתח SSL באמצעות כלי השירות openssl או בשיטה הרצויה לכם.
  2. מוסיפים את המאפיין edgemicro:ssl לקובץ התצורה של Edge Microgateway. לקבלת רשימה מלאה של האפשרויות, עיין בטבלה הבאה. לפרטים על שינוי ההגדרות של Edge Microgateway, ראו ביצוע שינויים בהגדרות. לדוגמה:
     edgemicro:
         ssl:
             key: <absolute path to the SSL key file>
             cert: <absolute path to the SSL cert file>
             passphrase: admin123 #option added in v2.2.2
             rejectUnauthorized: true #option added in v2.2.2
             requestCert: true 
    
  3. מפעילים מחדש את Edge Microgateway. מבצעים את השלבים המפורטים בקטע ביצוע שינויים בהגדרות בהתאם לקובץ התצורה שערכתם: קובץ ברירת המחדל או קובץ התצורה של זמן הריצה.

דוגמה למקטע edgemicro בקובץ התצורה, שבו מוגדר SSL:

edgemicro:
  port: 8000
  max_connections: 1000
  max_connections_hard: 5000
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24
  plugins:
    sequence:
      - oauth
  ssl:
    key: /MyHome/SSL/em-ssl-keys/server.key
    cert: /MyHome/SSL/em-ssl-keys/server.crt
    passphrase: admin123 #option added in v2.2.2
    rejectUnauthorized: true #option added in v2.2.2

רשימה של כל אפשרויות השרתים הנתמכים:

אפשרות התיאור
key נתיב לקובץ ca.key (בפורמט PEM).
cert נתיב לקובץ ca.cert (בפורמט PEM).
pfx נתיב לקובץ pfx שמכיל את המפתח הפרטי, האישור ואישורי ה-CA של הלקוח בפורמט PFX.
passphrase מחרוזת שמכילה את ביטוי הסיסמה למפתח הפרטי או ל-PFX.
ca נתיב לקובץ שמכיל רשימה של אישורים מהימנים בפורמט PEM.
ciphers מחרוזת שמתארת את הצפנים שצריך להשתמש בהם, מופרדים באמצעות ":".
rejectUnauthorized אם הערך הוא True, אישור השרת מאומת מול הרשימה של רשויות האישורים שסופקו. אם האימות ייכשל, תוחזר שגיאה.
secureProtocol שיטת ה-SSL שבה יש להשתמש. לדוגמה, שיטת SSLv3_method כדי לכפות את השימוש ב-SSL בגרסה 3.
servername שם השרת לתוסף TLS SNI (Server Name Indication).
requestCert True עבור SSL דו-כיווני; False עבור SSL חד-כיווני

שימוש באפשרויות SSL/TLS של לקוח

אפשר להגדיר את Edge Microgateway כך שיהיה לקוח TLS או SSL במהלך התחברות לנקודות קצה (endpoint) של יעד. בקובץ התצורה של Microgateway, משתמשים ברכיב היעדים כדי להגדיר אפשרויות של SSL או TLS.

בדוגמה הבאה מופיעות הגדרות שיחולו על כל המארחים:

targets:
   ssl:
     client:
       key: /Users/jdoe/nodecellar/twowayssl/ssl/client.key
       cert: /Users/jdoe/nodecellar/twowayssl/ssl/ca.crt
       passphrase: admin123
       rejectUnauthorized: true

בדוגמה הזו, ההגדרות חלות רק על המארח שצוין:

targets:
   host: 'myserver.example.com'
   ssl:
     client:
       key: /Users/myname/twowayssl/ssl/client.key
       cert: /Users/myname/twowayssl/ssl/ca.crt
       passphrase: admin123
       rejectUnauthorized: true

הנה דוגמה ל-TLS:

targets:
   host: 'myserver.example.com'
   tls:
     client:
       pfx: /Users/myname/twowayssl/ssl/client.pfx
       passphrase: admin123
       rejectUnauthorized: true

רשימה של כל אפשרויות הלקוח הנתמכות:

אפשרות התיאור
pfx נתיב לקובץ pfx שמכיל את המפתח הפרטי, האישור ואישורי ה-CA של הלקוח בפורמט PFX.
key נתיב לקובץ ca.key (בפורמט PEM).
passphrase מחרוזת שמכילה את ביטוי הסיסמה למפתח הפרטי או ל-PFX.
cert נתיב לקובץ ca.cert (בפורמט PEM).
ca נתיב לקובץ שמכיל רשימה של אישורים מהימנים בפורמט PEM.
ciphers מחרוזת שמתארת את הצפנים שצריך להשתמש בהם, מופרדים באמצעות ":".
rejectUnauthorized אם הערך הוא True, אישור השרת מאומת מול הרשימה של רשויות האישורים שסופקו. אם האימות ייכשל, תוחזר שגיאה.
secureProtocol שיטת ה-SSL שבה יש להשתמש. לדוגמה, שיטת SSLv3_method כדי לכפות את השימוש ב-SSL בגרסה 3.
servername שם השרת לתוסף TLS SNI (Server Name Indication).

התאמה אישית של שרת proxy לאימות קצה

כברירת מחדל, Edge Microgateway משתמש בשרת proxy שנפרס ב-Apigee Edge לאימות OAuth2. שרת ה-proxy הזה נפרס כשמריצים את edgemicro configure בפעם הראשונה. אפשר לשנות את הגדרת ברירת המחדל של שרת ה-proxy הזה כדי להוסיף תמיכה בהצהרות בהתאמה אישית לאסימון אינטרנט של JSON (JWT), להגדיר תפוגת תוקף של אסימון וליצור אסימוני רענון. מידע נוסף מופיע בדף edgemicro-auth ב-GitHub.

שימוש בשירות אימות מותאם אישית

כברירת מחדל, Edge Microgateway משתמש בשרת proxy שנפרס ב-Apigee Edge לאימות OAuth2. שרת ה-proxy הזה נפרס כשמריצים את edgemicro configure בפעם הראשונה. כברירת מחדל, כתובת ה-URL של שרת ה-proxy הזה מצוינת בקובץ התצורה של Edge Microgateway באופן הבא:

authUri: https://myorg-myenv.apigee.net/edgemicro-auth

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

ניהול קובצי יומן

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

איפה נשמרים קובצי יומן

כברירת מחדל, קובצי יומן נשמרים בתיקייה /var/tmp.

איך משנים את ספריית ברירת המחדל של קובצי היומן

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

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

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

שליחת יומנים למסוף

אפשר להגדיר רישום ביומן כך שפרטי היומן יישלחו כפלט רגיל במקום לקובץ יומן. מגדירים את הדגל to_console כ-true באופן הבא:

edgemicro:
  logging:
    to_console: true  

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

איך להגדיר את רמת הרישום ביומן

אפשר להגדיר את רמות היומן הבאות: מידע, אזהרה ושגיאה. מומלץ להשתמש ברמת המידע. היא מתעדת את כל הבקשות והתגובות של ה-API, וזו ברירת המחדל.

איך משנים את המרווחים ביומן

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

המאפיינים שניתן להגדיר הם:

  • stats_log_interval: (ברירת מחדל: 60) מרווח בשניות, כאשר רשומת הנתונים הסטטיסטיים נכתבת בקובץ היומן של ה-API.
  • rotate_interval: (ברירת מחדל: 24) מרווח, בשעות, כשמתבצעת רוטציה של קובצי יומן. לדוגמה:
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

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

שיטות מומלצות לתחזוקה של קובצי יומן

מכיוון שהנתונים של קובצי היומן מצטברים עם הזמן, ההמלצה של Apigee היא ליישם את השיטות הבאות:

  • קובצי היומן יכולים להיות גדולים למדי, לכן חשוב לוודא שיש מספיק מקום בספריית קובצי היומן. כדאי לעיין בקטעים הבאים, היכן נשמרים קובצי יומן ואיך משנים את ספריית ברירת המחדל של קובצי היומן.
  • עליך למחוק או להעביר קובצי יומן לספריית ארכיון נפרדת לפחות פעם בשבוע.
  • אם המדיניות שלכם היא למחוק יומנים, תוכלו להשתמש בפקודת ה-CLI edgemicro log -c כדי להסיר (לנקות) יומנים ישנים יותר.

מוסכמת מתן שמות לקובצי יומן

כל מופע של Edge Microgateway מייצר שלושה סוגים של קובצי יומן:

  • api – התיעוד של כל הבקשות והתגובות הזורמות דרך Edge Microgateway. בקובץ הזה מתועדים גם מוני API (נתונים סטטיסטיים) ושגיאות.
  • err - מתבצע תיעוד של כל מה שנשלח אל stderr.
  • out - מתעד כל מה שנשלח אל stdout.

זוהי המוסכמה למתן שמות:

edgemicro-<Host Name>-<Instance ID>-<Log Type>.log

לדוגמה:

edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log
edgemicro-mymachine-local-MTQzNTg1NDMODAyMQ-err.log
edgemicro-mymachine-local-mtqzntgndmxodaymq-out.log

מידע על התוכן של קובצי יומן

נוסף בגרסה 2.3.3

כברירת מחדל, שירות הרישום ביומן משמט את קובץ ה-JSON של שרתי proxy שהורדת, מוצרים, ואת JSON Web Token (JWT). כדי לייצא את האובייקטים האלה לקובצי היומן, צריך להגדיר את הערך DEBUG=* כשמפעילים את Edge Microgateway. לדוגמה:

DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456

הערה: ב-Windows, להשתמש ב-SET DEBUG=*

תוכן קובץ היומן "api"

קובץ היומן 'api' מכיל מידע מפורט על זרימת הבקשות והתגובות דרך Edge Microgateway. קובצי היומן של "api" נקראים כך:

edgemicro-mymachine-local-MTQzNjIxOTk0NzY0Nw-api.log

עבור כל בקשה שנשלחת אל Edge Microgateway, מתועדים ארבעה אירועים בקובץ היומן "api":

  • בקשה נכנסת מהלקוח
  • נשלחה בקשה יוצאת אל היעד
  • תגובה נכנסת מהיעד
  • תגובה יוצאת ללקוח

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

(1) 1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
(2) 1436403888665 info treq m=GET, u=/, h=127.0.0.18080, i=0
(3) 1436403888672 info tres s=200, d=7, i=0
(4) 1436403888676 info res s=200, d=11, i=0

נבחן אותם אחד אחרי השני:

1. דוגמה של בקשה נכנסת מלקוח:

1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
  • 1436403888651 – חותמת תאריך של Unix
  • info – תלוי בהקשר. הערך יכול להיות מידע, אזהרה או שגיאה, בהתאם לרמת היומן. הנתונים יכולים להיות נתונים סטטיסטיים לרשומת נתונים סטטיסטיים, להזהיר כשיש אזהרות או שגיאה לגבי שגיאות.
  • req – מזהה את האירוע. במקרה כזה, צריך לשלוח בקשה מהלקוח.
  • m - פועל ה-HTTP שבו נעשה שימוש בבקשה.
  • u - החלק בכתובת ה-URL שמופיע אחרי נתיב הבסיס.
  • h – מספר המארח והיציאה שאליהם מאזין Edge Microgateway.
  • r - המארח והיציאה המרוחקים שמהם הגיעה בקשת הלקוח.
  • i - מזהה הבקשה. המזהה יופיע בכל ארבע הרשומות של האירועים. לכל בקשה מוקצה מזהה בקשה ייחודי. יצירת הקשר בין רשומות היומן לפי מזהה הבקשה יכולה לספק תובנות חשובות לגבי זמן האחזור של היעד.
  • d - משך הזמן באלפיות השנייה מאז שהבקשה התקבלה על ידי Edge Microgateway. בדוגמה שלמעלה, תגובת היעד לבקשה 0 התקבלה אחרי 7 אלפיות השנייה (שורה 3), והתגובה נשלחה ללקוח אחרי 4 אלפיות שנייה נוספות (שורה 4). במילים אחרות, זמן האחזור הכולל של הבקשה היה 11 אלפיות השנייה, שמתוכם 7 אלפיות השנייה בוצעו על ידי היעד ו-4 אלפיות השנייה על ידי Edge Microgateway עצמו.

2. דוגמה של בקשה יוצאת אל היעד:

1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
  • 1436403888651 – חותמת תאריך של Unix
  • info – תלוי בהקשר. הערך יכול להיות מידע, אזהרה או שגיאה, בהתאם לרמת היומן. הנתונים יכולים להיות נתונים סטטיסטיים לרשומת נתונים סטטיסטיים, להזהיר כשיש אזהרות או שגיאה לגבי שגיאות.
  • treq – זיהוי האירוע. במקרה הזה, בקשת יעד.
  • m - פועל ה-HTTP שבו נעשה שימוש בבקשת היעד.
  • u - החלק בכתובת ה-URL שמופיע אחרי נתיב הבסיס.
  • h - מספר המארח והיציאה של יעד הקצה העורפי.
  • i - המזהה של הרשומה ביומן. המזהה יופיע בכל ארבע הרשומות של האירועים.

3. דגימה של התשובות הנכנסות מהיעד

1436403888672 info tres s=200, d=7, i=0

1436403888651 – חותמת תאריך של Unix

  • info – תלוי בהקשר. הערך יכול להיות מידע, אזהרה או שגיאה, בהתאם לרמת היומן. הנתונים יכולים להיות נתונים סטטיסטיים לרשומת נתונים סטטיסטיים, להזהיר כשיש אזהרות או שגיאה לגבי שגיאות.
  • tres – מזהה את האירוע. במקרה הזה, יעד התגובה.
  • s - הסטטוס של תגובת HTTP.
  • d - משך הזמן באלפיות השנייה. הזמן שנדרש להפעלת ה-API על ידי היעד.
  • i - המזהה של הרשומה ביומן. המזהה יופיע בכל ארבע הרשומות של האירועים.

4. דוגמה לתשובה יוצאת ללקוח

1436403888676 info res s=200, d=11, i=0

1436403888651 – חותמת תאריך של Unix

  • info – תלוי בהקשר. הערך יכול להיות מידע, אזהרה או שגיאה, בהתאם לרמת היומן. הנתונים יכולים להיות נתונים סטטיסטיים לרשומת נתונים סטטיסטיים, להזהיר כשיש אזהרות או שגיאה לגבי שגיאות.
  • res – זיהוי האירוע. במקרה הזה, תגובה ללקוח.
  • s - הסטטוס של תגובת HTTP.
  • d - משך הזמן באלפיות השנייה. זהו הזמן הכולל שנדרש לקריאה ל-API, כולל הזמן שנדרש ל-API לטירגוט והזמן שנדרש ל-Edge Microgateway עצמו.
  • i - המזהה של הרשומה ביומן. המזהה יופיע בכל ארבע הרשומות של האירועים.

תזמון קובץ היומן

מתבצעת רוטציה של קובצי יומן במרווח הזמן שצוין באמצעות מאפיין ההגדרה rotate_interval. המערכת תמשיך להוסיף ערכים לאותו קובץ יומן עד שיסתיים פרק הזמן לסבב. עם זאת, בכל הפעלה מחדש של Edge Microgateway, המכשיר מקבל UID חדש ויוצר קבוצה חדשה של קובצי יומן עם ה-UID הזה. כדאי לעיין גם במאמר שיטות עבודה מומלצות לתחזוקה של קובצי יומן.

הסבר על הגדרות קצה של Microgateway

המיקום של קובץ התצורה

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

מאפייני edge_config

ההגדרות האלה משמשות להגדרת האינטראקציה בין מכונת Edge Microgateway לבין Apigee Edge.

  • bootrap (ברירת מחדל: ללא) כתובת URL שמפנה לשירות ספציפי של Edge Microgateway שפועל ב-Apigee Edge. Edge Microgateway משתמש בשירות הזה כדי לתקשר עם Apigee Edge. כתובת ה-URL הזו מוחזרת כשמריצים את הפקודה ליצירת זוג מפתחות ציבורי/פרטי: edgemicro genkeys. לפרטים נוספים עיינו בהגדרה והגדרה של Edge Microgateway.
  • jwt_public_key: (ברירת מחדל: אין) כתובת URL שמפנה לשרת ה-proxy של Edge Microgateway שנפרס ב-Apigee Edge. שרת ה-proxy הזה משמש כנקודת קצה לאימות לצורך הנפקת אסימוני גישה חתומים ללקוחות. כתובת ה-URL הזו מוחזרת כשמריצים את הפקודה לפריסת שרת ה-Proxy: edgemicro configuration. לפרטים נוספים עיינו בהגדרה והגדרה של Edge Microgateway.

מאפייני Edgemicro

ההגדרות האלה מגדירות את תהליך המיקרו-שער של Edge.

  • port: (ברירת מחדל: 8000) מספר היציאה שאליו מאזין התהליך של Edge Microgateway.
  • max_connections: (ברירת מחדל: -1) מציין את המספר המקסימלי של חיבורים נכנסים בו-זמנית ש-Edge Microgateway יכול לקבל. במקרה של חריגה מהמספר הזה, מוחזר הסטטוס הבא:

    res.statusCode = 429; // Too many requests
  • max_connections_hard: (ברירת מחדל: -1) המספר המקסימלי של בקשות בו-זמנית ש-Edge Microgateway יכול לקבל לפני כיבוי החיבור. ההגדרה הזו נועדה למנוע התקפות של מניעת שירות (DoS). בדרך כלל, מגדירים אותו למספר גדול מ-max_ ביחדs.
  • רישום ביומן:
    • level: (ברירת מחדל: שגיאה)
      • info – התיעוד של כל הבקשות והתגובות הזורמות דרך מכונת Edge Microgateway.
      • warn – רישום של הודעות אזהרה בלבד.
      • error – מתעדת הודעות שגיאה בלבד.
    • dir: (ברירת מחדל: /var/tmp) הספרייה שבה מאוחסנים קובצי היומן.
    • stats_log_interval: (ברירת מחדל: 60) מרווח בשניות, כאשר רשומת הנתונים הסטטיסטיים נכתבת בקובץ היומן של ה-API.
    • rotate_interval: (ברירת מחדל: 24) מרווח, בשעות, כשמתבצעת רוטציה של קובצי יומן.
  • dir: נתיב יחסי מספריית ./gateway לספרייה ./Plugins או מנתיב מוחלט.
  • sequence: רשימה של מודולים של פלאגין להוספה למכונה של Edge Microgateway. המודולים יפעלו לפי הסדר שבו הם מצוינים כאן.
  • ניפוי באגים: הוספת ניפוי באגים מרחוק לתהליך Microgateway של Edge.
    • port: מספר היציאה שצריך להאזין לו. לדוגמה, צריך להגדיר את הכלי לניפוי באגים בסביבת הפיתוח המשולבת (IDE) כך שיאזין ביציאה הזו.
    • args: ארגומנטים לתהליך ניפוי הבאגים. לדוגמה: args --nolazy
  • config_change_poll_interval: (ברירת מחדל: 600 שניות) Edge Microgateway טוען תצורה חדשה מדי פעם ומבצע טעינה מחדש אם משהו השתנה. הסקר מאפשר לזהות את כל השינויים שבוצעו ב-Edge (שינויים במוצרים, שרתי proxy שתומכים ב-microgateway וכו') וגם את השינויים שבוצעו בקובץ התצורה המקומי.
  • disable_config_poll_interval: (ברירת מחדל: false) מגדירים את הערך true כדי לכבות את תשאול שינוי אוטומטי.
  • request_timeout: הגדרה של זמן קצוב לתפוגה עבור בקשות ליעד. הזמן הקצוב לתפוגה מוגדר בשניות. אם הזמן הקצוב פג, Edge Microgateway מגיב עם קוד סטטוס 504. (נוסף v2.4.x)

מאפייני כותרות

ההגדרות האלה קובעות את אופן הטיפול בכותרות HTTP מסוימות.

  • x-forwarded-for: (ברירת מחדל: true) יש להגדיר את הערך false כדי למנוע העברה של כותרות מסוג x-forwarded-for ליעד. הערה: אם הבקשה מכילה כותרת x-forwarded-for, הערך שלה יוגדר לערך client-ip ב-Edge Analytics.
  • x-forwarded-host: (ברירת מחדל: true) מגדירים את הערך false כדי למנוע העברה של כותרות x-forwarded-host ליעד.
  • x-request-id: (ברירת מחדל: true) להגדיר את הערך false כדי למנוע העברה של כותרות מסוג x-request-id ליעד.
  • x-response-time: (ברירת מחדל: true) מגדירים את הערך false כדי למנוע העברה של כותרות מסוג x-response-time ליעד.
  • via: (ברירת מחדל: true) להגדיר את הערך false כדי למנוע העברה של כותרות דרך ליעד.

מאפייני oauth

ההגדרות האלה קובעות את האופן שבו אימות הלקוח נאכף על ידי Edge Microgateway.

  • allowNoAuthorization: (ברירת מחדל: false) אם היא מוגדרת כ-True, קריאות ל-API יכולות לעבור דרך Edge Microgateway בלי בכלל כותרת Authorization. מגדירים את הערך כ-False כדי לדרוש כותרת הרשאה (ברירת מחדל).
  • allowInvalidAuthorization: (ברירת מחדל: false) אם היא מוגדרת כ-True, קריאות ל-API מורשות להעביר אם האסימון שהועבר בכותרת Authorization לא תקין או שתוקפו פג. אם מגדירים את הערך הזה כ-FALSE כדי לדרוש אסימונים תקפים (ברירת מחדל).
  • authorization-header: (ברירת המחדל: Authorization: Bearer) הכותרת המשמשת לשליחת אסימון הגישה אל Edge Microgateway. כדאי לשנות את ברירת המחדל במקרים שבהם היעד צריך להשתמש בכותרת Authorization למטרה אחרת.
  • api-key-header: (ברירת מחדל: x-api-key) שם הכותרת או פרמטר השאילתה שמשמש להעברת מפתח API אל Edge Microgateway. למידע נוסף, ראו שימוש במפתח API.
  • keepAuthHeader (ברירת מחדל: false) אם היא מוגדרת כ-True, כותרת ההרשאה שנשלחת בבקשה מועברת ליעד (היא נשמרת).
  • allowOAuthOnly – אם המדיניות מוגדרת כ-True, לכל ממשק API חייבת להיות כותרת Authorization עם אסימון גישה למוכ"ז. מאפשרת לאשר רק את מודל האבטחה של OAuth (תוך שמירה על תאימות לאחור). (נוסף 4.2.x)
  • allowAPIKeyOnly -- אם היא מוגדרת כ-True, לכל ממשק API חייבת להיות כותרת x-api-key (או מיקום מותאם אישית) עם מפתח API.מאפשרת להתיר רק את מודל האבטחה של מפתח ה-API (תוך שמירה על תאימות לאחור). (נוסף 4.2.x)

מאפיינים ספציפיים לפלאגין

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

סינון שרתי proxy

אפשר לסנן אילו שרתי proxy בעלי מודעות ל-microgateway יעבד מכונת Edge Microgateway. כש-Edge Microgateway מופעל, הוא מוריד את כל שרתי ה-proxy המותאמים ל-Microgateway בארגון שאליו הוא משויך. ניתן להשתמש בתצורה הבאה כדי להגביל את שרתי ה-proxy שהמיקרו-שער יעבד. לדוגמה, ההגדרה הזו מגבילה את שרתי ה-proxy שהמיקרו-שער יעבד לשלושה: edgemicro_proxy-1, edgemicro_proxy-2 ו-edgemicro_proxy-3:

proxies:
  - edgemicro_proxy-1
  - edgemicro_proxy-2
  - edgemicro_proxy-3

אנונימיזציה של נתוני ניתוח

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

analytics:
  mask_request_uri: 'string_to_mask'
  mask_request_path: 'string_to_mask'

הגדרה של Edge Microgateway מאחורי חומת אש של החברה

גרסה 4.2.x נתמכת

אם Edge Microgateway מותקן מאחורי חומת אש, יכול להיות שהשער לא יוכל לתקשר עם Apigee Edge. במקרה כזה, יש שתי אפשרויות:

אפשרות 1:

האפשרות הראשונה היא להגדיר את האפשרות edgemicro: proxy_tunnel כ-true בקובץ התצורה של ה-microgateway:

edge_config:

    proxy: http://10.224.16.85:3128
    proxy_tunnel: true

כשהערך של proxy_tunnel הוא true, Edge Microgateway משתמש בשיטת HTTP CONNECT כדי לנהל בקשות HTTP בחיבור TCP יחיד. (אותו הדבר נכון אם משתני הסביבה להגדרת שרת ה-proxy מופעלים באמצעות TLS).

אפשרות 2:

האפשרות השנייה היא לציין שרת proxy ולהגדיר את proxy_tunnel כ-FALSE בקובץ התצורה של ה-microgateway. לדוגמה:

edge_config:
     proxy: http://10.224.16.85:3128
     proxy_tunnel: false

במקרה כזה, תוכלו להגדיר את המשתנים הבאים כדי לשלוט במארחים לכל שרת proxy של HTTP שבו אתם רוצים להשתמש, או אילו מארחים לא יוכלו לטפל בשרתי Proxy של Edge Microgateway: HTTP_PROXY, HTTPS_PROXY ו-NO_PROXY.

ניתן להגדיר את NO_PROXY כרשימה מופרדת בפסיקים של דומיינים שאליהם Microgateway לא אמור לשמש כשרת proxy. לדוגמה:

export NO_PROXY='localhost,localhost:8080'

מגדירים את HTTP_PROXY ואת HTTPS_PROXY לנקודת הקצה של שרת ה-HTTP Proxy Microgateway יכול לשלוח הודעות. לדוגמה:

export HTTP_PROXY='http://localhost:3786'

export HTTPS_PROXY='https://localhost:3786'

מידע נוסף על המשתנים האלה זמין במאמרים הבאים:

https://www.npmjs.com/package/request#controlling-proxy-behaviour-using-environment-variables


כדאי לעיין גם בפרטים הבאים

איך להגדיר את Edge Microgateway מאחורי חומת אש של חברה בקהילת Apigee.

שימוש בתווים כלליים לחיפוש בשרתי proxy של Microgateway

אפשר להשתמש בתו כללי לחיפוש "*" אחד או יותר בנתיב הבסיס של שרת proxy ל-edgemicro_* (Microgateway-aware). לדוגמה, נתיב בסיסי של /team/*/members מאפשר ללקוחות לקרוא ל-https://[host]/team/blue/members ול-https://[host]/team/green/members ללא צורך ליצור שרתי proxy חדשים של API כדי לתמוך בצוותים חדשים. לתשומת ליבך, /**/ לא נתמך.

חשוב: ב-Apigee אין תמיכה בשימוש בתו כללי לחיפוש "*" בתור הרכיב הראשון של נתיב בסיסי. לדוגמה, ערך זה אינו נתמך: חיפוש /*/.


ניפוי באגים ופתרון בעיות

התחברות לכלי לניפוי באגים

אפשר להריץ את Edge Microgateway באמצעות כלי לניפוי באגים, למשל node-inspector. הפעולה הזו שימושית לפתרון בעיות ולניפוי באגים ביישומי פלאגין מותאמים אישית.

  1. מפעילים מחדש את Edge Microgateway במצב ניפוי באגים. כדי לעשות את זה, צריך להוסיף את DEBUG=* לתחילת פקודת ההתחלה. לדוגמה:

    DEBUG=* edgemicro start -o myorg -e test -k db4e9e8a95aa7fabfdeacbb1169d0a8cbe42bec19c6b98129e02 -s 6e56af7c1b26dfe93dae78a735c8afc9796b077d105ae5618ce7ed

    הערה: ב-Windows, להשתמש ב-SET DEBUG=*

  2. מפעילים את הכלי לניפוי באגים ומגדירים לו האזנה למספר היציאה לתהליך ניפוי הבאגים.
  3. עכשיו אפשר להתקדם בקוד Edge Microgateway, להגדיר נקודות עצירה, להציג ביטויי צפייה ועוד.

ניתן לציין דגלי Node.js רגילים שקשורים למצב ניפוי באגים. לדוגמה, התג --nolazy עוזר לנפות באגים בקוד אסינכרוני.

קובצי היומן בבדיקה

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

שימוש באבטחת מפתחות API

מפתחות API מספקים מנגנון פשוט לאימות לקוחות ששולחים בקשות אל Edge Microgateway. אפשר לקבל מפתח API על ידי העתקת הערך של מפתח הצרכן (שנקרא גם Client ID) ממוצר של Apigee Edge שכולל את שרת ה-proxy לאימות של Edge Microgateway.

שמירה של מפתחות במטמון

מפתחות ה-API מועברים באסימונים למוכ"ז, והם נשמרים במטמון. אפשר להשבית את השמירה במטמון על ידי הגדרת הכותרת Cache-Control: no-cache בבקשות נכנסות ל-Edge Microgateway.

שימוש באבטחת אסימון OAuth2

לפרטים על השימוש באסימון OAuth עם בקשות לשרת proxy, אפשר לעיין במאמר Secure Edge Microgateway.

שימוש במפתח API

לפרטים נוספים על השימוש במפתחות API עם בקשות לשרת proxy, אפשר לעיין במאמר Secure Edge Microgateway.

הגדרת השם של מפתח ה-API

כברירת מחדל, x-api-key הוא השם המשמש לכותרת של מפתח ה-API או לפרמטר השאילתה. ניתן לשנות את ברירת המחדל הזו בקובץ התצורה, כפי שמוסבר בקטע ביצוע שינויים בהגדרות. לדוגמה, כדי לשנות את השם ל-apiKey:

oauth:
 allowNoAuthorization: false
 allowInvalidAuthorization: false
 api-key-header: apiKey