阿里雲容器服務Kubernetes(簡稱ACK)支持一鍵部署Istio,能夠參考文檔在ACK上部署使用Isito。Istio on ACK提供了豐富的監控能力,爲網格中的服務收集遙測數據,其中Mixer是負責提供策略控制和遙測收集的Istio組件。使用Prometheus進行監控是Istio提供的監控能力之一。html
告警能力在Prometheus的架構中被劃分紅兩個獨立的部分:Prometheus負責產生告警,而Alertmanager負責告警產生後的後續處理。以下所示,經過在Prometheus中定義告警規則,Prometheus會週期性的對告警規則進行計算,若是知足告警觸發條件就會向Alertmanager發送告警信息。web
Alertmanager做爲一個獨立的組件,負責接收並處理來自Prometheus Server(也能夠是其它的客戶端程序)的告警信息。Alertmanager能夠對這些告警信息進行進一步的處理,好比當接收到大量重複告警時可以消除重複的告警信息,同時對告警信息進行分組而且路由到正確的通知方,Prometheus內置了對郵件、Slack等多種通知方式的支持,同時還支持與Webhook的集成,以支持更多定製化的場景。例如,徹底能夠經過Webhook與釘釘機器人進行集成,從而經過釘釘接收告警信息。同時AlertManager還提供了靜默和告警抑制機制來對告警通知行爲進行優化。api
如下介紹如何擴展AlertManager集成釘釘,並經過AlertManager幫助實現Istio on ACK在可觀測性監控方面的能力。安全
配置 | 說明 |
---|---|
集羣 | 選擇目標集羣。 |
命名空間 | 選擇資源對象所屬的命名空間,默認是 default。此處選擇istio-system。 |
示例模板 | 此處選擇自定義。 |
模板 | 填寫如下自定義內容。 |
自定義YAML內容以下:架構
apiVersion: v1 kind: Service metadata: name: dingtalkservice labels: app: dingtalkservice service: dingtalkservice spec: ports: - port: 8060 name: http selector: app: dingtalkservice --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: dingtalkservice labels: app: dingtalkservice version: v1 spec: replicas: 1 template: metadata: labels: app: dingtalkservice version: v1 spec: containers: - name: prometheus-webhook-dingtalk image: timonwong/prometheus-webhook-dingtalk imagePullPolicy: IfNotPresent args: - --ding.profile=webhook1={替換爲上述步驟中複製的webhook地址} ports: - containerPort: 8060 --- kind: ConfigMap apiVersion: v1 metadata: name: alertmanager data: config.yml: |- global: resolve_timeout: 5m templates: - '/etc/alertmanager-templates/*.tmpl' route: group_by: ['alertname', 'cluster', 'service'] group_wait: 30s group_interval: 5m repeat_interval: 1m receiver: webhook_alert routes: - match: severity: info receiver: webhook_alert - match: severity: warning receiver: webhook_alert receivers: - name: webhook_alert webhook_configs: - url: 'http://dingtalkservice:8060/dingtalk/webhook1/send' send_resolved: false --- apiVersion: v1 kind: Service metadata: annotations: prometheus.io/scrape: 'true' prometheus.io/path: '/metrics' labels: name: alertmanager name: alertmanager spec: selector: app: alertmanager type: ClusterIP ports: - name: alertmanager protocol: TCP port: 9093 targetPort: 9093 --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: alertmanager spec: replicas: 1 selector: matchLabels: app: alertmanager template: metadata: name: alertmanager labels: app: alertmanager spec: containers: - name: alertmanager image: prom/alertmanager:v0.15.0 args: - '--config.file=/etc/alertmanager/config.yml' - '--storage.path=/alertmanager' ports: - name: alertmanager containerPort: 9093 volumeMounts: - name: config-volume mountPath: /etc/alertmanager - name: alertmanager mountPath: /alertmanager serviceAccountName: prometheus volumes: - name: config-volume configMap: name: alertmanager - name: alertmanager emptyDir: {}
groups: - name: fake rules: - alert: rules-alert expr: | histogram_quantile(0.99, sum by(source_app, source_version, destination_service, destination_version, le) (irate(istio_request_duration_seconds_bucket[1m])) ) > 3 for: 1m labels: alertname: "request-duration-3" annotations: summary: "Request duration gt 3" from: "{{ $labels.source_app }}:{{ $labels.source_version }}" to: "{{ $labels.destination_service }}:{{ $labels.destination_version }}"
該規則描述過去1分鐘內99%請求時延超過3s時會發出告警。app
阿里雲容器服務Kubernetes(簡稱ACK)支持一鍵部署Istio,能夠參考文檔在ACK上部署Isito。
默認部署中的Prometheus服務沒有對接AlertManager,須要按照以下步驟進行配置。微服務
enabled | true或者false,表示是否啓用Prometheus 收集度量日誌。默認狀況下啓用,即值爲true。 |
replicaCount | prometheus容器組的副本數,默認值爲1。 |
persist | true或者false,表示是否啓用持久化存儲。設置爲true時,必須指定TSDB實例地址。 |
tsdbEndpoint | TSDB實例地址,啓用持久化存儲時必須指定。 |
retention | 默認的數據保留時間,8760h0m0s即爲24*365小時,即1年 |
scrapeInterval | 全局默認抓取時間間隔,默認爲15s |
prometheusRulesConfigMap | 告警規則配置項的名稱 |
alerting | 配置對接的AlertManager服務,配置以下代碼所示 |
alerting: alertmanagers: - static_configs: - targets: ["alertmanager:9093"]
當你的應用服務調用知足觸發條件時,在Prometheus控制檯上,點擊Alerts頁籤,能夠看到以下相似內容。優化
同時,相應的釘釘羣也會收到相似的告警信息,以下所示。阿里雲
在阿里雲Kubernetes容器服務基礎之上,快速搭建一套用於鏈接、管理以及安全化微服務的開放平臺Istio,爲應用引入和配置多個相關服務。使用Prometheus進行監控是Istio提供的監控能力之一,經過擴展AlertManager集成釘釘助力Istio on ACK可觀測性監控能力。url
原文連接 本文爲雲棲社區原創內容,未經容許不得轉載。