diff --git a/ingestor/app.py b/ingestor/app.py index e2657f7..8fc3672 100644 --- a/ingestor/app.py +++ b/ingestor/app.py @@ -66,7 +66,7 @@ def signal_handler(_signum, _frame): def start_prometheus_server(): try: - port = int(os.getenv("HTTP_SERVER_PORT", 4840)) + port = int(os.getenv("HTTP_METRICS_PORT", 9090)) start_http_server(port) print(f"Prometheus server started on port {port}.") metrics.APP_UP.labels(pod_id=POD_ID).set(1) # Mark app as UP diff --git a/ingestor/ingestor.py b/ingestor/ingestor.py index 9614302..f39746b 100644 --- a/ingestor/ingestor.py +++ b/ingestor/ingestor.py @@ -74,6 +74,7 @@ class Ingestor: 'model_name': '-', 'workflow_name': 'OPC_INGESTOR', 'schema_name': 'OPC_INGESTOR', + 'pod_id': self.pod_id, } self.ingestor_manager = None @@ -136,7 +137,6 @@ class Ingestor: }, lease_ttl=self.lease_ttl, heartbeat_ttl=self.heartbeat_ttl, - pod_id=self.pod_id, poll_interval=self.poll_interval, mongo_connection_string=self.mongo_connection_string, mongo_database=self.mongo_database, diff --git a/ingestor/managers/data_manager.py b/ingestor/managers/data_manager.py index 68dbe06..5d58c51 100644 --- a/ingestor/managers/data_manager.py +++ b/ingestor/managers/data_manager.py @@ -96,7 +96,8 @@ class DataManager(BaseActivity): ) BaseActivity.__init__(self, logger=logger, - notification_handler=notification_handler) + notification_handler=notification_handler, + set_error_counter=True) def shutdown(self): """Closes the Kafka producer connection.""" @@ -189,6 +190,12 @@ class DataManager(BaseActivity): self.logger.debug( f"Message inserted into MongoDB collection {topic}: {data}") + metrics.TAG_WRITTEN_COUNT.labels( + pod_id=self.pod_id, + tag_name=data["name"], + collection_name=topic + ).inc() + except Exception as e: trace = traceback.format_exc() self.send_notification( diff --git a/ingestor/managers/ingestor_manager.py b/ingestor/managers/ingestor_manager.py index 47499fd..eec7116 100644 --- a/ingestor/managers/ingestor_manager.py +++ b/ingestor/managers/ingestor_manager.py @@ -14,7 +14,7 @@ import ingestor.metrics as metrics class IngestorManager(BaseActivity): def __init__(self, kafka_servers: str, redis_data: dict, - lease_ttl: int, heartbeat_ttl: int, pod_id: str, + lease_ttl: int, heartbeat_ttl: int, poll_interval: int, mongo_connection_string: str, mongo_database: str, metadata: dict, logger: Logger, notification_handler: NotificationHandler, @@ -40,7 +40,6 @@ class IngestorManager(BaseActivity): port=redis_port, lease_ttl=lease_ttl, heartbeat_ttl=heartbeat_ttl, - pod_id=pod_id, metadata=metadata, logger=logger, notification_handler=notification_handler, @@ -52,11 +51,11 @@ class IngestorManager(BaseActivity): self.managed_tags = {} self.opc_servers = {} - self.pod_id = pod_id self.metadata = metadata BaseActivity.__init__(self, logger=logger, - notification_handler=notification_handler) + notification_handler=notification_handler, + set_error_counter=True) def initialize_opc_from_config(self, server_config: dict) -> OpcManager | None: """ @@ -87,7 +86,6 @@ class IngestorManager(BaseActivity): logger=self.logger, server_uri=server_config['server_uri'], notification_handler=self.notification_handler, - pod_id=self.pod_id, metadata=self.metadata, cert_path=server_config.get('cert_path'), private_key_path=server_config.get('private_key_path'), diff --git a/ingestor/managers/opc_manager.py b/ingestor/managers/opc_manager.py index cdf37b6..b5fa903 100644 --- a/ingestor/managers/opc_manager.py +++ b/ingestor/managers/opc_manager.py @@ -11,8 +11,8 @@ import ingestor.metrics as metrics class OpcManager(BaseActivity): - def __init__(self, name: str, url: str, data_manager: DataManager, - logger: Logger, server_uri: str, notification_handler: NotificationHandler, pod_id: str, metadata: dict, + def __init__(self, name: str, url: str, data_manager: DataManager, logger: Logger, + server_uri: str, notification_handler: NotificationHandler, metadata: dict, cert_path: str = None, private_key_path: str = None, server_cert_path: str = None): self.url = url self.name = name @@ -26,17 +26,17 @@ class OpcManager(BaseActivity): self.nodes = {} self.subscriptions = {} self.data_manager = data_manager - self.pod_id = pod_id self.metadata = metadata + BaseActivity.__init__(self, logger=logger, + notification_handler=notification_handler, + set_error_counter=True) + metrics.OPC_CONNECTION_STATUS.labels( pod_id=self.pod_id, server_name=self.name, server_url=self.url).set(0) metrics.OPC_TAGS_SUBSCRIBED.labels( pod_id=self.pod_id, server_name=self.name).set(0) - BaseActivity.__init__(self, logger=logger, - notification_handler=notification_handler) - def __str__(self): return f"OpcManager(name={self.name}, url={self.url}, server_uri={self.server_uri})\n" \ f"nodes={self.nodes}, subscriptions={self.subscriptions}" diff --git a/ingestor/managers/resource_manager.py b/ingestor/managers/resource_manager.py index 9dc3ddc..d2db351 100644 --- a/ingestor/managers/resource_manager.py +++ b/ingestor/managers/resource_manager.py @@ -16,14 +16,15 @@ class ResourceManager(BaseActivity): port: int, lease_ttl: int, heartbeat_ttl: int, - pod_id: str, metadata: dict, logger: Logger, notification_handler: NotificationHandler, username: str | None = None, password: str | None = None, ) -> None: - self.pod_id = pod_id + BaseActivity.__init__(self, logger=logger, + notification_handler=notification_handler, + set_error_counter=True) try: self.redis = Redis( host=host, @@ -35,7 +36,7 @@ class ResourceManager(BaseActivity): self.redis.ping() metrics.REDIS_CONNECTION_STATUS.labels(pod_id=self.pod_id).set(1) except Exception as e: - logger.error(f"Failed to connect to Redis: {e}") + self.logger.error(f"Failed to connect to Redis: {e}") metrics.REDIS_CONNECTION_STATUS.labels(pod_id=self.pod_id).set(0) raise @@ -43,9 +44,6 @@ class ResourceManager(BaseActivity): self.heartbeat_ttl = heartbeat_ttl self.metadata = metadata - BaseActivity.__init__(self, logger=logger, - notification_handler=notification_handler) - def _execute_redis_op(self, operation_name: str, func, *args, **kwargs): """Wrapper to execute Redis operations and record metrics.""" start_time = time() diff --git a/ingestor/metrics.py b/ingestor/metrics.py index b2ddc42..8cb2110 100644 --- a/ingestor/metrics.py +++ b/ingestor/metrics.py @@ -6,6 +6,15 @@ KAFKA_LABELS = ["pod_id", "topic"] REDIS_LABELS = ["pod_id", "operation"] NOTIFICATION_LABELS = ["pod_id", "level", "block"] +MAIN_LABELS = ["pod_id"] + +# --- Reliability Metrics --- +TAG_WRITTEN_COUNT = Counter( + "ingestor_tag_written_count", + "Number of writing process to the collection", + [*MAIN_LABELS, "tag_name", "collection_name"], +) + # --- General Application Metrics --- APP_LOOP_COUNT = Counter( diff --git a/requirements.txt b/requirements.txt index a7bba96..5687b65 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ asyncua==1.1.5 redis -git+ssh://git@github.com/Aignosi/sientia-dataops-library.git@1.3.5 +git+ssh://git@github.com/Aignosi/sientia-dataops-library.git@1.3.8 prometheus_client pymongo \ No newline at end of file diff --git a/tests/unit/managers/test_data_manager.py b/tests/unit/managers/test_data_manager.py index ed157cc..344b203 100644 --- a/tests/unit/managers/test_data_manager.py +++ b/tests/unit/managers/test_data_manager.py @@ -10,6 +10,7 @@ metadata = { "model_name": "test_model", "workflow_name": "test_workflow", "schema_name": "test_schedule", + "pod_id": "localhost", }, } @@ -258,7 +259,10 @@ def test_publish_no_kafka(data_manager): @patch("ingestor.managers.data_manager.traceback") def test_publish_error(traceback, data_manager): topic = "test_topic" - data = {"key": "value"} + data = { + "key": "value", + "name": "test_tag" + } # Mock the send method of the Kafka producer to raise an exception send_mock = MagicMock(side_effect=Exception("Test error")) diff --git a/tests/unit/managers/test_ingestor_manager.py b/tests/unit/managers/test_ingestor_manager.py index f6ace9f..df994b7 100644 --- a/tests/unit/managers/test_ingestor_manager.py +++ b/tests/unit/managers/test_ingestor_manager.py @@ -25,7 +25,6 @@ def ingestor_manager(data_manager_mock, resource_manager_mock): }, lease_ttl=60, heartbeat_ttl=60, - pod_id="test_pod", poll_interval=5, mongo_connection_string="mongodb://localhost:27017", mongo_database="sientia", @@ -54,7 +53,6 @@ def test___init__(notification_handler_mock, resource_manager_mock, data_manager }, lease_ttl=60, heartbeat_ttl=60, - pod_id="test_pod", poll_interval=5, mongo_connection_string="mongodb://localhost:27017", mongo_database="sientia", @@ -79,7 +77,6 @@ def test___init__(notification_handler_mock, resource_manager_mock, data_manager port=6379, lease_ttl=60, heartbeat_ttl=60, - pod_id="test_pod", metadata=metadata["metadata"], logger=ingestor.logger, notification_handler=ingestor.notification_handler, @@ -117,7 +114,6 @@ def test_initialize_opc_from_config(opc_manager, ingestor_manager): logger=ingestor_manager.logger, server_uri=server_config['server_uri'], notification_handler=ingestor_manager.notification_handler, - pod_id=server_config['pod_id'], cert_path=server_config['cert_path'], private_key_path=server_config['private_key_path'], server_cert_path=server_config['server_cert_path'], diff --git a/tests/unit/managers/test_opc_manager.py b/tests/unit/managers/test_opc_manager.py index 386f2ae..7f022b7 100644 --- a/tests/unit/managers/test_opc_manager.py +++ b/tests/unit/managers/test_opc_manager.py @@ -44,15 +44,15 @@ metadata = { @fixture -def raw_opc_manager(): +@patch("ingestor.managers.opc_manager.metrics") +def raw_opc_manager(mock_metrics): return OpcManager( - "TestConnector", - "opc.tcp://localhost:4840", - MagicMock(), - MagicMock(), - "opc.tcp://localhost:4840", - MagicMock(), - "localhost", + name="TestConnector", + url="opc.tcp://localhost:4840", + data_manager=MagicMock(), + logger=MagicMock(), + server_uri="opc.tcp://localhost:4840", + notification_handler=MagicMock(), metadata=metadata["metadata"], ) @@ -512,21 +512,21 @@ def test_check_opc_listenning_error_notification_and_retry(metrics, opc_manager) assert opc_manager.send_notification.call_count == 2 calls = opc_manager.send_notification.call_args_list # First call: 5 cycles warning - assert calls[0].kwargs == dict( - notification_id=f"OPC_LISTENNING_STOPPED__{opc_manager.name}", - message=f"15 cycles without receive from OPC {opc_manager.name}. Tags: {json.dumps(opc_manager.nodes)}", - block="opc_manager", - level=NotificationLevel.ERROR, - metadata=metadata["metadata"], - ) + assert calls[0].kwargs == { + "notification_id": f"OPC_LISTENNING_STOPPED__{opc_manager.name}", + "message": f"15 cycles without receive from OPC {opc_manager.name}. Tags: {json.dumps(opc_manager.nodes)}", + "block": "opc_manager", + "level": NotificationLevel.ERROR, + "metadata": metadata["metadata"], + } # Second call: 15 cycles retry - assert calls[1].kwargs == dict( - notification_id=f"OPC_CONNECTION_RETRY__{opc_manager.name}", - message=f"Retrying to connect to server {opc_manager.name}", - block="opc_manager", - level=NotificationLevel.ERROR, - metadata=metadata["metadata"], - ) + assert calls[1].kwargs == { + "notification_id": f"OPC_CONNECTION_RETRY__{opc_manager.name}", + "message": f"Retrying to connect to server {opc_manager.name}", + "block": "opc_manager", + "level": NotificationLevel.ERROR, + "metadata": metadata["metadata"], + } assert result is True metrics.OPC_CYCLES_WITHOUT_DATA.labels.assert_called_once_with( @@ -544,7 +544,8 @@ def test_check_opc_listenning_error_notification_and_retry(metrics, opc_manager) @patch("ingestor.managers.opc_manager.metrics") -def test_init_metrics_calls_correct_metric_methods(mock_metrics): +def test_init_metrics_calls_correct_metric_methods(metrics): + opc_manager = OpcManager( name="TestInitConnector", url="opc.tcp://init.test:4840", @@ -552,23 +553,22 @@ def test_init_metrics_calls_correct_metric_methods(mock_metrics): logger=MagicMock(), server_uri="opc.tcp://init.test:4840/uri", notification_handler=MagicMock(), - pod_id="init_pod_localhost", metadata=metadata["metadata"], ) - mock_metrics.OPC_CONNECTION_STATUS.labels.assert_called_once_with( + metrics.OPC_CONNECTION_STATUS.labels.assert_called_with( pod_id=opc_manager.pod_id, server_name=opc_manager.name, server_url=opc_manager.url, ) - mock_metrics.OPC_CONNECTION_STATUS.labels.return_value.set.assert_called_once_with( + metrics.OPC_CONNECTION_STATUS.labels.return_value.set.assert_called_once_with( 0) - mock_metrics.OPC_TAGS_SUBSCRIBED.labels.assert_called_once_with( + metrics.OPC_TAGS_SUBSCRIBED.labels.assert_called_once_with( pod_id=opc_manager.pod_id, server_name=opc_manager.name ) - mock_metrics.OPC_TAGS_SUBSCRIBED.labels.return_value.set.assert_called_once_with( + metrics.OPC_TAGS_SUBSCRIBED.labels.return_value.set.assert_called_once_with( 0) diff --git a/tests/unit/managers/test_resource_manager.py b/tests/unit/managers/test_resource_manager.py index 0e528a2..00238ea 100644 --- a/tests/unit/managers/test_resource_manager.py +++ b/tests/unit/managers/test_resource_manager.py @@ -22,7 +22,6 @@ def resource_manager(redis): port=6379, lease_ttl=10, heartbeat_ttl=10, - pod_id="pod_id", metadata=metadata["metadata"], logger=MagicMock(), notification_handler=MagicMock(), @@ -58,7 +57,7 @@ def test_ingestor_heartbeat(resource_manager): resource_manager.redis.set.return_value = True resource_manager.ingestor_heartbeat() resource_manager.redis.set.assert_called_once_with( - "heartbeat:ingestor:pod_id", 1, ex=10 + "heartbeat:ingestor:localhost", 1, ex=10 ) @@ -67,12 +66,12 @@ def test_lease_tag(resource_manager): output = resource_manager.lease_tag("tag_id") assert output is True resource_manager.redis.set.assert_called_once_with( - "lease:opc_tags:tag_id", "pod_id", nx=True, ex=10 + "lease:opc_tags:tag_id", "localhost", nx=True, ex=10 ) def test_renew_tag_lease_success(resource_manager): - resource_manager.redis.get.return_value = "pod_id" + resource_manager.redis.get.return_value = "localhost" resource_manager.redis.expire.return_value = True result = resource_manager.renew_tag_lease("tag_id") assert result is True @@ -136,13 +135,12 @@ def test_init_connection_failure(monkeypatch): port=6379, lease_ttl=10, heartbeat_ttl=10, - pod_id="pod_id", metadata=metadata["metadata"], logger=MagicMock(), notification_handler=MagicMock(), ) - mock_metrics.labels.assert_called_once_with(pod_id="pod_id") + mock_metrics.labels.assert_called_once_with(pod_id="localhost") mock_status.set.assert_called_once_with(0) @@ -166,13 +164,12 @@ def test_init_ping_failure(monkeypatch): port=6379, lease_ttl=10, heartbeat_ttl=10, - pod_id="pod_id", metadata=metadata["metadata"], logger=MagicMock(), notification_handler=MagicMock(), ) - mock_metrics.labels.assert_called_once_with(pod_id="pod_id") + mock_metrics.labels.assert_called_once_with(pod_id="localhost") mock_status.set.assert_called_once_with(0) @@ -198,12 +195,12 @@ def test_execute_redis_op_success(resource_manager): mock_func.assert_called_once_with("arg1", kwarg1="value1") mock_total.labels.assert_called_once_with( - pod_id="pod_id", operation="test_op" + pod_id="localhost", operation="test_op" ) mock_total_labels.inc.assert_called_once() mock_duration.labels.assert_called_once_with( - pod_id="pod_id", operation="test_op" + pod_id="localhost", operation="test_op" ) mock_duration_labels.observe.assert_called_once_with( 0.5 @@ -226,7 +223,7 @@ def test_execute_redis_op_exception(resource_manager): # Verify metrics and error handling mock_errors.labels.assert_called_once_with( - pod_id="pod_id", operation="test_op" + pod_id="localhost", operation="test_op" ) mock_errors_labels.inc.assert_called_once() resource_manager.send_notification.assert_called_once_with( diff --git a/tests/unit/test_app.py b/tests/unit/test_app.py index c4af7bb..421c2df 100644 --- a/tests/unit/test_app.py +++ b/tests/unit/test_app.py @@ -44,13 +44,15 @@ def mock_app_env(monkeypatch): monkeypatch.setattr( app.metrics.APP_UP, "labels", - MagicMock(return_value=MagicMock(set=mocks["metrics_APP_UP_labels_set"])), + MagicMock(return_value=MagicMock( + set=mocks["metrics_APP_UP_labels_set"])), ) monkeypatch.setattr( app.metrics.APP_LOOP_COUNT, "labels", MagicMock( - return_value=MagicMock(inc=mocks["metrics_APP_LOOP_COUNT_labels_inc"]) + return_value=MagicMock( + inc=mocks["metrics_APP_LOOP_COUNT_labels_inc"]) ), ) monkeypatch.setattr( @@ -66,7 +68,8 @@ def mock_app_env(monkeypatch): app.metrics.APP_ERRORS_TOTAL, "labels", MagicMock( - return_value=MagicMock(inc=mocks["metrics_APP_ERRORS_TOTAL_labels_inc"]) + return_value=MagicMock( + inc=mocks["metrics_APP_ERRORS_TOTAL_labels_inc"]) ), ) @@ -74,7 +77,8 @@ def mock_app_env(monkeypatch): monkeypatch.setattr(app, "time", mocks["time_time"]) monkeypatch.setattr(app, "sleep", mocks["time_sleep"]) monkeypatch.setattr(app.signal, "signal", mocks["signal_signal"]) - monkeypatch.setattr(app.traceback, "print_exc", mocks["traceback_print_exc"]) + monkeypatch.setattr(app.traceback, "print_exc", + mocks["traceback_print_exc"]) monkeypatch.setattr(app, "exit_signal", mocks["mock_exit_signal"]) monkeypatch.setattr(app, "POD_ID", "test_pod") @@ -98,7 +102,7 @@ def test_main_successful_run_one_loop(mock_app_env, capsys): app.main() assert excinfo.value.code == 0 - mock_app_env["start_http_server"].assert_called_once_with(4840) + mock_app_env["start_http_server"].assert_called_once_with(9090) app.metrics.APP_UP.labels.assert_any_call(pod_id="test_pod") set_calls = mock_app_env["metrics_APP_UP_labels_set"].call_args_list assert call(1) in set_calls @@ -115,7 +119,8 @@ def test_main_successful_run_one_loop(mock_app_env, capsys): app.metrics.APP_LOOP_COUNT.labels.assert_called_with(pod_id="test_pod") mock_app_env["metrics_APP_LOOP_COUNT_labels_inc"].assert_called_once() - mock_exit_signal.wait.assert_called_once_with(mock_ingestor_instance.poll_interval) + mock_exit_signal.wait.assert_called_once_with( + mock_ingestor_instance.poll_interval) app.metrics.APP_LOOP_DURATION.labels.assert_called_with(pod_id="test_pod") mock_app_env["metrics_APP_LOOP_DURATION_labels_observe"].assert_called_once_with( @@ -125,15 +130,17 @@ def test_main_successful_run_one_loop(mock_app_env, capsys): mock_ingestor_instance.shutdown.assert_called_once() mock_app_env["time_sleep"].assert_called_once_with(5) # CORREÇÃO APLICADA ABAIXO: - mock_ingestor_instance.logger.info.assert_any_call("Main loop exit_signaled.") + mock_ingestor_instance.logger.info.assert_any_call( + "Main loop exit_signaled.") captured = capsys.readouterr() - assert "Prometheus server started on port 4840." in captured.out + assert "Prometheus server started on port 9090." in captured.out def test_main_prometheus_server_fails_to_start(mock_app_env, capsys): """Test the scenario where starting the Prometheus server fails.""" - mock_app_env["start_http_server"].side_effect = OSError("Port already in use") + mock_app_env["start_http_server"].side_effect = OSError( + "Port already in use") with pytest.raises(OsExitCalled) as excinfo: app.main() @@ -229,7 +236,8 @@ def test_main_multiple_loop_iterations(mock_app_env): mock_exit_signal = mock_app_env["mock_exit_signal"] mock_exit_signal.is_set.side_effect = [False, False, False, True] - mock_app_env["time_time"].side_effect = [10.0, 10.1, 10.2, 10.3, 10.4, 10.5] + mock_app_env["time_time"].side_effect = [ + 10.0, 10.1, 10.2, 10.3, 10.4, 10.5] with pytest.raises(OsExitCalled) as excinfo: app.main() diff --git a/tests/unit/test_ingestor.py b/tests/unit/test_ingestor.py index 2f0a42f..215e0fc 100644 --- a/tests/unit/test_ingestor.py +++ b/tests/unit/test_ingestor.py @@ -51,6 +51,7 @@ def test___init__(notification_handler, getenv): "model_name": "-", "workflow_name": "OPC_INGESTOR", "schema_name": "OPC_INGESTOR", + "pod_id": "localhost1" } notification_handler.assert_called_once_with( @@ -112,7 +113,6 @@ def test_prepare_ingestor(ingestor_manager_mock, ingestor): }, lease_ttl=ingestor.lease_ttl, heartbeat_ttl=ingestor.heartbeat_ttl, - pod_id=ingestor.pod_id, poll_interval=ingestor.poll_interval, mongo_connection_string=ingestor.mongo_connection_string, mongo_database=ingestor.mongo_database, diff --git a/tests/unit/test_metrics.py b/tests/unit/test_metrics.py index 8750d42..d5e5be0 100644 --- a/tests/unit/test_metrics.py +++ b/tests/unit/test_metrics.py @@ -7,6 +7,15 @@ import ingestor.metrics as metrics # --- Test Functions for Each Metric (Corrected for v0.22.0 _name behavior) --- +def test_ingestor_tag_written_count(): + """Verify the definition of INGESTOR_TAG_WRITTEN_COUNT.""" + assert metrics.TAG_WRITTEN_COUNT is not None + assert isinstance(metrics.TAG_WRITTEN_COUNT, Counter) + assert metrics.TAG_WRITTEN_COUNT._name == "ingestor_tag_written_count" + assert set(metrics.TAG_WRITTEN_COUNT._labelnames) == { + "pod_id", "tag_name", "collection_name"} + + def test_app_loop_count(): """Verify the definition of APP_LOOP_COUNT.""" assert metrics.APP_LOOP_COUNT is not None @@ -118,7 +127,8 @@ def test_opc_connections_total(): assert ( metrics.OPC_CONNECTIONS_TOTAL._name == "opc_connections_initiated" ) # REMOVED _total - assert set(metrics.OPC_CONNECTIONS_TOTAL._labelnames) == {"pod_id", "server_name"} + assert set(metrics.OPC_CONNECTIONS_TOTAL._labelnames) == { + "pod_id", "server_name"} def test_opc_connections_failed(): @@ -128,7 +138,8 @@ def test_opc_connections_failed(): assert ( metrics.OPC_CONNECTIONS_FAILED._name == "opc_connections_failed" ) # REMOVED _total - assert set(metrics.OPC_CONNECTIONS_FAILED._labelnames) == {"pod_id", "server_name"} + assert set(metrics.OPC_CONNECTIONS_FAILED._labelnames) == { + "pod_id", "server_name"} def test_opc_connection_status(): @@ -162,7 +173,8 @@ def test_opc_tags_subscribed(): assert metrics.OPC_TAGS_SUBSCRIBED is not None assert isinstance(metrics.OPC_TAGS_SUBSCRIBED, Gauge) assert metrics.OPC_TAGS_SUBSCRIBED._name == "opc_tags_subscribed_current" - assert set(metrics.OPC_TAGS_SUBSCRIBED._labelnames) == {"pod_id", "server_name"} + assert set(metrics.OPC_TAGS_SUBSCRIBED._labelnames) == { + "pod_id", "server_name"} def test_opc_cycles_without_data(): @@ -170,7 +182,8 @@ def test_opc_cycles_without_data(): assert metrics.OPC_CYCLES_WITHOUT_DATA is not None assert isinstance(metrics.OPC_CYCLES_WITHOUT_DATA, Gauge) assert metrics.OPC_CYCLES_WITHOUT_DATA._name == "opc_cycles_without_data" - assert set(metrics.OPC_CYCLES_WITHOUT_DATA._labelnames) == {"pod_id", "server_name"} + assert set(metrics.OPC_CYCLES_WITHOUT_DATA._labelnames) == { + "pod_id", "server_name"} def test_opc_reconnections_total(): @@ -180,7 +193,8 @@ def test_opc_reconnections_total(): assert ( metrics.OPC_RECONNECTIONS_TOTAL._name == "opc_reconnections_tried" ) # REMOVED _total - assert set(metrics.OPC_RECONNECTIONS_TOTAL._labelnames) == {"pod_id", "server_name"} + assert set(metrics.OPC_RECONNECTIONS_TOTAL._labelnames) == { + "pod_id", "server_name"} def test_kafka_messages_sent(): @@ -198,7 +212,8 @@ def test_kafka_messages_errors(): assert ( metrics.KAFKA_MESSAGES_ERRORS._name == "kafka_messages_errors" ) # REMOVED _total - assert set(metrics.KAFKA_MESSAGES_ERRORS._labelnames) == {"pod_id", "topic"} + assert set(metrics.KAFKA_MESSAGES_ERRORS._labelnames) == { + "pod_id", "topic"} def test_kafka_connection_status(): @@ -214,7 +229,8 @@ def test_redis_operations_total(): assert metrics.REDIS_OPERATIONS_TOTAL is not None assert isinstance(metrics.REDIS_OPERATIONS_TOTAL, Counter) assert metrics.REDIS_OPERATIONS_TOTAL._name == "redis_operations" # REMOVED _total - assert set(metrics.REDIS_OPERATIONS_TOTAL._labelnames) == {"pod_id", "operation"} + assert set(metrics.REDIS_OPERATIONS_TOTAL._labelnames) == { + "pod_id", "operation"} def test_redis_operations_errors(): @@ -224,7 +240,8 @@ def test_redis_operations_errors(): assert ( metrics.REDIS_OPERATIONS_ERRORS._name == "redis_operations_errors" ) # REMOVED _total - assert set(metrics.REDIS_OPERATIONS_ERRORS._labelnames) == {"pod_id", "operation"} + assert set(metrics.REDIS_OPERATIONS_ERRORS._labelnames) == { + "pod_id", "operation"} def test_redis_operations_duration(): @@ -234,7 +251,8 @@ def test_redis_operations_duration(): assert ( metrics.REDIS_OPERATIONS_DURATION._name == "redis_operations_duration_seconds" ) - assert set(metrics.REDIS_OPERATIONS_DURATION._labelnames) == {"pod_id", "operation"} + assert set(metrics.REDIS_OPERATIONS_DURATION._labelnames) == { + "pod_id", "operation"} def test_redis_connection_status(): @@ -250,4 +268,5 @@ def test_notifications_sent(): assert metrics.NOTIFICATIONS_SENT is not None assert isinstance(metrics.NOTIFICATIONS_SENT, Counter) assert metrics.NOTIFICATIONS_SENT._name == "notifications_sent" # REMOVED _total - assert set(metrics.NOTIFICATIONS_SENT._labelnames) == {"pod_id", "level", "block"} + assert set(metrics.NOTIFICATIONS_SENT._labelnames) == { + "pod_id", "level", "block"} diff --git a/values.yaml b/values.yaml index 9f3d9ed..1372684 100644 --- a/values.yaml +++ b/values.yaml @@ -3,7 +3,7 @@ # Declare variables to be passed into your templates. # This will set the replicaset count more information can be found here: https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/ -replicaCount: 1 +replicaCount: 3 # This sets the container image more information can be found here: https://kubernetes.io/docs/concepts/containers/images/ image: @@ -11,7 +11,7 @@ image: # This sets the pull policy for images. pullPolicy: Always # Overrides the image tag whose default is the chart appVersion. - tag: "0.2.7" + tag: "0.3.2" # This is for the secrets for pulling an image from a private repository more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ imagePullSecrets: @@ -158,7 +158,7 @@ env: - name: GITHUB_REPO_URL value: "git@github.com:Aignosi/sientia-dataops-opc-ingestor.git" - name: GITHUB_BRANCH - value: "SIENTIAPDE-1172-criar-pipeline-de-alertas-orquestrador" + value: "SIENTIAPDE-1174-mapear-e-implementar-metricas-a-serem-criadas" - name: PYTHON_APP value: "ingestor.app" @@ -190,7 +190,7 @@ env: value: "10" - name: LOG_LEVEL value: "DEBUG" - - name: HTTP_SERVER_PORT + - name: HTTP_METRICS_PORT value: "9090" @@ -212,7 +212,7 @@ ssh: # kubectl create secret docker-registry docker-hub-secret --namespace sientia --docker-server=http://aignosi.azurecr.io --docker-username=aignosi --docker-password=5I5zpQ6sRaHqX1hD3dr+2mo647yO3FRc359/wu6gsP+ACRDRz5mp -# helm upgrade --install sientia-opc-ingestor sientia/sientia-module -n sientia --create-namespace -f ./values.yaml --version 0.4.0-uat +# helm upgrade --install sientia-opc-ingestor sientia/sientia-module -n sientia --create-namespace -f ./values.yaml --version 0.4.0 # kubectl create secret generic git-ssh-key-sientia-opc-ingestor \ # --namespace sientia \