איך להבטיח את קפקא ולנטר אותו

הקדם

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

בסידור הלימוד הזה, תגבירו את התאימות הבריר שלכם על ידי הגדרת TLS עבור הצפיפות המצפנת וסיסמה עבור אמון כדי לספק תהליך הכנת שם וסיסמה סטנדרטי. תראו איך להגדיר את הסקripטים המפיקים והמשתמשים שלכם כדי להתחבר לקבוצה מאובטחת. אחר כך, תלמדו איך לשלוט במידע על קבוצת הקאפקה ולמצוג אותו בגרפאנה. תלמדו גם איך לגשת לעמודים ונושאים בקבוצת הקאפקה שלך דרך ממשק רשת קל לשימוש שספקt על ידי AKHQ.

הקדמת הדרישות

כדי להשלים את הלימוד הזה, תזדקקו ל:

  • משבץ עם לפחות 4GB זכרון RAM ו-2 CPU. במקרה של שרת Ubuntu, עקוב אחרי ההוראות בסביבת ההתקנה הראשונית של השרת ב-הגדרת השרת הראשונית.
  • Apache Kafka מותקן ומוכן על המשבץ שלך. להוראות ההתקנה, עקוב אחרי המדריך הקדמה ל-Kafka. צריך להשלים רק שלב 1 ו-שלב 2.
  • הבנה של איך ג 'אווה מתנהלת עם מפתחות ותעודות. למידע נוסף, בקר את המדריך העקרונות של Java Keytool: עבודה עם תיבות המפתחות של Java.
  • Grafana מותקן על השרת שלך או המכשיר המקומי שלך. בבקשה בקר את המדריך איך להתקין ולבטח Grafana על Ubuntu להוראות. צריך להשלים רק ארבעת השלבים הראשונים.
  • שם דומיין מוכר לגמרי מוכוון למשבץ שלך. המדריך ישתמש ב-your_domain לרוחב המדריך ויזהה לאותו שם דומיין כתורת דרושה ל-Grafana. ניתן לרכוש שם דומיין ב-Namecheap, לקבל אחד בחינם ב-Freenom, או להשתמש ברשוי רישום הדומיינים של בחירתך.

שלב 1 – הגדרת מנגנוני הבטיחות של Kafka

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

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

יצירת ציון TLS ומאגרים

כדי ליצור את הציונים והמפתחות הנדרשים עבור התקנת TLS, תשתמשו בסקript מהאחסן כלי הבטיחות של פלטפורמת Confluent. קודם כל, תשלוף את הערימה לתוך הקומף הביתי שלכם על ידי ביציאת הפקודה הבאה:

git clone https://github.com/confluentinc/confluent-platform-security-tools.git ~/kafka-ssl

על ידי ניווט אליו:

cd ~/kafka-ssl

הסק립ט שתשתמש בו נקרא kafka-generate-ssl-automatic.sh, והוא דורש ממך לספק את מדינתך, המדינה, הארגון והעיר בתור משתנים סביבתיים. הפרמטרים האלה משמשים ליצירת התעודות, אך התוכן שלהם לא משנה. תצטרך גם לספק סיסמה, שמשמשת לאבטח את המאגר האמון והמאגר המפתח שייצרות בעזרת הג 'אווה.

בואו נבצע את הפקודות הבאות כדי להגדיר את המשתנים הנדרשים, ותחליף your_tls_password בערך שלך:

export COUNTRY=US
export STATE=NY
export ORGANIZATION_UNIT=SE
export CITY=New York
export PASSWORD=your_tls_password

שימו לב שה PASSWORD צריך להיות לפחות בן שש תווים.

תנו לסקripט הרשמה בפעולה על-ידי:

chmod +x kafka-generate-ssl-automatic.sh

ואחר כך, ניהל אותו כדי ליצור את הקבצים הנדרשים:

./kafka-generate-ssl-automatic.sh

יוצאת ההדבקה תהיה רבה. כשהיא מסתיימת, תרשים את הקבצים בתוך התיקייה:

ls -l

היצאת התוצאה תיראה דומה לזה:

Output
rw-rw-r-- 1 kafka kafka 964 May 13 09:33 README.md -rw-rw-r-- 1 kafka kafka 1063 May 13 09:34 cert-file -rw-rw-r-- 1 kafka kafka 1159 May 13 09:34 cert-signed -rwxrw-r-- 1 kafka kafka 6016 May 13 09:33 kafka-generate-ssl-automatic.sh -rwxrwxr-x 1 kafka kafka 7382 May 13 09:33 kafka-generate-ssl.sh drwxrwxr-x 2 kafka kafka 4096 May 13 09:34 keystore -rw-rw-r-- 1 kafka kafka 184929 May 13 09:33 single-trust-store-diagram.pages -rw-rw-r-- 1 kafka kafka 36980 May 13 09:33 single-trust-store-diagram.pdf drwxrwxr-x 2 kafka kafka 4096 May 13 09:34 truststore

תראו שהתעודה, המאגר האמון והמאגר המפתח נוצרו בהצלחה.

הגדרת Kafka לשימוש בTLS וSASL

ועכשיו שיש לך את הקבצים הנדרשים כדי לאפשר הצפנה TLS, תתקנית את Kafka להשתמש בהם ולאמת את המשתמשים בעזרת SASL.

תערוך את הקובץ server.properties שנמצא תחת config/kraft בתיקיית ההתקנה. התקנת אותו תחת kafka בתיקיית הבית שלך כחלק מהדרישות הקודמות. תלך אליו על ידי הרצתה:

cd ~/kafka

פתח את קובץ התצורה הראשי לעריכה:

nano config/kraft/server.properties

מצא את השורות הבאות:

config/kraft/server.properties
...
listeners=PLAINTEXT://:9092,CONTROLLER://:9093

# שם המאזין המשמש לתקשורת בין המושכים.
inter.broker.listener.name=PLAINTEXT

# שם המאזין, שם המארח והפורט שהמושך יפרסם ללקוחות.
# אם לא מוגדר, הוא משתמש בערך הזה עבור "listeners".
advertised.listeners=PLAINTEXT://localhost:9092

שנה אותם כך שיהיו כך, והחלף PLAINTEXT בBROKER:

config/kraft/server.properties
...
listeners=BROKER://:9092,CONTROLLER://:9093

# שם המאזין המשמש לתקשורת בין המושכים.
inter.broker.listener.name=BROKER

# שם המאזין, שם המארח והפורט שהמושך יפרסם ללקוחות.
# אם לא מוגדר, הוא משתמש בערך הזה עבור "listeners".
advertised.listeners=BROKER://localhost:9092

אחר כך, מצא את השורה listener.security.protocol.map:

config/kraft/server.properties
# מפענח שמות המאזינים לפרוטוקולי הבטחון, הברירת המחדל היא שיהיו אותם זהים. ראה תיעוד התצורה לפרטים נוספים
listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL

קשר BROKER לSASL_SSL על ידי הוספת ההגדרה לערך:

config/kraft/server.properties
# מפענח שמות המאזינים לפרוטוקולי הבטחון, הברירת המחדל היא שיהיו אותם זהים. ראה תיעוד התצורה לפרטים נוספים
listener.security.protocol.map=BROKER:SASL_SSL,CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL

כאן, הוספת ההגדרה לעקוב BROKER השמה שהשתמשת בה בקושינים והוסף אותה לSASL_SSL, שמייצג שנעשה בשימוש שניהם.

באימוץ הבא, תעבור לסוף הקובץ ותוסף את השורות הבאות:

config/kraft/server.properties
ssl.truststore.location=/home/kafka/kafka-ssl/truststore/kafka.truststore.jks
ssl.truststore.password=your_tls_password
ssl.keystore.location=/home/kafka/kafka-ssl/keystore/kafka.keystore.jks
ssl.keystore.password=your_tls_password
ssl.key.password=your_tls_password
ssl.client.auth=required

sasl.enabled.mechanisms=PLAIN
sasl.mechanism.controller.protocol=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN

authorizer.class.name=org.apache.kafka.metadata.authorizer.StandardAuthorizer
allow.everyone.if.no.acl.found=false
super.users=User:admin

תתחיל בהגדרת המיקומים והסיסמאות עבור המאגרים האמינים והמפתחים שנוצרים. תגדיר את הפרמטר ssl.client.auth לrequired, בו את מודאגת את קאפקה לא לאפשר קישורים שלא מציגים תעודת TLS מוקצבת. אחר כך, תגדיר את המנגנון SASL לPLAIN, שמאפשר אותו. PLAIN שונה מPLAINTEXT במידה שהוא דורש שימוש בקישור מוצפן, ושניהם סמכים על שילוב של סיסמאות של משתמש וסיסמא.

לבסוף, תגדיר את StandardAuthorizer כמותג אותולוגים, שמבדוק את הרשויות בעזרת קובץ ההגדרות שאתה עומד ליצור בקרוב. אחר כך, תגדיר את הפרמטר allow.everyone.if.no.acl.found לfalse, שמגביל את הגישה לקישורים עם רשויות לא מתאימות. אתה גם מסמך את המשתמש admin כסופר-משתמש, בגלל שחייבת להיות לפחות אחת כדי לבצע משימות אדמיניסטרטיות במערך.

זכרו להחליף your_tls_password בססמה שנתת לתסך בחלק הקודם, ואחר כך שמור וסגר את הקובץ.

עכשיו שאתה תיגר על הגדרות של Kafka, תצטרך ליצור קובץ שמגדיר את האמונות המורשות להתחברות. Kafka תומך בשירות האמונות והסיומה ב-Java (JAAS), תשתית ליישם עבודות אמון, ומקבל הגדרות אמונות בתבנית JAAS.

תשמר אותם בקובץ בשם kafka-server-jaas.conf בתוך config/kraft. ייצר אותו ופתח אותו בצורה לעריכה בעזרת השורה הבאה:

nano config/kraft/kafka-server-jaas.conf

הוסף את השורות הבאות:

config/kraft/kafka-server-jaas.conf
KafkaServer {
 org.apache.kafka.common.security.plain.PlainLoginModule required
 username="admin"
 password="admin"
 user_admin="admin";
};

השורות username ו password מגדירים את האמונות העיקריות שמשמשים לתקשורת בין הברקרים במערך כשיש רבים מנקודות. השורה user_admin מגדירה משתמש בשם admin עם סיסמה admin, שיכול להתחבר לברקר מבחוץ. שמור וסגיר את הקובץ בסוף העבודה.

Kafka צריך להיות מודע לקובץ kafka-server-jaas.conf בגלל שהוא משלם להגדרות העיקריות. תצטרך לשנות את ההגדרות של השירות kafka systemd ולהעביר את ההפנייה אליו. בואו על הפקודה הבאה כדי לפתוח את השירות לעריכה:

sudo systemctl edit --full kafka

בעזרת --full, תקבל גישה לתוכן המלא של השירות. מצא את השורה ExecStart:

kafka.service
...
User=kafka
ExecStart=/bin/sh -c '/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/kraft/server.properties > /home/kafka/kafka/kafka.log 2>&1'
...

הוסף שורה אחת עליון לה, כך שהיא תיראה כך:

kafka.service
...
User=kafka
Environment="KAFKA_OPTS=-Djava.security.auth.login.config=/home/kafka/kafka/config/kraft/kafka-server-jaas.conf"
ExecStart=/bin/sh -c '/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/kraft/server.properties > /home/kafka/kafka/kafka.log 2>&1'
...

אית כך, אתה מגדיר את הפרמטר java.security.auth.login.config בתצורה לנתיב של קובץ התצורה של JAAS, מופרד מתצורת Kafka הראשית. לאחר שהשגת את זה, שמור וסגור את הקובץ. רענן את ההגדרה של השרות על ידי הרצת:

sudo systemctl daemon-reload

אז, הפעל מחדש Kafka:

sudo systemctl restart kafka

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

שלב 2 – התחברות לקבוצת מוגנת

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

הסקריפטים המתנים לשליטה בנושאים, יצירת וצריכת מסרים גם משתמשים באנגלית פנימית, ולכן מקבלים תצורת JAAS המפרטת את מיקומי חנות האמון והמפתח, וגם פרטי אימות SASL.

תשמור את התצורה הזו בקובץ בשם client-jaas.conf בתיקיית הבית שלך. יצירה ופתיחה לעריכה:

nano ~/client-jaas.conf

הוסף את השורות הבאות:

~/client-jaas.conf
security.protocol=SASL_SSL
ssl.truststore.location=/home/kafka/kafka-ssl/truststore/kafka.truststore.jks
ssl.truststore.password=your_tls_password
ssl.keystore.location=/home/kafka/kafka-ssl/keystore/kafka.keystore.jks
ssl.keystore.password=your_tls_password

sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin";
ssl.endpoint.identification.algorithm=

בדומה לפעם קודמת, תגיעו לסגוריית הפרוטוקול של SASL_SSL ותספקו את המסלולים והסיסמא למאגרי המפתחים והאמונות שהוספתם. אחר כך, תגיעו למנגנון SASL של PLAIN ותספקו את המידע האישי למשתמש admin. תנקישו בבירור את הפרמטר ssl.endpoint.identification.algorithm כדי למנוע בעיות התחברות, כי השקטים המקוריים מגדירים את שמו המחשב שבו מועדכן כסף הייצוא, שעשוי להיות לא נכון.

חליפו your_tls_password עם הערך הנכון, אחר כך שינויו וסגירת הקובץ.

כדי להעביר את הקובץ הזה לשירותים, תוכלו להשתמש בפרמטר --command-config. ניסוי ליצירת טופיק חדש בקהילה בהצגה הבאה:

bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic new_topic --command-config ~/client-jaas.conf

הפקטיבציה של הפקד צריכה להצליח בהצלחה:

Output
... Created topic new_topic.

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

bin/kafka-topics.sh --bootstrap-server localhost:9092 --list --command-config ~/client-jaas.conf

הידועה תראה ש new_topic נמצא:

Output
__consumer_offsets new_topic ...

ברשומה הזו, התארגנתם את התקנת קאפקה שלכם להשתמש בהצפנה TLS עבור תנועה וSASL עבור אמת מזהה עם שילובים של שם משתמש וסיסמה. עכשיו, תלמדו איך לשלוח מספר מדדים Kafka דרך JMX בעזרת פרומתרוס.

שלב 3 – ניהול מדדים JMX של Kafka בעזרת פרומתרוס

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

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

הגדרת Kafka ופרומתאוס

לפני שתמשיכו, יהיה עליכם להתקין את פרומתאוס. במכשירים Ubuntu, ניתן להשתמש ב- apt. עדכנו את מאגרי ההתקנה על-ידי הרצת:

sudo apt update

אז, התקנו את פרומתאוס:

sudo apt install prometheus -y

לפלטפורמות אחרות, בבקשה עקבו אחר ההוראות להתקנה באתר הרשמי.

ברגע שהתקנת הסיסמה תהיה מוכנה, תצטרך להוסיף ספריית הייצוג JMX עבור Prometheus להתקנת הקafka שלך. תנוע לדף השישורים ובחר את השישור האחרון שעוצב כך שיש בשם את javaagent. בזמן כתיבתי, הגירסה האחרונה הזמינה היתה 0.20.0. תשתמש בפקודה הבאה כדי להוריד אותה לתוך המנוע ה libs/ בה מותקן Kafka:

curl https://repo.maven.apache.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.20.0/jmx_prometheus_javaagent-0.20.0.jar -o ~/kafka/libs/jmx_prometheus_javaagent.jar

הספרייה הזו של ייצוג JMX יתקבלת עכשיו על ידי Kafka.

לפני שתפעיל את הייצוגן, תצטרך להגדיר את המדגם שהוא ידווח לPrometheus, ותאחסן את ההגדרה הזו בקובץ שנקרא jmx-exporter.yml מתחת ל config/ של ההתקנת של Kafka. הפרויקט של ייצוג JMX מעניק הגדרה ברת הציבור מותאמת, אז תבצע את הפקודה הבאה כדי לאחסן אותה בתוך jmx-exporter.yml בתחתית config/ של ההתקנת שלך:

curl https://raw.githubusercontent.com/prometheus/jmx_exporter/main/example_configs/kafka-2_0_0.yml -o ~/kafka/config/jmx-exporter.yml

בהמשך, כדי לפעול את הייצוגן, תצטרך לשנות את שירות הKafka systemd. תצטרך לשנות את משמעות המאפיין KAFKA_OPTS כדי לכלול את הייצוגן ואת ההגדרה שלו. בוא על פנים עם הפקודה הבאה כדי לערוך את השירות:

sudo systemctl edit --full kafka

שינה את שורת Environment על פנים כך:

kafka.service
Environment="KAFKA_OPTS=-Djava.security.auth.login.config=/home/kafka/kafka/config/kraft/kafka-server-jaas.conf -javaagent:/home/kafka/kafka/libs/jmx_prometheus_javaagent.jar=7075:/home/kafka/kafka/config/jmx-exporter.yml"

כאן, תשתמש באגרון -javaagent כדי להתחיל את הייצוגן עם ההגדרה שלו.

שמור וסגיר את הקובץ כשהסיימת, והתחיל את Kafka בפקודה הבאה:

sudo systemctl restart kafka

אחרי דקה אחת, בד

sudo ss -tunelp | grep 7075
Output
tcp LISTEN 0 3 *:7075 *:* users:(("java",pid=6311,fd=137)) uid:1000 ino:48151 sk:8 cgroup:/system.slice/kafka.service v6only:0 <->

השורה הזו מראה שהפורט 7075 בשימוש על ידי תהליך ג 'ובה בו מתחילים על ידי שירות קאפקה, שמתייחס למוצע הייצוא JMX.

עכשיו תסו configure Prometheus כדי להשגיח על המדדים JMX המייצאים. הקובץ העיקרי של ההגדרות שלו נמצא במקום /etc/prometheus/prometheus.yml, אז פתח אותו עבור עריכת:

sudo nano /etc/prometheus/prometheus.yml

חיפש את השורות הבאות:

/etc/prometheus/prometheus.yml
...
# ההגדרה העיקרית ללוטים שמכילה בדיוק אחת עמודה ללוט:
# פה זו בעצם Prometheus עצמה.
scrape_configs:
  # שם העבודה נוסף כתג 'עבודה=<עבודה_שם> לכל רשימה של זמנים שנלקטים מההגדרה הזו.
  - job_name: 'prometheus'

    # הפסיק את הברירת המובן הגלובלית ולקחת מטריטים מהעבודה הזו כל 5 שניות.
    scrape_interval: 5s
    scrape_timeout: 5s

    # מסלול המדדים מובעל לבסיס '/metrics'
    # השיטה מובעלת לבסיס 'http'.

    static_configs:
      - targets: ['localhost:9090']

  - job_name: node
    # אם prometheus-node-exporter מותקן, תשלוף סטטיסקסים על המכונה המקומית
    # בדרך ברת הרגע.
    static_configs:
      - targets: ['localhost:9100']

מתחת ל scrape_configs, שמספר איזורים של מידע של Prometheus צריך להסתכל עליהם, תוסף אזור חדש ללוטת מדדי Kafka:

/etc/prometheus/prometheus.yml
# תצורת סקריפינג המכילה בדיוק נקודת קצה אחת לסקריפינג:
# כאן זה פרומתיאוס עצמו.
scrape_configs:
  # שם המשרה מתווסף כתג `job=<job_name>` לכל רצף זמן שנלקח מהתצורה הזו.
  - job_name: 'prometheus'

    # להתגבר על הברירת המחדל הגלובלית ולסקריף מטריצות מהמשרה הזו כל 5 שניות.
    scrape_interval: 5s
    scrape_timeout: 5s

    # metrics_path מכיל בברירת מחדל את הנתיב '/metrics'
    # scheme מכיל בברירת מחדל את 'http'.

    static_configs:
      - targets: ['localhost:9090']

  - job_name: node
    # אם prometheus-node-exporter מותקן, לקחת סטטיסטיקות על המכונה המקומית
    # בברירת מחדל.
    static_configs:
      - targets: ['localhost:9100']

  - job_name: 'kafka'
    static_configs:
    - targets: ['your_domain:7075']

המשרה kafka יש מטרית אחת, שמכוונת לנקודת הקצה של JMX exporter.

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

sudo systemctl restart prometheus

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

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

חיפוש מדדים בגראפנה

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

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

הזינו http://your_domain_name:9090, והחלףו את השם המקומי האמיתי שלכם, אחר כך תדלגו למטה ותלחצו על שמירה ובדיקה. אתה צריך לקבל מסר הצלחה:

החיבור לPrometheus נוסף לגראפנה. תלחצו על התפקדות בסדרה, ותוכלו לבחור מדד. ניתן להקליד kafka_ כדי לרשום את כל המדדים שקשורים למערכת המקום, כפי שרואים:

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

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

שלב 4 – ניהול קבצות Kafka בעזרת AKHQ

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

תאחסין את הייצוא המושלם ואת ההגדרות שלו בתוך תיבת שם akhq. בונים אותה בתיבת הבית שלך על ידי הרצת:

mkdir ~/akhq

ניווט אליה:

cd ~/akhq

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

curl -L https://github.com/tchiotludo/akhq/releases/download/0.24.0/akhq-0.24.0-all.jar -o ~/akhq/akhq.jar

עכשיו הורידת את AKHQ, ומוכן להגדיר את ההגדרות שלו עבור התחברה לקבצת הקלט שלך. תאחסין את זה בקובץ שנקרא akhq-config.yml. בונים ופתחו אותו עבור עריכה על ידי הרצת:

nano ~/akhq/akhq-config.yml

הוסף את השורות הבאות:

~/akhq/akhq-config.yml
akhq:
  connections:
    localhost-sasl:
      properties:
        bootstrap.servers: "localhost:9092"
        security.protocol: SASL_SSL
        sasl.mechanism: PLAIN
        sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin";
        ssl.truststore.location: /home/kafka/kafka-ssl/truststore/kafka.truststore.jks
        ssl.truststore.password: secret
        ssl.keystore.location: /home/kafka/kafka-ssl/keystore/kafka.keystore.jks
        ssl.keystore.password: secret
        ssl.key.password: secret
        ssl.endpoint.identification.algorithm: ""

זו הגדרה בסיסית של AKHQ, שמציינת קבוצה אחת ב־localhost:9092 עם הפרמטרים המתאימים של SASL ו־TLS שצויינו. גם קבוצות מרובות בו־זמנית נתמכות כי אתה יכול להגדיר כמה שיחידות חיבורים אתה רוצה. זה הופך את AKHQ לגמיש לניהול Kafka. לאחר שהשגת את זה, שמור וסגור את הקובץ.

הלאה, יהיה עליך להגדיר שרות systemd להפעלת AKHQ ברקע. שרותי systemd יכולים להופעל, להפסק ולהופעל מחדש באופן עקבי.

תטמינ את תצורת השרות בקובץ בשם code-server.service, בתיקיית /lib/systemd/system, היכן שsystemd מאחסן את שרותיו. יצירתו באמצעות מערכת העריכה שלך:

sudo nano /etc/systemd/system/akhq.service

הוסף את השורות הבאות:

/etc/systemd/system/akhq.service
[Unit]
Description=akhq

[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c 'java -Dmicronaut.config.files=/home/kafka/akhq/akhq-config.yml -jar /home/kafka/akhq/akhq.jar'
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

ראשית תגדיר את התאור של השרות. אז, בחלק ה[Service], תגדיר את סוג השרות (simple אומר שהפקודה פשוט תתבצע) ותספק את הפקודה שתרוץ. תגן גם שהמשתמש שתרוץ תחתיו הוא kafka ושהשרות יופעל מחדש אם יצא.

בחלק ה[Install] תכתוב ל־systemd להפעיל את השרות הזה כאשר אתה מתחבר לשרת שלך. לאחר שהשגת את זה, שמור וסגור את הקובץ.

טען את תצורת השרות על ידי הרצת:

sudo systemctl daemon-reload

הפעל את שרות AKHQ על ידי הרצת הפקודה הבאה:

sudo systemctl start akhq

אז, בדוק אם הוא הופעל כראוי על ידי הצגת מצבו:

sudo systemctl status akhq

הפלט אמור להיראות כך:

Output
● akhq.service - akhq Loaded: loaded (/etc/systemd/system/akhq.service; disabled; vendor preset: enabled) Active: active (running) since Wed 2024-05-15 07:37:10 UTC; 3s ago Main PID: 3241 (sh) Tasks: 21 (limit: 4647) Memory: 123.3M CPU: 4.474s CGroup: /system.slice/akhq.service ├─3241 /bin/sh -c "java -Dmicronaut.config.files=/home/kafka/akhq/akhq-config.yml -jar /home/kafka/akhq/akhq.jar" └─3242 java -Dmicronaut.config.files=/home/kafka/akhq/akhq-config.yml -jar /home/kafka/akhq/akhq.jar

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

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

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

מאחר והנושא new_topic ריק, לחץ על הכפתור Produce to topic, שיפתח את הממשק לבחירת הפרמטרים של ההודעה החדשה:

אקהקו ימלא אוטומטית את שם הנושא עבורך. בשדה Value, הקלד Hello World!, אז לחץ Produce. ההודעה תשלח לקפקא, ותראה אותה בלשונית Data:

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

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

להקשיב פעמיים על נקודה יפתח את ההגדרות שלה, מאפשר לך לשנות כל אחד מההגדרות במרחק:

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

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

סיכום

במדריך זה, הבטיחת את ההתקנה של Kafka על ידי תצורת TLS להצפנה ו-SASL לאימות משתמש. גם הקמת את ייצוא מטריקים באמצעות Prometheus והצגתם ב-Grafana. אחר כך, למדת איך להשתמש ב-AKHQ, אפליקציה רשת לניהול קבוצות Kafka.


המחבר בחר לתרום ל־קרן התוכנה האפיפיונית כחלק מתוכנית כתוב עבור תרומות.

Source:
https://www.digitalocean.com/community/developer-center/how-to-secure-and-monitor-kafka