运维开发实践 - Kubernetes - 部署Prometheus

news/2024/5/18 22:51:39 标签: kubernetes, prometheus, java

1. Prometheus简介

prometheus是一个开源的系统监控和告警工具;通过不断收集应用的指标数据到时序数据库中,实现持续监控应用的状态;
在这里插入图片描述

2.Prometheus特性

(1) 多维度的数据指标模型
prometheus将所有的数据以时序的方式存储;并且对于相同指标名称的任何标签组合均为对该指标的各个维度的描述;promQL允许我们过滤以及聚合这些维度的指标数据;

以"__"双下划线开头的指标名称用于内部使用

(2) PromQL, prometheus Query Language,供用于查询以及聚合时序数据;
(3) 可单机部署
(4) 默认以间隔拉取方式获取应用指标数据
(5) 支持应用主动推送指标数据
(6) 可通过静态配置或服务发现来发现应用
(7) 支持多种类型的图标和面板展示

3.部署Prometheus

prometheus_17">3.1.书写prometheus配置文件

prometheus 默认监控当前集群所有的Pod, 因此此处我们这里书写监控 namespce=default 集群下的所有Pod;

apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-config
  namespace: monitoring
data:
  prometheus-config.yaml: |
    global:
      scrape_interval: 15s # 抓取数据的间隔
      scrape_timeout: 15s # 抓取数据的超时时间
      evaluation_interval: 1m # 评价规则的时间间隔
    scrape_configs: # 定义该抓取什么应用的指标
    - job_name: 'kubernetes-service-discovery'
      kubernetes_sd_configs:
      - role: pod
        kubeconfig_file: ""
        follow_redirects: true
        namespaces:
          names:
          - default # 监控namespace=default的集群

prometheus_deployment_41">3.2.部署prometheus deployment

创建 prometheus-monitor serviceaccount

apiVersion: v1
kind: ServiceAccount
metadata:
  namespace: monitoring
  name: prometheus-monitor
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: rolebindingpromethuesmonitoradminpermission
subjects:
- kind: ServiceAccount
  name: prometheus-monitor
  namespace: monitoring
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io

部署deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: prometheus-server
  namespace: monitoring
  labels:
    app: prometheus-server
spec:
  replicas: 1
  selector:
    matchLabels:
      app: prometheus-server
      component: prometheus-server
  template:
    metadata:
      labels:
        app: prometheus-server
        component: prometheus-server
      annotations:
        prometheus.io/scrape: "false"
    spec:
     # serviceAccountName: prometheus-monitor
      securityContext:
        runAsUser: 0
      containers:
      - name: prometheus-server
        image:  prom/prometheus
        imagePullPolicy: IfNotPresent
        command:
          - prometheus
          - --config.file=/etc/prometheus/prometheus-config.yaml
          - --storage.tsdb.path=/prometheus
          - --storage.tsdb.retention=720h
        ports:
        - containerPort: 9090
          protocol: TCP
        volumeMounts:
        - mountPath: /etc/prometheus/
          name: prometheus-config
        - mountPath: /prometheus/
          name: prometheus-storage-volume
      volumes:
      - name: prometheus-config
        configMap:
          name: prometheus-config
      - name: prometheus-storage-volume
        persistentVolumeClaim:
          claimName: prometheus-storage-pvc
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: prometheus-storage-pvc
  namespace: monitoring
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: nfs-client
  resources:
    requests:
      storage: 5Gi

3.3.暴露Prometheus

对于如何配置ingress,请参考 运维开发实践 - Kubernetes - 从外部访问集群应用

---
apiVersion: v1
kind: Service
metadata:
  name: prometheus-server-svc
  namespace: monitoring
spec:
  ports:
  - port: 9090
    targetPort: 9090
  selector:
    app: prometheus-server
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: prometheus-ingress
  namespace: monitoring
spec:
  ingressClassName: nginx
  rules:
  - host: prometheus-liyuan.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: prometheus-server-svc
            port:
              number: 9090

在这里插入图片描述

Reference

Promrthues Docs

遇到疑问欢迎留言,也欢迎关注我的公众号[ 从零开始的Go学习 ]


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

相关文章

解决Fragment多层嵌套时onActivityResult无法正确回调的问题

Fragment也可以使用startActivityForResult方法去打开一个Activity,然后在其onActivityResult方法中处理结果,可是当Fragment嵌套的时候,由于FragmentActivity的BUG导致只会回调最外那层Fragment的onActivityResult方法,于是乎当前…

android中WebView附件问题解决

现在的很多app项目中都有嵌入html的需求,这么设计产品有很多好处,一个html可以同时在很多平台上跑(android,ios,web端)。 从android 角度来讲 加载html所用的组件是 webview。 webview的好处我们其实都清楚…

2017年伊始,你需要尝试的25个Android第三方库

Lottie 这是一个动画库。通过Adobe After Effects做出动画效果,然后通过Bodymovin(AE的插件)导出JSON数据,然后通过该库生成原生动画效果。在Google Play Store上可以下载demo。该项目在Github上已经由超过8000个star。猴赛雷~~ ***Airbnb***…

运维开发实践 - Metric Server安装使用

1. Metric Server介绍 Metric Server 用于实现Kubernetes的资源指标监控 2. 安装 curl https://gitee.com/Liyuan-1/k8s-workshop/raw/master/metrics-server.yaml | kubectl apply -f -3.开始使用 kubectl get po -n kube-systemkubectl top node kubectl top pod kubectl g…

APP软件测试总结

一、安全测试 1.软件权限 1)扣费风险:包括短信、拨打电话、连接网络等。 2)隐私泄露风险:包括访问手机信息、访问联系人信息等。 3)对App的输入有效性校验、认证、授权、数据加密等方面进行检测 4)限制…

作为开发者,你都听产品经理的,做的累不累?

想必做过几年开发的小伙伴都碰到过产品经理各种需求,各种上线前需要改东西的情况。简直无语!下面我给大家盘点一下最让开发者无语的几种情况。 一. 上线前一天或者几个小时,提出新的需求 讲道理,成熟的公司,一个新版本…

从ofo小黄车谈人性

首先我要郑重声明:本人和ofo小黄车没任何关系 ,不是ofo的员工,也不是ofo的推广运营,所以我不是来打广告的。 在共享单车出现的这段时间里,人们越来越习惯于骑着单车去地铁、商场、公司,共享的生活方式已迅雷…

百度地图开发之点聚合功能

大家不清楚什么是点聚合,先上一下效果图。 从上面的这几张效果图,大家可以看到其实就是将一个区域内的点 聚合到一起,然后缩放可以改变区域内点显示效果。对于数据量比较大的功能来讲,显示效果会比较直观。 这个功能在百度地图的…