Prometheus(一):Prometheus简介及安装

1 Prometheus 介绍

1.1 Prometheus简介

Prometheus 是一款基于时序数据库的开源监控告警系统,非常适合Kubernetes集群的监控。Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。

1.2 Prometheus的特点

Prometheus官网上的自述是:“From metrics to insight.Power your metrics and alerting with a leading open-source monitoring solution.”
翻译过来就是:从指标到洞察力,Prometheus通过领先的开源监控解决方案为用户的指标和告警提供强大的支持。

主要有以下四个特点:

  • 通过PromQL实现多维度数据模型的灵活查询。
  • 定义了开放指标数据的标准,自定义探针(如Exporter等),编写简单方便。
  • PushGateway组件让这款监控系统可以接收监控数据。
  • 提供了VM和容器化的版本。

除此之后还有如下特点:

  • Go语言编写。
  • 采用拉模式为主、推模式为辅的方式采集数据。
  • 既可以使用二进制文件直接启动,也支持容器化部署镜像。
  • 支持多种语言的客户端,如Java、JMX、Python、Go、Ruby、.NET、Node.js等语言。
  • 支持本地和第三方远程存储,单机性能强劲,可以处理上千target及每秒百万级时间序列。
  • 高效的存储。平均一个采样数据占3.5B左右,共320万个时间序列,每30秒采样一次,如此持续运行60天,占用磁盘空间大约为228GB
  • 出色的可视化功能。Prometheus拥有多种可视化的模式,比如内置表达式浏览器、Grafana集成和控制台模板语言。它还提供了HTTP查询接口,方便结合其他GUI组件或者脚本展示数据。
  • 精确告警。Prometheus基于灵活的PromQL语句可以进行告警设置、预测等,另外它还提供了分组、抑制、静默等功能防止告警风暴
  • 支持PushGateway采集瞬时任务的数据
  • 支持服务发现和静态配置两种方式发现目标
    prometheus也有一定的局限性,比如:
  • prometheus主要针对性能和可用性监控,不适用于针对日志(Log)、事件(Event)、调用链(Tracing)等的监控
  • Prometheus关注的是近期发生的事情,而不是跟踪数周或数月的数据。因为大多数监控查询及告警都针对的是最近(通常不到一天)的数据。Prometheus认为最有用的数据是最近的数据,监控数据默认保留15天。
  • 本地存储有限,存储大量的历史数据需要对接第三方远程存储
  • Prometheus的监控数据并没有对单位进行定义。
  • Prometheus对数据的统计无法做到100%准确,如订单、支付、计量计费等精确数据监控场景。

1.3 Prometheus架构

在这里插入图片描述
上图可以看出常用的组件主要有:

  • Prometheus server端:是Prometheus组件的核心,主要是对监控数据的获取,存储以及查询。
  • Exporter:获取监控组件的数据,并推送给Prometheus server端。
  • Alertmanager:告警处理组件。对告警规则产生告警信息进行处理,如:分组、抑制、静默等。
  • Pushgateway:主要用于瞬时任务的场景,Pushgateway可以获取监控数据并存储,Prometheus server端定时拉取。
  • WebUI:可视化界面管理,用户可以通过界面获取Prometheus的当前配置,监控任务运行状态等。常用的有:Grafana。
  • Service Discovery:服务发现。用户通过服务发现和注册的工具对成百上千的节点进行服务注册,并最终将注册中心的地址配置在Prometheus的配置文件中,大大简化了配置文件的复杂程度,也可以更好的管理各种服务。常用的有DNS、consul等

2 Prometheus安装

此处说的Prometheus安装针对的是Prometheus server。

本次是在Ubuntu 22.04环境下安装 prometheus-2.36.0

# 下载安装包
wget https://github.com/prometheus/prometheus/releases/download/v2.36.0/prometheus-2.36.0.linux-amd64.tar.gz
# 解压缩
tar xvfz prometheus-2.36.0.linux-amd64.tar.gz
mv prometheus-2.36.0.linux-amd64 /usr/local/prometheus
# 修改Prometheus配置文件
cd /usr/local/prometheus
mv prometheus.yml{,.bak}
vim prometheus.yml

global:
alerting:
  alertmanagers:
    - static_configs:
        - targets:
rule_files:
scrape_configs:
# 监控本机
  - job_name: "prometheus"
    static_configs:
      - targets: ["192.168.92.101:9090"]

 
 
# 配置快速启动文件
vi /usr/lib/systemd/system/prometheus.service

[Unit]
Description=prometheus
After=network.target
[Service]
Type=simple
#LimitNOFILE=100000
#LimitNPROC=100000
Restart=no
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --web.enable-lifecycle
PrivateTmp=true
[Install]
WantedBy=multi-user.target

# 参数解释:
# --web.enable-lifecycle加上之后,Prometheus支持热加载,即可以执行reload
# --storage.tsdb.retention.time=5d 数据保存5天,如果是30d,就是保存30d
# --storage.tsdb.path=/usr/local/share/prometheus/data \
# 如果删除数据的话,需要借助Prometheus的TSDB Admin API。
# 当前Prometheus TSDB Admin API提供了三个接口,分别是快照(Snapshot), 数据删除(Delete Series), 数据清理(Clean Tombstones)
# Prometheus的TSDB Admin API默认是关闭的,需要加入启动参数 --web.enable-admin-api才会启动。
# --web.enable-admin-api 控制对admin HTTP API的访问,其中包括删除时间序列等功能

systemctl daemon-reload
systemctl restart prometheus.service
systemctl status prometheus.service  

访问地址:ip:9090
在这里插入图片描述

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值