Set up programmatic monitoring, logging, and alarms for OCI resources.
Use when configuring OCI Monitoring metrics, creating alarm rules, publishing custom metrics, or searching logs via the Logging service.
Trigger with "oraclecloud observability", "oci monitoring", "oci alarms", "oci logging", "oracle cloud observability".
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Um comando direto ignora o prompt de revisão. Verifique a origem antes de executá-lo.
Instruções da origem · Visualização somente leitura
name
oraclecloud-observability
description
Set up programmatic monitoring, logging, and alarms for OCI resources.
Use when configuring OCI Monitoring metrics, creating alarm rules, publishing custom metrics, or searching logs via the Logging service.
Trigger with "oraclecloud observability", "oci monitoring", "oci alarms", "oci logging", "oracle cloud observability".
allowed-tools
Read, Write, Edit, Bash(pip:*), Grep
version
1.7.0
license
MIT
author
Jeremy Longshore <jeremy@intentsolutions.io>
tags
["saas","oraclecloud","oci"]
compatibility
Designed for Claude Code
Oracle Cloud Observability
Overview
Set up programmatic monitoring for OCI infrastructure using the Monitoring, Logging, and Notifications services. The OCI Console buries these features behind nested menus, and the status page has historically failed to acknowledge outages (e.g., London region, January 2026). This skill builds monitoring you control through code — metric queries, alarm rules, custom metric publishing, and log searches — so you are never surprised by an outage you should have caught.
Purpose: Create a code-driven observability stack that queries metrics, fires alarms, publishes custom metrics, and searches logs without depending on the OCI Console.
Prerequisites
OCI tenancy with an API signing key in ~/.oci/config
Python 3.8+ with pip install oci
Compartment OCID containing the resources to monitor
IAM policies granting manage alarms and read metrics in the target compartment
Notification topic created for alarm destinations (or create one in Step 4)
Instructions
Step 1: Query Metrics with MonitoringClient
OCI publishes built-in metrics for compute, networking, block storage, and more. Query them programmatically:
import oci
from datetime import datetime, timedelta
config = oci.config.from_file("~/.oci/config")
monitoring = oci.monitoring.MonitoringClient(config)
# Query CPU utilization for all instances in a compartment
response = monitoring.summarize_metrics_data(
compartment_id="ocid1.compartment.oc1..example",
summarize_metrics_data_details=oci.monitoring.models.SummarizeMetricsDataDetails(
namespace="oci_computeagent",
query='CpuUtilization[5m]{availabilityDomain = "Uocm:US-ASHBURN-AD-1"}.mean()',
start_time=(datetime.utcnow() - timedelta(hours=1)).isoformat() + "Z",
end_time=datetime.utcnow().isoformat() + "Z"
)
)
for metric in response.data:
for dp in metric.aggregated_datapoints:
()
print
f"{dp.timestamp}: {dp.value:.1f}% CPU"
Step 2: Create Alarm Rules
Alarms trigger when a metric crosses a threshold. Create them via SDK so they survive Console UI changes:
monitoring.create_alarm(
oci.monitoring.models.CreateAlarmDetails(
display_name="High CPU Alert",
compartment_id="ocid1.compartment.oc1..example",
metric_compartment_id="ocid1.compartment.oc1..example",
namespace="oci_computeagent",
query='CpuUtilization[5m].mean() > 80',
severity="CRITICAL",
body="CPU utilization exceeded 80% for 5 minutes.",
destinations=["ocid1.onstopic.oc1..example"],
is_enabled=True,
pending_duration="PT5M",
repeat_notification_duration="PT15M"
)
)
print("Alarm created: High CPU Alert")
Step 3: Publish Custom Metrics
Push application-level metrics into OCI Monitoring so they can trigger the same alarm system:
Verify namespace and metric name; use list_metrics to discover available metrics
ServiceError status -1
N/A
Request timeout on large queries
Narrow the time window or add dimension filters
Examples
Quick metric check with OCI CLI:
# List available metric namespaces
oci monitoring metric list \
--compartment-id ocid1.compartment.oc1..example \
--namespace oci_computeagent
# List all alarms
oci monitoring alarm list \
--compartment-id ocid1.compartment.oc1..example
List all metrics in a namespace to discover what's available:
import oci
config = oci.config.from_file("~/.oci/config")
monitoring = oci.monitoring.MonitoringClient(config)
metrics = monitoring.list_metrics(
compartment_id="ocid1.compartment.oc1..example",
list_metrics_details=oci.monitoring.models.ListMetricsDetails(
namespace="oci_computeagent"
)
).data
for m in metrics:
print(f"{m.name} — dimensions: {m.dimensions}")
Resources
OCI Monitoring — metrics, alarms, and MQL query language
After monitoring is in place, proceed to oraclecloud-performance-tuning to optimize shape and storage performance, or see oraclecloud-cost-tuning to set up budget alerts that use the same notification topics.