blob: 4f2aea3fdee78971299c7821edc1cdf69e32bb9a [file] [log] [blame]
"""
Copyright 2020 The Magma Authors.
This source code is licensed under the BSD-style license found in the
LICENSE file in the root directory of this source tree.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""
import asyncio
from typing import Any
from common.job import Job
from common.log_count_handler import MsgCounterHandler
from common.metrics import SERVICE_ERRORS
# How frequently to poll systemd for error logs, in seconds
POLL_INTERVAL = 10
class ServiceLogErrorReporter(Job):
""" Reports the number of logged errors for the service """
def __init__(
self,
loop: asyncio.BaseEventLoop,
service_config: Any,
handler: MsgCounterHandler,
) -> None:
super().__init__(interval=POLL_INTERVAL, loop=loop)
self._service_config = service_config
self._handler = handler
async def _run(self):
error_count = self._handler.pop_error_count()
SERVICE_ERRORS.inc(error_count)