“汽水瓶。” ——鸟人
石墨簇非常酷。这里有一些原始工具可以帮助您管理石墨簇。
所有工具都支持两个共同的论点;配置文件的路径和集群的名称。使用这些工具以及描述石墨集群的配置文件,您可以构建脚本来管理您的指标。有些工具可以很容易地用 shell 中的单行代码替换,但为了方便和可读性而存在于此处。目标是提供快速、可预测的实用程序,可以轻松地将其组合成更高级的工具。
Carbonate 可从 Python 官方第三方存储库(又名 PyPi)获取,因此可以通过常规 Python 包管理器安装。请注意,您可能必须安装 python 包管理器(例如 ubuntu 主机上的 apt-get install python-setuptools)
pip install carbonate
Carbonate 需要一个定义您环境中集群的配置文件。默认配置文件位于/opt/graphite/conf/carbonate.conf
或可以在命令行上提供。默认集群名为“main”。这两个默认值都可以通过分别在环境CARBONATE_CONFIG
和CARBONATE_CLUSTER
中设置来覆盖。
[main]
DESTINATIONS = 192.168.9.13:2004:carbon01, 192.168.9.15:2004:carbon02, 192.168.6.20:2004:carbon03
REPLICATION_FACTOR = 2
SSH_USER = carbon
[agg]
DESTINATIONS = 192.168.9.13:2004:carbon01, 192.168.9.15:2004:carbon02, 192.168.6.20:2004:carbon03
RELAY_METHOD = aggregated-consistent-hashing
REPLICATION_FACTOR = 2
SSH_USER = carbon
[fnv]
DESTINATIONS = 192.168.9.13:2004:ba603c36342304ed77953f84ac4d357b, 192.168.9.15:2004:5dd63865534f84899c6e5594dba6749a, 192.168.6.20:2004:866a18b81f2dc4649517a1df13e26f28
REPLICATION_FACTOR = 2
SSH_USER = carbonate
HASHING_TYPE = fnv1a_ch
您应该注意将目标 IP 或主机名列表与集群中的节点相匹配(即它应该与碳中继的路由配置相匹配)。顺序很重要,因为一致性哈希环是如何创建的。
您可以将中继方法配置为“一致性哈希”或“聚合一致性哈希”之一。如果省略,则默认使用“一致性哈希”。使用“聚合一致性哈希”通常需要向相关命令提供规则文件。
复制因子应与集群的复制因子匹配。
此外,您还可以选择提供一个 SSH 用户,当碳酸盐需要连接到集群中的另一个节点来执行操作时,将使用该用户。如果未提供,则将选择执行该命令的当前用户。
最后,您可以提供集群的 HASHING_TYPE。默认为carbon_ch
,也支持fnv1a_ch
。请注意,要使用fnv1a_ch
散列,您需要安装carbon
1.0.2 或更高版本(或者您需要使用 Carbon-c-relay 中继)。
usage: carbon-hosts [-h] [-c CONFIG_FILE] [-C CLUSTER]
Return the addresses for all nodes in a cluster
optional arguments:
-h, --help show this help message and exit
-c CONFIG_FILE, --config-file CONFIG_FILE
Config file to use (default:
/opt/graphite/conf/carbonate.conf)
-C CLUSTER, --cluster CLUSTER
Cluster name (default: main)
usage: carbon-lookup [-h] [-c CONFIG_FILE] [-C CLUSTER] [-s] METRIC
Lookup where a metric lives in a carbon cluster
positional arguments:
METRIC Full metric name to search for
optional arguments:
-h, --help show this help message and exit
-c CONFIG_FILE, --config-file CONFIG_FILE
Config file to use (default:
/opt/graphite/conf/carbonate.conf)
-C CLUSTER, --cluster CLUSTER
Cluster name (default: main)
-a AGGREGATION_RULES, --aggregation-rules AGGREGATION_RULES
File containing rules used in conjunction with the
"aggregated-consistent-hashing" relay method (default:
/opt/graphite/conf/aggregation-rules.conf)
-s, --short Only display the address, without port and cluster
name (default: False)
usage: carbon-list [-h] [-c CONFIG_FILE] [-C CLUSTER] [-d STORAGE_DIR]
List the metrics this carbon node contains
optional arguments:
-h, --help show this help message and exit
-c CONFIG_FILE, --config-file CONFIG_FILE
Config file to use (default:
/opt/graphite/conf/carbonate.conf)
-C CLUSTER, --cluster CLUSTER
Cluster name (default: main)
-d STORAGE_DIR, --storage-dir STORAGE_DIR
Storage dir (default: /opt/graphite/storage/whisper)
usage: carbon-sieve [-h] [-c CONFIG_FILE] [-C CLUSTER] [-f METRICS_FILE]
[-n NODE] [-I]
Given a list of metrics, output those that belong to a node
optional arguments:
-h, --help show this help message and exit
-c CONFIG_FILE, --config-file CONFIG_FILE
Config file to use (default:
/opt/graphite/conf/carbonate.conf)
-C CLUSTER, --cluster CLUSTER
Cluster name (default: main)
-a AGGREGATION_RULES, --aggregation-rules AGGREGATION_RULES
File containing rules used in conjunction with the
"aggregated-consistent-hashing" relay method (default:
/opt/graphite/conf/aggregation-rules.conf)
-f METRICS_FILE, --metrics-file METRICS_FILE
File containing metric names to filter, or '-' to read
from STDIN (default: -)
-n NODE, --node NODE Filter for metrics belonging to this node (default:
self)
-I, --invert Invert the sieve, match metrics that do NOT belong to
a node (default: False)
usage: carbon-sync [-h] [-c CONFIG_FILE] [-C CLUSTER] [-f METRICS_FILE] -s
SOURCE_NODE [-d STORAGE_DIR] [-b BATCH_SIZE]
[--source-storage-dir SOURCE_STORAGE_DIR]
[--rsync-options RSYNC_OPTIONS] [--rsync-disable-copy-dest]
[--tmpdir TMP_STAGING_DIR] [--rsync-max-retries MAX_RETRIES]
[--rsync-retries-interval SECONDS] [--dirty] [-l] [-o]
Sync local metrics using remote nodes in the cluster
optional arguments:
-h, --help show this help message and exit
-c CONFIG_FILE, --config-file CONFIG_FILE
Config file to use (env: CARBONATE_CONFIG) (default:
/opt/graphite/conf/carbonate.conf)
-C CLUSTER, --cluster CLUSTER
Cluster name (env: CARBONATE_CLUSTER) (default: main)
-f METRICS_FILE, --metrics-file METRICS_FILE
File containing metric names to filter, or '-' to read
from STDIN (default: -)
-s SOURCE_NODE, --source-node SOURCE_NODE
Override the source for metrics data (default: None)
-d STORAGE_DIR, --storage-dir STORAGE_DIR
Storage dir (default: /opt/graphite/storage/whisper)
-b BATCH_SIZE, --batch-size BATCH_SIZE
Batch size for the rsync job (default: 1000)
--source-storage-dir SOURCE_STORAGE_DIR
Source storage dir (default:
/opt/graphite/storage/whisper)
--rsync-options RSYNC_OPTIONS
Pass option(s) to rsync. Make sure to use "--rsync-
options=" if option starts with '-' (default: -azpS)
--rsync-disable-copy-dest
Avoid --copy-dest, transfer all whisper data between
nodes. (default: False)
--rsync-max-retries RETRIES
Number of times rsync will attempt to copy each batch
of metrics before moving on. If all retry attempts are
unsuccessful, carbon-sync will write a file containing
the name of each metric in the failed batch so they can
be easily retried at a later time. (Default: 3)
--rsync-retries-interval SECONDS
How long to wait in between each rsync retry attempt
(see --rsync-max-retries). (default: 5)
-t TMP_STAGING_DIR, --tmpdir TMP_STAGING_DIR
Specify an alternate location in which the temporary
rsync staging dirs will be created. This can be useful
for large syncs where the default location (as chosen
by mkdtemp) resides on a filesystem that's too small
to store all the metrics being copied from the remote
host.
--dirty If set, don't clean temporary rsync directory
(default: False)
-l, --lock Lock whisper files during filling (default: False)
-o, --overwrite Write all non nullpoints from src to dst (default:
False)
usage: carbon-path [-h] [-c CONFIG_FILE] [-C CLUSTER] [-f METRICS_FILE] [-r]
[-p] [-d STORAGE_DIR]
Transform metric paths to (or from) filesystem paths
optional arguments:
-h, --help show this help message and exit
-c CONFIG_FILE, --config-file CONFIG_FILE
Config file to use (default:
/opt/graphite/conf/carbonate.conf)
-C CLUSTER, --cluster CLUSTER
Cluster name (default: main)
-f METRICS_FILE, --metrics-file METRICS_FILE
File containing metric names to transform to file
paths, or '-' to read from STDIN (default: -)
-r, --reverse Transform from file paths to metric paths (default:
False)
-p, --prepend Prepend storage dir to file paths (default: False)
-d STORAGE_DIR, --storage-dir STORAGE_DIR
Whisper storage directory to prepend when -p given
(default: /opt/graphite/storage/whisper)
usage: carbon-stale [-h] [-c CONFIG_FILE] [-C CLUSTER] [-f METRICS_FILE] [-r]
[-d STORAGE_DIR] [-l HOURS] [-o HOURS] [-w] [-p]
Find and list potentially stale metrics.
optional arguments:
-h, --help show this help message and exit
-c CONFIG_FILE, --config-file CONFIG_FILE
Config file to use (default:
/opt/graphite/conf/carbonate.conf)
-C CLUSTER, --cluster CLUSTER
Cluster name (default: main)
-f METRICS_FILE, --metrics-file METRICS_FILE
File containing metric names to transform to file
paths, or '-' to read from STDIN (default: -)
-r, --reverse Output metrics which are not stale instead (default:
False)
-d STORAGE_DIR, --storage-dir STORAGE_DIR
Whisper storage directory to prepend when -p given
(default: /opt/graphite/storage/whisper)
-l HOURS, --limit HOURS
Definition of staleness, in hours (default: 24)
-o HOURS, --offset HOURS
Use a whisper data window ending HOURS ago (implies
-w) (default: 0)
-w, --whisper Use whisper data instead of filesystem stat() call
(default: False)
-p, --paths Print filesystem paths instead of metric names
(default: False)
usage: whisper-aggregate [-h] [-f METRICS_FILE] [-d STORAGE_DIR]
Set aggregation for whisper-backed metrics this carbon instance contains
optional arguments:
-h, --help show this help message and exit
-f METRICS_FILE, --metrics-file METRICS_FILE
File containing metric names and aggregation modes, or
'-' to read from STDIN (default: -)
-d STORAGE_DIR, --storage-dir STORAGE_DIR
Whisper storage directory (default:
/opt/graphite/storage/whisper)
usage: whisper-fill [-h] [-l] [-o] SRC DST
Backfill datapoints from one whisper file into another
positional arguments:
SRC Whisper source file
DST Whisper destination file
optional arguments:
-h, --help show this help message and exit
-l, --lock Lock whisper files during filling (default: False)
-o, --overwrite Write all non nullpoints from src to dst (default: False)
#!/bin/sh
#
# Resync a node from other nodes in the cluster
#
LOCAL_IP="$1"
for h in $(carbon-hosts) ; do
(
ssh $h -- carbon-list |
carbon-sieve -n $LOCAL_IP |
carbon-sync -s $h
) &
done
#!/bin/sh
#
# Rebalance a cluster from one size to another. Remember to cleanup metrics
# that no longer belong when all nodes are rebalanced!
#
LOCAL_IP="$1"
OLD_CLUSTER="old"
NEW_CLUSTER="main"
for h in $(carbon-hosts -C "$OLD_CLUSTER") ; do
ssh $h -- carbon-list |
carbon-sieve -C "$NEW_CLUSTER" -n $LOCAL_IP |
carbon-sync -s $h
done
#!/bin/sh
#
# List metrics from disk that don't belong
#
LOCAL_IP="$1"
carbon-list | carbon-sieve -I -n $LOCAL_IP
过去 2 小时内完全空白的耳语数据的指标(如果您怀疑 fs 时间戳或碳客户端在“未来”中写入存在问题,则可能有用):
carbon-list | carbon-stale --whisper --limit=2
指标文件在 48 小时或更长时间内未受影响的指标(功能与find /your/data/dir -type f -mtime +2
相同):
carbon-list | carbon-stale --limit=48
更有趣的是,如果您使用carbon-stale
,然后使用 sieve 来识别不属于此处的过时指标(与属于此处但由于指标路径中的双倍周期等原因而在 Carbon-sieve 中误报的未过时指标)由于破碎的收藏家。)
carbon-list | carbon-stale --limit=48 | carbon-sieve -I -n $LOCAL_IP
要打印文件路径以与xargs rm
等一起使用,请使用-p
:
carbon-list | carbon-stale -p | xargs -n 100 rm
该代码可在 MIT 许可下使用。