איך לעקוב

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

סקירה כללית

Edge תומך בכמה דרכים לקבלת פרטים על שירותים, וכן לבדיקת שלהם סטטוסים. בטבלה הבאה מפורטים סוגי הבדיקות שאפשר לבצע בכל מכשיר כשיר service:

Mgmt API
שירות שימוש בזיכרון [JMX*] בדיקת שירות סטטוס משתמש/ארגון/ פריסה axstatus בדיקה של מסדי נתונים סטטוס של apigee-service apigee-monit**
שרת ניהול
מעבד בקשות
Postgres
Qpid
נתב
מידע נוסף מידע נוסף מידע נוסף מידע נוסף מידע נוסף מידע נוסף מידע נוסף

* לפני שתוכלו להשתמש ב-JMX, עליכם להפעיל אותו, כמו שמתואר במאמר הפעלת JMX.

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

יציאות לניטור של JMX ו-Management API

כל רכיב תומך בקריאות מעקב של JMX ו-Management API ביציאות שונות. הטבלה הבאה מפרטת את היציאות של JMX ו-Management API לכל סוג שרת:

רכיב יציאת JMX יציאת ממשק ה-API לניהול
שרת ניהול 1099 8080
נתב 1100 8081
מעבד בקשות 1101 8082
Qpid 1102 8083
Postgres 1103 8084

שימוש ב-JMX כדי לעקוב

תהליכי המעקב עבור שרת הניהול, מעבד ההודעות, Qpid ו-Postgres משתמשים ב-JMX. עם זאת, JMX מופעל כברירת מחדל רק עבור Cassandra ומושבת כברירת מחדל אצל כל מרכיבי Edge אחרים. לכן צריך להפעיל JMX בנפרד לכל רכיב לפני יכולים לעקוב אחריהם.

אימות JMX לא מופעל כברירת מחדל. ניתן להפעיל אימות JMX עבור כל רכיבים. לגבי Cassandra, צריך לפעול לפי ההוראות ש- הפעלת אימות JMX ל-Cassandra.

הפעלת JMX

JMX מופעל כברירת מחדל רק עבור Cassandra, ומושבת כברירת מחדל בכל שאר מכשירי Edge רכיבים. חלק זה מתאר כיצד להפעיל JMX עבור רכיבי Edge אחרים.

כדי להפעיל JMX:

  1. עורכים את קובץ התצורה של הרכיב. המיקום של הקובץ הזה הוא opt/apigee/edge-component_name/bin/start בסביבת ייצור בסביבות שונות, קובצי התצורה האלה יהיו במכונות שונות.

    בוחרים מבין מיקומי הקבצים הבאים בכל שרת:

    • שרת ניהול: /opt/apigee/edge-management-server/bin/start
    • מעבד הודעות: /opt/apigee/edge-message-processor/bin/start
    • הודעות אימייל שנשלחו: /opt/apigee/edge-postgres-server/bin/start
    • Qpid: /opt/apigee/edge-qpid-server/bin/start
    • נתב: /opt/apigee/edge-router/bin/start

    לדוגמה, קובץ התצורה של שרת הניהול שנמצא בשרת שלו נמצא ב- /opt/apigee/edge-management-server/bin/start

  2. הוספת האפשרויות הבאות של com.sun.management.jmxremote אל exec שורה שמתחילה את הרכיב:
    -Dcom.sun.management.jmxremote \
      -Dcom.sun.management.jmxremote.port=port_number \
      -Dcom.sun.management.jmxremote.local.only=false \
      -Dcom.sun.management.jmxremote.authenticate=false \
      -Dcom.sun.management.jmxremote.ssl=false

    כאשר port_number היא יציאת ה-JMX של השירות. לקבל את ה-JMX של השירות מספר היציאה, ראו יציאות מעקב של JMX ו-Management API.

    לדוגמה, כדי להפעיל JMX בשרת הניהול, צריך להוסיף את הקוד הבא ל-Manage (ניהול) קובץ התצורה של השרת:

    exec $JAVA -classpath "$classpath" -Xms$min_mem -Xmx$max_mem $xx_opts \
      -Djava.security.auth.login.config=$conf_path/jaas.config \
      -Dinstallation.dir=$install_dir $sys_props -Dconf.dir=$conf_path \
      -Ddata.dir=$data_dir \
      -Dcom.sun.management.jmxremote \
      -Dcom.sun.management.jmxremote.port=1099 \
      -Dcom.sun.management.jmxremote.local.only=false \
      -Dcom.sun.management.jmxremote.authenticate=false \
      -Dcom.sun.management.jmxremote.ssl=false \
       $* $debug_options com.apigee.kernel.MicroKernel

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

    השורה הערוכה בקובץ התצורה נראית כך:

    exec $JAVA -classpath "$classpath" -Xms$min_mem -Xmx$max_mem $xx_opts -Djava.security.auth.login.config=$conf_path/jaas.config -Dinstallation.dir=$install_dir $sys_props -Dconf.dir=$conf_path -Ddata.dir=$data_dir -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false $* $debug_options com.apigee.kernel.MicroKernel
  3. שומרים את קובץ התצורה.
  4. מפעילים מחדש את הרכיב באמצעות הפקודה restart.

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

    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart

האימות ל-JMX לא מופעל כברירת מחדל. ניתן להפעיל אימות JMX עבור כל רכיבים, כפי שמתואר במאמר הפעלת אימות JMX. כדי להפעיל את JMX לאימות של Cassandra, הפעלת אימות JMX ל-Cassandra.

הפעלת אימות JMX

אימות JMX לא מופעל כברירת מחדל. ניתן להפעיל אימות JMX עבור כל רכיבים. לגבי Cassandra, צריך לפעול לפי ההוראות ש- הפעלת אימות JMX ל-Cassandra

כדי להפעיל אימות JMX, צריך להפעיל את הפעולה הבאה של change_jmx_auth בכל המכשירים צמתים:

/opt/apigee/apigee-service/bin/apigee-service component_name change_jmx_auth [options|-f config_file]

כאשר:

  • component הוא אחד מהבאים:
    • edge-management-server
    • edge-message-processor
    • edge-postgres-server
    • edge-qpid-server
    • edge-router
  • options מציין את הדברים הבאים:
    • -u username
    • -p password
    • -e [y|n] (הפעלה או השבתה)
  • config_file מציין את המיקום של קובץ התצורה שבו מגדירים הבאים:
    • JMX_USERNAME=username
    • JMX_ENABLED=y|n
    • JMX_PASSWORD=password (אם לא מוגדר או לא מועבר עם -p, תופיע בקשה)

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

הדוגמה הבאה מפעילה אימות JMX לשרת הניהול באמצעות הפקודה אפשרויות של שורות:

/opt/apigee/apigee-service/bin/apigee-service edge-management-server
    change_jmx_auth -u foo -p bar -e y

הדוגמה הבאה משתמשת בקובץ תצורה ולא באפשרויות של שורת הפקודה:

/opt/apigee/apigee-service/bin/apigee-service edge-management-server
    change_jmx_auth -f /tmp/my-config-file

אם מריצים את Edge בכמה צמתים, מריצים את הפקודה בכל הצמתים שם משתמש וסיסמה.

כדי להשבית את אימות JMX בשורת הפקודה, השתמשו "-e n" באופן הבא, לדוגמה:

/opt/apigee/apigee-service/bin/apigee-service edge-management-server
    change_jmx_auth -e n

מעקב עם JConsole

להשתמש ב-JConsole (כלי שתואם ל-JMX) כדי לנהל ולעקוב אחרי בדיקת התקינות ועיבוד הנתונים הסטטיסטיים. באמצעות JConsole אפשר לצרוך נתונים סטטיסטיים של JMX שנחשפו על ידי השרתים שלכם ולהציג אותם גרפי. מידע נוסף זמין במאמר הבא: באמצעות JConsole.

JConsole משתמשת בכתובת ה-URL של השירות הבאה כדי לעקוב אחרי מאפייני ה-JMX (MBeans) שמוצעים דרך JMX:

service:jmx:rmi:///jndi/rmi://IP_address:port_number/jmxrmi

כאשר:

  • IP_address היא כתובת ה-IP של השרת שאחריו רוצים לעקוב.
  • port_number הוא מספר יציאת ה-JMX של השרת שרוצים לגשת אליו מעקב.

לדוגמה, כדי לנטר את שרת הניהול, צור פקודה כמו בדוגמה הבאה (בהנחה שה כתובת ה-IP של השרת היא 216.3.128.12):

service:jmx:rmi:///jndi/rmi://216.3.128.12:1099/jmxrmi

חשוב לשים לב שהדוגמה הזו מציינת את היציאה 1099, שהיא יציאת ה-JMX של שרת הניהול. אפשרויות אחרות יציאות, ראו יציאות JMX ו-Management API.

הטבלה הבאה מציגה את הנתונים הסטטיסטיים הכלליים של JMX:

JMX MBeans מאפייני JMX

זיכרון

HeapMemoryUsage

NonHeapMemoryUsage

שימוש

מעקב באמצעות ה-Management API

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

ביצוע בדיקות שירות

ה-Management API מספק מספר נקודות קצה למעקב אחרי בעיות ולאבחון שלהן שירותים שונים. נקודות הקצה האלה כוללות:

נקודת קצה תיאור
/servers/self/up

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

אם השירות פועל, נקודת הקצה (endpoint) הזו מחזירה את התגובה הבאה:

<ServerField>
  <Up>true</Up>
</ServerField>

אם השירות לא פועל, תקבלו תגובה שדומה לזו: (בהתאם לשירות שבו מדובר ולאופן שבו בדקתם אותו):

curl: Failed connect to localhost:port_number; Connection refused
/servers/self

מחזירה מידע על השירות, כולל:

  • מאפייני ההגדרות האישיות
  • שעת ההתחלה ושעת הפעולה
  • מידע על build, RPM ו-UUID
  • שם מארח וכתובת IP פנימיים וחיצוניים
  • אזור וקבוצה
  • מאפיין <isUp>, שמציין אם השירות פועל

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

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

curl http://host:port_number/v1/servers/self/up -H "Accept: [application/json|application/xml]"
curl http://host:port_number/v1/servers/self -u username:password -H "Accept: [application/json|application/xml]"

כאשר:

  • host הוא כתובת ה-IP של השרת שרוצים לבדוק. אם התחברתם לחשבון השרת, אפשר להשתמש ב-"localhost"; אחרת, צריך לציין גם את כתובת ה-IP של השרת בתור שם המשתמש והסיסמה.
  • port_number היא יציאת ה-Management API של השרת שרוצים לבדוק. הדבר יציאה שונה לכל סוג של רכיב. לדוגמה, כתובת ה-URL של שרת הניהול יציאת ממשק ה-API לניהול היא 8080. כאן מופיעה רשימה של מספרי היציאות של Management API שאפשר להשתמש בהם. יציאות JMX ו-Management API

כדי לשנות את פורמט התשובה, אפשר לציין את הכותרת Accept כך: &quot;application/json&quot; או 'application/xml'.

בדוגמה הבאה מקבלים את הסטטוס של הנתב ב-localhost (יציאה 8081):

curl http://localhost:8081/v1/servers/self/up -H "Accept: application/xml"

הדוגמה הבאה מקבלת מידע על מעבד ההודעות בכתובת 216.3.128.12 (יציאה 8082):

curl http://216.3.128.12:8082/v1/servers/self -u sysAdminEmail:password
  -H "Accept: application/xml"

מעקב אחר סטטוס המשתמשים, הארגון והפריסה

אפשר להשתמש ב-Management API כדי לעקוב אחרי סטטוס המשתמשים, הארגון והפריסה של שרתי proxy בשרתי ניהול ומעבדי הודעות על ידי הרצת הפקודות הבאות:

curl http://host:port_number/v1/users -u sysAdminEmail:password
curl http://host:port_number/v1/organizations -u sysAdminEmail:password
curl http://host:port_number/v1/organizations/orgname/deployments -u sysAdminEmail:password

כאשר port_number הוא 8080 לשרת הניהול או 8082 להודעה מעבד.

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

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

  1. כדאי לבדוק אם יש שגיאות ביומני השרת. היומנים נמצאים ב:
    • שרת ניהול: opt/apigee/var/log/edge-management-server
    • מעבד הודעות: opt/apigee/var/log/edge-message-processor
  2. לבצע קריאה אל השרת כדי לבדוק אם הוא פועל כראוי.
  3. מסירים את השרת מה-ELB ואז מפעילים אותו מחדש:
    /opt/apigee/apigee-service/bin/apigee-service service_name restart

    כאשר service_name הוא:

    • edge-management-server
    • edge-message-processor

בדיקת הסטטוס באמצעות הפקודה apigee-service

אפשר לפתור בעיות בשירותי Edge באמצעות הפקודה apigee-service שמחובר לשרת שמפעיל את השירות.

כדי לבדוק את הסטטוס של שירות באמצעות apigee-service:

  1. צריך להתחבר לשרת ולהריץ את הפקודה הבאה:
    /opt/apigee/apigee-service/bin/apigee-service service_name status

    כאשר service_name הוא אחד מהתנאים הבאים:

    • שרת ניהול: edge-management-server
    • מעבד הודעות: edge-message-processor
    • הודעות אימייל שנשלחו: edge-postgres-server
    • Qpid: edge-qpid-server
    • נתב: edge-router

    לדוגמה:

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor status
  2. אם השירות לא פועל, מפעילים את השירות:
    /opt/apigee/apigee-service/bin/apigee-service service_name start
  3. לאחר הפעלה מחדש של השירות, עליך לבדוק שהוא פועל באמצעות הפקודה apigee-service status שבה השתמשתם בעבר או באמצעות ה-Management API שמתואר במעקב באמצעות ה-Management API.

    לדוגמה:

    curl -v http://localhost:port_number/v1/servers/self/up

    כאשר port_number היא יציאת ה-API לניהול של השירות.

    בדוגמה הזו ההנחה היא שאתם מחוברים לשרת ויכולים להשתמש ב-localhost בתור שם מארח. כדי לבדוק את הסטטוס מרחוק באמצעות ה-Management API, צריך לציין את כתובת ה-IP את כתובת השרת ולכלול את שם המשתמש והסיסמה של מנהל המערכת בממשק ה-API שיחה.

מעקב אחר Postgres

Postgres תומך במספר כלים שבהם אפשר להשתמש כדי לבדוק את הסטטוס שלה. הכלים האלה כפי שמפורט בסעיפים הבאים.

בדיקת ארגונים וסביבות ב-Postgres

אפשר לבדוק אם יש שמות של ארגונים וסביבה שרשומים בשרת Postgres על ידי ביצוע הפקודה הבאה של curl:

curl -v http://postgres_IP:8084/v1/servers/self/organizations

המערכת צריכה להציג את שם הארגון ואת שם הסביבה.

אימות הסטטוס של ניתוח הנתונים

כדי לאמת את הסטטוס של שרתי ניתוח הנתונים של Postgres ו-Qpid, מבצעים את הפעולות הבאות הפקודה curl:

curl -u userEmail:password http://host:port_number/v1/organizations/orgname/environments/envname/provisioning/axstatus

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

{
  "environments" : [ {
    "components" : [ {
      "message" : "success at Thu Feb 28 10:27:38 CET 2013",
      "name" : "pg",
      "status" : "SUCCESS",
      "uuid" : "[c678d16c-7990-4a5a-ae19-a99f925fcb93]"
     }, {
      "message" : "success at Thu Feb 28 10:29:03 CET 2013",
      "name" : "qs",
      "status" : "SUCCESS",
      "uuid" : "[ee9f0db7-a9d3-4d21-96c5-1a15b0bf0adf]"
     } ],
    "message" : "",
    "name" : "prod"
   } ],
  "organization" : "acme",
  "status" : "SUCCESS"
}

מסד נתונים של PostgreSQL

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

משתמשים בסקריפט check_postgres.pl

כדי לעקוב אחרי מסד הנתונים של PostgreSQL, אפשר להשתמש בסקריפט מעקב סטנדרטי, check_postgres.pl מידע נוסף זמין במאמר הבא: http://bucardo.org/wiki/Check_postgres.

לפני שמריצים את הסקריפט:

  1. צריך להתקין את הסקריפט check_postgres.pl בכל צומת של Postgres.
  2. עליך לוודא שהתקנת את perl-Time-HiRes.x86_64, מודול Perl מיישמת התראות ברזולוציה גבוהה, מצב שינה, gettimeofday וטיימרים הפוגות. לדוגמה, יכול להתקין אותו באמצעות הפקודה הבאה:
    yum install perl-Time-HiRes.x86_64
  3. CentOS 7: לפני השימוש ב-check_postgres.pl ב-CentOS v7, צריך להתקין את perl-Data-Dumper.x86_64 סיבובים לדקה.

check_postgres.pl

פלט ברירת המחדל של הקריאות ל-API באמצעות check_postgres.pl הוא Nagios תואמת. לאחר התקנת הסקריפט, מבצעים את הבדיקות הבאות:

  1. בודקים את הגודל של מסד הנתונים:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -include=apigee -action database_size --warning='800 GB' --critical='900 GB'
  2. בדיקת מספר החיבורים הנכנסים למסד הנתונים והשוואה למספר המרבי המותר חיבורים:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action backends
  3. בודקים אם מסד הנתונים פועל וזמין:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action connection
  4. בודקים את המקום בכונן:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action disk_space --warning='80%' --critical='90%'
  5. בודקים את מספר הארגון והסביבה שמוכנסים בצומת Postgres:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action=custom_query --query="select count(*) as result from pg_tables where schemaname='analytics' and tablename like '%fact'" --warning='80' --critical='90' --valtype=integer

הרצת בדיקות של מסד נתונים

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

psql -h /opt/apigee/var/run/apigee-postgresql/ -U apigee -d apigee

לאחר מכן מריצים את הפקודה:

\d analytics."org.env.fact"

בדיקת סטטוס התקינות של תהליך Postgres

כדי לבצע בדיקות API במחשב Postgres, מפעילים את הפקודה curl הבאה הפקודה:

curl -v http://postgres_IP:8084/v1/servers/self/health

הפקודה הזו מחזירה את הסטטוס ACTIVE כשתהליך הדיווח החוזר פעיל. אם תהליך השליחה לא פועל. הוא מחזיר את הסטטוס INACTIVE.

מקורות מידע לגבי Postgres

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

אפאצ'י קסנדרה

JMX מופעל כברירת מחדל עבור Cassandra וגישת JMX מרחוק אל Cassandra לא דורשת סיסמה.

הפעלת אימות JMX עבור Cassandra

אפשר להפעיל אימות JMX עבור Cassandra. לאחר מכן, תידרשו תעביר שם משתמש וסיסמה לכל הקריאות לכלי השירות של הצומת.

כדי להפעיל אימות JMX עבור Cassandra:

  1. יוצרים ועורכים את הקובץ cassandra.properties:
    1. עורכים את הקובץ /opt/apigee/customer/application/cassandra.properties. אם לא קיים, יש ליצור אותו.
    2. מוסיפים את הפרטים הבאים לקובץ:
      conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
      conf_cassandra-env_com.sun.management.jmxremote.password.file=${APIGEE_ROOT}/data/apigee-cassandra/jmxremote.password
      conf_cassandra-env_com.sun.management.jmxremote.access.file=${APIGEE_ROOT}/data/apigee-cassandra/jmxremote.access
    3. שומרים את קובץ ה-cassandra.properties.
    4. משנים את הבעלים של הקובץ ל-apigee:apigee, כפי שמוצג בדוגמה הבאה:
      chown apigee:apigee /opt/apigee/customer/application/cassandra.properties

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

  2. יצירה ועריכה של jmx_auth.sh:
    1. אם הוא לא קיים, יוצרים קובץ במיקום הבא:
      /opt/apigee/customer/application/jmx_auth.sh
    2. מוסיפים את המאפיינים הבאים לקובץ:
      export CASS_JMX_USERNAME=JMX_USERNAME
      export CASS_JMX_PASSWORD=JMX_PASSWORD
    3. שומרים את קובץ ה-jmx_auth.sh.
    4. מקור הקובץ:
      source /opt/apigee/customer/application/jmx_auth.sh
  3. מעתיקים ועורכים את הקובץ jmxremote.password:
    1. מעתיקים את הקובץ הבא מספריית $JAVA_HOME אל /opt/apigee/data/apigee-cassandra/:
      cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/data/apigee-cassandra/jmxremote.password
    2. עורכים את הקובץ jmxremote.password ומוסיפים את שם המשתמש והסיסמה של JMX באמצעות התחביר הבא:
      JMX_USERNAME JMX_PASSWORD

      כאשר JMX_USERNAME ו-JMX_PASSWORD הם שם המשתמש ב-JMX ו- הסיסמה שהגדרתם בעבר.

    3. צריך לוודא שהקובץ נמצא בבעלות 'apigee' ושמצב הקובץ הוא 400:
      chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.password
      chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.password
  4. מעתיקים ועורכים את הקובץ jmxremote.access:
    1. מעתיקים את הקובץ הבא מספריית $JAVA_HOME אל /opt/apigee/data/apigee-cassandra/:
      cp ${JAVA_HOME}/lib/management/jmxremote.access $APIGEE_ROOT/data/apigee-cassandra/jmxremote.access
    2. עורכים את הקובץ jmxremote.access ומוסיפים את התפקיד הבא:
      JMX_USERNAME readwrite
    3. צריך לוודא שהקובץ נמצא בבעלות 'apigee' ושמצב הקובץ הוא 400:
      chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.access
      chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.access
  5. מריצים את configure ב-Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
  6. הפעלה מחדש של Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  7. חוזרים על התהליך הזה בכל הצמתים האחרים של Cassandra.

הפעלת הצפנת סיסמה ב-JMX

כדי להפעיל הצפנת סיסמת JMX, מבצעים את השלבים הבאים:

  1. פותחים את הקובץ source/conf/casssandra-env.sh.
  2. מבטלים את התגובה לשורות הבאות בקובץ:
    • JVM_OPTS="$JVM_OPTS -Djava.security.auth.login.config={T}conf_cassandra-env_java.security.auth.login.config{/T}"
    • JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.login.config=ApigeeSecureFileLoginModule"
  3. בשורת הפקודה, יוצרים גיבובי SHA1 של הסיסמאות הרצויות על ידי הזנת echo -n 'Secret' | openssl dgst -sha1
  4. צריך להגדיר את הסיסמאות מול שם המשתמש ב-jmxremote.password.
  5. צריך לשנות את הקובץ cassandra-env.sh חזרה לקריאה בלבד אחרי העדכון.

הפעלת JMX עם SSL עבור Cassandra

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

JMX תואם SSL תומך גם בטקסט ללא הצפנה וגם בסיסמאות JMX מוצפנות.

כדי להפעיל JMX עם SSL עבור Cassandra, מבצעים את התהליך הבא:

  1. מפעילים JMX. אם צריך, מפעילים את הצפנת הסיסמה.
  2. הפעלת אימות JMX ל-Cassandra. כמתואר למעלה. מוודאים שכלי הצומת פועל עם שם משתמש וסיסמה.
    /opt/apigee/apigee-cassandra/bin/nodetool -u <JMX_USER> -pw <JMX_PASS> ring
  3. הכנה של Keystore ו-Truststore.

    • מאגר המפתחות צריך להכיל מפתח ואישור, ומשמש להגדרת השרת של Cassandra. אם מאגר מפתחות מכיל כמה זוגות מפתחות, Cassandra משתמשת בזוג המפתחות הראשון כדי להפעיל SSL.

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

    • Truststore צריך להכיל את האישור בלבד, והוא נמצא בשימוש של לקוחות (מבוסס-apigee-service). כדי להתחבר באמצעות JMX.

    אחרי שמאמתים את הדרישות שצוינו למעלה:

    1. צריך למקם את קובץ מאגר המפתחות ב-/opt/apigee/data/apigee-cassandra.
    2. יש לוודא שמשתמש Apigee יכול לקרוא את קובץ מאגר המפתחות רק על ידי הזנת
      chown apigee:apigee /opt/apigee/data/apigee-cassandra/keystore.node1
      chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node1
  4. מגדירים את Cassandra עבור JMX עם SSL באמצעות השלבים הבאים:
    1. כדי לעצור את צומת Cassandra על ידי הזנת
      apigee-service apigee-cassandra stop
    2. הפעלת SSL ב-Cassandra על מתבצעת פתיחה של הקובץ /opt/apigee/customer/application/cassandra.properties ולהוסיף את השורה הבאה:
      conf_cassandra-env_com.sun.management.jmxremote.ssl=true

      הקובץ צריך להיות בבעלות apigee:apigee.

    3. מפעילים תצורה הקשורה ל-SSL ב-Cassandra באופן הבא. פתיחת הקובץ /opt/apigee/apigee-cassandra/source/conf/cassandra-env.sh ולבטל את הוספת ההערה לשורות הבאות, תוך שינוי הנתיב /opt/apigee/data/apigee-cassandra/keystore.node1 ואת הסיסמה של מאגר המפתחות לפי הצורך.
      JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStore=/opt/apigee/data/apigee-cassandra/keystore.node1"
      JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStorePassword=keystore-password"
      JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.registry.ssl=true"
      חשוב לוודא שהקובץ הוא בבעלות apigee:apigee.
    4. כדי להתחיל את צומת Cassandra, מזינים
      apigee-service apigee-cassandra start
  5. הגדרת פקודות apigee-service Cassandra. צריך להגדיר משתני סביבה מסוימים בזמן ההפעלה פקודות apigee-service, כולל הפקודה הבאה:
    apigee-service apigee-cassandra stop
    apigee-service apigee-cassandra wait_for_ready
    apigee-service apigee-cassandra ring
    apigee-service apigee-cassandra backup

    יש כמה אפשרויות להגדרת apigee-service לאימות JMX ו-SSL. בחרו אפשרות בהתאם לנוחות השימוש ולנוהלי האבטחה שלכם.

    אפשרות 1 (ארגומנטים מסוג SSL שמאוחסנים בקובץ)

    מגדירים את משתני הסביבה הבאים:

    export CASS_JMX_USERNAME=ADMIN
    # Provide encrypted password here if you have setup JMX password encryption
    export CASS_JMX_PASSWORD=PASSWORD
    export CASS_JMX_SSL=Y

    יוצרים קובץ בספריית הבית של משתמש ב-Apigee (/opt/apigee).

    $HOME/.cassandra/nodetool-ssl.properties

    עורכים את הקובץ ומוסיפים את השורות הבאות:

    -Djavax.net.ssl.trustStore=<path-to-truststore.node1>
    -Djavax.net.ssl.trustStorePassword=<truststore-password>
    -Dcom.sun.management.jmxremote.registry.ssl=true

    חשוב לוודא שמשתמש Apigee יכול לקרוא את הקובץ ה-Trustore.

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

    apigee-service apigee-cassandra ring

    אפשרות 2 (ארגומנטים מסוג SSL שמאוחסנים במשתני סביבה)

    מגדירים את משתני הסביבה הבאים:

    export CASS_JMX_USERNAME=ADMIN
    # Provide encrypted password here if you have setup JMX password encryption
    export CASS_JMX_PASSWORD=PASSWORD
    export CASS_JMX_SSL=Y
    # Ensure the truststore file is accessible by Apigee user.
    export CASS_JMX_TRUSTSTORE=<path-to-trustore.node1>
    export CASS_JMX_TRUSTSTORE_PASSWORD=<truststore-password>

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

    apigee-service apigee-cassandra ring

    אפשרות 3 (ארגומנטים של SSL שמועברים ישירות אל apigee-service)

    מריצים כל פקודת apigee-service כמו בדוגמה הבאה. אתם לא צריכים להגדיר משתני סביבה.

    CASS_JMX_USERNAME=ADMIN CASS_JMX_PASSWORD=PASSWORD CASS_JMX_SSL=Y CASS_JMX_TRUSTSTORE=<path-to-trustore.node1> CASS_JMX_TRUSTSTORE_PASSWORD=<trustore-password> /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra ring
  6. מגדירים אתNodetool. כדי להשתמש ב-Nodetool, צריך להעביר פרמטרים של JMX אליו. יש שתי דרכים לעשות זאת ניתן להגדיר אתNodetool לרוץ עם JMX נתמך ב-SSL, כפי שמתואר אפשרויות ההגדרה הבאות:

    האפשרויות שונות באופן שבו תצורות הקשורות ל-SSL מועברות ל-Nodetool. בשני המקרים, למשתמש שמריץ כלי צומת צריך להיות הרשאות READ בקובץ ה-Truststore. בחרו אפשרות מתאימה בהתאם לנוחות השימוש ולנוהלי האבטחה שלכם.

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

    אפשרות 1 להגדרה

    יצירת קובץ בספריית הבית של ה-Nodetool של המשתמש שמריץ.

    $HOME/.cassandra/nodetool-ssl.properties

    מוסיפים את השורות הבאות לקובץ:

    -Djavax.net.ssl.trustStore=<path-to-truststore.node1>
    -Djavax.net.ssl.trustStorePassword=<truststore-password>
    -Dcom.sun.management.jmxremote.registry.ssl=true

    הנתיב של מאגר האמון שצוין למעלה צריך להיות נגיש לכל משתמש שפועל nodetool.

    מריצים את nodetool עם האפשרות --ssl.

    /opt/apigee/apigee-cassandra/bin/nodetool --ssl -u <jmx-user-name> -pw <jmx-user-password> -h localhost ring

    אפשרות הגדרה 2

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

    /opt/apigee/apigee-cassandra/bin/nodetool -Djavax.net.ssl.trustStore=<path-to-truststore.node1> -Djavax.net.ssl.trustStorePassword=<truststore-password> -Dcom.sun.management.jmxremote.registry.ssl=true -Dssl.enable=true -u <jmx-user-name> -pw <jmx-user-password> -h localhost ring

ביטול הגדרות SSL

אם עליך לבטל את הגדרות ה-SSL שמתוארות בהליך שלמעלה, בצעו את השלבים הבאים:

  1. עצירה apigee-cassandraעל ידי כניסה
    apigee-service apigee-cassandra stop
  2. הסרת השורה conf_cassandra-env_com.sun.management.jmxremote.ssl=true מתוך את הקובץ /opt/apigee/customer/application/cassandra.properties.
  3. יש להוסיף הערה לשורות הבאות ב-/opt/apigee/apigee-cassandra/source/conf/cassandra-env.sh
    # JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStore=/opt/apigee/data/apigee-cassandra/keystore.node0"
    # JVM_OPTS="$JVM_OPTS -Djavax.net.ssl.keyStorePassword=keypass"
    # JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.registry.ssl=true”
  4. כדי להתחיל את apigee-cassandra, מזינים
  5. apigee-service apigee-cassandra start
  6. מסירים את משתנה הסביבה CASS_JMX_SSL, אם הוא הוגדר.

    unset CASS_JMX_SSL
  7. בודקים שפקודות מבוססות apigee-service כמו ring, stop, backup וכן הלאה, פועלים.
  8. הפסקת השימוש במתג --ssl ב-Nodetool

השבתת אימות JMX של Cassandra

כדי להשבית אימות JMX של Cassandra:

  1. עריכה של /opt/apigee/customer/application/cassandra.properties.
  2. מסירים את השורה הבאה מהקובץ:
    conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
  3. מריצים את ההגדרה ב-Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
  4. הפעלה מחדש של Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  5. חוזרים על התהליך הזה בכל הצמתים האחרים של Cassandra.

שימוש ב-JConsole: מעקב אחרי הנתונים הסטטיסטיים של המשימה

משתמשים ב-JConsole ובכתובת ה-URL של השירות הבאה כדי לעקוב אחרי מאפייני ה-JMX (MBeans) שמוצעים דרך JMX:

service:jmx:rmi:///jndi/rmi://IP_address:7199/jmxrmi

כאשר IP_address הוא כתובת ה-IP של שרת Cassandra.

נתונים סטטיסטיים של Cassandra JMX

JMX MBeans מאפייני JMX

ColumnFamilies/apprepo/environments

ColumnFamilies/apprepo/organizations

ColumnFamilies/apprepo/apiproxy_revisions

ColumnFamilies/apprepo/apiproxies

ColumnFamilies/audit/audits

ColumnFamilies/audit/audits_ref

PendingTasks

MemtableColumnsCount

MemtableDataSize

ReadCount

RecentReadLatencyMicros

TotalReadLatencyMicros

WriteCount

RecentWriteLatencyMicros

TotalWriteLatencyMicros

TotalDiskSpaceUsed

LiveDiskSpaceUsed

LiveSSTableCount

BloomFilterFalsePositives

RecentBloomFilterFalseRatio

BloomFilterFalseRatio

שימוש ב-Nodetool לניהול צמתים של אשכולות

כלי השירותNodetool הוא ממשק שורת פקודה של Cassandra שמנהלת צמתים של אשכולות. ניתן למצוא את כלי השירות ב-/opt/apigee/apigee-cassandra/bin.

ניתן לבצע את הקריאות הבאות בכל הצמתים של אשכול Cassandra:

  1. מידע כללי על צלצול (אפשר גם עבור צומת Cassandra יחיד): מחפשים את 'למעלה' ו'רגילה'. לכל הצמתים.
    nodetool [-u username -pw password] -h localhost ring

    צריך להעביר את שם המשתמש והסיסמה רק אם מופעל אימות JMX של Cassandra.

    הפלט של הפקודה שלמעלה נראה כמו בדוגמה הבאה:

    Datacenter: dc-1
    ==========
    Address            Rack     Status State   Load    Owns    Token
    192.168.124.201    ra1      Up     Normal  1.67 MB 33,33%  0
    192.168.124.202    ra1      Up     Normal  1.68 MB 33,33%  5671...5242
    192.168.124.203    ra1      Up     Normal  1.67 MB 33,33%  1134...0484
  2. מידע כללי על צמתים (קריאה לכל צומת)
    nodetool [-u username -pw password]  -h localhost info

    הפלט של הפקודה שלמעלה נראה כך:

    ID                     : e2e42793-4242-4e82-bcf0-oicu812
    Gossip active          : true
    Thrift active          : true
    Native Transport active: true
    Load                   : 273.71 KB
    Generation No          : 1234567890
    Uptime (seconds)       : 687194
    Heap Memory (MB)       : 314.62 / 3680.00
    Off Heap Memory (MB)   : 0.14
    Data Center            : dc-1
    Rack                   : ra-1
    Exceptions             : 0
    Key Cache              : entries 150, size 13.52 KB, capacity 100 MB, 1520781 hits, 1520923 requests, 1.000 recent hit rate, 14400 save period in seconds
    Row Cache              : entries 0, size 0 bytes, capacity 0 bytes, 0 hits, 0 requests, NaN recent hit rate, 0 save period in seconds
    Counter Cache          : entries 0, size 0 bytes, capacity 50 MB, 0 hits, 0 requests, NaN recent hit rate, 7200 save period in seconds
    Token                  : 0
  3. הסטטוס של שרת ניצול הנתונים (שירות ה-API של הלקוח)
    nodetool [-u username -pw password] -h localhost statusthrift

    הפלט של הפקודה שלמעלה נראה כך:

    running
  4. סטטוס פעולות של סטרימינג נתונים: מעקב אחר תנועה בצמתים של cassandra:
    nodetool [-u username -pw password] -h localhost netstats

    הפלט של הפקודה שלמעלה נראה כך:

    Mode: NORMAL
    Not sending any streams.
    Read Repair Statistics:
    Attempted: 151612
    Mismatch (Blocking): 0
    Mismatch (Background): 0
    Pool Name                    Active   Pending      Completed   Dropped
    Commands                        n/a         0              0         0
    Responses                       n/a         0              0       n/a

מידע נוסף זמין ב-Nodetool. מידע על כלי השירותNodetool.

משאב קסנדרה

בודקים את כתובת ה-URL הבאה: http://www.datastax.com/docs/1.0/operations/monitoring.

שומר בגן החיות אפאצ'י

בדיקת הסטטוס של גן החיות

  1. יש לוודא שהתהליך ZoomKeeper פועל. ZaKeeper כותב קובץ PID ל- opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid
  2. צריך לבדוק את היציאות של ZoomKeeper כדי לוודא שאפשר ליצור חיבור TCP ליציאות 2181 וגם 3888 בכל שרת של ZoomKeeper.
  3. עליכם לוודא שאתם יכולים לקרוא ערכים ממסד הנתונים של ZoomKeeper. התחברות באמצעות ZoomKeeper ספריית לקוח (או /opt/apigee/apigee-zookeeper/bin/zkCli.sh) וקריאת ערך ממסד הנתונים.
  4. בודקים את הסטטוס:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper status

שימוש במילים בנות ארבע אותיות ב-ZooKeeper

אפשר לעקוב אחרי גן החיות באמצעות קבוצה קטנה של פקודות (מילים בארבע אותיות) שנשלחות את היציאה 2181 באמצעות netcat (nc) או telnet.

מידע נוסף על פקודות ZoKeeper זמין במאמר קובץ עזר של פקודת ApachezoKeeper.

לדוגמה:

  • srvr: מציין את הפרטים המלאים של השרת.
  • stat: מציג פרטים קצרים של השרת ולקוחות מקושרים.

ניתן להנפיק את הפקודות הבאות ליציאת ZoomKeeper:

  1. מריצים את ה-ruok של ארבע האותיות כדי לבדוק אם השרת פועל במצב שאינו שגיאות. א' תשובה מוצלחת מחזירה 'imok'.
    echo ruok | nc host 2181

    החזרות:

    imok
  2. מריצים את הפקודה בת ארבע האותיות stat כדי להציג רשימה של ביצועי השרת ומחוברים נתונים סטטיסטיים של לקוחות:
    echo stat | nc host 2181

    החזרות:

    Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT
    Clients:
    /0:0:0:0:0:0:0:1:33467[0](queued=0,recved=1,sent=0)
    /192.168.124.201:42388[1](queued=0,recved=8433,sent=8433)
    /192.168.124.202:42185[1](queued=0,recved=1339,sent=1347)
    /192.168.124.204:39296[1](queued=0,recved=7688,sent=7692)
    Latency min/avg/max: 0/0/128
    Received: 26144
    Sent: 26160
    Connections: 4
    Outstanding: 0
    Zxid: 0x2000002c2
    Mode: follower
    Node count: 283
  3. אם netcat (nc) אינו זמין, אפשר להשתמש ב-python כחלופה. יצירת קובץ בשם zookeeper.py שמכיל את הפרטים הבאים:
    import time, socket,
    sys c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    c.connect((sys.argv[1], 2181))
    c.send(sys.argv[2])
    time.sleep(0.1)
    print c.recv(512)

    עכשיו מריצים את קווי ה-python הבאים:

    python zookeeper.py 192.168.124.201 ruok
    python zookeeper.py 192.168.124.201 stat

בדיקה של רמת ה-LDAP

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

  1. צריך להשתמש ב-ldapsearch (yum install openldap-clients) כדי לשלוח שאילתה על הרשומה של מנהל המערכת. רשומה זו משמשת לאימות כל הקריאות ל-API.
    ldapsearch -b "uid=admin,ou=users,ou=global,dc=apigee,dc=com" -x -W -D "cn=manager,dc=apigee,dc=com" -H ldap://localhost:10389 -LLL

    לאחר מכן תתבקשו להזין את סיסמת מנהל המערכת של LDAP:

    Enter LDAP Password:

    לאחר הזנת הסיסמה, תופיע תגובה בטופס:

    dn:
    uid=admin,ou=users,ou=global,dc=apigee,dc=com
    objectClass: organizationalPerson
    objectClass: person
    objectClass: inetOrgPerson
    objectClass: top
    uid: admin
    cn: admin
    sn: admin
    userPassword:: e1NTSEF9bS9xbS9RbVNXSFFtUWVsU1F0c3BGL3BQMkhObFp2eDFKUytmZVE9PQ=
     =
    mail: opdk@google.com
  2. בודקים אם שרת הניהול עדיין מחובר ל-LDAP באמצעות הפקודה הבאה:
    curl -u userEMail:password http://localhost:8080/v1/users/ADMIN

    החזרות:

    {
      "emailId" : ADMIN,
      "firstName" : "admin",
      "lastName" : "admin"
    }

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