什么是普罗米修斯?

Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包 。

自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。

组件说明

  • Prometheus负责实现对K8s集群监控数据的获取,存储以及查询。
  • PrometheusOperator为Prometheus实例的部署和管理提供了简单的监视定义。
  • KubeStateMetrics是K8s集群资源使用情况的聚合器,收集数据给K8s集群内使用(如HPA)。
  • AlertManager负责将告警信息重复数据删除,分组和路由到正确的接收者集成。
  • NodeExporter用于采集集群中各个节点的资源使用情况。
  • Grafana一个跨平台的开源的度量分析和可视化工具。

系统架构


什么时候合适?

Prometheus非常适合记录任何纯数字时间序列。

它既适合以机器为中心的监视,也适合于高度动态的面向服务的体系结构的监视。在微服务世界中,它对多维数据收集和查询的支持是一种特别的优势。

Prometheus的设计旨在提高可靠性,使其成为中断期间要使用的系统,以使您能够快速诊断问题。

每个Prometheus服务器都是独立的,而不依赖于网络存储或其他远程服务。当基础结构的其他部分损坏时,您可以依靠它,并且无需设置广泛的基础结构即可使用它。

什么时候不合适?

普罗米修斯重视可靠性。即使在故障情况下,您始终可以查看有关系统的可用统计信息。

如果您需要100%的准确性(例如按请求计费),则Prometheus并不是一个不错的选择,因为所收集的数据可能不会足够详细和完整。

在这种情况下,最好使用其他系统来收集和分析数据以进行计费,并使用Prometheus进行其余的监视。


部署安装

  Github : https://github.com/coreos/kube-prometheus

  1、下载官方源码文件(默认镜像源来自quay.io)

  wget -o kube-prometheus.tgz https://github.com/coreos/kube-prometheus/archive/v0.3.0.tar.gz

  •  当然,如果你的国外网不太友好,也可以下载本人百度云文件(已修改镜像源到aliyuncs)kube-prometheus-0.3.0.zip(ccer )

  2、解压并部署安装

  tar -zxvf kube-prometheus.tgz && cd kube-prometheus-0.3.0/manifests

  kubectl create -f setup

  until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done

  kubectl create -f .

  1. [root@k8s-32 manifests]# ls -R
  2. .:
  3. alertmanager-alertmanager.yaml kube-state-metrics-service.yaml prometheus-clusterRole.yaml
  4. alertmanager-secret.yaml node-exporter-clusterRoleBinding.yaml prometheus-operator-serviceMonitor.yaml
  5. alertmanager-serviceAccount.yaml node-exporter-clusterRole.yaml prometheus-prometheus.yaml
  6. alertmanager-serviceMonitor.yaml node-exporter-daemonset.yaml prometheus-roleBindingConfig.yaml
  7. alertmanager-service.yaml node-exporter-serviceAccount.yaml prometheus-roleBindingSpecificNamespaces.yaml
  8. grafana-dashboardDatasources.yaml node-exporter-serviceMonitor.yaml prometheus-roleConfig.yaml
  9. grafana-dashboardDefinitions.yaml node-exporter-service.yaml prometheus-roleSpecificNamespaces.yaml
  10. grafana-dashboardSources.yaml prometheus-adapter-apiService.yaml prometheus-rules.yaml
  11. grafana-deployment.yaml prometheus-adapter-clusterRoleAggregatedMetricsReader.yaml prometheus-serviceAccount.yaml
  12. grafana-serviceAccount.yaml prometheus-adapter-clusterRoleBindingDelegator.yaml prometheus-serviceMonitorApiserver.yaml
  13. grafana-serviceMonitor.yaml prometheus-adapter-clusterRoleBinding.yaml prometheus-serviceMonitorCoreDNS.yaml
  14. grafana-service.yaml prometheus-adapter-clusterRoleServerResources.yaml prometheus-serviceMonitorKubeControllerManager.yaml
  15. kube-state-metrics-clusterRoleBinding.yaml prometheus-adapter-clusterRole.yaml prometheus-serviceMonitorKubelet.yaml
  16. kube-state-metrics-clusterRole.yaml prometheus-adapter-configMap.yaml prometheus-serviceMonitorKubeScheduler.yaml
  17. kube-state-metrics-deployment.yaml prometheus-adapter-deployment.yaml prometheus-serviceMonitor.yaml
  18. kube-state-metrics-roleBinding.yaml prometheus-adapter-roleBindingAuthReader.yaml prometheus-service.yaml
  19. kube-state-metrics-role.yaml prometheus-adapter-serviceAccount.yaml setup
  20. kube-state-metrics-serviceAccount.yaml prometheus-adapter-service.yaml
  21. kube-state-metrics-serviceMonitor.yaml prometheus-clusterRoleBinding.yaml
  22.  
  23. ./setup:
  24. 0namespace-namespace.yaml prometheus-operator-0prometheusruleCustomResourceDefinition.yaml prometheus-operator-deployment.yaml
  25. prometheus-operator-0alertmanagerCustomResourceDefinition.yaml prometheus-operator-0servicemonitorCustomResourceDefinition.yaml prometheus-operator-serviceAccount.yaml
  26. prometheus-operator-0podmonitorCustomResourceDefinition.yaml prometheus-operator-clusterRoleBinding.yaml prometheus-operator-service.yaml
  27. prometheus-operator-0prometheusCustomResourceDefinition.yaml prometheus-operator-clusterRole.yaml

ls -R

  1. [root@k8s-32 manifests]# kubectl create -f setup/.
  2. namespace/monitoring created
  3. customresourcedefinition.apiextensions.k8s.io/alertmanagers.monitoring.coreos.com created
  4. customresourcedefinition.apiextensions.k8s.io/podmonitors.monitoring.coreos.com created
  5. customresourcedefinition.apiextensions.k8s.io/prometheuses.monitoring.coreos.com created
  6. customresourcedefinition.apiextensions.k8s.io/prometheusrules.monitoring.coreos.com created
  7. customresourcedefinition.apiextensions.k8s.io/servicemonitors.monitoring.coreos.com created
  8. clusterrole.rbac.authorization.k8s.io/prometheus-operator created
  9. clusterrolebinding.rbac.authorization.k8s.io/prometheus-operator created
  10. deployment.apps/prometheus-operator created
  11. service/prometheus-operator created
  12. serviceaccount/prometheus-operator created
  13. [root@k8s-32 manifests]# kubectl create -f .
  14. alertmanager.monitoring.coreos.com/main created
  15. secret/alertmanager-main created
  16. service/alertmanager-main created
  17. serviceaccount/alertmanager-main created
  18. servicemonitor.monitoring.coreos.com/alertmanager created
  19. secret/grafana-datasources created
  20. configmap/grafana-dashboard-apiserver created
  21. configmap/grafana-dashboard-cluster-total created
  22. configmap/grafana-dashboard-controller-manager created
  23. configmap/grafana-dashboard-k8s-resources-cluster created
  24. configmap/grafana-dashboard-k8s-resources-namespace created
  25. configmap/grafana-dashboard-k8s-resources-node created
  26. configmap/grafana-dashboard-k8s-resources-pod created
  27. configmap/grafana-dashboard-k8s-resources-workload created
  28. configmap/grafana-dashboard-k8s-resources-workloads-namespace created
  29. configmap/grafana-dashboard-kubelet created
  30. configmap/grafana-dashboard-namespace-by-pod created
  31. configmap/grafana-dashboard-namespace-by-workload created
  32. configmap/grafana-dashboard-node-cluster-rsrc-use created
  33. configmap/grafana-dashboard-node-rsrc-use created
  34. configmap/grafana-dashboard-nodes created
  35. configmap/grafana-dashboard-persistentvolumesusage created
  36. configmap/grafana-dashboard-pod-total created
  37. configmap/grafana-dashboard-pods created
  38. configmap/grafana-dashboard-prometheus-remote-write created
  39. configmap/grafana-dashboard-prometheus created
  40. configmap/grafana-dashboard-proxy created
  41. configmap/grafana-dashboard-scheduler created
  42. configmap/grafana-dashboard-statefulset created
  43. configmap/grafana-dashboard-workload-total created
  44. configmap/grafana-dashboards created
  45. deployment.apps/grafana created
  46. service/grafana created
  47. serviceaccount/grafana created
  48. servicemonitor.monitoring.coreos.com/grafana created
  49. clusterrole.rbac.authorization.k8s.io/kube-state-metrics created
  50. clusterrolebinding.rbac.authorization.k8s.io/kube-state-metrics created
  51. deployment.apps/kube-state-metrics created
  52. role.rbac.authorization.k8s.io/kube-state-metrics created
  53. rolebinding.rbac.authorization.k8s.io/kube-state-metrics created
  54. service/kube-state-metrics created
  55. serviceaccount/kube-state-metrics created
  56. servicemonitor.monitoring.coreos.com/kube-state-metrics created
  57. clusterrole.rbac.authorization.k8s.io/node-exporter created
  58. clusterrolebinding.rbac.authorization.k8s.io/node-exporter created
  59. daemonset.apps/node-exporter created
  60. service/node-exporter created
  61. serviceaccount/node-exporter created
  62. servicemonitor.monitoring.coreos.com/node-exporter created
  63. apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
  64. clusterrole.rbac.authorization.k8s.io/prometheus-adapter created
  65. clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
  66. clusterrolebinding.rbac.authorization.k8s.io/prometheus-adapter created
  67. clusterrolebinding.rbac.authorization.k8s.io/resource-metrics:system:auth-delegator created
  68. clusterrole.rbac.authorization.k8s.io/resource-metrics-server-resources created
  69. configmap/adapter-config created
  70. deployment.apps/prometheus-adapter created
  71. rolebinding.rbac.authorization.k8s.io/resource-metrics-auth-reader created
  72. service/prometheus-adapter created
  73. serviceaccount/prometheus-adapter created
  74. clusterrole.rbac.authorization.k8s.io/prometheus-k8s created
  75. clusterrolebinding.rbac.authorization.k8s.io/prometheus-k8s created
  76. servicemonitor.monitoring.coreos.com/prometheus-operator created
  77. prometheus.monitoring.coreos.com/k8s created
  78. rolebinding.rbac.authorization.k8s.io/prometheus-k8s-config created
  79. rolebinding.rbac.authorization.k8s.io/prometheus-k8s created
  80. rolebinding.rbac.authorization.k8s.io/prometheus-k8s created
  81. rolebinding.rbac.authorization.k8s.io/prometheus-k8s created
  82. role.rbac.authorization.k8s.io/prometheus-k8s-config created
  83. role.rbac.authorization.k8s.io/prometheus-k8s created
  84. role.rbac.authorization.k8s.io/prometheus-k8s created
  85. role.rbac.authorization.k8s.io/prometheus-k8s created
  86. prometheusrule.monitoring.coreos.com/prometheus-k8s-rules created
  87. service/prometheus-k8s created
  88. serviceaccount/prometheus-k8s created
  89. servicemonitor.monitoring.coreos.com/prometheus created
  90. servicemonitor.monitoring.coreos.com/kube-apiserver created
  91. servicemonitor.monitoring.coreos.com/coredns created
  92. servicemonitor.monitoring.coreos.com/kube-controller-manager created
  93. servicemonitor.monitoring.coreos.com/kube-scheduler created
  94. servicemonitor.monitoring.coreos.com/kubelet created

kubectl create -f .

  3、等待部署完成

 kubectl get pod -n monitoring

  1. NAME READY STATUS RESTARTS AGE
  2. alertmanager-main-0 2/2 Running 0 65m
  3. alertmanager-main-1 2/2 Running 0 65m
  4. alertmanager-main-2 2/2 Running 0 65m
  5. grafana-7c54b4677d-btwfb 1/1 Running 0 65m
  6. kube-state-metrics-58b656b699-p8m29 3/3 Running 0 65m
  7. node-exporter-rc5mx 2/2 Running 0 65m
  8. node-exporter-vdzkb 2/2 Running 0 65m
  9. node-exporter-xzdw2 2/2 Running 0 65m
  10. prometheus-adapter-7d6f96974c-76m4z 1/1 Running 0 65m
  11. prometheus-k8s-0 3/3 Running 1 65m
  12. prometheus-k8s-1 3/3 Running 1 65m
  13. prometheus-operator-5bd99d6457-89n7h 1/1 Running 0 66m

  4、更改访问模式(ClusterIP => NodePort)

    1)Prometheus

    kubectl edit svc/prometheus-k8s -n monitoring

    2)Alert Manager

    kubectl edit svc/alertmanager-main -n monitoring

    3)Grafana

    kubectl edit svc/grafana -n monitoring

  5、访问MasterIP:Port,其中Grafana默认用户名和密码都是admin

    

    >>> 普罗米修斯功能强大,目前我也还没有完全掌握,具体应用还需要大家自己深度学习。

作者:Leozhanggg

出处:https://www.cnblogs.com/leozhanggg/p/12661566.html

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

Kubernetes实战总结 - Prometheus部署的更多相关文章

  1. kubernetes实战篇之部署一个.net core微服务项目

    目录 继上一篇kubernetes理论知识完结.本篇主要讲解基于nexus搭建一个docker镜像仓库(当然大家实践过程是不必完全跟着做,也可以搭建harbor仓库或者直接把镜像推送到docker h ...

  2. Kubernetes实战总结 - 自定义Prometheus

    一.概述 首先Prometheus整体监控结构略微复杂,一个个部署并不简单.另外监控Kubernetes就需要访问内部数据,必定需要进行认证.鉴权.准入控制, 那么这一整套下来将变得难上加难,而且还需 ...

  3. kubernetes二进制高可用部署实战

    环境: 192.168.30.20 VIP(虚拟) 192.168.30.21 master1 192.168.30.22 master2 192.168.30.23 node1 192.168.30 ...

  4. 新书推荐《再也不踩坑的Kubernetes实战指南》

      <再也不踩坑的Kubernetes实战指南>终于出版啦.目前可以在京东.天猫购买,京东自营和当当网预计一个星期左右上架. 本书贴合生产环境经验,解决在初次使用或者是构建集群中的痛点,帮 ...

  5. 2020 最新 Kubernetes实战指南

    1.Kubernetes带来的变革   对于开发人员 由于公司业务多,开发环境.测试环境.预生产环境和生产环境都是隔离的,而且除了生产环境,为了节省成本,其他环境可能是没有日志收集的,在没有用k8s的 ...

  6. Kubernetes实战总结 - 阿里云ECS自建K8S集群

    一.概述 详情参考阿里云说明:https://help.aliyun.com/document_detail/98886.html?spm=a2c4g.11186623.6.1078.323b1c9b ...

  7. OpenFaaS实战之一:部署

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  8. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...

  9. kubernetes实战(二十五):kubeadm 安装 高可用 k8s v1.13.x

    1.系统环境 使用kubeadm安装高可用k8s v.13.x较为简单,相比以往的版本省去了很多步骤. kubeadm安装高可用k8s v.11 和 v1.12 点我 主机信息 主机名 IP地址 说明 ...

随机推荐

  1. 使用nestjs集成grpc具体操作

    两个程序中, 提供grpc服务的称为服务端, 调用grpc服务的为客户端, 以下是grpc服务端和客户端的代码编写     1. 创建两个nestjs项目demo1(端口: 3000)和demo2(端 ...

  2. 编程老司机带你玩转 CompletableFuture 异步编程

    本文从实例出发,介绍 CompletableFuture 基本用法.不过讲的再多,不如亲自上手练习一下.所以建议各位小伙伴看完,上机练习一把,快速掌握 CompletableFuture. 个人博文地 ...

  3. 必备技能六、Vue中实现全局方法

    现实背景:很多时候我们会在全局调用一些方法. 实现方式两种:官网的实现use方法,然后你也可以用野路子直接在Vue.prototype上面定义. 先说野路子,因为其实野路子就是最根本的实现方式,官方的 ...

  4. 如何将zTree选中节点传递给后台

    获取zTree选中节点 <body> <script type="text/javascript"> var setting = { view: { dbl ...

  5. mongoose基本增删改查

    1.安装 打开命令行 npm i mongoose 2.连接数据库 // 引入安装的包 var mongoose = require('mongoose'); mongoose.connect('mo ...

  6. 基于Linux Lite 4.8制作“Windows 12 Lite”正式发布

    值得注意的是,这款Windows 12 Lite的宣传标语将矛头直指Windows 10,声称不会迫使用户更新.不会存在病毒或恶意软件.启动速度比Win 10快3倍.提供8万多款优质软件.允许与Win ...

  7. LeetCode 41,一题解读in-place思想

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode题解系列第21篇,今天来看一道人狠话不多的题目. 题面 题目非常简单,只有一句话,给定一个整数数组,要求返回最小的不在 ...

  8. Python基础数据类型2

    lst.extend([1,2,3]) # 扩展 --- 迭代添加 整型和布尔值不能迭代print(lst) lst1 = [1,2,3]lst2 = [4,5,6]lst3 = lst1 + lst ...

  9. Vue2.0 【第二季】第8节 Component 父子组件关系

    目录 Vue2.0 [第二季]第8节 Component 父子组件关系 第8节 Component 父子组件关系 一.构造器外部写局部注册组件 二.父子组件的嵌套 Vue2.0 [第二季]第8节 Co ...

  10. C#如何实现大小写转换

    2020-03-16  每日一例第8天 1.新建窗体应用程序,拖入label/textbox/radiobutton控件,并改text值:  2.button控件输入代码: if (radioButt ...