Я хотел бы использовать графит для сбора метрик с разных серверов. По умолчанию углерод слушает 2003 на всех интерфейсах, и меня это устраивает.
Теперь теоретически отправлять туда метрические данные мог любой желающий. Есть ли стандартный способ предотвратить это (аналогично базовой аутентификации http), или мне нужно возиться с ограничениями на основе IP для физического интерфейса?
Это зависит от того, насколько вы хотите «укрепить» любые узлы Graphite («Graphite» - это любая топология смеси углеродных реле, углеродных кешей, бэкэнда хранилища и, возможно, графита-паутины / api).
Если вы знаете, какие хосты в вашей сети должен Чтобы отправлять метрики в Graphite (обычно ретрансляторы), вы можете изменить правила брандмауэра хоста Graphite, чтобы они ожидали либо явного списка IP-адресов хоста, либо диапазона для применимых портов. Или вы можете сделать что-то подобное в пограничной сети с брандмауэра или маршрутизатора - у меня нет совета, поскольку ваш вопрос не дает более полного представления о том, как выглядит ваша топология.
Альтернативным подходом было бы использование поддержки AMQP, чтобы вместо этого ваши узлы публиковали свои метрики брокеру в качестве аутентифицированного пользователя, а затем ваш хост (ы) Graphite изменял брандмауэр хоста, чтобы принимать TCP 2003 только от полученных метрик брокера. Плюс здесь - ваши графитовые ноды. только необходимо знать, от какого брокера будут поступать метрики, что значительно упрощает любые правила брандмауэра хоста. Если узлы публикуют метрики через облегченный сервис, это немного лучше защищает вас, поскольку забота о «доверии», которая у вас есть, решается наверху потока, а не случайность метрик - законных или нет - поступающих на ваш хост (ы) Graphite. ). RabbitMQ - это OSS, и его довольно просто вставать и уходить без необходимости слишком много возиться с настройкой, если вы подключите плагин управления. Большая часть его конфигурации открывает необходимые для работы порты.
Тем не менее, это делает простой издатель метрики для топологии Graphite немного более сложной для задачи и твердо устанавливает модель публикации / подмодели того, как ваши метрики попадают в Graphite (но имеет приятное побочное преимущество, позволяющее метрикам в пути не потерян потенциально). Он также добавляет еще один хост для обеспечения безопасности в рабочих целях.
Чтобы пойти дальше, вы можете реализовать систему мониторинга журналов для отслеживания файла listener.log углеродного реле, поскольку он будет писать строку для каждой полученной и обработанной метрики. На высоком уровне вы должны смотреть этот журнал в поисках исключений из ожидаемых показателей. Например, если у вас есть метрика server.cpu.load, вы ожидаете увидеть, что они будут обработаны, но опубликованная метрика с именем foo.bar.value недействительна. В ответ на такое событие вы можете просто стереть соответствующий каталог, который Whisper создает для недопустимого пространства имен (если вы используете Whisper для хранения).
Упрочнение углеродного реле и углеродного кеша Graphite - это хорошо и разумно, но не забывайте, что это не менее важно. ВОЗ может получить доступ к вашему веб-приложению Graphite или графиту-api, чтобы получить эти показатели.