0

次の設定をすべて設定しましたが、コマンドを入力しても request_per_second が表示されません

kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1

監視する必要があるnode.jsにprom-clientをインストールし、/metricsをテストしましたが、非常にうまく機能しており、メトリック「resquest_count」が返されるオブジェクトです

そのノードコードの重要な部分は次のとおりです

(...)
const counter = new client.Counter({
  name: 'request_count',
  help: 'The total number of processed requests'
});
(...)

router.get('/metrics', async (req, res) => {
  res.set('Content-Type', client.register.contentType)
  res.end(await client.register.metrics())
})

これは私のサービスモニター構成です

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: un1qnx-validation-service-monitor-node
  namespace: default
  labels:
    app: node-request-persistence
    release: prometheus
spec:
  selector:
    matchLabels:
      app: node-request-persistence
  endpoints:
  - interval: 5s
    path: /metrics
    port: "80"
    bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
  namespaceSelector:
    matchNames:
    - un1qnx-aks-development

これは node-request-persistence 構成です

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: node-request-persistence
  namespace: un1qnx-aks-development
  name: node-request-persistence
spec:
  selector:
    matchLabels:
      app: node-request-persistence
  template:
    metadata:
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/path: /metrics
        prometheus.io/port: "80"
      labels:
        app: node-request-persistence
    spec:
      containers:
      - name: node-request-persistence
        image: node-request-persistence
        imagePullPolicy: Always # IfNotPresent
        resources:
          requests:
            memory: "200Mi" # Gi
            cpu: "100m"
          limits:
            memory: "400Mi"
            cpu: "500m"
        ports:
        - name: node-port
          containerPort: 80

これはプロメテウス アダプターです。

prometheus:
  url: http://prometheus-server.default.svc.cluster.local
  port: 9090
rules:
  custom:
  - seriesQuery: 'request_count{namespace!="", pod!=""}'
    resources:
      overrides:
        namespace: {resource: "namespace"}
        pod: {resource: "pod"}
    name:
      as: "request_per_second"
    metricsQuery: "round(avg(rate(<<.Series>>{<<.LabelMatchers>>}[1m])) by (<<.GroupBy>>))"

これがHPです

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: un1qnx-validation-service-hpa-angle
  namespace: un1qnx-aks-development
spec:
  minReplicas: 1
  maxReplicas: 10
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: un1qnx-validation-service-angle
  metrics:
  - type: Pods
    pods:
      metric:
        name: request_per_second
      target:
        type: AverageValue
        averageValue: "5"

コマンド

kubectl get hpa -n un1qnx-aks-development

結果は「不明/5」

また、コマンド

kubectl get --raw "http://prometheus-server.default.svc.cluster.local:9090/api/v1/series"

結果は

サーバーからのエラー (NotFound): サーバーは要求されたリソースを見つけることができませんでした

収集されたメトリックについて何らかの値を返す必要があると思います...問題はサービスモニターにあると思いますが、これは初めてです

お気付きのように、別のデプロイ ポッドに基づいてデプロイをスケーリングしようとしていますが、そこに問題があるかどうかはわかりません

これは私の論文のためなので、答えていただければ幸いです

kubernetes - バージョン 1.19.9

プロメテウス - グラフ prometheus-14.2.1 アプリ バージョン 2.26.0

Prometheus アダプター - チャート 2.14.2 アプリ バージョン 0.8.4

そして、ヘルムを使用してインストールされたすべての場所

4

1 に答える 1