במסמך הזה מתוארות שיטות המעקב אחרי רכיבים שנתמכים על ידי מערכות מקומיות בפריסה של Apigee Edge לענן פרטי.
סקירה כללית
Edge תומך בכמה דרכים לקבלת פרטים על שירותים, וכן לבדיקת שלהם סטטוסים. בטבלה הבאה מפורטים סוגי הבדיקות שאפשר לבצע בכל מכשיר כשיר service:
Mgmt API | |||||||
רכיב | שימוש בזיכרון [JMX*] | בדיקת שירות | סטטוס משתמש/ארגון/ פריסה | axstatus | בדיקה של מסדי נתונים | סטטוס של apigee-service |
apigee-monit ** |
שרת ניהול | |||||||
מעבד בקשות | |||||||
נתב | |||||||
Qpid | |||||||
Postgres | |||||||
מידע נוסף | מידע נוסף | מידע נוסף | מידע נוסף | מידע נוסף | מידע נוסף | מידע נוסף | |
* לפני שתוכלו להשתמש ב-JMX, עליכם להפעיל אותו, כמו שמתואר במאמר הפעלת JMX. ** השירות |
מעקב אחרי יציאות וקובצי תצורה
כל רכיב תומך בקריאות למעקב אחר Java Management API (JMX) וב-Management API יציאות שונות. הטבלה הבאה מפרטת את יציאות ה-JMX וה-Management API לכל סוג שרת, מיקומים של קובצי תצורה:
רכיב | יציאת JMX | יציאת ממשק ה-API לניהול | המיקום של קובץ התצורה |
---|---|---|---|
שרת ניהול | 1099 | 8080 | $APIGEE_ROOT/customer/application/management-server.properties |
מעבד בקשות | 1101 | 8082 | $APIGEE_ROOT/customer/application/message-processor.properties |
נתב | 1100 | 8081 | $APIGEE_ROOT/customer/application/router.properties |
Qpid | 1102 | 8083 | $APIGEE_ROOT/customer/application/qpid-server.properties |
Postgres | 1103 | 8084 | $APIGEE_ROOT/customer/application/postgres-server.properties |
שימוש ב-JMX כדי לעקוב אחר רכיבים
הקטעים הבאים מסבירים איך להשתמש ב-JMX כדי לעקוב אחרי רכיבי Edge.
הפעלת JMX
כדי להפעיל JMX ללא אימות או תקשורת מבוססת SSL, מבצעים את השלבים הבאים. הערה: במערכות ייצור, יש להפעיל גם אימות מוצפן וגם SSL עבור אבטחה.
- לערוך את קובץ התצורה המתאים (ראו
הפניה לקובץ התצורה). אם הוא לא קיים, יוצרים את קובץ התצורה.
conf_system_jmxremote_enable=true
- צריך לשמור את קובץ התצורה ולוודא שהוא בבעלות של
apigee:apigee
. - הפעלה מחדש של רכיב Edge המתאים
apigee-service edge-management-server restart
כדי להשבית את JMX, צריך להסיר את המאפיין conf_system_jmxremote_enable
או לשנות
את הערך שלו ל-false
. אחר כך מפעילים מחדש את רכיב Edge המתאים.
אימות ב-JMX
ב-Edge for Private Cloud יש תמיכה באימות מבוסס סיסמה באמצעות פרטים ששמורים בקבצים. כאמצעי אבטחה נוסף, אתם יכולים לאחסן סיסמאות כגיבוב (hash).
- כדי להפעיל אימות JMX ברכיב קצה*, צריך לערוך את קובץ התצורה המתאים.
(ראו
הפניה לקובץ התצורה). יוצרים את קובץ התצורה אם הוא לא קיים:
צריך לשמור את קובץ התצורה ולוודא שהוא בבעלותconf_system_jmxremote_enable=true conf_system_jmxremote_authenticate=true conf_system_jmxremote_encrypted_auth=true conf_system_jmxremote_access_file=/opt/apigee/customer/application/management-server/jmxremote.access conf_system_jmxremote_password_file=/opt/apigee/customer/application/management-server/jmxremote.password
apigee:apigee
. - יוצרים גיבוב SHA256 של הסיסמה:
echo -n '
' | openssl dgst -sha256 - יוצרים קובץ
jmxremote.password
עם פרטי הכניסה של משתמש JMX:- מעתיקים את הקבצים הבאים מספריית
$JAVA_HOME
אל הספרייה/opt/apigee/customer/application/<component>/
:cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/customer/application/management-server/jmxremote.password
- עורכים את הקובץ ומוסיפים את שם המשתמש והסיסמה של JMX באמצעות התחביר הבא:
USERNAME <HASH-PASSWORD>
- יש לוודא שהקובץ נמצא בבעלות
apigee
ושמצב הקובץ הוא 400:chown apigee:apigee $APIGEE_ROOT/customer/application/management-server/jmxremote.password chmod 400 $APIGEE_ROOT/customer/application/management-server/jmxremote.password
- מעתיקים את הקבצים הבאים מספריית
- יוצרים קובץ
jmxremote.access
עם הרשאות משתמש של JMX:- העתק את הקבצים הבאים מספריית $JAVA_Home אל
ספרייה
/opt/apigee/customer/application/<component>/
cp ${JAVA_HOME}/lib/management/jmxremote.access$APIGEE_ROOT/customer/application/management-server/jmxremote.password/jmxremote.access
- עורכים את הקובץ ומוסיפים את שם המשתמש שלכם ב-JMX ואחריו הרשאה (READONLY/READWRITE)
USERNAME READONLY
- יש לוודא שהקובץ נמצא בבעלות
apigee
ושמצב הקובץ הוא 400:chown apigee:apigee $APIGEE_ROOT/customer/application/management-server/jmxremote.password chmod 400 $APIGEE_ROOT/customer/application/management-server/jmxremote.access
- העתק את הקבצים הבאים מספריית $JAVA_Home אל
ספרייה
- מפעילים מחדש את רכיב Edge המתאים:
apigee-service edge-management-server restart
כדי להשבית אימות JMX, צריך להסיר את המאפיין
conf_system_jmxremote_authenticate
או לשנות את הערך ל-false
ו-
מפעילים מחדש את רכיב Edge המתאים.
SSL ב-JMX
כדי להפעיל JMX מבוסס SSL ברכיב קצה-* :
- עורכים את קובץ התצורה המתאים
(ראו
הפניה לקובץ התצורה). יוצרים את קובץ התצורה אם הוא לא קיים:
צריך לשמור את קובץ התצורה ולוודא שהוא בבעלותconf_system_jmxremote_enable=true conf_system_jmxremote_ssl=true conf_system_javax_net_ssl_keystore=/opt/apigee/customer/application/management-server/jmxremote.keystore conf_system_javax_net_ssl_keystorepassword=<keystore-password>
apigee:apigee
. - מכינים מאגר מפתחות שמכיל את מפתח השרת ומניחים אותו בנתיב שצוין ב
הגדרה
conf_system_javax_net_ssl_keystore
למעלה. מוודאים שקובץ מאגר המפתחות ניתן לקריאה על ידיapigee:apigee
. - מפעילים מחדש את רכיב Edge המתאים:
apigee-service edge-management-server restart
כדי להשבית JMX מבוסס SSL, צריך להסיר את המאפיין conf_system_jmxremote_ssl
או לשנות את הערך ל-false
. מפעילים מחדש את רכיב Edge המתאים.
מעקב דרך Jconsole
הוראות המעקב דרך jconsole נשארות זהות לאלו שמתוארות ב- https://docs.apigee.com/private-cloud/v4.50.00/how-monitor#jconsole.
ניתן להוסיף שורה אחת שאומרת "צריך להתחיל jconsole עם סיסמת truststore ו-Truststore אם SSL מופעל עבור JMX". חומר עזר: https://docs.oracle.com/Javase/8/docs/technotes/guides/management/jconsole.htmlמעקב עם JConsole
להשתמש ב-JConsole (כלי שתואם ל-JMX) כדי לנהל ולעקוב אחרי בדיקת התקינות ועיבוד הנתונים הסטטיסטיים. באמצעות JConsole אפשר לצרוך נתונים סטטיסטיים של JMX שנחשפו על ידי השרתים שלכם ולהציג אותם גרפי. מידע נוסף זמין במאמר הבא: באמצעות JConsole.
אם SSL מופעל עבור JMX, צריך להפעיל את JConsole עם סיסמת Truststore ו-Truststore. ראו באמצעות 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 |
|
שימוש |
|
מסמך עזר של קובץ התצורה
בקטעים הבאים מתוארים השינויים שייתכן שיהיה צורך לבצע בהגדרות האישיות של רכיבי Edge. בשביל תצורות שקשורות ל-JMX. צפייה מעקב אחרי יציאות וקובצי תצורה לקבלת מידע נוסף מידע.
כדי להוסיף את התצורה של JMX לקובץ התצורה של הרכיב המתאים
- הפעלת סוכן JMX ברכיב הקצה. כברירת מחדל, הערך הוא False.
conf_system_jmxremote_enable=true
הגדרות לאימות מבוסס-סיסמה
- הפעלת אימות מבוסס סיסמה. כברירת מחדל, הערך הוא False.
conf_system_jmxremote_authenticate=true
- נתיב גישה לקובץ. צריכים להיות בבעלות משתמש Apigee וקריאים לו בלבד.
conf_system_jmxremote_access_file=/opt/apigee/customer/application/management-server/jmxremote.access
- נתיב לקובץ סיסמה. צריכים להיות בבעלות משתמש Apigee וקריאים לו בלבד.
conf_system_jmxremote_password_file=/opt/apigee/customer/application/management-server/jmxremote.password
- הפעלת שמירת סיסמאות בפורמט מוצפן. כברירת מחדל, הערך הוא False.
conf_system_jmxremote_encrypted_auth=true
הגדרות עבור JMX מבוסס SSL
- הפעלת SSL לתקשורת JMX. כברירת מחדל, הערך הוא False.
conf_system_jmxremote_ssl=true
- נתיב למאגר המפתחות. צריכים להיות בבעלות משתמש Apigee וקריאים לו בלבד.
conf_system_javax_net_ssl_keystore=/opt/apigee/customer/application/management-server/jmxremote.keystore
- סיסמת מאגר המפתחות:
conf_system_javax_net_ssl_keystorepassword=changeme
הגדרות אופציונליות של JMX
הערכים שמופיעים הם ערכי ברירת מחדל, ואפשר לשנות אותם.
- יציאת JMX. ערכי ברירת המחדל מפורטים בטבלה שבהמשך.
conf_system_jmxremote_port=
- יציאת JMX RMI. כברירת מחדל, תהליך Java יבחר יציאה אקראית.
conf_system_jmxremote_rmi_port=
- שם המארח של ה-stubs המרוחקים. כתובת ה-IP המוגדרת כברירת מחדל של Localhost.
conf_system_java_rmi_server_hostname=
- הגנה על רישום ה-JMX באמצעות SSL. ברירת המחדל היא False. רלוונטי רק אם SSL מופעל.
conf_system_jmxremote_registry_ssl=false
מעקב באמצעות ה-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 |
מחזירה מידע על השירות, כולל:
הקריאה הזו ל-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
כך:
"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 היא יציאת ה-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 מיישמת התראות ברזולוציה גבוהה, מצב שינה, gettimeofday וטיימרים הפוגות. לדוגמה, יכול להתקין אותו באמצעות הפקודה הבאה:
yum install perl-Time-HiRes.x86_64
- CentOS 7: לפני השימוש ב-check_postgres.pl ב-CentOS v7, צריך להתקין את
perl-Data-Dumper.x86_64
סיבובים לדקה.
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"
בדיקת סטטוס התקינות של תהליך Postgres
כדי לבצע בדיקות API במחשב Postgres, מפעילים את הפקודה curl
הבאה
הפקודה:
curl -v http://postgres_IP:8084/v1/servers/self/health
הפקודה הזו מחזירה את הסטטוס ACTIVE
כשתהליך הדיווח החוזר פעיל. אם
תהליך השליחה לא פועל. הוא מחזיר את הסטטוס 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}/customer/application/apigee-cassandra/jmxremote.password conf_cassandra_env_com.sun.management.jmxremote.access.file=${APIGEE_ROOT}/customer/application/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/customer/application/apigee-cassandra/
:cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.password
- עורכים את הקובץ
jmxremote.password
ומוסיפים את שם המשתמש והסיסמה של JMX באמצעות התחביר הבא:JMX_USERNAME JMX_PASSWORD
כאשר JMX_USERNAME ו-JMX_PASSWORD הם שם המשתמש ב-JMX ו- הסיסמה שהגדרתם בעבר.
- צריך לוודא שהקובץ נמצא בבעלות 'apigee' ושמצב הקובץ הוא 400:
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/jmxremote.password
chmod 400 /opt/apigee/customer/application/apigee-cassandra/jmxremote.password
- מעתיקים את הקובץ הבא מספריית
- מעתיקים ועורכים את הקובץ
jmxremote.access
:- מעתיקים את הקובץ הבא מספריית
$JAVA_HOME
אל/opt/apigee/customer/application/apigee-cassandra/
:cp ${JAVA_HOME}/lib/management/jmxremote.access
$APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.access
- עורכים את הקובץ
jmxremote.access
ומוסיפים את התפקיד הבא:JMX_USERNAME readwrite
- צריך לוודא שהקובץ נמצא בבעלות 'apigee' ושמצב הקובץ הוא 400:
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/jmxremote.access
chmod 400 /opt/apigee/customer/application/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
. - יוצרים ועורכים את הקובץ
cassandra.properties
:- עורכים את הקובץ
/opt/apigee/customer/application/cassandra.properties
. אם המיקום הקובץ לא קיים, צריך ליצור אותו. - מוסיפים את הפרטים הבאים לקובץ:
conf_cassandra_env_com.sun.management.jmxremote.encrypted.authenticate=true
- שומרים את הקובץ cassandra.properties.
- משנים את הבעלים של הקובץ ל-apigee:apigee, כפי שמוצג בדוגמה הבאה:
chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
- עורכים את הקובץ
- בשורת הפקודה, יוצרים גיבובי SHA1 של הסיסמאות הרצויות על ידי הזנת
echo -n 'Secret' | openssl dgst -sha1
- הגדירו את הסיסמאות מול שם המשתמש ב-
$APIGEE_ROOT/customer/application/apigee-cassandra/jmxremote.password
(נוצר ב- בסעיף הקודם). - מריצים את ההגדרה ב-Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- הפעלה מחדש של Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- חוזרים על התהליך הזה בכל הצמתים האחרים של Cassandra.
הפעלת JMX עם SSL עבור Cassandra
הפעלת JMX עם SSL מספקת אבטחה והצפנה נוספות לתקשורת מבוססת JMX עם קסנדרה. כדי להפעיל JMX עם SSL, עליך לספק ל-Cassandra מפתח ואישור לקבל חיבורי JMX מבוססי SSL. כמו כן צריך להגדיר אתNodetool (וכל כלי אחר) לתקשר עם Cassandra דרך JMX) עבור SSL.
JMX תואם SSL תומך גם בטקסט ללא הצפנה וגם בסיסמאות JMX מוצפנות.
כדי להפעיל JMX עם SSL עבור Cassandra, מבצעים את התהליך הבא:
- מפעילים JMX. אם צריך, מפעילים את הצפנת הסיסמה.
- הפעלת אימות JMX ל-Cassandra.
כמתואר למעלה. מוודאים שכלי הצומת פועל עם
שם משתמש וסיסמה.
/opt/apigee/apigee-cassandra/bin/nodetool -u <JMX_USER> -pw <JMX_PASS> ring
הכנה של Keystore ו-Truststore.
מאגר המפתחות צריך להכיל מפתח ואישור, ומשמש להגדרת השרת של Cassandra. אם מאגר מפתחות מכיל כמה זוגות מפתחות, Cassandra משתמשת בזוג המפתחות הראשון כדי להפעיל SSL.
לתשומת ליבך, הסיסמאות למאגר המפתחות והמפתח צריכות להיות זהות (ברירת המחדל כשיוצרים את המפתח באמצעות כלי המקשים).
- Truststore צריך להכיל את האישור בלבד, והוא נמצא בשימוש של לקוחות (מבוסס-apigee-service). כדי להתחבר באמצעות JMX.
אחרי שמאמתים את הדרישות שצוינו למעלה:
- צריך למקם את קובץ מאגר המפתחות ב-
/opt/apigee/customer/application/apigee-cassandra/
. - יש לוודא שמשתמש Apigee יכול לקרוא את קובץ מאגר המפתחות רק על ידי הזנת
chown apigee:apigee /opt/apigee/customer/application/apigee-cassandra/keystore.node1
chmod 400 /opt/apigee/customer/application/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 conf_cassandra_env_javax.net.ssl.keyStore=/opt/apigee/customer/application/apigee-cassandra/keystore.node1 conf_cassandra_env_javax.net.ssl.keyStorePassword=keystore-password
- משנים את הבעלים של הקובץ ל-apigee:apigee, כפי שמוצג בדוגמה הבאה:
chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
- מריצים את ההגדרה ב-Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- הפעלה מחדש של Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- חוזרים על התהליך הזה בכל הצמתים האחרים של Cassandra.
- כדי להתחיל את צומת Cassandra, מזינים
apigee-service apigee-cassandra start
- כדי לעצור את צומת Cassandra על ידי הזנת
- הגדרת פקודות
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 שמאוחסנים בקובץ)
- אפשרות 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
חשוב לוודא שמשתמש 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
מגדירים את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 שמתוארות בהליך שלמעלה, בצעו את השלבים הבאים:
- עצירה
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
ב-Nodetool
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/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:
- מידע כללי על צלצול (אפשר גם עבור צומת 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
- מידע כללי על צמתים (קריאה לכל צומת)
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
- הסטטוס של שרת ניצול הנתונים (שירות ה-API של הלקוח)
nodetool [-u username -pw password] -h localhost statusthrift
הפלט של הפקודה שלמעלה נראה כך:
running
- סטטוס פעולות של סטרימינג נתונים: מעקב אחר תנועה בצמתים של 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.
שומר בגן החיות אפאצ'י
בדיקת הסטטוס של גן החיות
- יש לוודא שהתהליך ZoomKeeper פועל. ZaKeeper כותב קובץ PID ל-
opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid
- צריך לבדוק את היציאות של ZoomKeeper כדי לוודא שאפשר ליצור חיבור TCP ליציאות 2181 וגם 3888 בכל שרת של ZoomKeeper.
- עליכם לוודא שאתם יכולים לקרוא ערכים ממסד הנתונים של ZoomKeeper. התחברות באמצעות ZoomKeeper
ספריית לקוח (או
/opt/apigee/apigee-zookeeper/bin/zkCli.sh
) וקריאת ערך ממסד הנתונים. - בודקים את הסטטוס:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper status
שימוש במילים בנות ארבע אותיות ב-ZooKeeper
אפשר לעקוב אחרי גן החיות באמצעות קבוצה קטנה של פקודות (מילים בארבע אותיות) שנשלחות את היציאה 2181 באמצעות netcat (nc) או telnet.
מידע נוסף על פקודות ZoKeeper זמין במאמר קובץ עזר של פקודת ApachezoKeeper.
לדוגמה:
srvr
: מציין את הפרטים המלאים של השרת.stat
: מציג פרטים קצרים של השרת ולקוחות מקושרים.
ניתן להנפיק את הפקודות הבאות ליציאת ZoomKeeper:
- מריצים את ה-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 הבאים:
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
) כדי לקבל מידע על המטמון.