一、相关概念

1.1概念和特点

Prometheus(普罗米修斯)是一个开源的系统监控报警工具。它最初由SoundCloud使用Go语言开发,并于2012年开源。Prometheus专注于实时监控和警报,并具有高度灵活的查询语言PromQL,使用户能够实时查询和分析系统的度量数据。

以下是Prometheus的一些关键特点和概念:

1.多维度数据模型: Prometheus使用多维度数据模型来存储时间序列数据,其中每个时间序列由其指标名称和一组键值对标签唯一标识。这使得用户能够非常灵活地查询和过滤数据。

2.查询语言PromQL: PromQL是Prometheus的查询语言,用于从存储的时间序列数据中提取有用的信息。它支持范围查询、聚合函数、算术运算符等功能,使用户能够轻松构建复杂的查询。

3.Pull型数据模型: Prometheus采用pull型数据模型,意味着监控目标(例如应用程序、服务器等)定期向Prometheus服务器推送自己的度量数据。这种模型相对于传统的push型模型更为灵活,允许用户有选择地监控特定的目标。

4.警报和通知: Prometheus支持基于规则的警报,用户可以定义规则来描述潜在的问题,并在符合规则条件时触发警报。警报可以与通知管理器集成,以便通过各种通知渠道(例如电子邮件、Slack等)通知运维团队。

5.可扩展性: Prometheus具有良好的可扩展性,支持通过插件和服务发现机制集成其他工具和系统。它还支持水平扩展,可以构建具有高可用性的监控解决方案。

6.图形化界面: Prometheus本身提供了一个基本的Web界面,用于实时查看度量数据、运行查询和检查警报状态。

Prometheus通常与Grafana等工具结合使用,以实现更强大的可视化和仪表盘功能。它在云原生和容器化环境中得到广泛应用,是CNCF(Cloud Native Computing Foundation)的一个项目。

1.2 Prometheus相关组件

Prometheus是由多个组件构成的系统,这些组件共同协作以实现监控、存储和报警等功能。

以下是Prometheus的一些主要组件:

Prometheus Server:

Prometheus服务器是核心组件,负责收集、存储和查询监控数据。它通过定期从配置的目标(例如应用程序、服务器)拉取度量数据,存储在本地时间序列数据库中,并提供PromQL查询接口供用户查询和分析数据。

Prometheus Storage (TSDB - Time Series Database):

Prometheus使用自己的时间序列数据库(TSDB)来存储监控数据。这个数据库是为高效存储和检索时间序列数据而优化的,支持快速范围查询、聚合和数据压缩。

Exporters:

Exporters是用于将不同系统的监控数据暴露给Prometheus的中间件。它们可以作为目标被Prometheus轮询,然后将系统的度量数据转换为Prometheus可理解的格式。例如,Node Exporter用于收集操作系统级别的度量,而其他Exporters可用于不同的应用程序和服务。

Alertmanager:

Alertmanager负责处理警报规则产生的警报。它可以对警报进行静默、去重,还可以集成通知方式,例如发送电子邮件、Slack消息或调用自定义Webhook等。Alertmanager与Prometheus Server集成,接收来自Prometheus的警报数据。

Grafana:

尽管Grafana不是Prometheus的官方组件,但它经常与Prometheus一起使用,用于创建仪表盘和可视化监控数据。Grafana提供了丰富的图形化界面,可以连接到Prometheus进行查询,并以图形和表格的形式显示监控数据。

Push Gateway:

Push Gateway允许短暂的、临时性的任务将其度量数据推送到Prometheus,而不是等待Prometheus定期拉取。这对于一些短暂存在的任务或作业非常有用。

1.3 Prometheus架构

df5caeeac45d4eac878e835aaf8fd15a.png

 

二、prometheus安装部署

Prometheus官网下载:Download | Prometheus

Prometheus-2.37.2下载:

https://github.com/prometheus/prometheus/releases/download/v2.37.2/prometheus-2.37.2.linux-amd64.tar.gz

2.1下载Prometheus-2.37.2

yum -y install wget

wget https://github.com/prometheus/prometheus/releases/download/v2.37.2/prometheus-2.37.2.linux-amd64.tar.gz

tar zxf prometheus-2.37.2.linux-amd64.tar.gz -C /usr

cd /usr

mv prometheus-2.37.2.linux-amd64 prometheus 

2.2 Prometheus配置文件详解

配置文件路径/usr/prometheus/prometheus.yml

# my global config
global:
  # 设置Prometheus对目标进行抓取的时间间隔
  scrape_interval: 15s
  # 设置规则的评估时间间隔
  evaluation_interval: 15s

# Alertmanager 配置
alerting:
  # Alertmanager实例列表,此处被注释掉表示禁用Alertmanager
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# 一次性加载规则并根据全局的 'evaluation_interval' 定期评估规则
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# 监控配置,包含抓取的作业和目标
scrape_configs:
  - job_name: "prometheus"
    static_configs:
      # Prometheus自身的监控指标
      - targets: ["192.168.118.136:9090"]

  - job_name: "prometheus-001"
    # 抓取间隔为10秒
    scrape_interval: 10s
    static_configs:
      # 目标为'192.168.118.135:9100',并带有标签 'instance: prometheus-001'
      - targets: ['192.168.118.135:9100']
        labels:
          instance: prometheus001

2.3 添加prometheus账户启动服务

groupadd prometheus
useradd -g prometheus -s /sbin/nologin prometheus

目录授权
chown -R prometheus:prometheus /usr/prometheus/

创建prometheus 本地TSDB数据存储目录
mkdir -p /var/lib/prometheus
chown -R prometheus:prometheus /var/lib/prometheus/

2.4 将prometheus添加为服务启动

vim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target

[Service]
# Type设置为notify时,服务会不断重启
Type=simple
User=prometheus
# --storage.tsdb.path是可选项,默认数据目录在运行目录的./dada目录中
ExecStart=/usr/prometheus/prometheus --config.file=/usr/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus --web.enable-lifecycle

ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target
chown prometheus:prometheus /usr/lib/systemd/system/prometheus.service
systemctl daemon-reload

systemctl  start prometheus

systemctl status prometheus

2.5 启动服务

http://192.168.118.135:9090

b411cc27953e43a999dad6d2207f8403.png

 

部署 node_exporter 收集机器的系统数据:

部署 node_exporter 收集机器的系统数据-CSDN博客

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐