欢迎各位访问我的博客,了解更多内容
指标采集工具
参考:
- Prometheus监控概述 - 呼长喜 - 博客园 (cnblogs.com)
- Prometheus简介 · Prometheus中文技术文档
Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。用户可以非常方便的安装和使用Prometheus,通过Node Exporter采集当前主机的系统资源使用情况。 使用Grafana创建可视化仪表盘。
discover targets
和配置的targets
进行拉取监控目标的数据rules
定时获取数据,通过配置的告警信息,发送到相应的目标AlertManager
可以根据配置规则进行去重、过滤等操做进行推送告警APi
、Prometheus Web Ui
、PQl语句
进行查询获取统计数据Prometheus可以适用于多种机器为中心监控、微服务架构监控等多种监控环境,并且由于不依赖其他组件,可靠性非常高,并且当系统出现问题时候可以快速定位故障,支持断电期间快速诊断。但是不适合精确的系统用量统计(请求数量计费等)。
具有多种客户端支持,方便用户监控服务内部状态。
http_request_total
表示一个指标名称(当前收到的请求总数)指标名称必须由“字母、数字、下划线、冒号组成”同时必须匹配正则表达式 [a-zA-Z_:][a-zA-Z0-9_:]*
/api/tracks
的 http 请求,打上 method=POST
的标签,就会形成具体的 http 请求格式:{
Gauge:一种常规的指标(温度、运行goroutines
的个数)
Summary:总结类似于柱状图(请求持续时间、相应大小),并且提供百分位功能,提供检测count
、sum
功能
Prometheus内置了一个强大的数据查询语言PromQL。 通过PromQL可以实现对监控数据的查询、聚合。同时PromQL也被应用于数据可视化(如Grafana)以及告警当中。
通过PromQL可以轻松回答类似于以下问题:
下载地址:Download | Prometheus
https://github.com/prometheus/prometheus/releases/download/v2.38.0/prometheus-2.38.0.windows-amd64.zip
wget https://github.com/prometheus/prometheus/releases/download/v2.37.1/prometheus-2.37.1.linux-amd64.tar.gz
由于Prometheus是由Go编写的,直接是一个二进制文件因此其目录格式如下:
├── prometheus
│ ├── LICENSE
│ ├── NOTICE
│ ├── console_libraries
│ │ ├── menu.lib
│ │ └── prom.lib
│ ├── consoles
│ │ ├── index.html.example
│ │ ├── node-cpu.html
│ │ ├── node-disk.html
│ │ ├── node-overview.html
│ │ ├── node.html
│ │ ├── prometheus-overview.html
│ │ └── prometheus.html
│ ├── prometheus
│ ├── prometheus.yml
│ └── promtool
vim prometues。yml
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
- job_name: "node_exporter_host"
static_configs:
- targets: ["localhost:9100"]
可以在运行时自动加载外部配置:
--web.enable-lifecycle
wget https://github.com/prometheus/pushgateway/releases/download/v1.4.3/pushgateway-1.4.3.linux-amd64.tar.gz
tar -zxvf pushgateway-1.4.3.linux-amd64.tar.gz
├── LICENSE
├── NOTICE
└── pushgateway
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
tar -zxvf node_exporter-1.3.1.linux-amd64.tar.gz
├── LICENSE
├── NOTICE
└── pushgateway
vim /etc/systemd/system/node_exporter.service
[Unit]
Description=node_exporter Monitoring System
Documentation=node_exporter Monitoring System
[Service]
Type=simple
User=byz
ExecStart=/opt/sofeware/nodeexporter/node_exporter --web.listen-address=:9100
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start node_exporter.service
systemctl status node_exporter.service
systemctl enable node_exporter.service
vim /etc/systemd/system/prometheus.service
[Unit]
Description=prometheus Monitoring System
Documentation=prometheus Monitoring System
[Service]
Type=simple
ExecStart=/opt/sofeware/prometheus/prometheus --web.enable-lifecycle --config.file=/opt/sofeware/prometheus/prometheus.yml --storage.tsdb.path=/opt/sofeware/prometheus/data
ExecStop=/bin/kill -INT $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start prometheus.service
systemctl status prometheus.service
systemctl enable prometheus.service
启动出现问题:
- “prometheus.service: main process exited,code=exited,status=2/INVALIDARGUMENT”:无法启动Prometheus Server - 前端之家 (f2er.com)
访问:http://localhost:9090
了解即可
PromQL
是 Prometheus 内置的数据查询语言,其提供对时间序列数据丰富的查询,聚合以及逻辑运算能力的支持。并且被广泛应用在 Prometheus 的日常应用当中,包括对数据查询、可视化、告警处理。可以这么说,PromQL
是 Prometheus 所有应用场景的基础。
参考连接:PromQL简书