k8s学习(二十六) 使用prometheus监控常用资源对象

news/2024/5/19 1:58:14 标签: prometheus, kube-state-metrics

1、监控apiserver
apiserver 作为 Kubernetes 最核心的组件,当然他的监控也是非常有必要的,对于apiserver 的监控我们可以直接通过 kubernetes 的 Service 来获取:

[root@master prometheus]# kubectl get services
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   14d

修改prometheus-cm.yaml
添加endpoint类型的job,并过滤到只有apiserver服务

 - 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
[root@master prometheus]# gedit prometheus-cm.yaml 
[root@master prometheus]# kubectl delete -f prometheus-cm.yaml 
configmap "prometheus-config" deleted
[root@master prometheus]# kubectl apply -f prometheus-cm.yaml 
configmap/prometheus-config created
curl -X POST http://10.105.89.6:9090/-/reload

查看效果

在这里插入图片描述

在这里插入图片描述

2、监控service

上面的 apiserver 实际上是一种特殊的 Service,现在我们同样来配置一个任务用来专门发现普通类型的 Service。
prometheus-cm.yaml中添加配置

- 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

注意我们这里在relabel_configs区域做了大量的配置,特别是第一个保留__meta_kubernetes_service_annotation_prometheus_io_scrape为true的才保留下来,这就是说要想自动发现集群中的 Service,就需要我们在 Service 的annotation区域添加prometheus.io/scrape=true的声明。

现在我们在之前创建的 redis 这个 Service 中添加上prometheus.io/scrape=true这个 annotation:

---
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

kubectl apply –f promethues-redis.yaml
kubectl delete –f prometheus-cm.yaml
kubectl apply –f prometheus-cm.yaml
curl -X POST http://10.105.89.6:9090/-/reload

在这里插入图片描述

3、安装kube-state-metrics

1)下载kube-state-metrics
下载地址:https://github.com/kubernetes/kube-state-metrics/tree/release-1.8
已经下载好在”用到的包/kube-state-metrics-release-1.8.zip”

  1. 下载kube-state-metrics镜像
    有网的机器上
docker pull  openshift/kube-state-metrics
docker save -o kube-state-metrics.tar openshift/kube-state-metrics

已经下载好了在”用到的包/kube-state-metrics.tar”

  1. 加载kube-sate-metrics
    拷贝到主节点,
docker load -i kube-state-metrics.tar
docker tag openshift/kube-state-metrics 192.168.100.94:80/kube-state-metrics
docker push 192.168.100.94:80/kube-state-metrics
  1. 解压kube-state-metrics-release-1.8.zip
    进入kubernetes目录,修改kube-state-metrics-deployment.yaml
    将image修改为192.168.100.94:80/kube-state-metrics
Kubectl aply -f .

http://www.niftyadmin.cn/n/1302504.html

相关文章

k8s学习(二十七) k8s部署grafana

1、 准备镜像包 在有网络机器下载镜像&#xff1a; docker pull grafana/grafana:5.3.4 docker save -o grafana.tar grafana/grafana:5.3.4 docker pull busybox docker save -o busybox.tar busybox2、 创建PV mkdir -p /data/testgd vi /etc/exports添加 /data/testgd …

谈谈 RPC

RPC&#xff08;Remote Procedure Call&#xff09;&#xff0c;翻译过来就是远程过程调用 。RPC 协议假定某些传输协议的存在&#xff0c;如 TCP 或 UDP&#xff0c;为通信程序之间携带信息数据。在 OSI 网络通信模型中&#xff0c;RPC 跨越了传输层和应用层&#xff0c;RPC 使…

使用jdk原生方式实现一个简单的webservice

一、服务端 1、接口&#xff0c;注意使用注解 package com.zqw.webservice.demo;import javax.jws.WebMethod; import javax.jws.WebService;/*** //TODO** author zhuquanwen* vesion 1.0* date 2019/11/8 21:10* since jdk1.8*/ WebService public interface IHelloWorld {W…

springboot学习(二十三)springboot整合cxf jaxws 发布webservice并调用

例子github地址&#xff1a;https://github.com/zhuquanwen/webservice-demo 其中的cxf模块 1、依赖引入 我使用的是gradle&#xff0c;使用maven转为对应的pom.xml就好 plugins {id java }group com.zqw.test version 1.0-SNAPSHOTsourceCompatibility 1.8repositories {ma…

springboot学习(二十四) springboot整合cxf jaxrs发布webservice使用JSON并调用

例子github地址&#xff1a;https://github.com/zhuquanwen/webservice-demo 其中的cxf模块 1、依赖 我使用的是gradle&#xff0c;使用maven转为对应的pom.xml就好 plugins {id java }group com.zqw.test.clientsourceCompatibility 1.8repositories {maven {url http://ma…

k8s学习(二十八) k8s部署kuboard

1、获取kuboard.yaml 从网址https://kuboard.cn/install-script/kuboard.yaml下载 apiVersion: apps/v1 kind: Deployment metadata:name: kuboardnamespace: kube-systemannotations:k8s.eip.work/displayName: kuboardk8s.eip.work/ingress: "true"k8s.eip.work/s…

【sql】SQL22 统计各个部门的工资记录数

题目&#xff1a; 有一个部门表departments简况如下: dept_nodept_named001Marketingd002Finance 有一个&#xff0c;部门员工关系表dept_emp简况如下: emp_nodept_no from_date to_date10001d0012001-06-229999-01-0110002d0011996-08-039999-01-0110003d0021996-08-039999…

Git学习(十一) 将某个分支的一部分文件合并到目标分支

有时候我们不需要合并整个分支&#xff0c;只需要合并某些文件或文件夹 1、切换到最终要用的目标分支 git checkout [目标分支]2、运行命令合并需要的文件或文件夹 git checkout --patch [来源分支名称] [文件路径&#xff08;比如common\common-tools\src\main\java\co…