真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何利用PrometheusOperator實(shí)現(xiàn)自定義指標(biāo)監(jiān)控

如何利用Prometheus Operator實(shí)現(xiàn)自定義指標(biāo)監(jiān)控,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比全州網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式全州網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋全州地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。

在過去的文章中,我們花了相當(dāng)大的篇幅來(lái)聊關(guān)于監(jiān)控的話題。這是因?yàn)楫?dāng)你正在管理Kubernetes集群時(shí),一切都會(huì)以極快的速度發(fā)生變化。因此有一個(gè)工具來(lái)監(jiān)控集群的健康狀態(tài)和資源指標(biāo)極為重要。

在Rancher 2.5中,我們引入了基于Prometheus Operator的新版監(jiān)控,它可以提供Prometheus以及相關(guān)監(jiān)控組件的原生Kubernetes部署和管理。Prometheus Operator可以讓你監(jiān)控集群節(jié)點(diǎn)、Kubernetes組件和應(yīng)用程序工作負(fù)載的狀態(tài)和進(jìn)程。同時(shí),它還能夠通過Prometheus收集的指標(biāo)來(lái)定義告警并且創(chuàng)建自定義儀表盤,通過Grafana可以輕松地可視化收集到的指標(biāo)。

新版本的監(jiān)控也采用prometheus-adapter,開發(fā)人員可以利用其基于自定義指標(biāo)和HPA擴(kuò)展他們的工作負(fù)載。

我們將探索如何利用Prometheus Operator來(lái)抓取自定義指標(biāo)并利用這些指標(biāo)進(jìn)行高級(jí)工作負(fù)載管理。

安裝Prometheus

在Rancher 2.5中安裝Prometheus極為簡(jiǎn)單。僅需訪問Cluster Explorer -> Apps并安裝rancher-monitoring即可。

如何利用Prometheus Operator實(shí)現(xiàn)自定義指標(biāo)監(jiān)控

你需要了解以下默認(rèn)設(shè)置:

  • prometheus-adapter將會(huì)作為chart安裝的一部分啟用

  • ServiceMonitorNamespaceSelector 留為空,允許 Prometheus 在所有命名空間中收集 ServiceMonitors

如何利用Prometheus Operator實(shí)現(xiàn)自定義指標(biāo)監(jiān)控

安裝完成后,我們可以從Cluster Explorer訪問監(jiān)控組件。

如何利用Prometheus Operator實(shí)現(xiàn)自定義指標(biāo)監(jiān)控

部署工作負(fù)載

現(xiàn)在讓我們部署一個(gè)從應(yīng)用層暴露自定義指標(biāo)的示例工作負(fù)載。該工作負(fù)載暴露了一個(gè)簡(jiǎn)單的應(yīng)用程序,該應(yīng)用程序已經(jīng)使用Prometheus client_golang庫(kù)進(jìn)行了檢測(cè),并在/metric端點(diǎn)上提供了一些自定義指標(biāo)。

它有兩個(gè)指標(biāo):

  • http_requests_total

  • http_request_duration_seconds

以下manifest部署了工作負(fù)載、相關(guān)服務(wù)以及訪問該工作負(fù)載的ingress:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/name: prometheus-example-app
  name: prometheus-example-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: prometheus-example-app
  template:
    metadata:
      labels:
        app.kubernetes.io/name: prometheus-example-app
    spec:
      containers:
      - name: prometheus-example-app
        image: gmehta3/demo-app:metrics
        ports:
        - name: web
          containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: prometheus-example-app
  labels:
    app.kubernetes.io/name: prometheus-example-app
spec:
  selector:
    app.kubernetes.io/name: prometheus-example-app
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8080
      name: web
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
    name: prometheus-example-app
spec:
    rules:
    - host: hpa.demo
      http:
        paths:
        - path: /
          backend:
            serviceName: prometheus-example-app
            servicePort: 8080

部署ServiceMonitor

ServiceMonitor是一個(gè)自定義資源定義(CRD),可以讓我們聲明性地定義如何監(jiān)控一組動(dòng)態(tài)服務(wù)。

你可以訪問以下鏈接查看完整的ServiceMonitor規(guī)范:

https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#servicemonitor

現(xiàn)在,我們來(lái)部署ServiceMonitor,Prometheus用它來(lái)收集組成prometheus-example-app Kubernetes服務(wù)的pod。

kind: ServiceMonitor
metadata:
  name: prometheus-example-app
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: prometheus-example-app
  endpoints:
  - port: web

如你所見,現(xiàn)在用戶可以在Rancher監(jiān)控中瀏覽ServiceMonitor。

如何利用Prometheus Operator實(shí)現(xiàn)自定義指標(biāo)監(jiān)控

不久之后,新的service monitor和服務(wù)相關(guān)聯(lián)的pod應(yīng)該會(huì)反映在Prometheus服務(wù)發(fā)現(xiàn)中。

如何利用Prometheus Operator實(shí)現(xiàn)自定義指標(biāo)監(jiān)控

我們也能夠在Prometheus中看到指標(biāo)。

如何利用Prometheus Operator實(shí)現(xiàn)自定義指標(biāo)監(jiān)控

部署Grafana儀表盤

在Rancher 2.5中,監(jiān)控可以讓用戶將Grafana儀表盤存儲(chǔ)為cattle-dashboards命名空間中的ConfigMaps。

用戶或集群管理員現(xiàn)在可以在這一命名空間中添加更多的儀表盤以擴(kuò)展Grafana的自定義儀表盤。

Dashboard ConfigMap Example
apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-example-app-dashboard
  namespace: cattle-dashboards
  labels:
    grafana_dashboard: "1"
data:
  prometheus-example-app.json: |
    {
    "annotations": {
        "list": [
        {
            "builtIn": 1,
            "datasource": "-- Grafana --",
            "enable": true,
            "hide": true,
            "iconColor": "rgba(0, 211, 255, 1)",
            "name": "Annotations & Alerts",
            "type": "dashboard"
        }
        ]
    },
    "editable": true,
    "gnetId": null,
    "graphTooltip": 0,
    "links": [],
    "panels": [
        {
        "aliasColors": {},
        "bars": false,
        "dashLength": 10,
        "dashes": false,
        "datasource": null,
        "fieldConfig": {
            "defaults": {
            "custom": {}
            },
            "overrides": []
        },
        "fill": 1,
        "fillGradient": 0,
        "gridPos": {
            "h": 9,
            "w": 12,
            "x": 0,
            "y": 0
        },
        "hiddenSeries": false,
        "id": 2,
        "legend": {
            "avg": false,
            "current": false,
            "max": false,
            "min": false,
            "show": true,
            "total": false,
            "values": false
        },
        "lines": true,
        "linewidth": 1,
        "nullPointMode": "null",
        "percentage": false,
        "pluginVersion": "7.1.5",
        "pointradius": 2,
        "points": false,
        "renderer": "flot",
        "seriesOverrides": [],
        "spaceLength": 10,
        "stack": false,
        "steppedLine": false,
        "targets": [
            {
            "expr": "rate(http_requests_total{code=\"200\",service=\"prometheus-example-app\"}[5m])",
            "instant": false,
            "interval": "",
            "legendFormat": "",
            "refId": "A"
            }
        ],
        "thresholds": [],
        "timeFrom": null,
        "timeRegions": [],
        "timeShift": null,
        "title": "http_requests_total_200",
        "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
        },
        "type": "graph",
        "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
        },
        "yaxes": [
            {
            "format": "short",
            "label": null,
            "logBase": 1,
            "max": null,
            "min": null,
            "show": true
            },
            {
            "format": "short",
            "label": null,
            "logBase": 1,
            "max": null,
            "min": null,
            "show": true
            }
        ],
        "yaxis": {
            "align": false,
            "alignLevel": null
        }
        },
        {
        "aliasColors": {},
        "bars": false,
        "dashLength": 10,
        "dashes": false,
        "datasource": null,
        "description": "",
        "fieldConfig": {
            "defaults": {
            "custom": {}
            },
            "overrides": []
        },
        "fill": 1,
        "fillGradient": 0,
        "gridPos": {
            "h": 8,
            "w": 12,
            "x": 0,
            "y": 9
        },
        "hiddenSeries": false,
        "id": 4,
        "legend": {
            "avg": false,
            "current": false,
            "max": false,
            "min": false,
            "show": true,
            "total": false,
            "values": false
        },
        "lines": true,
        "linewidth": 1,
        "nullPointMode": "null",
        "percentage": false,
        "pluginVersion": "7.1.5",
        "pointradius": 2,
        "points": false,
        "renderer": "flot",
        "seriesOverrides": [],
        "spaceLength": 10,
        "stack": false,
        "steppedLine": false,
        "targets": [
            {
            "expr": "rate(http_requests_total{code!=\"200\",service=\"prometheus-example-app\"}[5m])",
            "interval": "",
            "legendFormat": "",
            "refId": "A"
            }
        ],
        "thresholds": [],
        "timeFrom": null,
        "timeRegions": [],
        "timeShift": null,
        "title": "http_requests_total_not_200",
        "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
        },
        "type": "graph",
        "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
        },
        "yaxes": [
            {
            "format": "short",
            "label": null,
            "logBase": 1,
            "max": null,
            "min": null,
            "show": true
            },
            {
            "format": "short",
            "label": null,
            "logBase": 1,
            "max": null,
            "min": null,
            "show": true
            }
        ],
        "yaxis": {
            "align": false,
            "alignLevel": null
        }
        }
    ],
    "schemaVersion": 26,
    "style": "dark",
    "tags": [],
    "templating": {
        "list": []
    },
    "time": {
        "from": "now-15m",
        "to": "now"
    },
    "timepicker": {
        "refresh_intervals": [
        "5s",
        "10s",
        "30s",
        "1m",
        "5m",
        "15m",
        "30m",
        "1h",
        "2h",
        "1d"
        ]
    },
    "timezone": "",
    "title": "prometheus example app",
    "version": 1
    }

現(xiàn)在,用戶應(yīng)該能夠在Grafana中訪問prometheus example app的儀表盤。

如何利用Prometheus Operator實(shí)現(xiàn)自定義指標(biāo)監(jiān)控

自定義指標(biāo)的HPA

這一部分假設(shè)你已經(jīng)將prometheus-adapter作為監(jiān)控的一部分安裝完畢了。實(shí)際上,在默認(rèn)情況下,監(jiān)控安裝程序會(huì)安裝prometheus-adapter。

用戶現(xiàn)在可以創(chuàng)建一個(gè)HPA spec,如下所示:

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: prometheus-example-app-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: prometheus-example-app
  minReplicas: 1
  maxReplicas: 5
  metrics:
  - type: Object
    object:
        describedObject:
            kind: Service
            name: prometheus-example-app
        metric:
            name: http_requests
        target:
            averageValue: "5"
            type: AverageValue

你可以查看以下鏈接獲取關(guān)于HPA的更多信息:

https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/

我們將使用自定義的http_requests_total指標(biāo)來(lái)執(zhí)行pod自動(dòng)伸縮。

如何利用Prometheus Operator實(shí)現(xiàn)自定義指標(biāo)監(jiān)控

現(xiàn)在我們可以生成一個(gè)樣本負(fù)載來(lái)查看HPA的運(yùn)行情況。我可以使用hey進(jìn)行同樣的操作。

hey -c 10 -n 5000 http://hpa.demo

如何利用Prometheus Operator實(shí)現(xiàn)自定義指標(biāo)監(jiān)控

開發(fā)人員和集群管理員可以利用該堆棧來(lái)監(jiān)控它們的工作負(fù)載,部署可視化,并利用Kubernetes內(nèi)可用的高級(jí)工作負(fù)載管理功能。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。


網(wǎng)頁(yè)名稱:如何利用PrometheusOperator實(shí)現(xiàn)自定義指標(biāo)監(jiān)控
分享路徑:http://weahome.cn/article/psogdj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部