Keycloak在26.2版本提供了更多的可觀測性能力[^1][^2]。不過當前SSO服務使用的版本還未有此能力,儘管有提供有限的Metrics資訊,不過以那些資訊是無法知道SSO服務的使用情況。
那麼每分鐘處理440次請求、尖峰時刻可以在1分鐘內高達2000次請求,這樣的統計資訊是怎麼來的呢?
[^1]: Observability in Keycloak 26.2
[^2]: 使用追踪进行根本原因分析
這其實是透過旁車的設計機制。
所謂旁車(Sidecar),指的是會與機車一起向前的可掛載車位。
在服務概念就是與服務一起運行的額外服務。它可能提供了額外的能力或是只是做一些最基本的事務。
在SSO的例子來說,提供給SSO使用的APISIX,也僅提供給SSO使用。也就是透過觀測APISIX,就可以間接了解SSO服務的使用情況。
透過APISIX的skywalking外掛或opentelemetry外掛,以及啓用prometheus和node-status。可以採集到像是下面的資訊:
簡單來說,這個方法就是 「曲線救國」 :當主服務無法提供監控數據時,就透過其旁車來達成可觀測性的目的。
此處也僅示範如何啓用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
然後就可以瀏覽 http://localhost:9091/apisix/prometheus/metrics 。也就可以在透過prometheus或其他collector工具定期拉取metrics資訊。