diff --git a/config.py b/config.py index 8003c3e2e64c17cd091251137d1f3309b7323a83..258dce08d046fb23c75db87e9b1c55e5cb5f88a3 100644 --- a/config.py +++ b/config.py @@ -1006,6 +1006,20 @@ class Config(BaseConfig): # Check quantiles is enabled return getattr(self.perfomance, f"enable_{name}_quantiles", False) + @property + def tz_utc_offset(self) -> int: + """ + Return UTC offset for configured timezone + :return: + """ + import pytz + import datetime + + if not hasattr(self, "_utcoffset"): + dt = datetime.datetime.now(tz=pytz.utc) + self._utcoffset = dt.astimezone(self.timezone).utcoffset() + return int(self._utcoffset.total_seconds()) + config = Config() config.load() diff --git a/services/metricscollector/service.py b/services/metricscollector/service.py index 0078d41c3dd373c9b0b6f92a7473fb73b8dd8b03..3e141fcdf862c84d504cb25b59c4a864230815d8 100755 --- a/services/metricscollector/service.py +++ b/services/metricscollector/service.py @@ -189,7 +189,7 @@ class MetricsCollectorService(FastAPIService): # Matched rule found if map_item.ch_table not in out: out[map_item.ch_table] = { - "ts": (item.ts.timestamp() + config.timezone._utcoffset.seconds) * NS, + "ts": (item.ts.timestamp() + config.tz_utc_offset) * NS, "scope": map_item.ch_table, "labels": item.labels, "service": item.service,