This is a thin layer over MicroOVN, to allow MicroOVN to be used within the charm ecosystem.
This is to be deployed alongside microcluster-token-distributor for cluster management.
An example deployment looks something like this:
juju deploy microovn -n 3
juju deploy microcluster-token-distributor
juju relate microovn microcluster-token-distributorThis will give you 3 MicroOVN nodes, that should set up a stable cluster using the microcluster-token-distributor.
MicroOVN supports a couple of useful relations:
ovsdb: which exposes the connection strings for the ovs northbound and southbound databases.tls-certificates: which integrates with a certificate provider and then adds the application certificate provided into the chain for the certificates it issues to the MicroOVN units allowing for other applications to properly interface with it.cos-agent: which exchanges information on several observability-related data streams at once.
This charm integrates with the Canonical Observability Stack (COS) using the Opentelemtry Collector.
Prerequisites:
- A machine model for MicroOVN and Grafana Agent.
- A Kubernetes model with COS Lite deployed. See COS Lite documentation for details.
Steps:
- Deploy OpenTelemetry Collector in the machine model:
juju deploy opentelemetry-collector --channel=2/stable- Relate MicroOVN to OpenTelemetry Collector:
juju relate microovn opentelemetry-collector- Connect OpenTelemetry Collector to COS Lite:
# In the COS model
juju offer prometheus-k8s:receive-remote-write prom-remote-write
juju offer loki-k8s:logging loki-logging
# In the machine model
juju consume <controller>/cos.prom-remote-write
juju consume <controller>/cos.loki-logging
juju relate opentelemetry-collector prom-remote-write
juju relate opentelemetry-collector loki-loggingAlert rules are packaged in src/prometheus_alert_rules/alerts.yaml:
| Alert | Summary |
|---|---|
MicroOVNExporterDown | OVN metrics endpoint missing for 5 minutes. |
OvnControllerSouthboundDisconnected | ovn-controller disconnected from SB DB. |
OvnNorthdNoActiveInstance | No or multiple active ovn-northd instances detected. |
OvnNorthdNBConnectionDown | ovn-northd disconnected from NB DB. |
OvnNorthdSBConnectionDown | ovn-northd disconnected from SB DB. |
OvnNBDBNoLeader | Northbound DB has no leader. |
OvnNBDBMultipleLeaders | Northbound DB reports multiple leaders. |
OvnSBDBNoLeader | Southbound DB has no leader. |
OvnSBDBMultipleLeaders | Southbound DB reports multiple leaders. |
OvnDBClusterLogBacklog | DB cluster has unapplied/uncommitted log entries. |
OvnNorthdTransactionErrors | ovn-northd reported transaction errors in last 10m. |
OvnControllerTransactionErrors | ovn-controller reported transaction errors in last 10m. |
OvnControllerTransactionIncomplete | ovn-controller reported incomplete transactions in last 10m. |
OvsVswitchdFileDescriptorsHigh | ovs-vswitchd using >90% of file descriptors. |
Dashboards are packaged in src/dashboards/:
| Dashboard | Grafana name | Summary |
|---|---|---|
central-north-daemon.json | OVN Central / North Daemon | OVN Northd health: DB connections, active/standby status, build info, and transaction error/incomplete rates. |
central-northbound-db.json | OVN Central / Northbound DB | OVN Northbound DB cluster health: build/cluster info, leader/role, log status, connections, DB size, sessions, and monitors. |
central-southbound-db.json | OVN Central / Southbound DB | OVN Southbound DB cluster health: build/cluster info, leader/role, log status, connections, DB size, sessions, and monitors. |
host-controller.json | OVN Host / Controller | OVN controller health: SB connectivity, build info, integration bridge flows/ports, and transaction/error counters. |
host-ovs.json | OVS / Host Network | OVS datapath and bridge health: bridges, ports, flows, datapath stats, and vswitchd process metrics. |
- Contributing
- See the Juju SDK documentation for more information about developing and improving charms.