Merge pull request #15 from Aignosi/SIENTIAPDE-1199-revisar-e-testar-observabilidade
Sientiapde 1199 revisar e testar observabilidade
This commit is contained in:
@@ -3,7 +3,7 @@ from copy import deepcopy
|
|||||||
from typing import Dict, Any
|
from typing import Dict, Any
|
||||||
|
|
||||||
from sientia_do.notifications.handlers import CoreNotificationHandler as NotificationHandler
|
from sientia_do.notifications.handlers import CoreNotificationHandler as NotificationHandler
|
||||||
from sientia_do.temporal.utils.logger import get_logger
|
from sientia_do.observability.logger import get_logger
|
||||||
|
|
||||||
from ingestor.managers.ingestor_manager import IngestorManager
|
from ingestor.managers.ingestor_manager import IngestorManager
|
||||||
|
|
||||||
@@ -66,14 +66,14 @@ class Ingestor:
|
|||||||
connection_string=self.mongo_connection_string,
|
connection_string=self.mongo_connection_string,
|
||||||
database=self.mongo_database,
|
database=self.mongo_database,
|
||||||
logger=self.logger,
|
logger=self.logger,
|
||||||
project_name="OPC_INGESTOR"
|
project_name="opc_ingestor"
|
||||||
)
|
)
|
||||||
|
|
||||||
self.metadata = {
|
self.metadata = {
|
||||||
'model_id': '-',
|
'model_id': '-',
|
||||||
'model_name': '-',
|
'model_name': '-',
|
||||||
'workflow_name': 'OPC_INGESTOR',
|
'workflow_name': 'opc_ingestor',
|
||||||
'schema_name': 'OPC_INGESTOR',
|
'schema_name': 'opc_ingestor',
|
||||||
'pod_id': self.pod_id,
|
'pod_id': self.pod_id,
|
||||||
}
|
}
|
||||||
self.ingestor_manager = None
|
self.ingestor_manager = None
|
||||||
@@ -248,18 +248,18 @@ class Ingestor:
|
|||||||
|
|
||||||
for slot, config in new_managed_tags.items():
|
for slot, config in new_managed_tags.items():
|
||||||
if slot not in old_managed_tags:
|
if slot not in old_managed_tags:
|
||||||
self.logger.debug(f"Subscribing to new slot {slot}")
|
self.logger.info(f"Subscribing to new slot {slot}")
|
||||||
self.ingestor_manager.subscribe_to_tags({slot: config})
|
self.ingestor_manager.subscribe_to_tags({slot: config})
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if config != old_managed_tags[slot]:
|
if config != old_managed_tags[slot]:
|
||||||
self.logger.debug(f"Resubscribing to slot {slot}")
|
self.logger.info(f"Resubscribing to slot {slot}")
|
||||||
self.ingestor_manager.unsubscribe_slot(slot)
|
self.ingestor_manager.unsubscribe_slot(slot)
|
||||||
self.ingestor_manager.subscribe_to_tags({slot: config})
|
self.ingestor_manager.subscribe_to_tags({slot: config})
|
||||||
|
|
||||||
for slot in old_managed_tags.keys():
|
for slot in old_managed_tags.keys():
|
||||||
if slot not in new_managed_tags:
|
if slot not in new_managed_tags:
|
||||||
self.logger.debug(f"Unsubscribing from slot {slot}")
|
self.logger.info(f"Unsubscribing from slot {slot}")
|
||||||
self.ingestor_manager.unsubscribe_slot(slot)
|
self.ingestor_manager.unsubscribe_slot(slot)
|
||||||
|
|
||||||
# Ensure the gauge is updated after any potential changes here
|
# Ensure the gauge is updated after any potential changes here
|
||||||
@@ -302,14 +302,14 @@ class Ingestor:
|
|||||||
metrics.ACTIVE_INGESTORS.set(number_of_ingestors)
|
metrics.ACTIVE_INGESTORS.set(number_of_ingestors)
|
||||||
|
|
||||||
# Handle no slots
|
# Handle no slots
|
||||||
self.logger.debug("Managing no slots...")
|
self.logger.info("Managing no slots...")
|
||||||
self.manage_no_slots(number_of_slots)
|
self.manage_no_slots(number_of_slots)
|
||||||
|
|
||||||
available_slots = number_of_slots - number_of_leases
|
available_slots = number_of_slots - number_of_leases
|
||||||
lacking_ingestors = number_of_slots - number_of_ingestors
|
lacking_ingestors = number_of_slots - number_of_ingestors
|
||||||
slot_diff = len(self.ingestor_manager.managed_tags) - 1
|
slot_diff = len(self.ingestor_manager.managed_tags) - 1
|
||||||
|
|
||||||
self.logger.debug("Managing leases...")
|
self.logger.info("Managing leases...")
|
||||||
self.manage_leases(available_slots, lacking_ingestors, slot_diff)
|
self.manage_leases(available_slots, lacking_ingestors, slot_diff)
|
||||||
|
|
||||||
# Update managed slots gauge
|
# Update managed slots gauge
|
||||||
@@ -329,12 +329,12 @@ class Ingestor:
|
|||||||
self.logger.info("No slots acquired in this loop")
|
self.logger.info("No slots acquired in this loop")
|
||||||
|
|
||||||
# Update opc servers
|
# Update opc servers
|
||||||
self.logger.debug("Updating slot config...")
|
self.logger.info("Updating slot config...")
|
||||||
self.ingestor_manager.update_slot_config()
|
self.ingestor_manager.update_slot_config()
|
||||||
|
|
||||||
# Check OPC cycles
|
# Check OPC cycles
|
||||||
self.logger.debug("Checking OPC servers integrity...")
|
self.logger.info("Checking OPC servers integrity...")
|
||||||
self.ingestor_manager.check_opc_servers_integrity()
|
self.ingestor_manager.check_opc_servers_integrity()
|
||||||
|
|
||||||
self.logger.debug("Updating managed tags...")
|
self.logger.info("Updating managed tags...")
|
||||||
self.update_ingestor_manager(current_managed_tags)
|
self.update_ingestor_manager(current_managed_tags)
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ from kafka.errors import NoBrokersAvailable
|
|||||||
from sientia_do.notifications.handlers import CoreNotificationHandler as NotificationHandler
|
from sientia_do.notifications.handlers import CoreNotificationHandler as NotificationHandler
|
||||||
from sientia_do.notifications.models import NotificationLevel
|
from sientia_do.notifications.models import NotificationLevel
|
||||||
from sientia_do.temporal.activities.base import BaseActivity
|
from sientia_do.temporal.activities.base import BaseActivity
|
||||||
from sientia_do.temporal.utils.logger import Logger
|
from sientia_do.observability.logger import Logger
|
||||||
import traceback
|
import traceback
|
||||||
import ingestor.metrics as metrics
|
import ingestor.metrics as metrics
|
||||||
import os
|
import os
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ from copy import deepcopy
|
|||||||
from sientia_do.notifications.handlers import CoreNotificationHandler as NotificationHandler
|
from sientia_do.notifications.handlers import CoreNotificationHandler as NotificationHandler
|
||||||
from sientia_do.notifications.models import NotificationLevel
|
from sientia_do.notifications.models import NotificationLevel
|
||||||
from sientia_do.temporal.activities.base import BaseActivity
|
from sientia_do.temporal.activities.base import BaseActivity
|
||||||
from sientia_do.temporal.utils.logger import Logger
|
from sientia_do.observability.logger import Logger
|
||||||
from ingestor.managers.data_manager import DataManager
|
from ingestor.managers.data_manager import DataManager
|
||||||
from ingestor.managers.opc_manager import OpcManager
|
from ingestor.managers.opc_manager import OpcManager
|
||||||
from ingestor.managers.resource_manager import ResourceManager
|
from ingestor.managers.resource_manager import ResourceManager
|
||||||
@@ -153,7 +153,7 @@ class IngestorManager(BaseActivity):
|
|||||||
server_config.pop('tags', None)
|
server_config.pop('tags', None)
|
||||||
server_instance = self.opc_managers.get(server, None)
|
server_instance = self.opc_managers.get(server, None)
|
||||||
if server_instance is None:
|
if server_instance is None:
|
||||||
self.logger.debug(
|
self.logger.info(
|
||||||
f"Initializing OPC manager for server {server}"
|
f"Initializing OPC manager for server {server}"
|
||||||
)
|
)
|
||||||
server_instance = self.initialize_opc_from_config(
|
server_instance = self.initialize_opc_from_config(
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from asyncua.sync import Client
|
|||||||
from sientia_do.notifications.models import NotificationLevel
|
from sientia_do.notifications.models import NotificationLevel
|
||||||
from sientia_do.notifications.handlers import CoreNotificationHandler as NotificationHandler
|
from sientia_do.notifications.handlers import CoreNotificationHandler as NotificationHandler
|
||||||
from sientia_do.temporal.activities.base import BaseActivity
|
from sientia_do.temporal.activities.base import BaseActivity
|
||||||
from sientia_do.temporal.utils.logger import Logger
|
from sientia_do.observability.logger import Logger
|
||||||
from ingestor.managers.data_manager import DataManager
|
from ingestor.managers.data_manager import DataManager
|
||||||
import ingestor.metrics as metrics
|
import ingestor.metrics as metrics
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from time import time
|
|||||||
import ingestor.metrics as metrics
|
import ingestor.metrics as metrics
|
||||||
from sientia_do.notifications.handlers import CoreNotificationHandler as NotificationHandler
|
from sientia_do.notifications.handlers import CoreNotificationHandler as NotificationHandler
|
||||||
from sientia_do.notifications.models import NotificationLevel
|
from sientia_do.notifications.models import NotificationLevel
|
||||||
from sientia_do.temporal.utils.logger import Logger
|
from sientia_do.observability.logger import Logger
|
||||||
from sientia_do.temporal.activities.base import BaseActivity
|
from sientia_do.temporal.activities.base import BaseActivity
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
asyncua==1.1.5
|
asyncua==1.1.5
|
||||||
redis
|
redis
|
||||||
git+ssh://git@github.com/Aignosi/sientia-dataops-library.git@1.3.8
|
git+ssh://git@github.com/Aignosi/sientia-dataops-library.git@1.4.1
|
||||||
prometheus_client
|
prometheus_client
|
||||||
pymongo
|
pymongo
|
||||||
@@ -49,8 +49,8 @@ def test___init__(notification_handler, getenv):
|
|||||||
assert ingestor.metadata == {
|
assert ingestor.metadata == {
|
||||||
"model_id": "-",
|
"model_id": "-",
|
||||||
"model_name": "-",
|
"model_name": "-",
|
||||||
"workflow_name": "OPC_INGESTOR",
|
"workflow_name": "opc_ingestor",
|
||||||
"schema_name": "OPC_INGESTOR",
|
"schema_name": "opc_ingestor",
|
||||||
"pod_id": "localhost1"
|
"pod_id": "localhost1"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,7 +58,7 @@ def test___init__(notification_handler, getenv):
|
|||||||
connection_string="mongodb://sientia:sientia@localhost:27017",
|
connection_string="mongodb://sientia:sientia@localhost:27017",
|
||||||
database="sientia",
|
database="sientia",
|
||||||
logger=ingestor.logger,
|
logger=ingestor.logger,
|
||||||
project_name="OPC_INGESTOR"
|
project_name="opc_ingestor"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
35
values.yaml
35
values.yaml
@@ -11,7 +11,7 @@ image:
|
|||||||
# This sets the pull policy for images.
|
# This sets the pull policy for images.
|
||||||
pullPolicy: Always
|
pullPolicy: Always
|
||||||
# Overrides the image tag whose default is the chart appVersion.
|
# Overrides the image tag whose default is the chart appVersion.
|
||||||
tag: "0.3.2"
|
tag: "0.4.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/
|
# 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:
|
imagePullSecrets:
|
||||||
@@ -112,20 +112,6 @@ tolerations: []
|
|||||||
affinity: {}
|
affinity: {}
|
||||||
|
|
||||||
services:
|
services:
|
||||||
api:
|
|
||||||
enabled: false
|
|
||||||
type: ClusterIP
|
|
||||||
port: 4841
|
|
||||||
targetPort: 4841
|
|
||||||
name: api
|
|
||||||
|
|
||||||
opc:
|
|
||||||
enabled: false
|
|
||||||
type: ClusterIP
|
|
||||||
port: 4840
|
|
||||||
targetPort: 4840
|
|
||||||
name: server
|
|
||||||
|
|
||||||
metrics:
|
metrics:
|
||||||
enabled: true
|
enabled: true
|
||||||
type: ClusterIP
|
type: ClusterIP
|
||||||
@@ -133,32 +119,27 @@ services:
|
|||||||
targetPort: 9090
|
targetPort: 9090
|
||||||
name: metrics
|
name: metrics
|
||||||
|
|
||||||
|
|
||||||
# Configuração do ServiceMonitor para o Prometheus Operator
|
# Configuração do ServiceMonitor para o Prometheus Operator
|
||||||
# ref: https://github.com/prometheus-operator/prometheus-operator
|
# ref: https://github.com/prometheus-operator/prometheus-operator
|
||||||
serviceMonitor:
|
serviceMonitor:
|
||||||
# Se true, um recurso ServiceMonitor será criado.
|
# Se true, um recurso ServiceMonitor será criado.
|
||||||
enabled: true
|
enabled: true
|
||||||
# O intervalo no qual as métricas devem ser coletadas (ex: 30s, 1m).
|
# O intervalo no qual as métricas devem ser coletadas (ex: 30s, 1m).
|
||||||
interval: 30s
|
endpoints:
|
||||||
# O path do endpoint de métricas na sua aplicação.
|
- port: metrics
|
||||||
path: /metrics
|
path: /metrics
|
||||||
# Labels adicionais para o recurso ServiceMonitor.
|
interval: 30s
|
||||||
# Essencial para que o Prometheus Operator o descubra. Se você usa o helm chart kube-prometheus-stack,
|
relabelings: []
|
||||||
# ele procura por ServiceMonitors com o label "release: kube-prometheus-stack".
|
|
||||||
additionalLabels:
|
additionalLabels:
|
||||||
release: kube-prometheus-stack
|
release: kube-prometheus-stack
|
||||||
# Configurações de relabeling adicionais, se necessário.
|
|
||||||
# ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
|
|
||||||
relabelings: []
|
|
||||||
port: metrics
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
# Entrypoint variables
|
# Entrypoint variables
|
||||||
- name: GITHUB_REPO_URL
|
- name: GITHUB_REPO_URL
|
||||||
value: "git@github.com:Aignosi/sientia-dataops-opc-ingestor.git"
|
value: "git@github.com:Aignosi/sientia-dataops-opc-ingestor.git"
|
||||||
- name: GITHUB_BRANCH
|
- name: GITHUB_BRANCH
|
||||||
value: "SIENTIAPDE-1174-mapear-e-implementar-metricas-a-serem-criadas"
|
value: "SIENTIAPDE-1199-revisar-e-testar-observabilidade"
|
||||||
- name: PYTHON_APP
|
- name: PYTHON_APP
|
||||||
value: "ingestor.app"
|
value: "ingestor.app"
|
||||||
|
|
||||||
@@ -212,7 +193,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
|
# 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
|
# helm upgrade --install sientia-opc-ingestor sientia/sientia-module -n sientia --create-namespace -f ./values.yaml --version 0.5.0
|
||||||
|
|
||||||
# kubectl create secret generic git-ssh-key-sientia-opc-ingestor \
|
# kubectl create secret generic git-ssh-key-sientia-opc-ingestor \
|
||||||
# --namespace sientia \
|
# --namespace sientia \
|
||||||
|
|||||||
Reference in New Issue
Block a user