惊蛰 - 2025年3月
type: channel
link: http://forthxu.com/blog/2025/03/
description: Just So So ...
items: Prometheus

Prometheus
type: item
date: 2025-03-17T16:27:00+08:00
description: Prometheus Prometheus 是一个开源的监控和告警系统，最初由 SoundCloud 于 2012 年开发，后来捐赠给了 CNCF（云原生计算基金会），成为 Kubernetes 生态中事实上的标准监控工具。它以高效的时间序列数据库、强大的查询语言和灵活的架构著称，特别适合动态云环境和微服务架构的监控。 核心特性 时间序列数据： Prometheus 存储所有数据为时间序列，即带有时间戳的指标（metrics），每个指标由名称和一组键值对标签（labels）标识。 示例：http_requests_total{method="GET", endpoint="/api"} 1234。 Pull 模型： 通过 HTTP 定期从配置的目标（exporter 或应用）拉取指标，而不是依赖推送。 目标暴露 /metrics 端点，提供 Prometheus 格式的数据。 PromQL： 提供强大的查询语言（Prometheus Query Language），用于分析和聚合时间序列数据。 示例：rate(http_requests_total[5m]) 计算每秒请求速率。 多维数据模型： 通过标签支持多维度分析，比如按服务、实例、环境等过滤数据。 内置告警： 通过 Alertmanager 组件处理告警，支持多种通知方式（如邮件、Slack、Webhook）。 服务发现： 支持静态配置和动态服务发现（DNS、Consul、Kubernetes 等），适应云原生环境。 架构组件 Prometheus Server：核心服务，负责拉取、存储和查询数据。 Exporters：辅助工具（如 node_exporter、blackbox_exporter），暴露目标系统的指标。 Pushgateway：可选组件，用于支持短生命周期任务的指标推送。 Alertmanager：处理告警，分组、抑制和发送通知。 客户端库：支持多种语言（如 Go、Java、Python），便于应用自定义指标。 监控节点指标 https://github.com/prometheus/node_exporter 监控http服务器访问情况 https://github.com/prometheus/blackbox_exporter 监控服务器网络状况 https://github.com/prometheus/snmp_exporter 其他监控 https://prometheus.io/docs/instrumenting/exporters/ 这几个exporter可以单独运行，通过curl获取数据，改为 itdog.com 17ce.com ping.chinaz.com 类似的服务 详细比较下 Prometheus Zabbix Nagios Datadog 以下是对 Prometheus、Zabbix、Nagios 和 Datadog 的详细比较，从功能、架构、使用场景、优缺点等多个维度进行分析，帮助你理解它们的异同并选择合适的监控工具。 1. 概述 | 工具 | 类型 | 开源性 | 初创时间 | 核心目标 | |-------------|--------------|--------|----------|------------------------------| | Prometheus | 时间序列监控 | 开源 | 2012 | 云原生、微服务监控 | | Zabbix | 综合监控 | 开源 | 1998 | 传统 IT 基础设施监控 | | Nagios | 状态监控 | 开源 | 1999 | 服务和网络可用性检查 | | Datadog | 云监控平台 | 商业 | 2010 | 企业级云和应用性能监控 | 2. 架构与数据模型 | 维度 | Prometheus | Zabbix | Nagios | Datadog | |-------------|--------------------------------|-------------------------------|------------------------------|------------------------------| | 数据模型| 时间序列（指标+标签） | 通用（数值、状态、日志） | 状态检查（up/down） | 时间序列+日志+追踪 | | 采集方式| Pull（拉取） | Push（推送）+ Pull | Pull（插件执行） | Push（Agent）+ Pull | | 存储 | 内置 TSDB（本地时间序列数据库）| 关系型数据库（如 MySQL） | 无内置存储，需扩展 | 云端存储（SaaS） | | 查询语言…