Prometheus测试环境搭建与工具使用指南
立即解锁
发布时间: 2025-08-25 01:02:17 阅读量: 2 订阅数: 5 


Prometheus实战:构建高效监控系统
# Prometheus运维:环境部署、工具使用与问题排查
## 1. 测试环境部署
### 1.1 部署新实例
要创建一个新的Prometheus实例,首先需要进入正确的仓库路径:
```bash
cd chapter08/
```
确保没有其他测试环境正在运行,然后启动当前环境:
```bash
vagrant global-status
vagrant up
```
可以使用以下命令验证测试环境是否成功部署:
```bash
vagrant status
```
如果输出如下,则表示部署成功:
```plaintext
Current machine states:
prometheus running (virtualbox)
```
新实例部署成功后,Prometheus的Web界面可通过 `http://192.168.42.10:9090` 访问。可以使用以下命令连接到Prometheus实例:
```bash
vagrant ssh prometheus
```
### 1.2 清理环境
测试完成后,确保你在 `chapter08/` 目录下,执行以下命令清理环境:
```bash
vagrant destroy -f
```
如果后续需要,也可以轻松重新启动环境。
## 2. promtool工具探索
Prometheus附带了一个非常有用的命令行工具 `promtool`,它可以快速执行多个故障排除操作,其功能可分为以下四类:
### 2.1 Checks类子命令
- **check config**:检查Prometheus服务器的主配置文件的有效性。它接受主配置文件的路径作为输入,并输出配置的评估结果。如果存在非严重问题(如发现空的发现文件),会输出警告但允许工具成功退出;如果遇到严重错误(如语法错误),则会输出错误并标记检查失败。该工具返回的退出代码,0表示成功,1表示失败,可作为预检查,确保配置更改不会在重启时导致Prometheus崩溃。示例如下:
```bash
vagrant@prometheus:~$ promtool check config /etc/prometheus/prometheus.yml
Checking /etc/prometheus/prometheus.yml
SUCCESS: 1 rule files found
Checking /etc/prometheus/first_rules.yml
SUCCESS: 1 rules found
```
- **check rules**:分析并找出规则配置文件中的错误配置。它允许直接针对特定的规则文件进行测试,这在规则文件的开发周期以及使用配置管理验证文件的自动更改时非常有用。示例如下:
```bash
vagrant@prometheus:~$ promtool check rules /etc/prometheus/first_rules.yml
Checking /etc/prometheus/first_rules.yml
SUCCESS: 1 rules found
```
- **check metrics**:验证传入的指标是否符合Prometheus的一致性和正确性准则。它通过标准输入接收指标负载,因此可以将文件或 `curl` 的输出直接通过管道传递给它。示例如下:
```bash
~$ curl -s http://prometheus:9090/metrics | promtool check metrics
prometheus_tsdb_storage_blocks_bytes_total non-counter metrics should not have "_total"
suffix
```
### 2.2 Queries类子命令
- **query instant**:基于当前时间直接通过命令行查询Prometheus服务器。需要提供Prometheus服务器的URL和要执行的查询作为参数。示例如下:
```bash
vagrant@prometheus:~$ promtool query instant 'http://prometheus:9090' 'up == 1'
up{instance="prometheus:9090", job="prometheus"} => 1 @[1550609854.042]
up{instance="prometheus:9100", job="node"} => 1 @[1550609854.042]
```
- **query range**:显示指定时间范围内的查询结果。需要提供开始和结束的Unix时间戳、查询语句和Prometheus服务器端点。示例如下:
```bash
vagrant@prometheus:~$ promtool query range --start=$(date -d '5 minutes ago' +'%s') --
end=$(date -d 'now' +'%s') --step=1m 'http://prometheus:9090'
'node_network_transmit_bytes_total{device="eth0",instance="prometheus:9100",job="node"}'
node_network_transmit_bytes_total{device="eth0", instance="prometheus:9100", job="node"}
=>
139109 @[1551019990]
139251 @[1551020050]
139401 @[1551020110]
139543 @[1551020170]
139693 @[1551020230]
140571 @[1551020290]
```
- **query series**:搜索所有匹配一组指标名称和标签的时间序列。示例如下:
```bash
vagrant@prometheus:~$ promtool query series 'http://prometheus:9090' --match='up' --
match='go_info{job="prometheus"}'
{__name__="go_info", instance="prometheus:9090", job="prometheus", version="go1.11.5"}
{__name__="up", instance="prometheus:9090", job="prometheus"}
{__name__="up", instance="prometheus:9100", job="node"}
```
- **query labels**:搜索所有可用指标中的特定标签,并返回所有可能的值。示例如下:
```bash
vagrant@prometheus:~$ promtool query labels 'http://prometheus:9090' 'moun
```
0
0
复制全文
相关推荐










