作为业务开发就不需要懂Prometheus么

前言

Prometheus:普罗米修斯,这名就有一种高大上的感觉。那么普罗米修斯到底是干嘛的呢?一句话总结:Prometheus 是一个开源的服务监控系统和时间序列数据库。

抓住三个词,即 开源,监控,时间序列数据库。

开源: 意味着我们可以免费使用,有问题可以给社区提Issues寻求帮助,也可以自己提一些新功能或者Bug修复的PR,共建强大的生态圈。

监控: 意味着普罗米修斯可以用于监控场景,监控我们的服务器,监控我们的数据库,监控我们的应用程序,它都用的上。

时间序列数据库: 维基百科上对于时间序列的定义是‘一系列数据点按照时间顺序排列’,其实就是根据时间点存储的信息,这些信息是不可变的。目前在监控场景用的比较多。

对比一些老牌的监控,比如zabbix,Prometheus近几年在容器监控方面表现的非常突出,人家就是干这个事情的。对于新的监控选型,我觉得大家可以尝试下Prometheus。

虽然监控这个工作属于运维这块的,理应要有专业的运维工程师来做。我认为作为一个后端开发,也必须要懂得一些监控相关的知识和技能储备。万一你去了创业公司,很可能什么工作都是你来做。

Prometheus中的一些概念

Prometheus Server

Prometheus Server是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。

Exporter

Exporter将监控的数据采集起来,通过HTTP服务的形式暴露出去,Prometheus Server

会定时去拉取这些暴露的数据进行监控。

官方已经提供了很多的Exporter,比如Mysql等。下载地址:https://prometheus.io/download/

如果是监控我们的应用程序,可以在程序中集成官方的SDK,自己埋点暴露出需要监控的指标即可。

PushGateway

PushGateway作为一个独立的服务,大部分场景下我们用的是pull模式,也就是Prometheus Server去拉取Exporter提供的数据,如果想使用push模式的话,可以将数据push给PushGateway,由PushGateway统一提供数据给Server。

Service Discovery

服务发现是一个特别重要的功能,特别是在微服务场景下监控显得尤为重要。如果没有服务发现的功能,那么每启动一个服务就需要去修改Prometheus的配置文件增加对应的配置。

有了服务发现的功能,可以动态的去发现服务信息,无需手动修改配置。官方推荐用Consul作为服务发现,像我们用Nacos的话,目前是不支持的,还需要想办法进行处理,比如定时拉取信息同步到文件中。

三剑客

Prometheus目前的标配都是和Grafana,AlertManage 一起使用的,三剑客。跟ELK是一样的,正所谓三个臭皮匠赛过诸葛亮。

  • Prometheus

负责拉取监控数据,存储。

  • Grafana

负责展示各种监控指标,通过图形化的方式。

Prometheus负责赚钱养家,Grafana负责美貌如花。

  • AlertManage

负责异常告警,可以对接钉钉等多种消息通知。

生态系统组成

图片

体验下Prometheus的魅力

最近闲来无事,我也打算学习下Prometheus。一是为了扩充自己的知识面,二也是看看能不能将其在工作中使用起来。

对于主机,数据库相关的监控,很多公司都在云上面,云平台本身就提供了很好的监控告警体系,也没必要再用Prometheus去搞一套了。

其他场景也是可以使用的,比如指标监控,监控应用的一些指标。也可以用于业务指标监控,总之玩法很多,就看你怎么玩。

自己学习体验的话直接用Docker拉镜像创建吧,简单,快速,方便。

部署Prometheus

docker run -d -p 9090:9090 -v /Users/yinjihuan/Downloads/prometheus/prometheus.yml:/etc/Prometheus/Prometheus.yml prom/prometheus

Prometheus.yml

global:
  scrape_interval:     15s 
  external_labels:
    monitor: 'codelab-monitor'
scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']
  - job_name: beta_node
    static_configs:
      - targets: ['10.111.83.8:9100']

定义了两个任务,一个是Prometheus自己的监控,它本身也是一个服务,也会暴露出一些指标信息。

一个是机器的监控任务,目标需要配置IP+PORT,对应的机器上要装node_export才行,通过node_export将机器的指标数据暴露,Prometheus才能拉取到进行监控。

部署Grafana

docker run -d -p 3000:3000 --name=grafana -v /Users/yinjihuan/Downloads/Grafana-storage:/var/lib/grafana  grafana/grafana

部署node_export

从官网下载对应的node_export:https://prometheus.io/download/#node_exporter

解压后直接启动即可,nohup ./node_exporter & 启动,默认端口 9100。此机器IP就是上面beta_node中的IP10.111.83.8

配置Grafana图表

访问localhost:3000就是Grafana的主页,然后在设置里面创建一个数据源,指向Prometheus的地址。

图片

然后导入一个你喜欢的图表进行关联即可,图表可以去https://grafana.com/grafana/dashboards?search=node进行搜索,比如搜node就会展示所有node_export相关的图表,每个图表有一个编号,直接根据编号load即可,需要联网。

图片

机器监控效果

图片

后续其他的一些操作,等我体验后再给大家分享踩坑记录。

关于作者:尹吉欢,简单的技术爱好者,《Spring Cloud 微服务-全栈技术与案例解析》, 《Spring Cloud 微服务 入门 实战与进阶》作者, 公众号猿天地发起人。

<think>好的,用户问的是Prometheus针对业务应用需要监控哪些方面。首先,我需要回想一下Prometheus的基本功能和适用场景。Prometheus主要是做监控和告警的,特别适合云原生环境,但也能监控传统应用。业务应用监控的话,可能需要关注几个关键点:比如服务是否存活、性能指标、业务相关的自定义指标、日志和链路追踪可能Prometheus的强项,但有时会结合其他工具。 接下来,用户可能想知道具体的监控项,比如HTTP请求量、延迟、错误率这些。然后,业务逻辑相关的指标,比如订单数、用户活跃度这些自定义指标。这时候要提到Prometheus的客户端库,比如Java的SimpleClient,可以让开发者在代码里埋点,暴露指标。 然后需要考虑基础设施部分,虽然用户问的是业务应用,但业务应用依赖的数据库、缓存、消息队列的状态也会影响业务,所以可能需要提到这些关联监控。过要区分清楚,Prometheus主要负责应用层面的,基础设施可能需要其他exporter。 然后告警部分,Prometheus的Alertmanager怎么配置规则,比如当错误率超过阈值时触发告警。这里要举一些例子,比如请求错误率超过5%就告警,或者延迟过高。 另外,用户可能对如何开始实施太清楚,所以需要给出步骤,比如确定需求、埋点、暴露指标、配置采集、配置告警、可视化。可能还需要提到和Grafana结合做图表。 还需要注意一些常见问题,比如指标设计要合理,避免高基数标签,以及Prometheus的拉取模式可能需要服务支持/metrics端点。如果是短生命周期的任务,可能需要Pushgateway。 最后,确保回答结构清晰,分点列出,让用户容易理解。同时要检查有没有遗漏,比如业务连续性、SLO管理这些高阶内容,可能用户一定需要,但可以简要提及。总之,要把Prometheus业务监控中的核心部分讲清楚,给出实际例子和步骤,帮助用户落地。</think>Prometheus 针对业务应用的监控可分为以下核心维度,结合场景和最佳实践逐步实施: --- ### 一、基础存活监控 1. **服务存活状态** - 通过 `up{job="your_service"}` 监控实例是否存活 - 配置告警规则:`up == 0` 2. **健康检查端点** - 暴露 `/health` 端点,返回 HTTP 200 和状态数据 - 使用 `probe_success{job="health_check"}` 监控健康状态 --- ### 二、业务性能指标 1. **HTTP 请求指标** - 使用客户端库(如 `prometheus/client_java`)自动收集: ```java Counter requests = Counter.build() .name("http_requests_total") .help("Total HTTP requests") .labelNames("method", "path", "status") .register(); ``` - 关键指标: - 请求速率:`rate(http_requests_total[5m])` - 错误率:`sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m]))` - 延迟分布:`histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))` 2. **自定义业务指标** - 订单场景示例: ```python from prometheus_client import Gauge active_orders = Gauge('business_orders_active', 'Current active orders') ``` --- ### 三、资源与依赖监控 1. **应用资源消耗** - 容器化环境监控: - CPU:`rate(container_cpu_usage_seconds_total[5m])` - 内存:`container_memory_working_set_bytes` 2. **中间件依赖** - 数据库连接池: ```go db_connections = prometheus.NewGauge(prometheus.GaugeOpts{ Name: "db_connections_active", Help: "Current active DB connections", }) ``` --- ### 四、告警配置示例 ```yaml # alert_rules.yml groups: - name: business-alerts rules: - alert: HighErrorRate expr: | sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) > 0.05 for: 10m labels: severity: critical annotations: summary: "High error rate ({{ $value }}) on {{ $labels.instance }}" ``` --- ### 五、实施路径 1. **指标埋点** - 选择关键业务路径埋点(注册、支付等核心流程) - 使用 `Counter/Gauge/Histogram` 三种基础类型 2. **暴露端点** - 确保应用暴露 `/metrics` 端点 3. **Prometheus 配置** ```yaml scrape_configs: - job_name: 'business-service' scrape_interval: 15s static_configs: - targets: ['app-server:8080'] ``` 4. **可视化集成** - 通过 Grafana 构建业务看板 - 关键模板:`179`(JVM 监控)、`315`(Redis 看板) --- ### 六、避坑指南 1. **标签设计** - 避免高基数标签(如用户ID),优先使用枚举值 - 错误示例:`path="/user/1234/profile"` - 正确做法:`path="/user/:id/profile"` 2. **采样频率** - 业务指标建议 `15-30s` 采集间隔 3. **长期存储** - 超过 15 天数据需接入 Thanos 或 VictoriaMetrics --- 通过以上分层监控,可构建覆盖业务健康度、性能表现、资源消耗的完整可观测体系,结合 SLO(服务等级目标)管理实现精准告警。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值