במסמך הזה מתוארות טכניקות המעקב של רכיבים שנתמכים על ידי פריסה מקומית של Apigee Edge.
סקירה כללית
Edge תומך במספר דרכים לקבלת פרטים על שירותים ולבדיקת הסטטוסים שלהם. בטבלה הבאה מפורטים סוגי הבדיקות שאפשר לבצע בכל שירות שעומד בקריטריונים:
Mgmt API | |||||||
שירות | שימוש בזיכרון [JMX*] | בדיקת שירות | סטטוס משתמש/ארגון/ פריסה | axstatus | בדיקה של מסד הנתונים | סטטוס של apigee-service |
apigee-monit ** |
שרת ניהול | |||||||
מעבד בקשות | |||||||
Postgres | |||||||
QPID | |||||||
נתב | |||||||
מידע נוסף | מידע נוסף | מידע נוסף | מידע נוסף | מידע נוסף | מידע נוסף | מידע נוסף | |
* לפני שתוכלו להשתמש ב-JMX, תצטרכו להפעיל אותו כפי שמתואר בהפעלת JMX. ** השירות |
יציאות 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:
- עריכת קובץ התצורה של הרכיב. הקובץ הזה נמצא בכתובת
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
. - שרת ניהול:
- מוסיפים את האפשרויות הבאות של
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
- שומרים את קובץ התצורה.
- מפעילים מחדש את הרכיב באמצעות הפקודה
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 |
מחזירה מידע על השירות, כולל:
לקריאה הזו ל-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:passwordcurl 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 למעבד ההודעות.
לשיחה הזו צריך לבצע אימות באמצעות שם המשתמש והסיסמה של ניהול המערכת.
השרת אמור להחזיר סטטוס "פרוס" עבור כל הקריאות. אם הבדיקות נכשלות, צריך לבצע את הפעולות הבאות:
- מומלץ לבדוק אם יש שגיאות ביומני השרת. היומנים נמצאים בכתובת:
- שרת ניהול:
opt/apigee/var/log/edge-management-server
- מעבד ההודעות:
opt/apigee/var/log/edge-message-processor
- שרת ניהול:
- לבצע קריאה לשרת כדי לבדוק אם הוא פועל כראוי.
- מסירים את השרת מה-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
:
- מתחברים לשרת ומריצים את הפקודה הבאה:
/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
- שרת ניהול:
- אם השירות לא פועל, מפעילים את השירות:
/opt/apigee/apigee-service/bin/apigee-service service_name start
- אחרי שתפעילו מחדש את השירות, כדאי לבדוק שהוא פועל באמצעות הפקודה
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.
לפני שמריצים את הסקריפט:
- עליך להתקין את הסקריפט check_postgres.pl בכל צומת Postgres.
- יש לוודא שהתקנת את
perl-Time-HiRes.x86_64
, מודול Perl שבו מוטמעים טיימרים ברזולוציה גבוהה, התראות, שעות שינה, שעות פנויות ביום וטיימרים. לדוגמה, תוכלו להתקין אותו באמצעות הפקודה הבאה:
yum install perl-Time-HiRes.x86_64
- CentOS 7: לפני שמשתמשים ב-check_postgres.pl ב-CentOS v7, צריך להתקין את
perl-Data-Dumper.x86_64
RPM.
פלטcheck_postgres.pl
פלט ברירת המחדל של קריאות ל-API באמצעות check_postgres.pl
תואם ל-Nagios. אחרי שמתקינים את הסקריפט, צריך לבצע את הבדיקות הבאות:
- בודקים את גודל מסד הנתונים:
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'
- כדאי לבדוק את מספר החיבורים הנכנסים למסד הנתונים ולהשוות את המספר המקסימלי של חיבורים שמותר:
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action backends
- בודקים אם מסד הנתונים פועל וזמין:
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action connection
- בודקים את המקום בדיסק:
check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action disk_space --warning='80%' --critical='90%'
- בודקים את מספר הארגון והסביבה שנמצאים בצומת 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, עיין בסעיפים הבאים:
- http://www.postgresql.org/docs/9.0/static/monitoring.html
- http://www.postgresql.org/docs/9.0/static/diskusage.html
- http://bucardo.org/check_postgres/check_postgres.pl.html
אפאצ'י קסנדרה
JMX מופעל כברירת מחדל עבור Cassandra, ולגישה מרחוק של JMX אל Cassandra לא נדרשת סיסמה.
הפעלת אימות JMX עבור Cassandra
ניתן להפעיל אימות JMX עבור Cassandra. לאחר מכן, יהיה עליך להעביר את שם המשתמש והסיסמה לכל הקריאות לכלי העזר של הצומת.
כדי להפעיל אימות JMX עבור Cassandra:
- יוצרים ועורכים את הקובץ
cassandra.properties
:- עורכים את הקובץ
/opt/apigee/customer/application/cassandra.properties
. אם הקובץ לא קיים, יוצרים אותו. - מוסיפים את הטקסט הבא לקובץ:
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
- שומרים את
cassandra.properties
הקובץ: - צריך לשנות את הבעלים של הקובץ ל-
apigee:apigee
כמו בדוגמה הבאה:chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
למידע נוסף על שימוש בקובצי מאפיינים להגדרת אסימונים, ראו איך מגדירים את Edge.
- עורכים את הקובץ
- יוצרים ועורכים
jmx_auth.sh
:- אם הקובץ לא קיים, יש ליצור אותו במיקום הבא:
/opt/apigee/customer/application/jmx_auth.sh
- מוסיפים את המאפיינים הבאים לקובץ:
export CASS_JMX_USERNAME=JMX_USERNAME export CASS_JMX_PASSWORD=JMX_PASSWORD
- שומרים את
jmx_auth.sh
הקובץ: - מקור הקובץ:
source /opt/apigee/customer/application/jmx_auth.sh
- אם הקובץ לא קיים, יש ליצור אותו במיקום הבא:
- מעתיקים ועורכים את הקובץ
jmxremote.password
:- מעתיקים את הקובץ הבא מספריית
$JAVA_HOME
אל/opt/apigee/data/apigee-cassandra/
:cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/data/apigee-cassandra/jmxremote.password
- עורכים את הקובץ
jmxremote.password
ומוסיפים את שם המשתמש והסיסמה של ה-JMX באמצעות התחביר הבא:JMX_USERNAME JMX_PASSWORD
כאשר JMX_USERNAME ו-JMX_PASSWORD הם שם המשתמש והסיסמה של JMX שהגדרת קודם לכן.
- מוודאים שהקובץ בבעלות "apigee" ושמצב הקובץ הוא 400:
chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.password
chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.password
- מעתיקים את הקובץ הבא מספריית
- מעתיקים ועורכים את הקובץ
jmxremote.access
:- מעתיקים את הקובץ הבא מספריית
$JAVA_HOME
אל/opt/apigee/data/apigee-cassandra/
:cp ${JAVA_HOME}/lib/management/jmxremote.access $APIGEE_ROOT/data/apigee-cassandra/jmxremote.access
- עורכים את הקובץ jmxremote.access ומוסיפים את התפקיד הבא:
JMX_USERNAME readwrite
- מוודאים שהקובץ בבעלות "apigee" ושמצב הקובץ הוא 400:
chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.access
chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.access
- מעתיקים את הקובץ הבא מספריית
- מריצים את הפקודה
configure
ב-Cassandra:/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- מפעילים מחדש את Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- חוזרים על התהליך הזה בכל צומתי Cassandra.
הפעלת הצפנת סיסמאות של JMX
כדי להפעיל הצפנת סיסמאות של JMX, צריך לבצע את השלבים הבאים:
- פותחים את הקובץ
source/conf/casssandra-env.sh
. - מבטלים את התגובה לשורות הבאות בקובץ:
-
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"
-
- בשורת הפקודה, יוצרים גיבובי SHA1 של הסיסמאות הרצויות על ידי הזנת
echo -n 'Secret' | openssl dgst -sha1
- הגדר את הסיסמאות בהתאם לשם המשתמש ב-
jmxremote.password
. - להחזיר את הקובץ
cassandra-env.sh
למצב 'קריאה בלבד' לאחר העדכון.
הפעלת JMX עם SSL ב-Cassandra
כשמפעילים JMX עם SSL, מקבלים אבטחה והצפנה נוספות בתקשורת מבוססת-JMX עם קסנדרה. כדי להפעיל JMX עם SSL, צריך לספק ל-Cassandra מפתח ואישור כדי לקבל חיבורי JMX מבוססי SSL. בנוסף, צריך להגדיר את ה-Noouttool (וכל כלי אחר שמתקשרים עם Cassandra ב-JMX) ל-SSL.
פרוטוקול JMX עם תמיכה ב-SSL תומך גם בסיסמאות בטקסט ללא הצפנה וגם בסיסמאות JMX מוצפנות.
כדי להפעיל JMX עם SSL עבור Cassandra, יש לבצע את התהליך הבא:
- הפעלת JMX. במידת הצורך, אפשר להפעיל הצפנת סיסמאות.
- הפעלת אימות JMX עבור Cassandra.
כמתואר למעלה. יש לוודא כי ה-Nonettool פועל עם שם המשתמש והסיסמה שהוגדרו.
/opt/apigee/apigee-cassandra/bin/nodetool -u <JMX_USER> -pw <JMX_PASS> ring
הכנת מאגר המפתחות ו-Truststore.
ה-Keystore צריך להכיל מפתח ואישור, ומשמש להגדרת השרת של Cassandra. אם מאגר המפתחות מכיל כמה זוגות של מפתחות, Cassandra משתמשת בזוג המפתחות הראשון כדי להפעיל את SSL.
חשוב לזכור שהסיסמאות של מאגר המפתחות והמפתח צריכות להיות זהות (ברירת המחדל כשיוצרים את המפתח באמצעות כלי המפתחות).
- Truststore צריך להכיל את האישור בלבד, ולקוחות (פקודות שמבוססות על שירות API או צומת מכלים) יכולים להשתמש בו כדי להתחבר באמצעות JMX.
אחרי שתוודאו את הדרישות שצוינו למעלה:
- צריך למקם את קובץ מאגר המפתחות ב-
/opt/apigee/data/apigee-cassandra
. - יש לוודא שמשתמש Apigee יכול לקרוא את קובץ מאגר המפתחות, רק על-ידי הזנת
chown apigee:apigee /opt/apigee/data/apigee-cassandra/keystore.node1 chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node1
- כדי להגדיר את Cassandra ל-JMX עם SSL, פועלים לפי השלבים הבאים:
- כדי להפסיק את צומת Cassandra, מזינים
apigee-service apigee-cassandra stop
- כדי להפעיל SSL ב-Cassandra, פותחים את הקובץ
/opt/apigee/customer/application/cassandra.properties
ומוסיפים את השורה הבאה:conf_cassandra-env_com.sun.management.jmxremote.ssl=true
הקובץ צריך להיות בבעלות של
apigee:apigee
. - צריך להפעיל תצורה הקשורה ל-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
. - מזינים את הערך
apigee-service apigee-cassandra start
כדי להתחיל את צומת Cassandra
- כדי להפסיק את צומת Cassandra, מזינים
- הגדרת פקודות 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 שמאוחסנים בקובץ)
- אפשרות 2 (ארגומנטים של SSL שמאוחסנים במשתני סביבה)
- אפשרות 3 (ארגומנטים של SSL מועברים ישירות אל
apigee-service
)
אפשרות 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
הגדרת הצומת. 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 שתוארו בתהליך שלמעלה, מבצעים את השלבים הבאים:
- עצירה
apigee-cassandra
על ידי הזנתapigee-service apigee-cassandra stop
- מסירים את השורה
conf_cassandra-env_com.sun.management.jmxremote.ssl=true
מהקובץ/opt/apigee/customer/application/cassandra.properties
. - מוסיפים תגובה בשורות הבאות ב-
/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”
- כדי להפעיל את
apigee-cassandra
צריך להזין - מסירים את משתנה הסביבה
CASS_JMX_SSL
אם הוא הוגדר.unset CASS_JMX_SSL
- מוודאים שפקודות שמבוססות על
apigee-service
, כמוring
,stop
,backup
וכו', פועלות. - הפסקת השימוש במתג
--ssl
עם sitelinktool
apigee-service apigee-cassandra start
השבתת אימות JMX עבור Cassandra
כדי להשבית את אימות JMX עבור Cassandra:
- עריכת
/opt/apigee/customer/application/cassandra.properties
. - מסירים את השורה הבאה מהקובץ:
conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
- מריצים את ההגדרה ב-Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- מפעילים מחדש את Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- חוזרים על התהליך הזה בכל צומתי 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:
- מידע כללי על הצלצול (אפשר גם להשתמש בצומת 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
- מידע כללי על צמתים (קריאה לכל צומת)
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
- סטטוס של שרת thrift (שרת API של לקוח בשירות)
nodetool [-u username -pw password] -h localhost statusthrift
הפלט של הפקודה שלמעלה נראה כך:
running
- סטטוס הפעולות של העברת נתונים: זיהוי תנועה של צומתי קסנדרה:
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
- צריך לוודא שהתהליך שלzoKeeper פועל. ניתן לכתוב קובץ PID מ-ZooKeeper אל
opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid
. - כדאי לבדוק את יציאות גן החיות כדי לוודא שאפשר ליצור חיבור TCP ליציאות 2181 ו-3888 בכל שרת שלzoKeeper.
- מוודאים שניתן לקרוא ערכים ממסד הנתונים שלzoKeeper. התחברות באמצעות ספריית לקוח שלzoKeeper (או
/opt/apigee/apigee-zookeeper/bin/zkCli.sh
) וקריאת ערך ממסד הנתונים. - בודקים את הסטטוס:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper status
שימוש במילים בנות ארבע אותיות ב-ZooKeeper
ניתן לנטר אתzoKeeper באמצעות סדרה קטנה של פקודות (מילים בנות ארבע) שנשלחות ליציאה 2181 באמצעות netcat (nc) או telnet.
למידע נוסף על הפקודות שלzoKeeper, ניתן לעיין במאמר: חומר עזר בנושא הפקודות של ApachezoKeeper.
לדוגמה:
srvr
: פירוט הפרטים המלאים של השרת.stat
: בתיבת הדו-שיח הזו מוצגים פרטים קצרים של השרת ושל הלקוחות המחוברים.
אפשר להנפיק את הפקודות הבאות ליציאת בהתאם ל-ZooKeeper:
- מריצים את מקש ruok על ארבע אותיות כדי לבדוק אם השרת פועל במצב שאינו שגוי. תשובה מוצלחת תחזיר את הכיתוב "imok".
echo ruok | nc host 2181
החזרות:
imok
- מריצים את הפקודה בת ארבע האותיות,
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
- אם 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 כדי לראות אם הבקשות הספציפיות מוגשות כראוי. במילים אחרות, עליך לחפש חיפוש ספציפי שמחזיר את התוצאה הנכונה.
- יש להשתמש ב-
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
- בודקים אם שרת הניהול עדיין מחובר ל-LDAP באמצעות הפקודה הבאה:
curl -u userEMail:password http://localhost:8080/v1/users/ADMIN
החזרות:
{ "emailId" : ADMIN, "firstName" : "admin", "lastName" : "admin" }
אפשר גם לנטר את המטמון של OpenLDAP, וכך לצמצם את מספר הגישות לדיסקים וכך לשפר את ביצועי המערכת. למעקב ולכוונון של גודל המטמון
בשרת OpenLDAP יכולה להיות השפעה משמעותית על הביצועים של שרת הספריות. כדי לקבל מידע על המטמון, אפשר להציג את קובצי היומן (opt/apigee/var/log
).