使用promtool和amtool时的备注
这是一份作业备忘录。
以下是关于我在我的 Mac 上构建的 Prometheus 和 Alertmanager 的相关信息,使用 promtool 和 amtool 进行测试时的备忘录。
使用promtool/amtool检查Prometheus/Alertmanager的配置
amtool的用法- Prometheus文档
环境
-
- Mac OS
-
- Prometheus 2.33.2
- Alertmanager 0.23.0
使用 promtool。
当您下载Prometheus二进制文件后,可以一起使用。(使用Docker也可以,就像参考文章中一样)
$ls
LICENSE consoles prometheus.yml
NOTICE data promtool
console_libraries prometheus rules.yml
看下帮助的话,就是这样的感觉。
./promtool --help
usage: promtool [<flags>] <command> [<args> ...]
Tooling for the Prometheus monitoring system.
Flags:
-h, --help Show context-sensitive help (also try --help-long
and --help-man).
--version Show application version.
--enable-feature= ... Comma separated feature names to enable (only
PromQL related). See
https://prometheus.io/docs/prometheus/latest/feature_flags/
for the options and more details.
Commands:
help [<command>...]
Show help.
check service-discovery [<flags>] <config-file> <job>
Perform service discovery for the given job name and report the results,
including relabeling.
check config [<flags>] <config-files>...
Check if the config files are valid or not.
check web-config <web-config-files>...
Check if the web config files are valid or not.
check rules <rule-files>...
Check if the rule files are valid or not.
check metrics
Pass Prometheus metrics over stdin to lint them for consistency and
correctness.
examples:
$ cat metrics.prom | promtool check metrics
$ curl -s http://localhost:9090/metrics | promtool check metrics
query instant [<flags>] <server> <expr>
Run instant query.
query range [<flags>] <server> <expr>
Run range query.
query series --match=MATCH [<flags>] <server>
Run series query.
query labels [<flags>] <server> <name>
Run labels query.
debug pprof <server>
Fetch profiling debug information.
debug metrics <server>
Fetch metrics debug information.
debug all <server>
Fetch all debug information.
test rules <test-rule-file>...
Unit tests for rules.
tsdb bench write [<flags>] [<file>]
Run a write performance benchmark.
tsdb analyze [<flags>] [<db path>] [<block id>]
Analyze churn, label pair cardinality and compaction efficiency.
tsdb list [<flags>] [<db path>]
List tsdb blocks.
tsdb dump [<flags>] [<db path>]
Dump samples from a TSDB.
tsdb create-blocks-from openmetrics <input file> [<output directory>]
Import samples from OpenMetrics input and produce TSDB blocks. Please refer
to the storage docs for more details.
tsdb create-blocks-from rules --start=START [<flags>] <rule-files>...
Create blocks of data for new recording rules.
试着用 check config 来执行规则文件和配置文件的检查。
./promtool check config prometheus.yml
Checking prometheus.yml
SUCCESS: 1 rule files found
SUCCESS: prometheus.yml is valid prometheus config file syntax
Checking rules.yml
SUCCESS: 1 rules found
好的。
看起来它还会自动检查rules.yml。
可以通过检查rules来检查单个规则。
./promtool check rules rules.yml
Checking rules.yml
SUCCESS: 1 rules found
这次虽然不会尝试,但听说也可以进行单元测试。
规则的单元测试
普罗米修斯:对警报规则进行单元测试。
Prometheus文件中描述的由Prometheus执行的规则单元测试。
使用 amtool
通过使用附带在Alertmanager中的amtool工具,可以检查Alertmanager的配置文件。
ls
LICENSE alertmanager.yml data
NOTICE alertmanager.yml.back
alertmanager amtool
看看有没有帮助。
./amtool --help
usage: amtool [<flags>] <command> [<args> ...]
View and modify the current Alertmanager state.
Config File: The alertmanager tool will read a config file in YAML format from
one of two default config locations: $HOME/.config/amtool/config.yml or
/etc/amtool/config.yml
All flags can be given in the config file, but the following are the suited for
static configuration:
alertmanager.url
Set a default alertmanager url for each request
author
Set a default author value for new silences. If this argument is not
specified then the username will be used
require-comment
Bool, whether to require a comment on silence creation. Defaults to true
output
Set a default output type. Options are (simple, extended, json)
date.format
Sets the output format for dates. Defaults to "2006-01-02 15:04:05 MST"
tls.insecure.skip.verify
Skips TLS certificate verification for all HTTPS requests.
Defaults to false.
Flags:
-h, --help Show context-sensitive help (also try --help-long and
--help-man).
--date.format="2006-01-02 15:04:05 MST"
Format of date output
-v, --verbose Verbose running information
--alertmanager.url=ALERTMANAGER.URL
Alertmanager to talk to
-o, --output=simple Output formatter (simple, extended, json)
--timeout=30s Timeout for the executed command
--tls.insecure.skip.verify
Skip TLS certificate verification
--version-check Check alertmanager version. Use --no-version-check to
disable.
--version Show application version.
Commands:
help [<command>...]
alert
query* [<flags>] [<matcher-groups>...]
add [<flags>] [<labels>...]
silence
add [<flags>] [<matcher-groups>...]
expire [<silence-ids>...]
import [<flags>] [<input-file>]
query* [<flags>] [<matcher-groups>...]
update [<flags>] [<update-ids>...]
check-config [<check-files>...]
cluster
show*
config
show*
routes [<flags>]
show*
test [<flags>] [<labels>...]
template
render --template.glob=TEMPLATE.GLOB --template.text=TEMPLATE.TEXT [<flags>]
alertmanager 的使用方式在其 GitHub 的 README 文件中有详细介绍。
amtool可以用于处理ASN.1信息,支持各种ASN.1编码和解码操作。
试试检查一下警报文件。
./amtool check-config alertmanager.yml
Checking 'alertmanager.yml' SUCCESS
Found:
- global config
- route
- 0 inhibit rules
- 1 receivers
- 0 templates
好的。
试着尝试使用其他命令吧。
./amtool alert
amtool: error: required flag --alertmanager.url not provided
似乎需要配置 $HOME/.config/amtool/config.yml 或 /etc/amtool/config.yml 才能成功。
mkdir -p $HOME/.config/amtool/
echo 'alertmanager.url: "http://localhost:9093"' >> $HOME/.config/amtool/config.yml
# View all currently firing alerts
./amtool alert
Alertname Starts At Summary State
DeadMansSwitch 2022-02-11 22:29:38 UTC テストアラート active
成功。
沉默也得到确认。
# View silences
./amtool silence query
ID Matchers Ends At Created By Comment
# Silence an alert
./amtool silence add alertname=DeadMansSwitch
# コメントがないのでエラー
./amtool silence add alertname=DeadMansSwitch
amtool: error: comment required by config
# help をチェック
./amtool silence add --help
# Silence
./amtool silence add alertname=DeadMansSwitch -c fromCLI
49965d0a-1b10-4110-b23f-f0df0dc0078e
# OK
./amtool silence query
ID Matchers Ends At Created By Comment
49965d0a-1b10-4110-b23f-f0df0dc0078e alertname="DeadMansSwitch" 2022-02-14 22:05:27 UTC toshihirock fromCLI
# デフォルトで1時間後に expire になる模様
date -u
2022年 2月14日 月曜日 21時07分33秒 UTC
过期
# Expire
./amtool silence expire 49965d0a-1b10-4110-b23f-f0df0dc0078e
# Expire したので表示されない
./amtool silence query
ID Matchers Ends At Created By Comment
# Alert に表示される
./amtool alert
Alertname Starts At Summary State
DeadMansSwitch 2022-02-11 22:29:38 UTC テストアラート active
好
记事
虽然有希望通过代理使用amtool,但从下面的情况看,它似乎已经与主分支合并,但尚未发布。
amtool 支持使用 http_config 访问 alertmanager