במאמר הזה מתוארות שיטות המעקב אחרי רכיבים שנתמכים בפריסה מקומית של Apigee Edge for Private Cloud.
סקירה כללית
ב-Edge יש כמה דרכים לקבל פרטים על שירותים ולבדוק את הסטטוסים שלהם. בטבלה הבאה מפורטים סוגי הבדיקות שאפשר לבצע בכל שירות שעומד בדרישות:
| Mgmt API | |||||||
| רכיב | שימוש בזיכרון [JMX*] | בדיקת שירות | סטטוס המשתמש/הארגון/ הפריסה | axstatus | בדיקת מסד נתונים | סטטוס apigee-service |
apigee-monit** |
| שרת ניהול | |||||||
| מעבד בקשות | |||||||
| נתב | |||||||
| Qpid | |||||||
| Postgres | |||||||
| מידע נוסף | מידע נוסף | מידע נוסף | מידע נוסף | מידע נוסף | מידע נוסף | מידע נוסף | |
|
* כדי להשתמש ב-JMX, צריך להפעיל אותו, כמו שמתואר בקטע הפעלת JMX. ** השירות |
|||||||
יציאות מעקב וקובצי תצורה
כל רכיב תומך ב-Java Management Extensions (JMX) ובקריאות פיקוח על API של Management API ביציאות שונות. בטבלה הבאה מפורטות היציאות של JMX ושל Management API לכל סוג של שרת, ומיקומי קובצי התצורה:
| רכיב | יציאת JMX | יציאת Management 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 ברכיב edge-* , עורכים את קובץ התצורה המתאים (ראו
קובץ עזר של קובץ תצורה). יוצרים את קובץ התצורה אם הוא לא קיים:
שומרים את קובץ התצורה ומוודאים שהוא בבעלות של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 ברכיב edge-* :
- עורכים את קובץ התצורה המתאים (ראו
הפניה לקובץ תצורה). יוצרים את קובץ התצורה אם הוא לא קיים:
שומרים את קובץ התצורה ומוודאים שהוא בבעלות של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.
אפשר להוסיף שורה אחת: "אם SSL מופעל ל-JMX, צריך להפעיל את jconsole עם truststore וסיסמת truststore". מקור: 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
- סיסמת Keystore:
conf_system_javax_net_ssl_keystorepassword=changeme
הגדרות JMX אופציונליות
הערכים שמופיעים ברשימה הם ערכי ברירת מחדל ואפשר לשנות אותם.
- יציאת JMX. ערכי ברירת המחדל מפורטים בטבלה הבאה.
conf_system_jmxremote_port=
- יציאת JMX RMI. כברירת מחדל, תהליך Java יבחר יציאה אקראית.
conf_system_jmxremote_rmi_port=
- שם המארח של רכיבי ה-stub המרוחקים. כתובת ה-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 יש כמה נקודות קצה (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 ב-Management Server היא 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:passwordcurl 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-serveredge-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 - Postgres:
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 שמטמיע התראה ברזולוציה גבוהה, שינה, gettimeofday וטיימרים לאינטרוולים. לדוגמה, אפשר להתקין אותו באמצעות הפקודה הבאה:
yum install perl-Time-HiRes.x86_64
- CentOS 7: לפני שמשתמשים ב-check_postgres.pl ב-CentOS v7, צריך להתקין את ה-RPM של
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 כשתהליך ה-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
Apache Cassandra
JMX מופעל כברירת מחדל ב-Cassandra, וגישה מרחוק ל-Cassandra באמצעות JMX לא דורשת סיסמה.
הפעלת אימות JMX ל-Cassandra
אתם יכולים להפעיל אימות JMX ל-Cassandra. אחרי שתעשו את זה, תצטרכו להעביר שם משתמש וסיסמה בכל הקריאות לכלי nodetool.
כדי להפעיל אימות 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(שנוצר בקטע הקודם). - מריצים את הפקודה 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 עם SSL ל-Cassandra
הפעלת JMX עם SSL מספקת אבטחה והצפנה נוספות לתקשורת מבוססת-JMX עם Cassandra. כדי להפעיל JMX עם SSL, צריך לספק ל-Cassandra מפתח ואישור כדי לקבל חיבורי JMX שמבוססים על SSL. צריך גם להגדיר את nodetool (וכל כלי אחר שמתקשר עם Cassandra באמצעות JMX) ל-SSL.
JMX עם SSL תומך בסיסמאות JMX מוצפנות ובסיסמאות בטקסט פשוט.
כדי להפעיל JMX עם SSL ל-Cassandra, מבצעים את הפעולות הבאות:
- הפעלת JMX. אם צריך, מפעילים את הצפנת הסיסמה.
- הפעלת אימות JMX ל-Cassandra.
כפי שמתואר למעלה. מוודאים ש-nodetool פועל עם שם המשתמש והסיסמה שהוגדרו.
/opt/apigee/apigee-cassandra/bin/nodetool -u <JMX_USER> -pw <JMX_PASS> ring
מכינים את מאגר המפתחות ואת ה-truststore.
מאגר המפתחות צריך להכיל מפתח ואישור, והוא משמש להגדרת שרת Cassandra. אם מאגר המפתחות מכיל כמה זוגות מפתחות, Cassandra משתמשת בזוג המפתחות הראשון כדי להפעיל את SSL.
חשוב לזכור שהסיסמאות של מאגר המפתחות ושל המפתח צריכות להיות זהות (ברירת המחדל כשיוצרים את המפתח באמצעות keytool).
- ה-truststore צריך להכיל רק את האישור, והלקוחות משתמשים בו (פקודות שמבוססות על apigee-service או nodetool) כדי להתחבר דרך 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
- מריצים את הפקודה configure ב-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:
- מגדירים את פקודות 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
מוודאים שמשתמש 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. כדי להשתמש ב-Nodetool צריך להעביר אליו פרמטרים של JMX. יש שתי דרכים להגדיר את nodetool כך שיפעל עם JMX שמופעל בו SSL, כפי שמתואר באפשרויות ההגדרה הבאות:
האפשרויות שונות באופן שבו הגדרות שקשורות ל-SSL מועברות ל-nodetool. בשני המקרים, למשתמש שמפעיל את nodetool צריכות להיות הרשאות קריאה בקובץ ה-truststore. בוחרים באפשרות המתאימה לפי נוחות השימוש ונוהלי האבטחה שלכם.
מידע נוסף על הפרמטרים של nodetool זמין ב מסמכי התיעוד של 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
- מריצים את הפקודה configure ב-Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
- מפעילים מחדש את Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- חוזרים על התהליך הזה בכל שאר הצמתים של Cassandra.
שימוש ב-JConsole: מעקב אחרי נתונים סטטיסטיים של משימות
כדי לעקוב אחרי מאפייני JMX (MBeans) שמוצעים דרך JMX, משתמשים ב-JConsole ובכתובת ה-URL הבאה של השירות:
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 יחיד): מחפשים את המילים 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
- סטטוס של פעולות סטרימינג של נתונים: צפייה בתנועה של צומתי 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.
משאב Cassandra
אפשר לעיין בכתובת ה-URL הבאה: http://www.datastax.com/docs/1.0/operations/monitoring.
Apache ZooKeeper
בדיקת הסטטוס של ZooKeeper
- מוודאים שתהליך ZooKeeper פועל. ZooKeeper כותב קובץ PID ב-
opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid. - בודקים את היציאות של ZooKeeper כדי לוודא שאפשר ליצור חיבור TCP ליציאות 2181 ו-3888 בכל שרת ZooKeeper.
- מוודאים שאפשר לקרוא ערכים ממסד הנתונים של ZooKeeper. מתחברים באמצעות ספריית לקוח של ZooKeeper (או
/opt/apigee/apigee-zookeeper/bin/zkCli.sh) וקוראים ערך ממסד הנתונים. - בודקים את הסטטוס:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper status
שימוש במילים בנות ארבע אותיות של ZooKeeper
אפשר לעקוב אחרי ZooKeeper באמצעות קבוצה קטנה של פקודות (מילים בנות ארבע אותיות) שנשלחות ליציאה 2181 באמצעות netcat (nc) או telnet.
מידע נוסף על פקודות ZooKeeper זמין בחומר העזר בנושא פקודות Apache ZooKeeper.
לדוגמה:
-
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:
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) כדי לקבל מידע על המטמון.