Я установил Graphite и statsd, и оба работают нормально. Я использую example-client.py из графита / примеров для измерения значений нагрузки, и все в порядке.
Я начал проводить тесты с помощью statsd, и сначала это казалось нормальным, потому что он генерировал некоторые графики, но теперь это выглядит не очень хорошо.
Во-первых, это мой storage-schema.conf
:
priority = 100
pattern = .*
retentions = 1m:395d
Я использую эту команду для отправки данных в statsd:
echo 'ssh.invalid_users:1|c'| nc -w 1 -u localhost 8126
он выполняется, я нажимаю «Обновить график» в веб-интерфейсе Graphite, он генерирует строку, снова нажимаю «Обновить», и линия исчезает. подобно this1 и this2
Если я выполню предыдущую команду 5 раз, линия графика достигнет 2, и она фактически сохранит ее. Снова выполняя ту же команду два раза, линия графика достигает 2 и исчезает.
Я не могу найти то, что неправильно настроил.
Предполагаемое использование:
tail -n 0 -f /var/log/auth.log|grep --line-buffered "Invalid user" | while read line; do echo "ssh.invalid_users:1|c" | nc -w 1 -u localhost 8126; done
РЕДАКТИРОВАТЬ:
В свежей системе я переустановил, используя последние версии графита, углерода, nodejs, statsd, и он действует так же.
В хвосте /opt/graphite/storage/log/carbon-cache/carbon-cache-a/query.log Я получил:
cache query for "stats_counts.ssh.invalid_users" returned 0 values
cache query for "stats.ssh.invalid_users" returned 0 values
всякий раз, когда я нажимаю Обновить в веб-приложении. Я заметил, что он случайным образом скажет returned 1 values
при рисовании линий, но вернется к returned 0 values
и линии исчезают.
Проблема заключается в сохранении схемы хранилища:
retentions = 1m:395d
- взято из графитовой вики http://graphite.wikidot.com/installation
Мне пришлось использовать retentions = 10:2160,60:10080,600:262974
или что-то подобное. При этом учитываются значения, сохраняемые каждые 10 секунд.
Кроме того, хотя я перезапустил графит после изменения storage-schema.conf, мне пришлось использовать другое имя метрики, потому что предыдущее сохраняло то же поведение / удержание (и я могу воспроизвести это).
Так что вместо echo 'ssh.invalid_users:1|c'
, Мне пришлось использовать
echo 'ssh.invalid_userstest2:1|c'
.