איך לעקוב

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

סקירה כללית

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

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 יציאה מ-Management 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 בשרת הניהול, מוסיפים את הקוד הבא לקובץ התצורה של שרת הניהול:

    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

Usage

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

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

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

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

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

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

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

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

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

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

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

  • מאפייני ההגדרות האישיות
  • שעת התחלה ושעת פעולה
  • מידע על גרסאות build, RPM ו-UUID
  • שם מארח וכתובת IP פנימיים וחיצוניים
  • אזור ו-pod
  • מאפיין <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 של השרת שברצונך לבדוק. זוהי יציאה שונה לכל סוג רכיב. לדוגמה, יציאת Management API של שרת הניהול היא 8080. רשימה של מספרי היציאות של Management API שאפשר להשתמש בהם מופיעה במאמר יציאות JMX ו-Management API למעקב

כדי לשנות את הפורמט של התגובה, אפשר להגדיר את הכותרת Accept כך: "application/json" או "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 היא יציאת ה-Management 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 שבו מוטמעים טיימרים ברזולוציה גבוהה, התראות, שעות שינה, שעות פנויות ביום וטיימרים. לדוגמה, תוכלו להתקין אותו באמצעות הפקודה הבאה:
    yum install perl-Time-HiRes.x86_64
  3. CentOS 7: לפני שמשתמשים ב-check_postgres.pl ב-CentOS v7, צריך להתקין את perl-Data-Dumper.x86_64 RPM.

פלט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"

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

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

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

הפקודה הזו מחזירה את הסטטוס ACTIVE כשתהליך Postgres פעיל. אם תהליך Postgres לא פועל, הוא יחזיר את הסטטוס 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. בנוסף, צריך להגדיר את ה-Noouttool (וכל כלי אחר שמתקשרים עם Cassandra ב-JMX) ל-SSL.

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

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

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

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

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

    • Truststore צריך להכיל את האישור בלבד, ולקוחות (פקודות שמבוססות על שירות API או צומת מכלים) יכולים להשתמש בו כדי להתחבר באמצעות 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. מזינים את הערך
      apigee-service apigee-cassandra start
      כדי להתחיל את צומת Cassandra
  5. הגדרת פקודות Cassandra apigee-service. צריך להגדיר משתני סביבה מסוימים בזמן הרצת פקודות 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

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

    מריצים את הפקודה 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 מחייב העברה של פרמטרים מסוג JMX אליו. יש שתי דרכים שבהן ניתן להגדיר את ה-nocrout Console לפעול עם JMX שתומך ב-SSL, כפי שמתואר באפשרויות ההגדרה הבאות:

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

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

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

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

    $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

    הנתיב של מאגר האמינות שצוין למעלה צריך להיות נגיש לכל משתמש שמריץ את ה-Notchatool.

    מריצים את הפקודה 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 עם sitelinktool

השבתת אימות 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/סביבה

ColumnFamilies/Apprepo/ארגונים

ColumnFamilies/apprepo/apiproxy_revisions

ColumnFamilies/Apprepo/apiproxies

עמודות/ביקורות/ביקורות של עמודות

העמודה ColumnFamilies/audit/audits_ref

PendingTasks

MemtableColumnsCount

MemtableDataSize

ReadCount

RecentReadLatencyMicros

TotalReadLatencyMicros

WriteCount

RecentWriteLatencyMicros

TotalWriteLatencyMicros

TotalDiskSpaceUsed

LiveDiskSpaceUsed

LiveSSTableCount

BloomFilterFalsePositives

RecentBloomFilterFalseRatio

BloomFilterFalseRatio

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

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

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

  1. מידע כללי על הצלצול (אפשר גם להשתמש בצומת Cassandra): מחפשים את הערכים 'Up' ו-'Normal' בכל הצמתים.
    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. סטטוס של שרת thrift (שרת API של לקוח בשירות)
    nodetool [-u username -pw password] -h localhost statusthrift

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

    running

  4. סטטוס הפעולות של העברת נתונים: זיהוי תנועה של צומתי קסנדרה:
    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

מידע נוסף על כלי העזר ל-Noouttool

משאב של Cassandra

יש לעיין בכתובת ה-URL הבאה: http://www.datastax.com/docs/1.0/operations/monitoring.

גן החיות אפאצ'י

בדיקת הסטטוס שלZooKeeper

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

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

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

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

לדוגמה:

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

אפשר להנפיק את הפקודות הבאות ליציאת בהתאם ל-ZooKeeper:

  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 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).