IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Prometheus安装配置 -> 正文阅读

[系统运维]Prometheus安装配置

Prometheus安装配置

Prometheus 特点

  • 多维数据模型:由度量名称和键值对标识的时间序列数据。
  • PromSQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询。
  • 不依赖分布式存储,单个服务器节点可直接工作。
  • 基于HTTP的pull方式采集时间序列数据。
  • 推送时间序列数据通过PushGateway组件支持。
  • 通过服务发现或静态配置发现目标。
  • 多种图形模式及仪表盘支持(grafana)。

Prometheus 工作原理

通过HTTP周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口并符合Prometheus定义的数据格式,就可以接入Prometheus监控;Prometheus Server负责定时在目标上抓取metrics(指标)数据,每个抓取目标都需要暴露一个HTTP服务接口用于Prometheus定时抓取。这种调用被监控对象获取监控数据的方式被称为Pull(拉);Pull方式体现了Prometheus独特的设计哲学与大多数采用Push(推)方式的监控不同。

优点

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

组件

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 等。

架构

在这里插入图片描述

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

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

部署 Prometheus

下载promethues

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

解压并重命名

[root@master ~]# tar xf prometheus-2.31.1.linux-amd64.tar.gz -C /usr/local/
[root@master ~]# cd /usr/local/
[root@master local]# ls
bin    include  libexec                        share
etc    lib      prometheus-2.31.1.linux-amd64  src
games  lib64    sbin
[root@master local]# mv prometheus-2.31.1.linux-amd64/ prometheus
[root@master local]# ls
bin  games    lib    libexec     sbin   src
etc  include  lib64  prometheus  share
[root@master local]# useradd -M -s /sbin/nologin prometheus
[root@master local]# mkdir -p /data/prometheus
[root@master local]# chown -R prometheus.prometheus /usr/local/prometheus /data/prometheus

配置

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

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"]

配置service文件

[root@master ~]# vim /usr/lib/systemd/system/prometheus.service
[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

[root@master ~]#  systemctl daemon-reload

启动参数介绍

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

启动服务

[root@master ~]# systemctl restart prometheus
[root@master ~]# ss -anlt
State  Recv-Q Send-Q  Local Address:Port   Peer Address:Port 
LISTEN 0      128           0.0.0.0:22          0.0.0.0:*    
LISTEN 0      128                 *:9090              *:*    
LISTEN 0      128              [::]:22             [::]:*    

访问测试

在这里插入图片描述

node_exporter部署

软件包

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

解压并重命名

[root@client ~]# 
[root@client ~]# tar xf node_exporter-1.3.0.linux-amd64.tar.gz  -C /usr/local/
[root@client ~]# cd /usr/local/
[root@client local]# ls
bin    include  libexec                          share
etc    lib      node_exporter-1.3.0.linux-amd64  src
games  lib64    sbin
[root@client local]# mv node_exporter-1.3.0.linux-amd64/ node_exporter
[root@client local]# ls
bin  games    lib    libexec        sbin   src
etc  include  lib64  node_exporter  share

启动参数介绍

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

配置service

[root@client local]# vi /usr/lib/systemd/system/node_exporter.service
[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

[root@client local]# systemctl daemon-reload

启动服务

[root@client local]# systemctl start node_exporter
[root@client local]# ss -anlt
State  Recv-Q Send-Q  Local Address:Port   Peer Address:Port 
LISTEN 0      128           0.0.0.0:22          0.0.0.0:*    
LISTEN 0      128                 *:9100              *:*    
LISTEN 0      128              [::]:22             [::]:*    

测试访问

访问ip:用prometheus那台的ip(192.168.200.136),后面跟上targets
在这里插入图片描述

修改配置文件

[root@master ~]# vi /usr/local/prometheus/prometheus.yml
timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["192.168.200.137:9100"]  // 修改这行

重启访问

[root@master ~]# systemctl restart prometheus
[root@master ~]# ss -anlt
State  Recv-Q Send-Q  Local Address:Port   Peer Address:Port 
LISTEN 0      128           0.0.0.0:22          0.0.0.0:*    
LISTEN 0      128                 *:9090              *:*    
LISTEN 0      128              [::]:22             [::]:*    

在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-11-26 09:15:07  更:2021-11-26 09:16:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:26:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码