Prometheus监控

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
简介: 架构 优点 外部依赖少,性能优秀,部署方便 完善的数据模型,丰富的插件集成 提供强大的查询语言 模块构成 Server:核心服务模块,采样并存储时间序列数据(默认管理面板端口9090) Retrieval 采样模块 Storage 存储模块 PromQL 查询模块 PushGateway(可选组件):数据网关代理模块,采样数据临时存储,与server通信 Export:数据导出模块,导出服务监控数据。

架构

优点

  • 外部依赖少,性能优秀,部署方便
  • 完善的数据模型,丰富的插件集成
  • 提供强大的查询语言

模块构成

  • Server:核心服务模块,采样并存储时间序列数据(默认管理面板端口9090)
    • Retrieval 采样模块
    • Storage 存储模块
    • PromQL 查询模块
  • PushGateway(可选组件):数据网关代理模块,采样数据临时存储,与server通信
  • Export:数据导出模块,导出服务监控数据。
  • Alertmanager:告警模块。接受prometheus上出发alertrules的告警,合并去重聚合处理,并发送出去(支持企业微信,邮箱,钉钉,webhook等等)
  • Grafna:比Prometheus原生UI更强大的可视化界面(类似于Kibana的可视化分析平台),更专注于服务器及应用性能的分析,如CPU、内存、流量等等的图表分析 

时间序列

  • 若干标签关联下的指标采样值,随着时间维度的推进,构成一条时间序列
  • 命名规范:应用名称 _ 监测对像 _ 数值类型 _ 单位,比如http_request_total
  • 所有指标值采用float64类型存储

图表类型

  • Counter:计数值,只增不减
  • Gauge:常规数值,可增可见
  • Histogram:直方图
    • xxx_bucker{le="上边界"}:时间序列分桶聚合
    • xxx_sum:值累计
    • xxx_count:次数累计
  • Summery:类似于Histogram,支持quantiles(即按百分比取采样值)
    • xxx{quantile="边界"}:
    • xxx_sum:值累计
    • xxx_count:次数累计

Exporter

常用Exporter

  • cAdvisor:K8S默认所有主机部署cAdvisor(高版本不再默认),用于提供容器相关的性能指标数据
  • node_exporter:主机层次的指标数据,cpu、内存、磁盘等
  • nginx_exporter:nginx指标输出

自动监控

已实现采样接口逻辑的资源,可通过annotation标签自动将其加入监控

  • Pod资源
    • prometheus.io/scrape=true
    • prometheus.io/path=/metric
    • prometheus.io/port=8080
  • Service资源
    • prometheus.io/probe
  • Endpoint资源
    • prometheus.io/scrape
    • prometheus.io/path
    • prometheus.io/port

配置

主配置

global: #服务端全局配置
 scrape_interval: 10s #采集周期
 scrape_timeout: 10s
 evaluation_interval: 10s #rule计算周期

rule_files: #报警规则设置
 - "/etc/prometheus-rules/*.rules"

scrape_configs: #监控资源配置
 - job_name: 'prometheus' #server自身监控
 static_configs:
 - targets: ['localhost:9090'] #默认采集路径是/metrics上开放的端口服务
 - job_name: node #主机资源监控
 static_configs:
 - targets: ['localhost:9100']
 - job_name: 'kubernetes-node-exporter'
 tls_config:
 ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
 bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
 kubernetes_sd_configs:
 - role: node
 relabel_configs:
 - source_labels: [__address__]
 regex: '(.*):10250'
 replacement: '${1}:10255'
 target_label: __address__

关于relabel_configs配置

  • 用于在目标被采集之前重写其标签集合
  • 目标采集前自动追加的标签
    • job:值为job_name
    • _ address _:采集目标的主机端口地址
  • relabel期间额外提供了__meta_前缀的标签(服务发现机制提供的标签)
  • relabel操作结束后自动追加的标签
    • instance:设置为__address__标签值(如果relabel期间未配置)
    • _ scheme _:采集请求的协议
    • _ metrics_path _:采集请求的路径
    • _ param< name >:设置为采集请求url参数中的name字段值
  • relabel操作结束后__前缀的标签被自动清除

标签操作

  • replace:针对source_labels正则匹配,赋值target_label为replacement值(正则匹配失败则不操作)
  • keep:丢弃source_labels正则不匹配的采集目标
  • drop:丢弃source_labels正则匹配的采集目标
  • labelmap:映射正则匹配标签的值到replacement指定的标签上
  • labeldrop:剔除掉正则匹配的标签
  • labelkeep:仅保留正则匹配的标签

相关配置字段

  • action:指定标签操作类型(默认replace)
  • separator:配置分隔符(默认为;)
  • source_labels:指定源标签(可多个标签通过分隔符级联)
  • target_label:指定目标标签用于结果存储
  • regex:指定正则(针对source_labels去匹配,默认为 (.*)
  • replacement:replace操作中替换掉正则匹配的部分(默认为$1)

告警配置

groups:
- name: test-rule
 rules:
 - alert: KubeCPUOvercommit
	expr: sum(kube_resourcequota{job="kube-state-metrics",resource="requests.cpu",type="hard"})
	 / sum(node:node_num_cpu:sum) > 1.5
	for: 5m
	labels:
	 severity: warning
	annotations:
	 message: Overcommited CPU resource request quota on Namespaces.

查询语言

http_requests_total{method=”POST”, code="200"} #标签过滤
count(http_requests_total) #时间序列统计
rate(http_requests_total[1m]) #最近一分钟每秒请求量 

安装

服务编排方案 采用开源方案:https://github.com/giantswarm/kubernetes-prometheus

针对国内具体场景做了调整:https://github.com/maifusha/kubernetes-prometheus(feature/optimize分支)

  • 调整监控仪表盘
  • 增加了企业微信通知的支持
  • 升级部分服务组件版本,修复Bug
  • 修改各组件服务开放模式为ClusterIP
  • 各服务组件数据持久化调整至宿主机/data目录
  • 其他等等

Helm编排方案

  • 变更配置不方便,尤其是Prometheus系统栈配置较多
  • 适合于快速启动的测试

功能使用

Prometheus

  • status->targets:反映监控目标的数据采集健康状态
  • 配置重载: 请求/-/reload接口

Grafana

  • 修改默认账号admin:admin
  • 安装饼图插件
	grafana-cli plugins install grafana-piechart-panel

AlertMagager

本文转自开源中国- Prometheus监控
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
相关文章
|
9月前
|
监控 Java jenkins
进阶指南:使用Cloud Toolkit提高Java应用部署效率
【10月更文挑战第19天】作为一名长期从事Java开发的技术人员,我对提高开发效率有着不懈的追求。阿里巴巴推出的Cloud Toolkit无疑是众多工具中的佼佼者,它不仅简化了日常开发工作,更重要的是极大地提升了部署效率。本文将从个人的角度出发,深入探讨如何利用Cloud Toolkit的功能来实现自动化部署、持续集成(CI)与持续部署(CD)管道设置,以及性能监控工具的使用,帮助开发者实现更加高效的开发工作流。
111 2
|
图形学 开发者
U3D小游戏开发秘籍:实战代码优化与性能提升技巧
【7月更文第13天】Unity 3D(U3D)作为游戏开发界的瑞士军刀,以其强大的灵活性和跨平台能力,让无数创意化为指尖上的精彩。但对于初涉U3D的小游戏开发者而言,如何高效构建项目,确保流畅体验,是一门必修课。本文将深入浅出,结合实战代码示例,分享一系列优化与提升U3D小游戏性能的宝贵技巧。
222 1
|
6月前
|
消息中间件 负载均衡 Java
如何设计一个分布式配置中心?
这篇文章介绍了分布式配置中心的概念、实现原理及其在实际应用中的重要性。首先通过一个面试场景引出配置中心的设计问题,接着详细解释了为什么需要分布式配置中心,尤其是在分布式系统中统一管理配置文件的必要性。文章重点分析了Apollo这一开源配置管理中心的工作原理,包括其基础模型、架构模块以及配置发布后实时生效的设计。此外,还介绍了客户端与服务端之间的交互机制,如长轮询(Http Long Polling)和定时拉取配置的fallback机制。最后,结合实际工作经验,分享了配置中心在解决多台服务器配置同步问题上的优势,帮助读者更好地理解其应用场景和价值。
320 18
|
7月前
|
Cloud Native 安全 Java
铭师堂的云原生升级实践
铭师堂完整经历了云计算应用的四个关键阶段:从”启动上云”到”全量上云”,再到”全栈用云”,最终达到”精益用云”。通过 MSE 云原生网关的落地,为我们的组织带来了诸多收益,SLA 提升至100%,财务成本降低67%,算力成本降低75%,每次请求 RT 减少5ms。
铭师堂的云原生升级实践
|
8月前
|
负载均衡 算法 Java
深入探索微服务架构下的服务治理
深入探索微服务架构下的服务治理
|
9月前
|
Kubernetes 监控 测试技术
k8s学习--基于Ingress-nginx实现灰度发布系统
k8s学习--基于Ingress-nginx实现灰度发布系统
285 2
k8s学习--基于Ingress-nginx实现灰度发布系统
|
机器学习/深度学习 人工智能 自然语言处理
详解人工智能(概念、发展、机遇与挑战)
详解人工智能(概念、发展、机遇与挑战)
|
算法
PID算法原理分析及优化
这篇文章介绍了PID控制方法,这是一种广泛应用的控制算法,具有结构简单、鲁棒性强等特点。PID通过比例、积分和微分三个部分调整控制量,以减少系统输出与目标值的偏差。文章详细阐述了PID的基本原理,包括比例、积分和微分调节的作用,并提到积分饱和和微分项振荡的问题以及对应的优化策略,如积分分离、变速积分和微分先行等。此外,还提到了数字PID的实现形式,如位置式、增量式和步进式,以及串级PID在电机控制等领域的应用。
440 10
|
架构师 安全 Cloud Native
OpenSergo 正式开源,多家厂商共建微服务治理规范和实现
OpenSergo,Open 是开放的意思,Sergo 则是取了服务治理两个英文单词 Service Governance 的前部分字母 Ser 和 Go,合起来即是一个开放的服务治理项目。 该项目由阿里云、bilibili、字节跳动,以及 Spring Cloud Alibaba、Nacos、Apache Dubbo 社区共同维护,旨在构建一个和语言无关、和技术形态无关,但贴近业务的统一服务治理规范和实现,欢迎大家加入共建。
2414 1
OpenSergo 正式开源,多家厂商共建微服务治理规范和实现
|
SpringCloudAlibaba 监控 网络协议
SpringCloud Alibaba系列(三) Sentinel系统自适应限流
  Sentinel 系统自适应限流从整体维度对应用入口流量进行控制,结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标,通过自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。
403 0