Если читаемость является вашей основной задачей, вы можете перенести тест на метод утилиты:
if ( allIntGreaterZero(arg1, arg2, arg3) ) {
...
}
public static boolean allIntGreaterZero(int... a) {
return Arrays.stream(a).allMatch(i -> i > 0);
}
Вы должны иметь возможность связывать экземпляры телеграфа (отслеживаемое устройство -> устройство мониторинга -> приток), используя общий вывод средства записи гнезда и плагин ввода гнезда, если вы настроите его в том же формате данных.
https://github.com/influxdata/telegraf/tree/master/plugins/outputs/socket_writer https://github.com/influxdata/telegraf/tree/master/plugins / input / socket_listener https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md
С помощью универсального ввода сокетов telegrafs, поддерживающего формат InfluxDB, вы можете также разверните беглый бит на контролируемом устройстве вместо телеграфа. https://fluentbit.io/documentation/current/output/influxdb.html
Метрики системы / сервера должны собираться локально установленным телеграфом.
Вы можете отправлять метрики из системного телеграфа непосредственно на приток. Но это делает слушателей притока чувствительными к количеству данных, накачанных местными телеграфами. Он не масштабируется элегантно.
Вместо этого вы можете поместить очередь или Кафку между экземплярами системного телеграфа и притоком. Это сгладит любую неожиданную нагрузку и должно поддерживать постоянный приток слушателей. Между очередью / Kafka и притоком может быть набор выделенных экземпляров телеграфа, которые загружают данные из очереди / Kafka в приток. Они могут работать как группа потребителей Kafka и должны легко масштабироваться.
Система телеграф -> Кафка -> телеграф -> Приток -> Графана