服务监控系统Promethus简介/快速入门

本文深入解析Prometheus监控系统的架构与工作原理,涵盖基本概念、安装配置、数据采集、告警机制及可视化展示。Prometheus作为一款开源的监控告警解决方案,通过时序数据存储、Prometheus Server、Client Library、Pushgateway、Exporter、Alertmanager和WebUI等组件,实现了对目标系统全面监控。文章还介绍了如何使用NodeExporter收集主机监控数据,通过Grafana进行数据可视化,以及Alertmanager的告警处理流程。
Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

1 Promethus基本概念

Prometheus 是由 SoundCloud 开源监控告警解决方案。
prometheus存储的是时序数据,即按相同时序(相同名称和标签),以时间维度存储连续的数据的集合。时序(time series)是由名字(Metric)以及一组key/value标签定义的,具有相同的名字以及标签属于相同时序。
在这里插入图片描述

  1. Prometheus Server:用于收集指标和存储时间序列数据,并提供查询接口

  2. client Library:客户端库(例如Go,Python,Java等),为需要监控的服务产生相应的/metrics并暴露给Prometheus Server。目前已经有很多的软件原生就支持Prometheus,提供/metrics,可以直接使用。对于像操作系统已经不提供/metrics,可以使用exporter,或者自己开发exporter来提供/metrics服务。

  3. push gateway:主要用于临时性的 jobs。由于这类 jobs 存在时间较短,可能在 Prometheus 来 pull 之前就消失了。对此Jobs定时将指标push到pushgateway,再由Prometheus Server从Pushgateway上pull。

  4. exporter:用于暴露已有的第三方服务的 metrics 给 Prometheus。

  5. alertmanager:从 Prometheus server 端接收到 alerts 后,会进行去除重复数据,分组,并路由到对收的接受方式,发出报警。常见的接收方式有:电子邮件,pagerduty,OpsGenie, webhook 等。

  6. Web UI:Prometheus内置一个简单的Web控制台,可以查询指标,查看配置信息或者Service Discovery等,实际工作中,查看指标或者创建仪表盘通常使用Grafana,Prometheus作为Grafana的数据源。

2 安装

官网下载对应的安装包
https://prometheus.io/download/
解压文件,开箱即可用

tar –zxvf prometheus-2.20.0.linux-amd64.tar.gz

在这里插入图片描述
cd进入目录,执行命令

./prometheus --web.listen-address=0.0.0.0:8090 --config.file="prometheus.yml"

在这里插入图片描述
在浏览器输入ip:8090即可访问如下页面在这里插入图片描述

3 安装Node Exporter

Promethus Server并不直接监控特定目标,其主要任务是负责数据的手机、存储、并对外提供数据查询支持。因此为了能够监控,需要使用Node Exporter。Promethus周期性地从Exporter暴露的HTTP服务地址拉去监控样本数据。Exporter是Prometheus的一类数据采集组件的总称。它负责从目标处搜集数据,并将其转化为Prometheus支持的格式。与传统的数据采集组件不同的是,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取。
官网下载:
https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-arm64.tar.gz
解压并安装

tar -zxvf node_exporter-1.0.1.linux-arm64.tar.gz -C software/

在这里插入图片描述
进入目录并启动./node_exporter
报错,以为是没有权限,使用命令chmod 777 xxx 再运行还是不对,发现安装包有问题。应该下载linux_amd版本
重新选择下载地址
https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz

解压、进入目录,执行脚本
进入目录并启动./node_exporter
访问10.3.xx.xx:9100

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
访问http://10.3.xx.xx:9100/metrics
可以看到当前主机的所有监控资源
Help 用于解释当前指标的含义
Type 说明当前指标的数据类型
在这里插入图片描述
从Node_exporter收集监控数据
打开./promethus.yml 在里面加上如下内容
在这里插入图片描述
刷新页面,输入up看到如下页面:
0 表示异常 1 表示正常
在这里插入图片描述
选择Graph面板,选择node_load1,即可以查看主机的负载样本数据。
Promethus内置了很多函数,如rate(node_cpu_seconds_total[2m])可以计算在单位时间内样本数据的变化情况,即增长率。通过该函数可以近似地通过CPU使用时间计算CPU的利用率。avg without(cpu) (rate(node_cpu_seconds_total[2m])) 忽略CPU维度,将CPU标签去除后聚合数据即可
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4 监控数据可视化

Promethus UI提供了快速验证PromQL以及临时可视化支持的能力,而在大多数场景下引入监控系统还需要构建可以长期使用的监控表盘,这时候可以考虑使用第三方可视化工具Granfana,Grafana是一个开源的可视化平台,并提供了对Promethus的完整支持。

4.1 安装Grafana

下载安装包并安装
https://dl.grafana.com/oss/release/grafana-7.1.0-1.x86_64.rpm

yum install grafana-7.1.0-1.x86_64.rpm

在这里插入图片描述
在这里插入图片描述
启动

/etc/init.d/grafana-server start

在这里插入图片描述

访问浏览器10.3.xx.xx:3000
默认账户:admin
默认密码:admin
登录之后修改密码,进入页面

在这里插入图片描述

Promethus Server是Promethus组件的核心,负责实现对监控的获取、存储以及查询。Promethus Server可以通过静态配置管理监控目标,也可以配合Service Discovery的方式动态管理监控目标,并从这些监控目标中获取数据。Promethus Server需要对采集到的监控数据进行存储,其本身就是时序数据库,将采集的数据按照时间序列的方式存储到本地磁盘。

3.2 Granfana相关概念

将10.3.xx.xx服务器作为数据源增加到Granfana中
在这里插入图片描述
在这里插入图片描述

5 告警神器

Alertmanager 用于发送告警, 是真正发送信息给用户的模块。Alertmanager 会接受Prometheus发送过来的警告信息,再由Alertmanager来发送。
Prometheus的配置文件中,有alertmanager_config这一项,他配置的就是alertmanager的地址,如果prometheus产生了告警,就会根据这个配置的url,进行发送。告警信息就会发送到alertmanager中,所有prometheus的任务就是产生告警的信息,其余的处理都会在alertmanager中做。
访问github进行下载:
https://github.com/prometheus/alertmanager

5.1 告警状态:

 Inactive 这里什么都没发生
 Pending 已触发阈值,但未满足告警持续时间
 Firing 已触发阈值且满足告警持续时间,将警报发送给接受者

5.2 告警收敛

 Group 分组 将类似性质的警报分类为单个通知
 Inhibition 抑制 当警报触发后,停止重复发送由此警报而引发的其他警报
 Silence 静默 一种简单的特定时间静音提醒机制

alertmanager.yml文件

[root@es2 config]# cat alertmanager.yml
global:
  smtp_smarthost: 'smtp.exmail.qq.com:25'       # smtp地址
  smtp_from: 'sijy@jubaozhu.com'                # 谁发邮件
  smtp_auth_username: 'sijy@jubaozhu.com'       # 邮箱用户
  smtp_auth_password: 'xxxxx'                   # 邮箱密码
  smtp_require_tls: false

route:
  group_by: ["instance"]            # 分组名
  group_wait: 30s                   # 当收到告警的时候,等待三十秒看是否还有告警,如果有就一起发出去
  group_interval: 5m                # 发送警告间隔时间
  repeat_interval: 3h               # 重复报警的间隔时间
  receiver: mail                    # 全局报警组,这个参数是必选的,和下面报警组名要相同

receivers:
- name: 'mail'                      # 报警组名
  email_configs:
  - to: 'sijiayong000@163.com'      # 发送给谁

需要在prometheus中定义相关的报警规则,即rules.yml,已触发相应的告警。并在prometheus.yml配置文件中添加告警机器的ip地址

6 相关概念

Counter:递增的计数器

适合:API 接口请求次数,重试次数。

• Gauge:可以任意变化的数值

适合:cpu变化,类似波浪线不均匀。

• Histogram:对一段时间范围内数据进行采样,并对所有数值求和与统计数量、柱状图

适合:将web 一段时间进行分组,根据标签度量名称,统计这段时间这个度量名称有多少条。

适合:某个时间对某个度量值,分组,一段时间http相应大小,请求耗时的时间。

• Summary:与Histogram类似

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 配置 Prometheus 和 Nginx Exporter 实现对 Nginx 的监控 为了实现使用 Prometheus 和 Nginx Exporter 对 Nginx 进行监控,以下是详细的配置方法: #### 1. 确认 Nginx 已启用 `http_stub_status_module` 模块 在开始之前,需验证当前使用的 Nginx 版本是否启用了 `with-http_stub_status_module` 模块。可以通过运行以下命令来检查: ```bash nginx -V 2>&1 | grep -- '--with-http_stub_status_module' ``` 如果输出中包含该选项,则表示模块已启用[^3]。 #### 2. 修改 Nginx 配置文件以暴露状态页面 编辑 Nginx 配置文件(通常位于 `/etc/nginx/nginx.conf` 或站点特定的配置路径),添加如下内容以开启 `stub_status` 页面: ```nginx server { listen 80; server_name localhost; location /nginx_status { stub_status on; # 开启状态报告功能 access_log off; # 关闭访问日志记录 allow 127.0.0.1; # 允许本地访问 deny all; # 拒绝其他 IP 地址访问 } } ``` 保存更改后重新加载 Nginx 配置: ```bash sudo systemctl reload nginx ``` #### 3. 安装并启动 Nginx Prometheus Exporter Nginx Prometheus Exporter 是一个用于将 Nginx 的性能指标转换为 Prometheus 可识别格式的小型工具。以下是几种常见的安装方式: ##### 方法一:使用 nohup 启动 下载对应版本的 exporter 并解压到指定目录,执行以下命令启动服务: ```bash nohup ./nginx-prometheus-exporter -web.listen-address=":9113" \ -nginx.scrape-uri="http://localhost/nginx_status" & ``` ##### 方法二:使用 Docker Run 启动 推荐在容器化环境中使用此方法。拉取官方镜像并运行容器: ```bash docker run -d --name nginx-exporter \ -p 9113:9113 \ quay.io/prometheus/nginx-exporter:v1.4.1 \ -nginx.scrape-uri=http://host.docker.internal/nginx_status ``` ##### 方法三:使用 Docker Compose 启动 创建 `docker-compose.yml` 文件,内容如下: ```yaml version: '3' services: nginx-exporter: image: quay.io/prometheus/nginx-exporter:v1.4.1 ports: - "9113:9113" command: ["-nginx.scrape-uri=http://host.docker.internal/nginx_status"] ``` 然后通过以下命令启动服务: ```bash docker-compose up -d ``` #### 4. 配置 Prometheus 抓取指标 编辑 Prometheus 的配置文件(通常是 `prometheus.yml`),新增一个 job 来抓取 Nginx 出口器的数据: ```yaml scrape_configs: - job_name: 'nginx' static_configs: - targets: ['localhost:9113'] ``` 重启 Prometheus 生效新配置: ```bash sudo systemctl restart prometheus ``` #### 5. 使用 Grafana 展示监控数据 完成上述步骤后,在 Grafana 中导入预定义仪表盘即可直观查看 Nginx 的各项性能指标。Grafana 提供了丰富的可视化组件支持自定义展示效果。 --- ### 示例代码片段 以下是一个完整的脚本样例,演示如何快速部署环境: ```bash #!/bin/bash # 步骤 1: 下载并启动 Nginx Prometheus Exporter wget https://github.com/nginxinc/nginx-prometheus-exporter/releases/download/v1.4.1/nginx-prometheus-exporter-linux-amd64.tar.gz tar xf nginx-prometheus-exporter-linux-amd64.tar.gz cd nginx-prometheus-exporter-v* # 启动 Exporter nohup ./nginx-prometheus-exporter -web.listen-address=":9113" \ -nginx.scrape-uri="http://localhost/nginx_status" & # 步骤 2: 更新 Prometheus 配置 cat <<EOF >> /path/to/prometheus.yml scrape_configs: - job_name: 'nginx' static_configs: - targets: ['localhost:9113'] EOF # 重载 Prometheus sudo systemctl reload prometheus ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值