prometheus简介

一、prometheus简介

prometheus 是一套开源的系统监控报警框架。

1、优点

  • 强大的多维度数据模型
  • 灵活而强大的查询语句(PromQL):在同一个查询语句,可以对多个 metrics 进行乘法、加法、连接、取分数位等操作。
  • 易于管理: Prometheus server 是一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储。
  • 高效:平均每个采样点仅占 3.5 bytes,且一个 Prometheus server 可以处理数百万的 metrics。
  • 使用 pull 模式采集时间序列数据,这样不仅有利于本机测试而且可以避免有问题的服务器推送坏的 metrics。
  • 可以采用 push gateway 的方式把时间序列数据推送至 Prometheus server 端
  • 可以通过服务发现或者静态配置去获取监控的 targets。
  • 有多种可视化图形界面。
  • 易于伸缩。

2、组件

Prometheus 生态圈中包含了多个组件,其中许多组件是可选的:

  • Prometheus Server: 用于收集和存储时间序列数据。
  • Client Library:客户端库,为需要监控的服务生成相应的 metrics 并暴露给 Prometheus server。当 Prometheus server 来 pull 时,直接返回实时状态的 metrics。
  • Push Gateway: 主要用于短期的 jobs。由于这类 jobs 存在时间较短,可能在 Prometheus 来 pull 之前就消失了。为此,这次 jobs 可以直接向 Prometheus server 端推送它们的 metrics。这种方式主要用于服务层面的 metrics,对于机器层面的 metrices,需要使用 node exporter。
  • Exporters: 用于暴露已有的第三方服务的 metrics 给 Prometheus。
  • Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去除重复数据,分组,并路由到对收的接受方式,发出报警。常见的接收方式有:电子邮件,pagerduty,OpsGenie, webhook 等。

3、架构

在这里插入图片描述
从这个架构图,也可以看出 Prometheus 的主要模块包含, Server, Exporters, Pushgateway, PromQL, Alertmanager, WebUI 等。它大致使用逻辑是这样:

  • Prometheus server 定期从静态配置的 targets 或者服务发现的 targets 拉取数据。
  • 当新拉取的数据大于配置内存缓存区的时候,Prometheus 会将数据持久化到磁盘(如果使用 remote storage 将持久化到云端)。
  • Prometheus 可以配置 rules,然后定时查询数据,当条件触发的时候,会将 alert 推送到配置的 Alertmanager。
  • Alertmanager 收到警告的时候,可以根据配置,聚合,去重,降噪,最后发送警告。
  • 可以使用 API, Prometheus Console 或者 Grafana 查询和聚合数据。

二、环境包准备

1、下载最新版的服务端prometheus和客户端node_exporter

服务端:https://prometheus.io/download/#prometheus
客户端:https://prometheus.io/download/#node_exporter

三、部署 Prometheus

1、 下载

cd /usr/src/
wget https://github.com/prometheus/prometheus/releases/download/v2.31.1/prometheus-2.31.1.linux-amd64.tar.gz

2、解压并重命名

tar -xf prometheus-2.31.1.linux-amd64.tar.gz -C /usr/local/
cd /usr/local/
mv prometheus-2.31.1.linux-amd64 prometheus

3、 配置

配置共分为三部分,分别是全局配置、告警配置、收集数据配置

vim /usr/local/prometheus/prometheus.yml
#全局配置
global:
  scrape_interval: 15s #每隔15秒向目标抓取一次数,默认为一分钟
  evaluation_interval: 15s #每隔15秒执行一次告警规则,默认为一分钟
  # scrape_timeout: 600s  #抓取数据的超时时间,默认为10s

#告警配置
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093	 #alertmanager所部署机器的ip和端口

#定义告警规则和阈值的yml文件
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

#收集数据配置
#以下是Prometheus自身的一个配置.
scrape_configs:
  #这个配置是表示在这个配置内的时间序例,每一条都会自动添加上这个{job_name:"prometheus"}的标签.
  - job_name: "prometheus"
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:			#静态配置
      - targets: ["localhost:9090"]

4、 启动服务

#校验配置文件
/usr/local/prometheus/promtool check config ./prometheus.yml

#启动
/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml &

##启动参数介绍
--config.file      	   #加载prometheus的配置文件
--web.listen-address   #监听prometheus的web地址和端口
--web.enable-lifecycle #热启动参数,可以在不中断服务的情况下重启加载配置文件
--storage.tsdb.retention   #数据持久化的时间                         
--storage.tsdb.path        #数据持久化的保存路径

5、service文件

cat > /usr/lib/systemd/system/prometheus.service <<EOF
[Unit]
Description=The Prometheus Server
After=network.target

[Service]
Restart=on-failure
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml
RestartSec=15s

[Install]
WantedBy=multi-user.target

EOF

systemctl daemon-reload && systemctl enable prometheus && systemctl restart prometheus

6、web 访问

通过浏览器访问 http://IP:9090 即可

四、部署 node_exporter

1、下载

cd /usr/src
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.0/node_exporter-1.3.0.linux-amd64.tar.gz

2、解压并重命名

tar -xf node_exporter-1.3.0.linux-amd64.tar.gz -C /usr/local/
cd /usr/local/
mv node_exporter-1.3.0.linux-amd64  node_exporter

3、 启动服务

#启动
/usr/local/node_exporter/node_exporter

##启动参数介绍
注意:相关启动的参数
--web.listen-address     #node_expoetrt暴露的端口
--collector.systemd	     #从systemd中收集
--collector.systemd.unit-whitelist   ##白名单,收集目标
		".+"         		      #从systemd中循环正则匹配单元
		"(docker|sshd|nginx).service"  #白名单,收集目标,收集参数node_systemd_unit_state		

4、service文件

cat > /usr/lib/systemd/system/node_exporter.service   <<EOF
[unit]
Description=The node_exporter Server
After=network.target

[Service]
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure
RestartSec=15s
SyslogIdentifier=node_exporter

[Install]
WantedBy=multi-user.target

EOF

systemctl daemon-reload && systemctl enable node_exporter && systemctl restart node_exporter

五、node_exporter客户端使用

1、修改Prometheus配置文件prometheus.yml

#修改配置文件,连接客户端
vim /usr/local/prometheus/prometheus.yml
......

    static_configs:
      - targets: ["192.168.153.155:9100"]     #修改为node_exporter客户端IP地址和端口号

#重启服务
systemctl restart prometheus.service 


2、访问测试是否连接成功

使用Prometheus主机IP地址和端口号查看目标 http://192.168.153.153:9090/targets
在这里插入图片描述

查看cpu信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值