使⽤ KSQL 來即時串流分析
Kubernetes (Prometheus) 的
Metrics 訊息流
緯創IT先進技術實驗室
有關講者
• 5年的生產管理/物料管理
• 3年的MES/SFC系統開發運維
• 3年的ERP (SAP-MM模組)/EAI 的導入開發Leader
• 2年的End-To-End Business Integration Analyst
• 1年的OEM Sales Team Leader
• 4年的企業營運分析/集團合併財報系統部門經理
• 6年的大數據新技術研究/推廣
• 緯創IT先進技術實驗室(witlab) – 主持人
• 緯創工業4.0/數位轉型IT系統架構 – 架構師
• 2017 ,2018, 2019臺灣資料工程協會年會(Data-Conf.)的講者
2
摘要
3
• ⼤部分使⽤容器技術的企業,不約⽽同都會搭配以 Kubernetes為⾸的
容器管理調度平台。Kubernetes ⼰經成為各⼤雲端供應商相繼⽀持的
平台, 同時也廣泛地在企業內部擔負起重要的⾓⾊。
• 為了能夠對 Kubernetes 有更完整的 Day2 運維機制, 佈建
Prometheus來收集 metrics 並搭配 alert manager 及 grafana 來搭建
監控與預警的平台⼰經成為業界標準。
• 然⽽ Prometheus 的資料模型並無法讓我們簡單地加入⼀些額外要分
析的 label (enrichment/join), 或是客製資料處理的邏輯。
• 因此, 結合了 Kafka 與 KSQL 來延伸對Kubernetes 的及時串流分析, 不
僅補強 Prometheus 的弱項, 同時開展了對 Kubernetes 監控與預警的
能⼒。
⼀個房東的念想
4
• 資源池化意味著IT資源可以被統⼀管理、統⼀調度,可以根據業務的需
要提供最適合的資源,從⽽使有限的資源得到充分的利⽤。
• 服務化意味著終端租⼾(各個開發Team) 只需要進⾏簡單的⾃主服務
(Self-Service)訂閱操作,就可以迅捷地獲得服務與資源。
⼀個房東的念想
5
平台的⽬標(1111):
• One Cloud à IT的資源匯集在⼀朵雲中,資源可以在雲中以可控制與管
理的⽅式來流動
• One Stop à ⼀站式管理數據中⼼的資源和應⽤
• One Click à 租⼾可以⾃主式⼀鍵式取得資源(⽤多少, 付多少)
• One Minute à 從租⼾申請服務到租⼾獲得服務的時間低於1分鐘
⼀個房東的念想: 多租⼾管理
PaaS
IaaS
Bare
metal
SaaS Tenant Tenant Tenant Tenant
團隊#2團隊#1 團隊#3 團隊…
6
⼀個房東的念想: 多租⼾管理
PaaS
IaaS
Bare
metal
SaaS Tenant
團隊#1
• 房東指定房客要住那⼀層樓
• 把樓層錀匙交給簽約的房客
• 把樓層的⽔表, 電表及⽡斯表設定使⽤額度
• 房客分配樓層裡的房間給每⼀個家⼈及房
間錀匙
7
⼀個房東的念想: 資源池
PaaS
IaaS
Bare
metal
SaaS Tenant Tenant Tenant Tenant
團隊#2團隊#1 團隊#3 團隊…
8
⼀個房東的念想: 應⽤程式市集
PaaS
IaaS
Bare
metal
SaaS Tenant Tenant Tenant Tenant
團隊#2團隊#1 團隊#3 團隊…
Apps市集
9
⼀個房東的念想: ⾃主監控
PaaS
IaaS
Bare
metal
SaaS Tenant Tenant Tenant Tenant
團隊#2團隊#1 團隊#3 團隊…
10
當Kubernetes, Docker 偶遇 Rancher
11
多租⼾管理/資源池
12
多租⼾管理/資源池
13
應⽤程式市集
Apps市集
14
⾃主監控
15
⼀個房東的念想
16
• 那怎麼算錢呢?
• 那怎麼出細⽬呢?
• 那房客⽤電暴錶怎麼即時知道?
• ….
Prometheus簡介及其核⼼概念
17
18
使⽤Prometheus進⾏Kubernetes監控:架構概述
19
1. Prometheus服務器需要進⾏監控⽬標(target)⾃動發現。
使⽤Prometheus進⾏Kubernetes監控:架構概述
20
2. 除了應⽤程序指標之外,我們還希望Prometheus收集與Kubernetes服
務,節點和業務流程狀態相關的指標。
使⽤Prometheus進⾏Kubernetes監控:架構概述
21
3. Prometheus可以配置規則以使⽤PromQL觸發警報,alertmanager將負
責管理警報通知,分組等。
使⽤Prometheus進⾏Kubernetes監控:架構概述
22
4. Alertmanager組件配置接收器,網關以發送警報通知。
使⽤Prometheus進⾏Kubernetes監控:架構概述
23
5. Grafana可以作為Prometheus數據的顯⽰⾯板和儀表板。
使⽤Prometheus進⾏Kubernetes監控:架構概述
串流處理Prometheus與Rancher資料
24
如何及時處理不同資料源/事件
25
26
Prometheus
Remote write
6
架構:
Kafka 與 KSQL 來延伸對Kubernetes 的及時串流分析
27
Prometheus
Remote write
6
Prometheus
Remote write Connector
prometheus-remote-write-1.0.0.jar
1. 啟動Prometheus “Remote Write”
Prometheus “Remote Write”
https://prometheus.io/docs/operating/integrations
28
啟動Prometheus “Remote Write”
在spec的下⽅
增加remote
write的設定
29
啟動Prometheus “Remote Write”
確實收到從
Prometheus拋出
來的metrics了
kafka-avro-console-consumer
--property schema.registry.url=http://xx.xx.xx.xx:8081
--bootstrap-server xx.xx.xx.xx:9092
--topic metrics
30
31
Prometheus
Remote write
6
Prometheus
Remote write Connector
prometheus-remote-write-1.0.0.jar
2. 取得Rancher的Project-to-Namespaces
rancher-metadata-extractor-1.0.0.jar
取得Rancher的Project-to-Namespaces
https://medium.com/@gflourenco/part-i-rancher-2-java-api-client-hello-world-972c01e11bb6
32
33
Prometheus
Remote write
6
Prometheus
Remote write Connector
prometheus-remote-write-1.0.0.jar
3. 及時地Filter, Join 與Aggregate
Kafka 串流處理的演進
34
什麼是KSQL?
35
使⽤Kafka來進⾏串流處理
Stream Processing
Filter / Aggregate / Join
Kafka
Cluster
36
KSQL與Kafka
Kafka
Brokers
Zookeeper
Source
Systems
Target
Systems
Avro Schema
Avro Schema
Producer Consumer
Apache NiFi
Confluent
Schema Registry
Kafka
Streams
KSQL ksql-cli
Kafka
Connect
Java
Producer
Apache NiFi
Kafka
Connect
Java
Consumer
37
3. 及時地Filter, Join 與Aggregate
38
39

Datacon 2019-ksql-kubernetes-prometheus