in core/prometheus/schedulers/ScrapeConfig.cpp [115:196]
bool ScrapeConfig::InitStaticConfig(const Json::Value& scrapeConfig) {
if (scrapeConfig.isMember(prometheus::JOB_NAME) && scrapeConfig[prometheus::JOB_NAME].isString()) {
mJobName = scrapeConfig[prometheus::JOB_NAME].asString();
if (mJobName.empty()) {
LOG_ERROR(sLogger, ("job name is empty", ""));
return false;
}
} else {
return false;
}
if (scrapeConfig.isMember(prometheus::SCRAPE_INTERVAL) && scrapeConfig[prometheus::SCRAPE_INTERVAL].isString()) {
string tmpScrapeIntervalString = scrapeConfig[prometheus::SCRAPE_INTERVAL].asString();
mScrapeIntervalSeconds = DurationToSecond(tmpScrapeIntervalString);
if (mScrapeIntervalSeconds == 0) {
LOG_ERROR(sLogger, ("scrape interval is invalid", tmpScrapeIntervalString));
return false;
}
}
if (scrapeConfig.isMember(prometheus::SCRAPE_TIMEOUT) && scrapeConfig[prometheus::SCRAPE_TIMEOUT].isString()) {
string tmpScrapeTimeoutString = scrapeConfig[prometheus::SCRAPE_TIMEOUT].asString();
mScrapeTimeoutSeconds = DurationToSecond(tmpScrapeTimeoutString);
if (mScrapeTimeoutSeconds == 0) {
LOG_ERROR(sLogger, ("scrape timeout is invalid", tmpScrapeTimeoutString));
return false;
}
}
if (scrapeConfig.isMember(prometheus::METRICS_PATH) && scrapeConfig[prometheus::METRICS_PATH].isString()) {
mMetricsPath = scrapeConfig[prometheus::METRICS_PATH].asString();
}
if (scrapeConfig.isMember(prometheus::HONOR_LABELS) && scrapeConfig[prometheus::HONOR_LABELS].isBool()) {
mHonorLabels = scrapeConfig[prometheus::HONOR_LABELS].asBool();
}
if (scrapeConfig.isMember(prometheus::HONOR_TIMESTAMPS) && scrapeConfig[prometheus::HONOR_TIMESTAMPS].isBool()) {
mHonorTimestamps = scrapeConfig[prometheus::HONOR_TIMESTAMPS].asBool();
}
if (scrapeConfig.isMember(prometheus::SCHEME) && scrapeConfig[prometheus::SCHEME].isString()) {
mScheme = scrapeConfig[prometheus::SCHEME].asString();
}
// <size>: a size in bytes, e.g. 512MB. A unit is required. Supported units: B, KB, MB, GB, TB, PB, EB.
if (scrapeConfig.isMember(prometheus::MAX_SCRAPE_SIZE) && scrapeConfig[prometheus::MAX_SCRAPE_SIZE].isString()) {
string tmpMaxScrapeSize = scrapeConfig[prometheus::MAX_SCRAPE_SIZE].asString();
mMaxScrapeSizeBytes = SizeToByte(tmpMaxScrapeSize);
if (mMaxScrapeSizeBytes == 0) {
LOG_ERROR(sLogger, ("max scrape size is invalid", tmpMaxScrapeSize));
return false;
}
}
if (scrapeConfig.isMember(prometheus::SAMPLE_LIMIT) && scrapeConfig[prometheus::SAMPLE_LIMIT].isInt64()) {
mSampleLimit = scrapeConfig[prometheus::SAMPLE_LIMIT].asUInt64();
}
if (scrapeConfig.isMember(prometheus::SERIES_LIMIT) && scrapeConfig[prometheus::SERIES_LIMIT].isInt64()) {
mSeriesLimit = scrapeConfig[prometheus::SERIES_LIMIT].asUInt64();
}
if (scrapeConfig.isMember(prometheus::RELABEL_CONFIGS)) {
if (!mRelabelConfigs.Init(scrapeConfig[prometheus::RELABEL_CONFIGS])) {
LOG_ERROR(sLogger, ("relabel config error", ""));
return false;
}
}
if (scrapeConfig.isMember(prometheus::METRIC_RELABEL_CONFIGS)) {
if (!mMetricRelabelConfigs.Init(scrapeConfig[prometheus::METRIC_RELABEL_CONFIGS])) {
LOG_ERROR(sLogger, ("metric relabel config error", ""));
return false;
}
}
if (scrapeConfig.isMember(prometheus::EXTERNAL_LABELS)) {
if (!InitExternalLabels(scrapeConfig[prometheus::EXTERNAL_LABELS])) {
LOG_ERROR(sLogger, ("external labels config error", ""));
return false;
}
}
return true;
}