日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

開源Prometheus監控

Prometheus是一款面向云原生應用程序的開源監控工具,本文介紹如何基于阿里云容器Kubernetes版本部署Prometheus監控方案。

前提條件

背景信息

對于監控系統而言,監控對象通常分為以下兩類:

  • 資源監控:節點、應用的資源使用情況,在容器Kubernetes中可理解為節點的資源利用率、集群的資源利用率、Pod的資源利用率等。

  • 應用監控:應用內部指標的監控,例如實時統計應用的在線人數,并通過端口暴露來實現應用業務級別的監控與告警等。

在Kubernetes系統中,監控對象具體為:

  • 系統組件:Kubernetes集群中內置的組件,包括apiserver、controller-manager、etcd等。

  • 靜態資源實體:節點的資源狀態、內核事件等。

  • 動態資源實體:Kubernetes中抽象工作負載的實體,例如Deployment、DaemonSet、Pod等。

  • 自定義應用:應用內部需要定制化的監控數據以及監控指標。

對于系統組件和靜態資源實體的監控方式,在配置文件中指明即可。

對于動態資源實體的監控,可以使用Prometheus監控部署方案。

操作步驟

  1. 部署Prometheus監控方案。

    1. 登錄容器服務管理控制臺,在左側導航欄選擇市場 > 應用市場

    2. 應用市場頁面單擊應用目錄頁簽,搜索并單擊ack-prometheus-operator。

    3. ack-prometheus-operator頁面,單擊一鍵部署。

    4. 創建面板中,選擇集群和命名空間,然后單擊下一步。

    5. 參數配置頁面,設置相應參數,然后單擊確定

      查看部署結果:

      1. 執行以下命令,將集群中的Prometheus映射到本地9090端口。

        kubectl port-forward svc/ack-prometheus-operator-prometheus 9090:9090 -n monitoring
      2. 在瀏覽器中訪問localhost:9090,即可查看Prometheus。

      3. 選擇菜單欄Status > Targets,查看所有采集任務。采集任務如果所有任務的狀態為UP,表示所有采集任務均已正常運行。Targets

  2. 查看與展示數據聚合。

    1. 執行以下命令,將集群中的Grafana映射到本地3000端口。

      kubectl -n monitoring port-forward svc/ack-prometheus-operator-grafana 3000:80
    2. 在瀏覽器中訪問localhost:3000,選擇相應的Dashboard,即可查看相應的聚合內容。

      Dashboard

  3. 查看告警規則與設置告警壓制。

    • 查看告警規則

      在瀏覽器中訪問localhost:9090,選擇菜單欄Alerts,即可查看當前的告警規則。

      • 紅色:正在觸發告警。

      • 綠色:正常狀態。

      Alerts

    • 設置告警壓制

      執行以下命令,并在瀏覽器中訪問localhost:9093,選擇Silenced,設置告警壓制。

      kubectl --namespace monitoring port-forward svc/alertmanager-operated 9093

      image

上述步驟為您簡單的介紹了如何部署Prometheus監控方案,下面將為您詳細介紹一些不同場景下的配置。

使用容器服務的Prometheus完整的最佳實踐請參見云上Prometheus監控運維最佳實踐。

告警配置

如果您想要設置告警的接收方式以及設置告警接收的模板,請參考如下對alertmanager的config進行配置。

  • 設置告警接收方式

    prometheus-operator支持釘釘告警和郵件告警,如果需要開啟,請參見以下操作進行配置。

    • 配置釘釘告警

      如果需要添加釘釘告警功能,請在ack-prometheus-operator頁面,單擊一鍵部署,然后在參數配置向導頁面,找到dingtalk字段將enabled設置為true,Token字段填入釘釘的webhook地址;alertmanager的config字段找到receiver,填寫您receivers中對應的釘釘告警名稱(默認為Webhook)。

      例如您有兩個釘釘機器人,操作示例如下:

      1. 替換釘釘的token配置

        在您的釘釘機器人中,分別拷貝webhook地址替換為dingtalk1和dingtalk2的地址。即,使用webhook地址替換下圖中的https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxx

        token配置

      2. 修改receivers

        alertmanager的config字段找到receiver,填寫您receivers中對應的釘釘告警名稱,本例中分別為webhook1webhook2

      3. 修改URL的值

        將URL中的值替換成實際的dingtalk的值,本例中為dingtalk1dingtalk2

        webhook配置

      說明

      如果需要添加多個釘釘機器人,請將前面的Webhook依次遞增即可。

    • 配置郵件告警

      如果需要添加郵件告警功能,請在ack-prometheus-operator頁面,單擊一鍵部署,然后在參數配置向導頁面,將紅色選框內的郵件信息補充完整,在alertmanagerconfig字段找到receiver,填寫您receivers中對應的郵件告警名稱(默認為mail)。郵件告警

  • 設置告警接收模板

    您可以在alertmanager的templateFiles定義我們的告警模板,示例如下。模板設置

Prometheus掛載自定義ConfigMap

以下介紹兩種操作,將ConfigMap掛載到pod中的/etc/prometheus/configmaps/路徑下。

方法一:首次部署prometheus-operator

如果您是第一次部署prometheus-operator,請按照步驟1部署Prometheus監控方案。其中在參數配置向導頁面,找到prometheus的ConfigMaps字段,填入您自定義ConfigMap名稱。掛載configmap

方法二:已部署prometheus-operator

如果集群中已有部署好的prometheus-operator,請按照如下進行操作:

  1. 登錄容器服務管理控制臺,在左側導航欄選擇集群。

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇應用 > Helm。

  3. 在目標Helm應用右側操作列下單擊更新。

  4. 更新發布面板中的prometheus和alertmanager的ConfigMaps字段中,填入您自定義ConfigMap名稱后,單擊確定

    更新配置

    例如,您想要定義一個名稱為special-config的ConfigMap,里面包含prometheus的config文件。如果您想要在prometheus的pod啟動時,將其作為--config.file的參數,那么我們可以在prometheus的ConfigMaps字段添加如下字段,就可以將其掛載到我們的pod中了,其掛載路徑為/etc/prometheus/configmaps/。

    special-config的yml定義如下。

    special-config

    prometheus的ConfigMaps字段配置如下。configmaps

Grafana配置

  • Dashboard的外掛配置

    如果您想將Dashboard文件以ConfigMap的方式掛載到Grafana pod中,您可以在ack-prometheus-operator頁面,單擊一鍵部署,然后在參數配置向導頁面,找到extraConfigmapMounts,您可以在下圖的字段中進行掛載配置。dashboard外掛配置

    說明
    • 先確保dashboard以ConfigMap的形式存在于集群中。

      ConfigMap的labels必須要和其他的ConfigMap保持一致。

    • 在Grafana的extraConfigmapMounts字段填入我們的ConfigMap信息以及掛載信息。

    • mountPath是/tmp/dashboards/

    • ConfigMap是您定義的ConfigMap的名稱。

    • name是您Dashboard的JSON名稱。

  • Dashboard的持久化

    Grafana支持Dashboard的持久化操作如下:

    1. 登錄容器服務管理控制臺,在左側導航欄單擊集群。

    2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇應用 > Helm

    3. 找到ack-prometheus-operator,然后單擊右側更新

    4. 更新發布面板,grafana的字段下找到persistence選項,按照下圖配置完成Grafana的持久化操作。

    grafana的持久化操作

    如果我們需要將我們的Dashboard導出到本地,我們可以通過將需要保存的Dashboard導出為JSON文件的方式,將其保存到本地。請參見Grafana導出。

常見問題

  • 釘釘配置后,沒有收到告警。

    1. 獲取釘釘的webhook地址。請參見場景三:使用釘釘實現Kubernetes監控告警。

    2. 找到dingtalk字段,將enabled設置為true,將Token字段填入釘釘的webhook地址。請參見告警配置中的釘釘告警配置。

  • 部署prometheus-operator時報錯。

    報錯信息如下

    Can't install release with errors: rpc error: code = Unknown desc = object is being deleted: customresourcedefinitions.apiextensions.k8s.io "xxxxxxxx.monitoring.coreos.com" already exists

    在卸載prometheus-operator的時候沒有將上一次部署的自定義資源(CRD)及時清理掉,執行如下命令,刪除CRD并重新部署。

    kubectl delete crd prometheuses.monitoring.coreos.com
    kubectl delete crd prometheusrules.monitoring.coreos.com
    kubectl delete crd servicemonitors.monitoring.coreos.com
    kubectl delete crd alertmanagers.monitoring.coreos.com
  • 郵件告警沒有生效 。

    郵件告警沒有生效,有可能是因為smtp_auth_password填寫的是您的登錄密碼,而非授權碼。另外SMTP的服務器地址需要加端口號。

  • 如果在單擊YAML更新時,出現當前集群暫時無法訪問,請稍后重試或提交工單反饋信息。

    此問題原因是tiller的配置文件過大,導致的集群無法訪問,您可以先將部分注釋刪除,再將配置文件以ConfigMap形式,掛載到pod中,目前prometheus-operator只支持prometheus和alertmanager pod的掛載,詳情請參見Prometheus掛載自定義ConfigMap中的方法二。

  • 部署prometheus-operator后,如何開啟其中的功能?

    當部署好prometheus-operator后,如果要開啟部分功能,在集群信息頁面,選擇應用 > Helm,在ack-prometheus-operator右側,單擊更新,找到對應的開關,進行相應的設置,然后單擊確定開啟您想要的功能。

  • TSDB和阿里云云盤的選擇。

    TSDB支持的地域比較少,而阿里云云盤是全域支持,數據回收策略請參見以下配置。數據回收策略

  • Grafana dashboard顯示有問題

    在集群信息頁面選擇應用 > Helm,在ack-prometheus-operator右側,單擊更新,查看clusterVersion的值是否為正確的集群版本。Kubernetes集群是1.16以前的版本,這里請填寫1.14.8-aliyun.1,1.16及以后的版本,請填寫1.16.6-aliyun.1。

  • 刪除ack-prometheus的命名空間后,重新安裝ack-prometheus失敗。

    只刪除ack-prometheus的命名空間,會導致資源刪除后有殘留配置,影響再次安裝。您可以執行以下操作,刪除殘余配置。

    1. 刪除RBAC權限。

      1. 刪除ClusterRole。

        kubectl delete ClusterRole ack-prometheus-operator-grafana-clusterrole
        kubectl delete ClusterRole ack-prometheus-operator-kube-state-metrics
        kubectl delete ClusterRole psp-ack-prometheus-operator-kube-state-metrics
        kubectl delete ClusterRole psp-ack-prometheus-operator-prometheus-node-exporter
        kubectl delete ClusterRole ack-prometheus-operator-operator
        kubectl delete ClusterRole ack-prometheus-operator-operator-psp
        kubectl delete ClusterRole ack-prometheus-operator-prometheus
        kubectl delete ClusterRole ack-prometheus-operator-prometheus-psp
      2. 刪除ClusterRoleBinding。

        kubectl delete ClusterRoleBinding ack-prometheus-operator-grafana-clusterrolebinding
        kubectl delete ClusterRoleBinding ack-prometheus-operator-kube-state-metrics
        kubectl delete ClusterRoleBinding psp-ack-prometheus-operator-kube-state-metrics
        kubectl delete ClusterRoleBinding psp-ack-prometheus-operator-prometheus-node-exporter
        kubectl delete ClusterRoleBinding ack-prometheus-operator-operator
        kubectl delete ClusterRoleBinding ack-prometheus-operator-operator-psp
        kubectl delete ClusterRoleBinding ack-prometheus-operator-prometheus
        kubectl delete ClusterRoleBinding ack-prometheus-operator-prometheus-psp
    2. 刪除CRD。

      kubectl delete crd alertmanagerconfigs.monitoring.coreos.com
      kubectl delete crd alertmanagers.monitoring.coreos.com
      kubectl delete crd podmonitors.monitoring.coreos.com
      kubectl delete crd probes.monitoring.coreos.com
      kubectl delete crd prometheuses.monitoring.coreos.com
      kubectl delete crd prometheusrules.monitoring.coreos.com
      kubectl delete crd servicemonitors.monitoring.coreos.com
      kubectl delete crd thanosrulers.monitoring.coreos.com