Skip to content

Commit

Permalink
feat(COS): implement bundle relations, log on promtail-digest-error, …
Browse files Browse the repository at this point in the history
…expose metrics port on OpenFGA service
  • Loading branch information
BarcoMasile committed Jan 23, 2024
1 parent d8a3ec5 commit 8d3a111
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 7 deletions.
28 changes: 22 additions & 6 deletions src/charm.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
DatabaseRequires,
)
from charms.grafana_k8s.v0.grafana_dashboard import GrafanaDashboardProvider
from charms.loki_k8s.v0.loki_push_api import LogProxyConsumer
from charms.loki_k8s.v0.loki_push_api import LogProxyConsumer, PromtailDigestError
from charms.observability_libs.v1.kubernetes_service_patch import KubernetesServicePatch
from charms.openfga_k8s.v1.openfga import OpenFGAProvider, OpenFGAStoreRequestEvent
from charms.prometheus_k8s.v0.prometheus_scrape import MetricsEndpointProvider
Expand Down Expand Up @@ -68,7 +68,7 @@
PEER_KEY_DB_MIGRATE_VERSION,
REQUIRED_SETTINGS,
SERVICE_NAME,
WORKLOAD_CONTAINER,
WORKLOAD_CONTAINER, OPENFGA_METRICS_HTTP_PORT,
)
from openfga import OpenFGA
from state import State, requires_state, requires_state_setter
Expand Down Expand Up @@ -111,14 +111,22 @@ def __init__(self, *args: Any) -> None:
self,
log_files=[LOG_FILE],
relation_name=LOG_PROXY_RELATION_NAME,
promtail_resource_name="promtail-bin",
container_name=WORKLOAD_CONTAINER,
container_name=WORKLOAD_CONTAINER
)

# Prometheus metrics endpoint relation
self.metrics_endpoint = MetricsEndpointProvider(
self,
jobs=[{"static_configs": [{"targets": [f"*:{OPENFGA_SERVER_HTTP_PORT}"]}]}],
jobs=[
{
"metrics_path": "/metrics",
"static_configs": [
{
"targets": [f"*:{OPENFGA_METRICS_HTTP_PORT}"]
}
]
}
],
refresh_event=self.on.config_changed,
relation_name=METRIC_RELATION_NAME,
)
Expand Down Expand Up @@ -161,14 +169,18 @@ def __init__(self, *args: Any) -> None:
self._on_database_changed,
)
self.framework.observe(self.on.database_relation_broken, self._on_database_relation_broken)
self.framework.observe(self.log_proxy.on.promtail_digest_error, self._on_promtail_digest_error)

port_http = ServicePort(
OPENFGA_SERVER_HTTP_PORT, name=f"{self.app.name}-http", protocol="TCP"
)
port_grpc = ServicePort(
OPENFGA_SERVER_GRPC_PORT, name=f"{self.app.name}-grpc", protocol="TCP"
)
self.service_patcher = KubernetesServicePatch(self, [port_http, port_grpc])
port_metrics = ServicePort(
OPENFGA_METRICS_HTTP_PORT, name=f"{self.app.name}-metrics", protocol="TCP"
)
self.service_patcher = KubernetesServicePatch(self, [port_http, port_grpc, port_metrics])

def _on_openfga_pebble_ready(self, event: PebbleReadyEvent) -> None:
"""Workload pebble ready."""
Expand Down Expand Up @@ -212,6 +224,10 @@ def _get_database_relation_info(self) -> Optional[Dict]:
"database_name": DATABASE_NAME,
}

def _on_promtail_digest_error(self, event: PromtailDigestError) -> None:
""" Log PromtailDigestError error """
logger.error(f'got PromtailDigestError with message: "{event.message}"')

@property
def _log_level(self) -> str:
return self.config["log-level"]
Expand Down
3 changes: 2 additions & 1 deletion src/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,10 @@
"OPENFGA_AUTHN_PRESHARED_KEYS",
]

LOG_FILE = "/var/log/openfga-k8s"
LOG_FILE = "/openfga-k8s.log"

OPENFGA_SERVER_HTTP_PORT = 8080
OPENFGA_METRICS_HTTP_PORT = 2112
OPENFGA_SERVER_GRPC_PORT = 8081

PEER_KEY_DB_MIGRATE_VERSION = "db_migrate_version"
Expand Down

0 comments on commit 8d3a111

Please sign in to comment.