首页 > 其他分享 >Prometheus监控携带metrics接口的服务

Prometheus监控携带metrics接口的服务

时间:2022-10-16 21:34:48浏览次数:50  
标签:01 监控 prometheus 接口 metrics Prometheus master etcd k8s

目录

Prometheus监控携带metrics接口的服务

prometheus监控分为两种:

​ 1、携带metircs接口的服务

​ 2、不携带metrics接口的服务

一、prometheus监控携带metrics接口的服务的流程:

携带metrics接口的服务就表示可以通过metrics接口获取服务的监控项和监控信息

(PS:此处以ETCD为例)

1、通过endprints获取锁需要监控的ETCD的地址

2、创建Service,给予集群内部的ServiceMoniter使用

3、创建ServiceMoniter部署需要的访问证书

4、重启promutheus监控Pod,载入监控项

二、通过prometheus监控ETCD

ETCD服务携带metrics接口,prometheus监控它的流程为:

1、通过EndPrints获取所要监控的ETCD的地址

2、创建Service,给予集群内部的ServiceMoniter使用

3、创建ServiceMoniter部署需要访问证书,给予prometheus-k8s-0来使用

4、重启prometheus监控Pod (prometheus-k8s-0),载入监控项

1、测试ETCD服务的metrics接口

[root@k8s-master-01 ~]# netstat -lnutp | grep etcd
tcp        0      0 192.168.15.31:2379      0.0.0.0:*               LISTEN      2692/etcd           
tcp        0      0 127.0.0.1:2379          0.0.0.0:*               LISTEN      2692/etcd           
tcp        0      0 192.168.15.31:2380      0.0.0.0:*               LISTEN      2692/etcd           
tcp        0      0 127.0.0.1:2381          0.0.0.0:*               LISTEN      2692/etcd

[root@k8s-master-01 ~]# curl -k --cert /etc/kubernetes/pki/apiserver-etcd-client.crt --key /etc/kubernetes/pki/apiserver-etcd-client.key https://127.0.0.1:2379/metrics

#ETCD端口:
2379	提供HTTP API服务
2380	和集群中其他节点通信

2、通过EndPrints获取所需监控的ETCD的地址

kind: Endpoints
apiVersion: v1
metadata:
  namespace: kube-system
  name: etcd-moniter
  labels:
    k8s: etcd
subsets:
  - addresses:
      - ip: "192.168.15.31"
    ports:
      - port: 2379
        protocol: TCP
        name: etcd
[root@k8s-master-01 ~]# kubectl apply -f endprints.yaml 
endpoints/etcd-moniter created
[root@k8s-master-01 ~]# kubectl get endpoints -n kube-system
NAME           ENDPOINTS                                                                 AGE
etcd-moniter   192.168.15.31:2379                                                        17s

3、创建Service,给予集群内部的ServiceMoniter使用

kind: Service
apiVersion: v1
metadata:
  name: etcd-moniter
  namespace: kube-system
  labels:
    k8s: etcd
spec:
  ports:
    - port: 2379
      targetPort: 2379
      name: etcd
      protocol: TCP
[root@k8s-master-01 ~]# kubectl apply -f service.yaml 
service/etcd-moniter created
[root@k8s-master-01 ~]# kubectl get svc -n kube-system
NAME           TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                        AGE
etcd-moniter   ClusterIP   10.103.237.209   <none>        2379/TCP                       13s
kube-dns       ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP,9153/TCP         25d
kubelet        ClusterIP   None             <none>        10250/TCP,10255/TCP,4194/TCP   44h
[root@k8s-master-01 ~]# kubectl describe -n kube-system svc etcd-moniter 
Name:              etcd-moniter
Namespace:         kube-system
Labels:            k8s=etcd
Annotations:       <none>
Selector:          <none>
Type:              ClusterIP
IP Families:       <none>
IP:                10.103.237.209
IPs:               10.103.237.209
Port:              etcd  2379/TCP
TargetPort:        2379/TCP
Endpoints:         192.168.15.31:2379
Session Affinity:  None
Events:            <none>

4、创建ServiceMoniter部署需要访问证书

kind: ServiceMonitor
apiVersion: monitoring.coreos.com/v1
metadata:
  labels:
    k8s: etcd
  name: etcd-monitor
  namespace: monitoring
spec:
  endpoints:
  - interval: 3s
    port: etcd
    scheme: https
    tlsConfig:
      caFile: /etc/prometheus/secrets/etcd-certs/ca.crt
      certFile: /etc/prometheus/secrets/etcd-certs/peer.crt
      keyFile: /etc/prometheus/secrets/etcd-certs/peer.key
      insecureSkipVerify: true
  selector:
    matchLabels:
      k8s: etcd
  namespaceSelector:
    matchNames:
      - "kube-system"
[root@k8s-master-01 ~]# kubectl apply -f servicemoniter.yaml 
servicemonitor.monitoring.coreos.com/etcd-monitor created
[root@k8s-master-01 ~]# kubectl get ServiceMonitor -n monitoring
NAME                      AGE
etcd-monitor              24s

5、重启prometheus监控Pod(prometheus-k8s-0),载入监控项

创建一个secrets,用来保存prometheus监控的etcd的证书

[root@k8s-master-01 ~]# kubectl create secret generic etcd-certs -n monitoring --from-file=/etc/kubernetes/pki/etcd/ca.crt --from-file=/etc/kubernetes/pki/etcd/peer.crt --from-file=/etc/kubernetes/pki/etcd/peer.key
secret/etcd-certs created
[root@k8s-master-01 ~]# kubectl get secret -n monitoring
NAME                              TYPE                                  DATA   AGE
etcd-certs                        Opaque                                3      14s
kind: Prometheus
apiVersion: monitoring.coreos.com/v1
metadata:
  labels:
    prometheus: k8s
  name: k8s
  namespace: monitoring
spec:
  alerting:
    alertmanagers:
      - name: alertmanager-main
        namespace: monitoring
        port: web
      - name: alertmanager-main-etcd
        namespace: kube-system
        port: etcd
  image: quay.io/prometheus/prometheus:v2.15.2
  nodeSelector:
    kubernetes.io/os: linux
  podMonitorNamespaceSelector: {}
  podMonitorSelector: {}
  replicas: 2
  resources:
    requests:
      memory: 400Mi
  ruleSelector:
    matchLabels:
      prometheus: k8s
      role: alert-rules
  securityContext:
    fsGroup: 2000
    runAsNonRoot: true
    runAsUser: 1000
  serviceAccountName: prometheus-k8s
  serviceMonitorNamespaceSelector: {}
  serviceMonitorSelector: {}
  version: v2.15.2
  secrets:
    - etcd-certs

结果

[root@k8s-master-01 ~]# kubectl apply -f prometheus-k8s-0.yaml 
prometheus.monitoring.coreos.com/k8s configured
[root@k8s-master-01 ~]# kubectl get pod -n monitoring 
NAME                                   READY   STATUS    RESTARTS   AGE
prometheus-k8s-0                       3/3     Running   0          24s
prometheus-k8s-1                       0/3     Pending   0          24s

6、检测是否监控成功

补充:grafana图形美化

1、去grafana官网寻找合适个模板

2、使用模板

3、模板使用成功,看上去很装逼

标签:01,监控,prometheus,接口,metrics,Prometheus,master,etcd,k8s
From: https://www.cnblogs.com/c-moon/p/16797237.html

相关文章

  • 【数据结构】栈的定义以及接口函数的C语言代码实现(仅供学习交流使用)
    1、栈的定义栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last......
  • flask搭建平台入门教程三:增删改查接口及权限校验(前后端分离)
    用户注册登录实现后,下一步编写查询用户列表接口,使用flask_restful的marshal方法来生成字段数据,加上之前编写的login_requiredfromflaskimportBlueprint,jsonifyfrom......
  • Kubernetes Prometheus Installation
    目录Yaml参考文献YamlapiVersion:v1kind:ConfigMapmetadata:name:prometheus-confignamespace:mwdata:prometheus.yml:|global:scrape_int......
  • 如何写swagger接口文档
    地址:SwaggerEditor 1openapi:3.0.32info:3title:SwaggerPetstore-OpenAPI3.04description:|-5ThisisasamplePetStoreServ......
  • 抽象类和接口的区别
    ①定义的关键字不同:抽象类使用abstract定义;接口使用interface定义。②继承或实现的关键字不同:抽象类使用extends继承;接口使用implements实现。③子类扩展的数量不同:抽象......
  • SpringBoot 扩展性接口
    1.可扩展的接口启动调用顺序图​​org.springframework.beans.factory.xxx​​​​org.springframework.boot.xxx​​​​org.springframework.context.xxx​​ApplicationC......
  • 前后端分离接口规范 ,看这一份就够了 !
    随着互联网的高速发展,前端页面的展示、交互体验越来越灵活、炫丽,响应体验也要求越来越高。后端服务的高并发、高可用、高性能、高扩展等特性的要求也愈加苛刻,从而导致前后端......
  • 接口测试工具-Jmeter压力测试使用
    上一期分享了接口调用的工具-Postman(传送门:​​接口测试工具-Postman使用详解​​),这业务场景中还需要分析对应接口的性能,是否支持多并发,多并发的极限QPS在什么地方,这个时候......
  • 接口测试工具-Postman使用详解
    前公司有个说法叫做狗粮环境,什么叫做狗粮环境,就是搭建环境自己测试自己的代码,算法很多时候写好后是通过restful接口对外使用,接口测试就要引出一个利器-Postman.1、安装postm......
  • Metricserver
    目录Notesapiserver修改apiserver.yaml部署metric-server拉取镜像下载meric-server.yaml文件部署metricNoteshttps://github.com/kubernetes-sigs/metrics-server/releas......