Prometheus+Grafana监控K8S 监控pod的解决方案(监控 java-JVM-pod)

prometheus 监控 k8s pod 容器服务状态

Prometheus+Grafana 作为监控K8S的解决方案,大部分都是在K8S集群内部部署,所以监控起来很方便,可以直接调用集群内的cert及各种监控url,但是增加了集群的资源开销,

**需求:**每个 pod 重启/删除时,都能发出告警。要及时和准确

前几期也讲过 报警,可以回顾哦


实现 效果

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

配置 rbac 相关认证
Prometheus 需要访问 Kubernetes 的一些资源对象,所以需要配置 rbac 相关认证,内容如下:

1)创建一个用于Prometheus pod 中的ServiceAccount
2)创建ClusterRole,定义规则权限
3)创建ClusterRoleBinding 将ServiceAccount 与 ClusterRole进行绑定

apiVersion: v1
kind: Namespace
metadata:
   name: monitor
   labels:
     name: monitor
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: prometheus
rules:
- apiGroups: [""]
  resources:
  - nodes
  - nodes/proxy
  - services
  - endpoints
  - pods
  verbs: ["get", "list", "watch"]
- apiGroups:
  - extensions
  resources:
  - ingresses
  verbs: ["get", "list", "watch"]
- nonResourceURLs: ["/metrics"]
  verbs: ["get"]
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: prometheus
  namespace: monitor
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: prometheus
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: prometheus
subjects:
- kind: ServiceAccount
  name: prometheus
  namespace: monitor
---

1.配置 prometheus-config
告警规则 和 监控

    global:
      scrape_interval: 2s
      scrape_timeout: 2s
      evaluation_interval: 2s
    alerting:
      alertmanagers:
      - static_configs:
        - targets:
          - 192.168.1.104:9093        #alertmanagersIP
    rule_files:
      - "/etc/prometheus-rules/rules"
    scrape_configs:

    - job_name: 'prometheus'
      static_configs:
      - targets: ['localhost:9090']

    - job_name: 'k8s-nodes'
      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

    - job_name: 'kubernetes-pods'
      kubernetes_sd_configs:
      - role: pod
      relabel_configs:
      - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
        action: keep
        regex: true
      - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
        action: replace
        target_label: __metrics_path__
        regex: (.+)
      - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
        action: replace
        regex: ([^:]+)(?::\d+)?;(\d+)
        replacement: $1:$2
        target_label: __address__
      - action: labelmap
        regex: __meta_kubernetes_pod_label_(.+)
      - source_labels: [__meta_kubernetes_namespace]
        action: replace
        target_label: kubernetes_namespace
      - source_labels: [__meta_kubernetes_pod_name]
        action: replace
        target_label: kubernetes_pod_name




https://yunlzheng.gitbook.io/prometheus-book/part-iii-prometheus-shi-zhan/readmd/use-prometheus-monitor-kubernetes
这是官网的注解

告警规则


    groups:

    - name: Down
      rules:
      - alert: Down
        expr: up == 0
        for: 30s
        labels:
          severity: critical
        annotations:
          description: "服务不可用,已经掉线"


Deployment部署应用

demo1.yaml

kind: Deployment
apiVersion: apps/v1
metadata:
  name: web-admin
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: web-admin
  template:
    metadata:
      annotations:
        prometheus.io/scrape: 'true'
        prometheus.io/port: '9900'
        prometheus.io/path: "/actuator/prometheus"

      labels:
        k8s-app: web-admin
    spec:
      containers:
        - image: 857676355/web-job-admin:v1
          name: web-admin
          ports:
            - containerPort: 9900

在这里插入图片描述

注意

  template:
    metadata:
      annotations:
        prometheus.io/scrape: 'true'       #的话该pod会作为监控目标
        prometheus.io/port: '9900'         #采集endpoint的端口号
        prometheus.io/path: "/actuator/prometheus"    #采集的url,默认为/metrics

在这里插入图片描述
添加 监控项目
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
完成

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值