מדריך קלאודפלייר בעברית

תיעוד 65

מדדי שרת המפתחות

עודכן לאחרונה: 3 ביוני 2026

שרת המפתחות gokeyless חושף נקודת קצה של מדדי Prometheus שאפשר להשתמש בה כדי לעקוב אחרי ביצועי חתימה, שיעורי שגיאה, תקינות חיבורים ותפוגת אישורים. אפשר גם לאסוף את נקודת הקצה הזו באמצעות מקלט Prometheus של OpenTelemetry Collector, וכך להפוך את המדדים לזמינים לכל backend תואם OpenTelemetry.

#נקודת קצה של המדדים

כברירת מחדל, המדדים מוגשים בכתובת:

http://<host>:2406/metrics

אפשר להגדיר את הפורט באמצעות המפתח metrics_port בקובץ התצורה, הדגל --metrics-port, או משתנה הסביבה KEYLESS_METRICS_PORT.

נקודת הקצה מגישה רק את /metrics. אין נקודות קצה נוספות של HTTP כמו /health או /debug.


#דליים של היסטוגרמה

כל מדדי ההיסטוגרמה חולקים את אותה תצורת דליים: 15 דליים מעריכיים שמתחילים ב-100 מיקרו-שניות, מוכפלים בכל צעד עד כ-1.64 שניות, ועוד דלי +Inf אחרון.

דליגבול עליון
1100 מיקרו-שניות
2200 מיקרו-שניות
3400 מיקרו-שניות
4800 מיקרו-שניות
51.6 מילישניות
63.2 מילישניות
76.4 מילישניות
812.8 מילישניות
925.6 מילישניות
1051.2 מילישניות
11102 מילישניות
12205 מילישניות
13410 מילישניות
14819 מילישניות
15כ-1.64 שניות
+Infכל דבר מעל כ-1.64 שניות

הערה

בשימוש במודול אבטחת חומרה (HSM) עם מאגר סשנים של PKCS#11, פסק הזמן להמתנה למאגר קבוע בקוד על 10 שניות. לכן אירוע של מיצוי המאגר תמיד יופיע בדלי +Inf. עליות בתצפיות +Inf בפעולות חתימה עם error="cryptography error" הן אינדיקציה ישירה לרוויה של מאגר הסשנים של PKCS#11.


#מדריך המדדים

#keyless_requests

סוג: Counter
תוויות: opcode

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

תווית opcode משתמשת בשם הקבוע המלא מפרוטוקול gokeyless.

#פעולות RSA

תווית opcodeערך על הקותיאור
OpRSADecrypt0x01פענוח RSA גולמי. משמש בחילופי מפתחות RSA ב-TLS (הוצא משימוש ב-TLS 1.3)
OpRSASignMD5SHA10x02חתימת RSA PKCS#1 v1.5 על גיבוב משולב MD5+SHA1. לחיצת יד של TLS 1.0/1.1
OpRSASignSHA10x03חתימת RSA PKCS#1 v1.5 על SHA1
OpRSASignSHA2240x04חתימת RSA PKCS#1 v1.5 על SHA224
OpRSASignSHA2560x05חתימת RSA PKCS#1 v1.5 על SHA256
OpRSASignSHA3840x06חתימת RSA PKCS#1 v1.5 על SHA384
OpRSASignSHA5120x07חתימת RSA PKCS#1 v1.5 על SHA512
OpRSAPSSSignSHA2560x35חתימת RSASSA-PSS על SHA256. פעולת ה-RSA העיקרית ב-TLS 1.3
OpRSAPSSSignSHA3840x36חתימת RSASSA-PSS על SHA384
OpRSAPSSSignSHA5120x37חתימת RSASSA-PSS על SHA512

#פעולות ECDSA

תווית opcodeערך על הקותיאור
OpECDSASignMD5SHA10x12חתימת ECDSA על גיבוב משולב MD5+SHA1
OpECDSASignSHA10x13חתימת ECDSA על SHA1
OpECDSASignSHA2240x14חתימת ECDSA על SHA224
OpECDSASignSHA2560x15חתימת ECDSA על SHA256. הנפוצה ביותר ב-TLS 1.2 וב-TLS 1.3
OpECDSASignSHA3840x16חתימת ECDSA על SHA384
OpECDSASignSHA5120x17חתימת ECDSA על SHA512

#חתימה אחרת

תווית opcodeערך על הקותיאור
OpEd25519Sign0x18חתימת Ed25519 על מטען באורך שרירותי (לא גיבוב שחושב מראש)

#פעולות איטום ותשתית

תווית opcodeערך על הקותיאור
OpSeal0x21הצפנת blob באמצעות מפתח האיטום של השרת. משמש לכרטיסי סשן של TLS
OpUnseal0x22פענוח blob שהוצפן קודם על ידי OpSeal. מחזיר ErrExpired אם מפתח האיטום הסתובב
OpRPC0x23הפעלת פונקציה בעלת שם שנרשמה בשרת. זמין לכל סוגי החיבורים
OpCustom0x24הפעלת פונקציה מותאמת שהוגדרה בתצורת השרת. זמין רק לחיבורים לא מוגבלים
OpPing0xF1בדיקת תקינות. השרת מהדהד את המטען בחזרה כ-OpPong, בלי מעורבות של HSM או חיפוש מפתח

#keyless_request_exec_duration_per_opcode

סוג: Histogram
תוויות: type, error

מודד את הזמן לביצוע פעולה אחת, מהרגע שבו העיבוד מתחיל ועד שנוצרת תשובה. בפעולות שמגובות ב-HSM של PKCS#11, הזמן כולל את כל ההמתנה לסשן מהמאגר וגם את זמן הפעולה הקריפטוגרפית ב-HSM.

המדד הזה לא כולל זמן שבו בקשה ממתינה לחריץ בסמפור החיבור. זמן זה נלכד ב-keyless_request_total_duration_per_opcode.

#תווית type

ערכי opcode מקובצים לקטגוריות גסות יותר עבור תווית זו:

תווית typeערכי opcode כלולים
rsaOpRSADecrypt, כל OpRSASign*, כל OpRSAPSSSign*
ecdsaכל OpECDSASign*
ed25519OpEd25519Sign
rpcOpRPC
customOpCustom
otherOpSeal, OpUnseal, OpPing, OpPong, OpResponse, OpError
unknownכל בית opcode שלא מזוהה

הערה

OpPing מקובץ ל-other יחד עם OpSeal ו-OpUnseal. אי אפשר להפריד במדד הזה את חביון הלוך-חזור של Ping מחביון פעולות seal ו-unseal.

#תווית error

בבקשות שהצליחו הערך הוא no error. כל שאר הערכים מציינים פעולה שנכשלה.

תווית errorתיאורסיבה נפוצה
no errorהפעולה הושלמה בהצלחה-
cryptography errorפעולת HSM או חתימה נכשלהמיצוי מאגר סשנים של PKCS#11 (resource pool timed out), ה-HSM החזיר שגיאה, אי התאמה בסוג המפתח
key not found due to no matching SKI/SNI/ServerIPחיפוש המפתח לא החזיר תוצאההמפתח לא נטען ב-keystore, SKI שגוי בבקשה
read failureשגיאת קריאה של קלט/פלט במהלך הפעולהשגיאת דיסק בקריאת קובץ מפתח
version mismatchגרסת הפרוטוקול אינה נתמכתפער גרסאות בין הלקוח לשרת
bad opcodeהתקבל opcode לא מוכרנשלח OpCustom בלי handler מותאם מוגדר
unexpected opcodeopcode של תשובה שימש כבקשההלקוח שלח OpPong, OpResponse או OpError כבקשה
malformed messageכשל בניתוח TLVחבילה פגומה או קטועה
internal errorכשל בצד השרת שאינו קריפטוגרפיה-Sealer הוא nil, שגיאת ניתוב RPC
certificate not foundחיפוש האישור נכשלהאישור לא נטען
sealing key expiredה-blob של OpUnseal ישן מדי לפענוחסיבוב מפתח של כרטיס סשן TLS: ה-blob נאטם במפתח שכבר יצא משימוש
remote configuration errorשרת מפתחות מרוחק מוגדר באופן שגויהמפתח מצביע לשרת מפתחות מרוחק לא נגיש או שגוי בתצורה

#keyless_request_total_duration_per_opcode

סוג: Histogram
תוויות: type, error (אותם ערכים כמו ב-keyless_request_exec_duration_per_opcode)

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

total_duration = exec_duration + response_write_time

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


#keyless_key_load_duration

סוג: Histogram
תוויות: אין

מודד את הזמן שלוקח ל-keystore לאתר ולהחזיר את המפתח הפרטי לכל בקשה, לפי SKI, SNI וכתובת IP של השרת.

  • במאגרי מפתחות שמגובים בקבצים, זהו חיפוש במפה, ובדרך כלל הוא קצר ממילישנייה.
  • במאגרי מפתחות של PKCS#11 או HSM, זה עשוי לכלול הלוך-חזור ברשת אל ה-HSM אם הפניות למפתחות אינן שמורות במטמון בזיכרון.

המדד נרשם לכל פעולות החתימה והפענוח: OpRSADecrypt, כל OpRSASign*, כל OpRSAPSSSign*, כל OpECDSASign* ו-OpEd25519Sign.

הוא לא נרשם עבור OpPing, OpSeal, OpUnseal, OpRPC או OpCustom, שאינם דורשים חיפוש מפתח פרטי.


#keyless_failed_connection

סוג: Counter
תוויות: אין

סופר כשלי תעבורה ברמת החיבור. המדד הזה משקף בעיות בשכבת הרשת או TLS. הוא לא סופר שגיאות חתימה או כשלי חיפוש מפתח, שמדווחים בתווית error של היסטוגרמות המשך.

תרחישנספר?
כשל בלחיצת יד של TLSלא
הלקוח התנתק לפני לחיצת היד של TLS (EOF)לא
כשל בקביעת רמת האמון של החיבור אחרי TLSכן
שגיאת קריאה שאינה EOF בחיבור שהוקםכן
שגיאת כתיבה בעת מסירת תשובהכן
פסק זמן בקריאה, ניקוז חיבור מסודרלא
שגיאת חתימה, כולל פסק זמן של מאגר PKCS#11לא
מפתח לא נמצאלא

#certificate_expiration_timestamp_seconds

סוג: Gauge
תוויות: source, serial_no, cn, hostnames, ca, server, client

מדווח את זמן התפוגה (NotAfter) של כל אישור ששרת המפתחות טען, כחותמת זמן Unix. נפלטת סדרת זמן אחת לכל אישור.

המדד מתעדכן:

  • בהפעלה, עבור אישור האימות של השרת (auth_cert) ועבור אישור ה-CA של Cloudflare (cloudflare_ca_cert).
  • בכל חיבור TLS נכנס שהצליח, עבור אישורי העמית שהציג הלקוח המתחבר.
תוויתתיאור
sourceנתיב קובץ לאישורים של ההפעלה. listener: <addr> לאישורי עמית מחיבורים נכנסים
serial_noמספר סידורי של האישור
cnSubject Common Name
hostnamesרשימה ממוינת, מופרדת בפסיקים, של שמות DNS ב-Subject Alternative Name
ca1 אם האישור הוא אישור CA, 0 אחרת
server1 אם האישור כולל ExtKeyUsageServerAuth, 0 אחרת
client1 אם האישור כולל ExtKeyUsageClientAuth, 0 אחרת

הערה

server_utilization הוא מדד GaugeVec רשום ששרת המפתחות אף פעם לא כותב אליו. מכיוון שאף ערכי תוויות לא נקבעים, הוא לא פולט שום סדרת זמן בפלט של /metrics. אל תשתמשו בו.


#שאילתות PromQL לדוגמה

#תפוקת חתימה לפי סוג מפתח

sum by (opcode) (rate(keyless_requests[1m]))

#שיעור שגיאות לפי סוג שגיאה

sum by (error) (
  rate(keyless_request_exec_duration_per_opcode_count{error!="no error"}[5m])
)

#חביון חתימה באחוזון 99 עבור RSA

histogram_quantile(
  0.99,
  rate(keyless_request_exec_duration_per_opcode_bucket{type="rsa"}[5m])
)

ערך שמתקרב ל-10 שניות מציין מיצוי של מאגר הסשנים של PKCS#11. ראו Scaling and benchmarking ואת תיעוד ה-HSM להנחיה על הגדלת גודל מאגר הסשנים.

#חביון טעינת מפתח באחוזון 99

histogram_quantile(0.99, rate(keyless_key_load_duration_bucket[5m]))

עלייה כאן בלי עלייה מקבילה במשך הביצוע מרמזת שחיפוש ה-keystore עצמו איטי: ייתכן שזו בעיית קלט/פלט של דיסק או עיכוב במניית אובייקטים של PKCS#11.

#שיעור כשלי חיבור

rate(keyless_failed_connection_total[5m])

שיעור מתמשך שאינו אפס מציין בעיות רשת או TLS בין רשת Cloudflare לשרת המפתחות.

#התראה על תפוגת אישור בתוך 30 יום

(certificate_expiration_timestamp_seconds - time()) / 86400 < 30