iT邦幫忙

2025 iThome 鐵人賽

DAY 11
0
Cloud Native

與雲原生精靈共舞:APISIX使用者的兩年旅程系列 第 11

Ch6 - 如何監測 SSO 服務使用狀況?淺談旁車與 APISIX Prometheus Plugin

  • 分享至 

  • xImage
  •  

Keycloak在26.2版本提供了更多的可觀測性能力[^1][^2]。不過當前SSO服務使用的版本還未有此能力,儘管有提供有限的Metrics資訊,不過以那些資訊是無法知道SSO服務的使用情況。

那麼每分鐘處理440次請求、尖峰時刻可以在1分鐘內高達2000次請求,這樣的統計資訊是怎麼來的呢?

[^1]: Observability in Keycloak 26.2
[^2]: 使用追踪进行根本原因分析

這其實是透過旁車的設計機制。
所謂旁車(Sidecar),指的是會與機車一起向前的可掛載車位。
https://ithelp.ithome.com.tw/upload/images/20250925/20112470ob4X6rcIQk.png

在服務概念就是與服務一起運行的額外服務。它可能提供了額外的能力或是只是做一些最基本的事務。

在SSO的例子來說,提供給SSO使用的APISIX,也僅提供給SSO使用。也就是透過觀測APISIX,就可以間接了解SSO服務的使用情況。

https://ithelp.ithome.com.tw/upload/images/20250925/20112470zYQHYghJ2J.png

透過APISIX的skywalking外掛opentelemetry外掛,以及啓用prometheusnode-status。可以採集到像是下面的資訊:

https://ithelp.ithome.com.tw/upload/images/20250925/20112470fWH9jGLskm.png

https://ithelp.ithome.com.tw/upload/images/20250925/20112470KiO1QUMPPH.png

簡單來說,這個方法就是 「曲線救國」 :當主服務無法提供監控數據時,就透過其旁車來達成可觀測性的目的。

啓用prometheus

此處也僅示範如何啓用prometheus。

還記得在「Quick Start」裡docker-compose.yml檔案轉發了9091端口嗎?

  apisix:
    container_name: apisix
    restart: always
    image: "apache/apisix:3.2.2-debian"
    volumes:
      - ./apisix_config/config.yaml:/usr/local/apisix/conf/config.yaml:ro
    ports:
      - 9180:9180 # admin api
      - 9080:9080 # HTTP
      - 9091:9091 # prometheus
      - 9443:9443 # HTTPS
      - 9090:9090 # control api
      - 389:389 # Proxy AD Service
    environment:
      TZ: "Asia/Taipei"

要啓用promethus相當簡單,在apisix_config/config.yaml最後添加:

plugin_attr:
  prometheus:
    export_addr:
      ip: "0.0.0.0"
      port: 9091

這個設定並不會自動載入,需要重啓APISIX:

docker compose exec apisix apisix restart

https://ithelp.ithome.com.tw/upload/images/20250925/20112470S5lHKCrBdA.png

然後就可以瀏覽 http://localhost:9091/apisix/prometheus/metrics 。也就可以在透過prometheus或其他collector工具定期拉取metrics資訊。


上一篇
幕間 - 事件:SSO服務節點異常潮下,APSIX的負載平衡機制如何臨危救駕?
下一篇
Ch7 - APISIX 精準除錯術:不穩定 API 的動態記錄解方
系列文
與雲原生精靈共舞:APISIX使用者的兩年旅程12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言