observability

Defines SLIs, alert thresholds, Grafana dashboards, and OpenTelemetry patterns for .NET services.

2|1|Updated Feb 12, 2026
One-click install
npx skills add https://github.com/cilerler/lillian --skill observability-cilerler
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: observability
Source: https://github.com/cilerler/lillian/tree/main/plugins/ai-toolkit/skills/observability
Command: npx skills add https://github.com/cilerler/lillian --skill observability-cilerler

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Teams building .NET services often lack consistent observability standards, resulting in ad-hoc metrics, missing alerts, and dashboards that cannot be compared across services. This Skill provides a single canonical standard for SLIs, alert thresholds, dashboard generation, and OpenTelemetry instrumentation so every service is monitored the same way. ## Core Features & Use Cases - Standard SLI Catalog: Predefined SLI tables with targets for HTTP APIs, background workers, and message consumers, covering latency percentiles, error rates, saturation, queue depth, and DLQ signals. - Alert Conventions: Severity levels (Critical, Warning, Info) with standard warning/critical thresholds and durations for error rate, latency, CPU, memory, queue, and worker metrics. - Grafana Dashboard Templates: Ready-to-adapt JSON dashboards (Service Health, API Performance, Resource Usage, Background Worker) with canonical datasource, env, and service template variables plus PromQL query examples. - OpenTelemetry Patterns: Constructor injection of ILogger, IDistributedTracing, and IMeterFactory, correct ActivityKind usage, environment attribution via deployment.environment, and a complete instrumentation code example. - Use Case: An Architect defining observability requirements for a new message-consumer service can pull the consumer SLI table, alert thresholds, and telemetry ownership rules directly, then hand the Developer the instrumentation pattern and dashboard generation rules to implement. ## Quick Start Ask the agent to define the SLIs, alert thresholds, and a Grafana dashboard for your .NET service using the observability skill.

Frequently Asked Questions about observability

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add OpenTelemetry metrics and tracing to a .NET service?

Inject ILogger, IDistributedTracing, and IMeterFactory through the constructor, then call ConfigureOpenTelemetry() in Program.cs. Create counters and histograms from the meter with an app_{ServiceSnakeName}_ prefix and start activities with the correct ActivityKind for each operation.

What SLIs should a .NET HTTP API monitor?

Track latency p50/p95/p99, error rate below 0.1%, availability above 99.9%, CPU and memory saturation below 80%, and throughput. Measure latency with histogram quantiles and error rate as a counter ratio of 5xx responses to total requests.

How do I create a Grafana dashboard for a background worker?

Use the Background Worker dashboard template with a hidden worker variable initialized from the snake_case worker class name. Panels query app_{WorkerSnakeName}_total, _success, _failed, _active, _retries, and _duration_seconds_bucket metrics filtered by env and service_name.

Which ActivityKind should I use for message queue operations?

Use ActivityKind.Producer when sending a message to a queue or topic and ActivityKind.Consumer when processing a received message. Use Client for synchronous outbound calls like database or HTTP requests, and Internal for in-process operations.

What alert thresholds are recommended for error rate and latency?

Trigger a warning when error rate exceeds 1% for 5 minutes and critical above 5% for 2 minutes. For latency, warn when p95 exceeds 1 second and go critical above 3 seconds, with p99 thresholds at 2 and 5 seconds respectively.

Why should a message consumer dashboard not use HTTP metrics for variables?

Subscriber-only services emit no HTTP request series, so label_values queries on HTTP metrics return nothing. Identify a guaranteed processing series from the queue implementation for env and service discovery, and document the provider labels that select destination or subscription.