Настройка времени хранения метрик в Graphite

Mitigator хранит данные графиков в Graphite-ClickHouse. В базовой настройке метрики хранятся максимум 182 дня, при необходимости можно изменить время хранения и точность.

Параметры задаются в двух файлах конфигурации (rollup.xml и clickhouse-rollup-config.xml), базовое содержимое первого файла:

<graphite_rollup>
	<!-- mitigator -->
	<pattern>
		<regexp>^mitigator\.</regexp>
		<function>max</function>
		<retention>
			<age>0</age>
			<precision>5</precision>
		</retention>
		<retention>
			<age>86400</age>
			<precision>10</precision>
		</retention>
		<retention>
			<age>604800</age>
			<precision>60</precision>
		</retention>
		<retention>
			<age>2592000</age>
			<precision>300</precision>
		</retention>
		<retention>
			<age>12528000</age>
			<precision>600</precision>
		</retention>
	</pattern>
	<!-- carbon -->
	<pattern>
		<regexp>^carbon\.</regexp>
		<function>avg</function>
		<retention>
			<age>0</age>
			<precision>60</precision>
		</retention>
		<retention>
			<age>432000</age>
			<precision>300</precision>
		</retention>
	</pattern>
	<!-- default -->
	<default>
		<function>avg</function>
		<retention>
			<age>0</age>
			<precision>60</precision>
		</retention>
		<retention>
			<age>86400</age>
			<precision>300</precision>
		</retention>
	</default>
</graphite_rollup>

базовое содержимое второго файла:

<yandex>
	<graphite_rollup>
		<!-- mitigator -->
		<pattern>
			<regexp>^mitigator\.</regexp>
			<function>max</function>
			<retention>
				<age>0</age>
				<precision>5</precision>
			</retention>
			<retention>
				<age>86400</age>
				<precision>10</precision>
			</retention>
			<retention>
				<age>604800</age>
				<precision>60</precision>
			</retention>
			<retention>
				<age>2592000</age>
				<precision>300</precision>
			</retention>
			<retention>
				<age>12528000</age>
				<precision>600</precision>
			</retention>
		</pattern>
		<!-- carbon -->
		<pattern>
			<regexp>^carbon\.</regexp>
			<function>avg</function>
			<retention>
				<age>0</age>
				<precision>60</precision>
			</retention>
			<retention>
				<age>432000</age>
				<precision>300</precision>
			</retention>
		</pattern>
		<!-- default -->
		<default>
			<function>avg</function>
			<retention>
				<age>0</age>
				<precision>60</precision>
			</retention>
			<retention>
				<age>86400</age>
				<precision>300</precision>
			</retention>
		</default>
	</graphite_rollup>
</yandex>

можно заметить, что содержимое файлов идентично за исключением наличия у последнего верхенего уровня <yandex>.

Синтаксис файла конфигурации описан в документации ClickHouse. В базовом варианте данные за последние сутки хранятся с интервалом 5 секунд, за последнюю неделю — 10 секунд и т. д. Важно понимать, что времена хранения не суммируются, то есть самые старые данные будут на 182 дня назад. Рекомендуется менять только параметры раздела mitigator.

Для изменения настроек нужно подготовить и примонтировать новые файлы конфигурации сервису Graphite и Clickhouse. Если файлы созданы в /srv/mitigator, монтирование выполняется через docker-compose.override.yml следующим образом:

version: "2.2"
services:
  clickhouse:
    volumes:
    - ./clickhouse-rollup-config.xml:/etc/clickhouse-server/config.d/clickhouse-rollup-config.xml:ro

  graphite-clickhouse:
    volumes:
    - ./rollup.xml:/etc/graphite-clickhouse/rollup.xml:ro

Все манипуляции выполняются на остановленных контейнерах.

docker-compose stop graphite-clickhouse clickhouse

Запустить Graphite с новыми настройками:

docker-compose up -d