Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions renderer/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,7 @@ The worker can be configured using environment variables or a `.env` file in the
| `S3_ACCESS_KEY` | S3 access key | Yes | `-` |
| `S3_SECRET_KEY` | S3 secret key | Yes | `-` |
| `PROMETHEUS_HOST` | Prometheus address | Yes | `-` |
| `PROMETHEUS_ENABLED` | Enable or disable Prometheus metrics | No | false |
| `LOG_LEVEL` | Log level (DEBUG, INFO, WARNING, ERROR) | No | `INFO` |
| `LOG_DEBUG` | Enable debug logging (true/false) | No | `true` |
| `RENDERER_PREVIEW` | Render image in lower resolution and only 5 samples (true/false) | No | `false` |
Expand Down
12 changes: 7 additions & 5 deletions renderer/worker/include/config.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@ class Config {
std::optional<std::string> s3Host_;
std::optional<std::string> s3AccessKey_;
std::optional<std::string> s3SecretKey_;
Logger::Level logLevel_ = Logger::Level::INFO; // default
bool logDebug_ = false; // default
bool rendererPreview_ = false; // default
int rendererPreviewMaxSize_ = 256; // default
int rendererPreviewUpscaleFactor_ = 2; // default
Logger::Level logLevel_ = Logger::Level::INFO;
bool logDebug_ = false;
bool rendererPreview_ = false;
int rendererPreviewMaxSize_ = 256;
int rendererPreviewUpscaleFactor_ = 2;
bool prometheusEnabled_ = false;

public:
Config() = default;
Expand All @@ -46,4 +47,5 @@ class Config {
bool rendererPreview() const;
int rendererPreviewMaxSize() const;
int rendererPreviewUpscaleFactor() const;
bool prometheusEnabled() const;
};
5 changes: 4 additions & 1 deletion renderer/worker/src/config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ void Config::apply(env::dotenv dotenv) {
if (dotenv.hasVariable("RENDERER_PREVIEW_UPSCALE_FACTOR"))
rendererPreviewUpscaleFactor_ = dotenv["RENDERER_PREVIEW_UPSCALE_FACTOR"];
if (dotenv.hasVariable("PROMETHEUS_HOST")) prometheusHost_ = dotenv["PROMETHEUS_HOST"];
if (dotenv.hasVariable("PROMETHEUS_ENABLED")) prometheusEnabled_ = dotenv["PROMETHEUS_ENABLED"];
} catch (const env::Value::ValueError& e) {
throw std::runtime_error(std::format("Invalid value format in .env file. Error: {}.", e.what()));
}
Expand All @@ -47,6 +48,7 @@ void Config::fromEnvironment() {
if (char* ptr = std::getenv("RENDERER_PREVIEW_MAX_SIZE")) rendererPreviewMaxSize_ = env::Value(ptr);
if (char* ptr = std::getenv("RENDERER_PREVIEW_UPSCALE_FACTOR")) rendererPreviewUpscaleFactor_ = env::Value(ptr);
if (char* ptr = std::getenv("PROMETHEUS_HOST")) prometheusHost_ = env::Value(ptr);
if (char* ptr = std::getenv("PROMETHEUS_ENABLED")) prometheusEnabled_ = env::Value(ptr);
} catch (const env::Value::ValueError& e) {
throw std::runtime_error(std::format("Invalid environment variable value format. Error: {}.", e.what()));
}
Expand Down Expand Up @@ -132,4 +134,5 @@ Logger::Level Config::logLevel() const { return logLevel_; }
bool Config::logDebug() const { return logDebug_; }
bool Config::rendererPreview() const { return rendererPreview_; }
int Config::rendererPreviewMaxSize() const { return rendererPreviewMaxSize_; }
int Config::rendererPreviewUpscaleFactor() const { return rendererPreviewUpscaleFactor_; }
int Config::rendererPreviewUpscaleFactor() const { return rendererPreviewUpscaleFactor_; }
bool Config::prometheusEnabled() const { return prometheusEnabled_; }
7 changes: 4 additions & 3 deletions renderer/worker/src/service.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,8 @@ int main() try {
KafkaConsumer commandConsumer(config.kafkaHost(), config.kafkaCommandsGroupId(), config.kafkaTopicCommands());
KafkaProducer producer(config.kafkaHost());

Prometheus prometheus(config.prometheusHost());
std::optional<Prometheus> prometheus;
if (config.prometheusEnabled()) prometheus = Prometheus(config.prometheusHost());

logger.info(std::format("Listening for messages..."));
while (running) {
Expand Down Expand Up @@ -235,7 +236,7 @@ int main() try {
write(STDOUT_FILENO, glbData.data(), glbData.size());
logger.debug(std::format("Written {} bytes in pipe for scene", glbData.size()));

prometheus.onRenderStarted();
if (config.prometheusEnabled()) prometheus->onRenderStarted();
while (running) {
int status;
pid_t result = waitpid(renderer_pid, &status, WNOHANG);
Expand Down Expand Up @@ -318,7 +319,7 @@ int main() try {
std::format("Reading from pipe truncates image (read only {}/{} bytes)", total_read,
result.size()));
}
prometheus.onRenderFinished(resultHeader.metrics);
if (config.prometheusEnabled()) prometheus->onRenderFinished(resultHeader.metrics);
}
taskConsumer.commit();
logger.info(std::format("Current message processing finished successfully. Listening..."));
Expand Down
Loading