プロメテウスの監視船、apiserverと自動検出および監視サービス付き

内蔵のモニタcAdvisorコンテナを使用し
、すでに組み立てkubeletに組み込まれcAdvisorを、私たちはV1 /ノード/ <ノード> /プロキシ/メトリクス/独立し、cAdvisorデータパス/ APIをインストールする必要はありません
。1、求人が増加し、アップデートプロメテウスコンフィギュレーション

- job_name: 'kubernetes-cadvisor'
  kubernetes_sd_configs:
  - role: node
  scheme: https
  tls_config:
    ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  relabel_configs:
  - action: labelmap
    regex: __meta_kubernetes_node_label_(.+)
  - target_label: __address__
    replacement: kubernetes.default.svc:443
  - source_labels: [__meta_kubernetes_node_name]
    regex: (.+)
    target_label: __metrics_path__
    replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor

プロメテウス-kubectl -f $ cm.yaml適用
$ kubectl GET SVC -n KUBE-OPS | grepのプロメテウス
プロメテウスNodePort 10.102.197.83 9090 <なし>:32619 / TCPの
$カール-X POST " http://10.102.197.83:9090 / - /リロード「#は、構成を検証します

監視apiserver
1、仕事を増やし、コンフィギュレーションの更新プロメテウス

- job_name: 'kubernetes-apiservers'
  kubernetes_sd_configs:
  - role: endpoints
  scheme: https
  tls_config:
    ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  relabel_configs:
  - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
    action: keep
    regex: default;kubernetes;https

プロメテウス-kubectl -f $ cm.yaml適用
$ kubectl GET SVC -n KUBE-OPS | grepのプロメテウス
プロメテウスNodePort 10.102.197.83 9090 <なし>:32619 / TCPの
$カール-X POST " http://10.102.197.83:9090 / - /リロード「#は、構成を検証します

一般的なSVC自動検出の設定と監視
1を、仕事を増やし、コンフィギュレーションの更新プロメテウス

- job_name: 'kubernetes-service-endpoints'
  kubernetes_sd_configs:
  - role: endpoints
  relabel_configs:
  - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
    action: keep
    regex: true
  - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
    action: replace
    target_label: __scheme__
    regex: (https?)
  - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
    action: replace
    target_label: __metrics_path__
    regex: (.+)
  - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
    action: replace
    target_label: __address__
    regex: ([^:]+)(?::\d+)?;(\d+)
    replacement: $1:$2
  - action: labelmap
    regex: __meta_kubernetes_service_label_(.+)
  - source_labels: [__meta_kubernetes_namespace]
    action: replace
    target_label: kubernetes_namespace
  - source_labels: [__meta_kubernetes_service_name]
    action: replace
    target_label: kubernetes_name

自動的にクラスタサービスを発見するために、我々は、サービスの注釈領域を追加する必要があります。prometheus.io/scrape=true文
の$ kubectlはプロメテウス-cm.yaml -f適用します
$ kubectl GET SVC -n KUBE-OPS | grepのプロメテウス
NodePort 10.102.197.83プロメテウス9090 <なし>:32619 / TCPの
$カール-X POST " http://10.102.197.83:9090/-/reload "の設定#検証し
、2のSVCのRedisを変更し、動的に検出および監視するために(静的な知見に基づいて)
注釈を追加

kind: Service
apiVersion: v1
metadata:
  name: redis
  namespace: kube-ops
  annotations:
    prometheus.io/scrape: "true"
    prometheus.io/port: "9121"
spec:
  selector:
    app: redis
  ports:
  - name: redis
    port: 6379
    targetPort: 6379
  - name: prom
    port: 9121
    targetPort: 9121

Redisのでprometheus.io/scrape=trueを追加前にこの注釈を作成し、このサービス
のサービス上記の9121のメトリックのサービス・インターフェースのRedisのRedisの-輸出国は、我々はまた、注釈に、このようなprometheus.io/port=9121を追加する必要があるため
Prome-kubectl -f $のredis.yaml適用
、3 SVCのtrafikを変更し、動的に発見し、(静的に基づいています)を監視します

apiVersion: v1
metadata:
  name: traefik-ingress-service
  namespace: kube-system
  annotations:
    prometheus.io/scrape: "true"        #新增
    prometheus.io/port: "8080"        #新增
spec:
  selector:
    k8s-app: traefik-ingress-lb
  ports:
    - protocol: TCP
      port: 80
      name: web
    - protocol: TCP
      port: 8080
      name: admin
  type: NodePort

私たちは、新しいサービスを持っていた後、サービス自体は/メトリック・インターフェースを提供する場合、私たちは絶対に静的な方法を設定する必要はありません
、以下のようなサービスに動的な発見、デフォルトの自動動的検出および監視サービスを投入後:プロメテウス自体、kube- DNS
。4、自動検出KUBE-状態メトリック
ステートフルポッド、DaemonSet、展開、ジョブ実装は、 cronジョブクラスタ内の他のオブジェクトのリソースをKubernetes
$ Gitのクローンhttps://github.com/kubernetes/kube-state- metrics.git
$ CD KUBE-状態メトリック/ Kubernetes
$ kubectl -fを適用します。
Kubernetesに展開KUBE-状態メトリックの後、あなたはKubernetesクラスタサービスがございますkubernetesサービス・エンドポイントでは自動的プロメテウスこの仕事KUBE-状態メトリックを見つけ、そしてメトリクスを引くようになった、サービス定義はprometheus.io/scrapeを含みの展開マニフェスト定義ファイルKUBE-状態メトリックKUBE-状態メトリック-service.yamlためです:「真」そう1つの注釈

おすすめ

転載: blog.51cto.com/dongdong/2432748