«Поп-бутылки». -- Бердман
Графитовые кластеры — это очень круто. Вот несколько примитивных инструментов, которые помогут вам управлять графитовыми кластерами.
Все инструменты поддерживают два общих аргумента; путь к файлу конфигурации и имя кластера. Используя эти инструменты вместе с файлом конфигурации, описывающим ваши графитовые кластеры, вы можете создавать сценарии для управления вашими метриками. Некоторые инструменты можно легко заменить однострочниками в оболочке, но они существуют здесь для удобства и читабельности. Цель состоит в том, чтобы предоставить быстрые и предсказуемые утилиты, которые можно легко объединить в более совершенные инструменты.
Carbonate доступен из официального стороннего репозитория Python (также известного как PyPi) и поэтому может быть установлен через обычные менеджеры пакетов Python. Обратите внимание, что вам, возможно, придется установить менеджер пакетов Python (например, apt-get install python-setuptools на хосте Ubuntu).
pip install carbonate
Carbonate ожидает файл конфигурации, определяющий кластеры в вашей среде. Файл конфигурации по умолчанию находится по адресу /opt/graphite/conf/carbonate.conf
или может быть указан в командной строке. Кластер по умолчанию называется «основной». Оба значения по умолчанию можно переопределить, установив в среде 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, который будет использоваться, когда Carbonate требует подключения к другому узлу в кластере для выполнения операции. Если это не предусмотрено, то будет выбран текущий пользователь, выполняющий команду.
Наконец, вы можете предоставить 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.