Token导航 LogoToken导航

Agent Skill · 前端设计

app-observability(应用程序可观察性)

app-observability 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

app-observability 是前端设计类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为接触敏感数据;许可证信息还不明确,第三方扫描有提醒项,按安装量在前端设计类的 10,216 个 Skill 里排第 7,000。

总安装 432周安装 34GitHub Stars 26下载 280核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:app-observability(应用程序可观察性)
来源仓库:https://github.com/grafana/skills
仓库路径:skills/app-observability
安装命令:
npx skills add https://github.com/grafana/skills --skill app-observability
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/grafana/skills --skill app-observability

这个 Skill 是做什么的

前端设计类 Skill 关注页面结构、视觉规范和组件写法,输出通常是可运行的界面代码。

app-observability 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息。适合在 Codex、Claude、Cursor、Gemini CLI 中围绕仓库状态、代码变更或协作事项进行整理。

通过 npx skills add 命令从指定 GitHub 仓库安装,需结合原始 README 核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。当前功能聚焦于 Grafana Cloud 应用可观测性,涵盖 APM、前端监控和 AI 模型追踪。

来源仓库内路径:skills/app-observability

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/grafana/skills --skill app-observability;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要接触敏感数据,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

app-observability 怎么安装?

在终端执行 npx skills add https://github.com/grafana/skills --skill app-observability。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

app-observability 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

app-observability 需要什么权限?

权限级别是接触敏感数据。该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

app-observability 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

app-observability 用的人多吗?

公开数据是累计安装 432 次,近一周安装 34 次,下载 280 次,GitHub 26 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

app-observability 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。

先想清楚的地方

  • 需要接触敏感数据,装到常用环境前要先评估影响面。
  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理前端设计类任务、又不想每次都手写提示词的人。

不太适合

  • 环境里有大量密钥、凭证,不方便给第三方 Skill 读取的人。
  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

前端设计类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
frontend-design

前端设计 · Codex、Claude

8,823,360126,072只读MIT通过
vercel-composition-patterns

Vercel 组合模式 · Codex、Claude

3,858,81625,893需要联网MIT通过
vercel-react-native-skills

Vercel React native skills 前端 · Codex、Claude

2,468,66425,878只读MIT通过
adapt

adapt 搜索 · Codex、Claude

2,027,04023,125操作浏览器未明确通过
bolder

bolder 分析 · Codex、Claude

2,004,28823,130只读未明确通过
app-observability

应用程序可观察性 · 本页

43226接触敏感数据未明确有提醒

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Grafana Cloud Application Observability Skill

Overview

Grafana Cloud provides three tightly related application monitoring products:

  1. Application Observability (APM) - RED metrics from OTel traces, service inventory, service maps
  2. Frontend Observability - RUM/Faro SDK for browser apps, session replay, web vitals
  3. AI Observability - LLM/model monitoring via OpenLIT + OTel, token/cost/latency metrics

All three integrate with Grafana Tempo (traces), Loki (logs), and Pyroscope (profiles) for full-stack correlation.


Application Observability (APM)

What It Is

Application Observability is a pre-built APM experience in Grafana Cloud built on top of OpenTelemetry. It generates RED (Rate, Error, Duration) metrics from distributed traces via span metrics, then surfaces them in:

  • Service Inventory - table of all services with RED metrics at a glance
  • Service Overview - per-service RED metrics, top operations, error breakdown
  • Service Map - node graph of service dependencies with flow visualization
  • Operations view - per-endpoint RED metrics with p50/p95/p99 latency

How Metrics Are Generated

Application Observability does NOT rely on traditional Prometheus scraping. Metrics come from span metrics - aggregations computed from OTel trace data:

  • Source: OTel traces sent to Grafana Tempo or Grafana Alloy
  • Generation method: Tempo's metrics-generator OR the spanmetrics connector in Alloy/OTel Collector
  • Result: Prometheus-compatible metrics stored in Grafana Mimir

Key generated metric names:

  • Via Tempo metrics-generator: traces_spanmetrics_calls_total, traces_spanmetrics_duration_seconds
  • Via OTel Collector spanmetrics connector: traces_span_metrics_calls_total, traces_span_metrics_duration_seconds

Required OTel Resource Attributes

These attributes MUST be present on all spans for Application Observability to work:

AttributeGrafana LabelPurpose
service.nameservice_name / part of jobIdentifies the service
service.namespacepart of job labelGroups services; job = namespace/service.name
deployment.environmentdeployment_environmentEnv filter (prod/dev/staging)

The job label is constructed as:

  • service.namespace/service.name when namespace is set
  • service.name alone when no namespace

Additional recommended attributes:

  • service.version - shown in service overview
  • k8s.cluster.name - for K8s environments
  • k8s.namespace.name - Kubernetes namespace
  • cloud.region - for multi-region setups

Setting Environment Variables for OTel SDK

export OTEL_SERVICE_NAME="my-api"
export OTEL_RESOURCE_ATTRIBUTES="service.namespace=myteam,deployment.environment=production,service.version=1.2.3"
export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4317"
export OTEL_EXPORTER_OTLP_PROTOCOL="grpc"

Grafana Alloy Configuration (River syntax)

Alloy acts as a local OTel Collector and forwards data to Grafana Cloud:

// Receive traces, metrics, logs from instrumented apps
otelcol.receiver.otlp "default" {
  grpc {
    endpoint = "0.0.0.0:4317"
  }
  http {
    endpoint = "0.0.0.0:4318"
  }
  output {
    metrics = [otelcol.processor.resourcedetection.default.input]
    logs    = [otelcol.processor.resourcedetection.default.input]
    traces  = [otelcol.processor.resourcedetection.default.input]
  }
}

// Auto-detect host/cloud metadata
otelcol.processor.resourcedetection "default" {
  detectors = ["env", "system", "gcp", "aws", "azure"]
  output {
    metrics = [otelcol.processor.batch.default.input]
    logs    = [otelcol.processor.batch.default.input]
    traces  = [otelcol.processor.batch.default.input]
  }
}

// Batch for efficiency
otelcol.processor.batch "default" {
  output {
    metrics = [otelcol.exporter.otlphttp.grafana_cloud.input]
    logs    = [otelcol.exporter.otlphttp.grafana_cloud.input]
    traces  = [otelcol.exporter.otlphttp.grafana_cloud.input]
  }
}

// Auth
otelcol.auth.basic "grafana_cloud" {
  username = env("GRAFANA_CLOUD_INSTANCE_ID")
  password = env("GRAFANA_CLOUD_API_KEY")
}

// Export to Grafana Cloud OTLP endpoint
otelcol.exporter.otlphttp "grafana_cloud" {
  client {
    endpoint = env("GRAFANA_CLOUD_OTLP_ENDPOINT")
    auth     = otelcol.auth.basic.grafana_cloud.handler
  }
}

Required environment variables for Alloy:

GRAFANA_CLOUD_OTLP_ENDPOINT=https://otlp-gateway-<region>.grafana.net/otlp
GRAFANA_CLOUD_INSTANCE_ID=<your-instance-id>
GRAFANA_CLOUD_API_KEY=<your-api-key>

Service Map

The Service Map uses Tempo's metrics-generator to produce service graph metrics:

  • Node graph shows services as nodes, HTTP/gRPC calls as edges
  • Edge thickness indicates request rate; color indicates error rate
  • Clicking a node navigates to Service Overview
  • Requires span.kind (CLIENT/SERVER) on spans for directional edges

Enable in Tempo (managed by Grafana Cloud automatically):

  • service-graphs metrics generator enabled by default in Grafana Cloud Tempo
  • Uses traces_service_graph_request_total, traces_service_graph_request_failed_total metrics

Integration with Traces, Logs, Profiles

Application Observability provides one-click correlation:

  • Traces: Click any metric spike to open exemplar traces in Grafana Tempo
  • Logs: Service logs shown in Service Overview; correlated via service.name label
  • Profiles: "Go to profiles" button in Service Overview when Pyroscope is configured
  • Frontend: Link from Application Observability to Frontend Observability for the same service

Frontend Observability (Faro)

What It Is

Grafana Faro is an open-source JavaScript/TypeScript SDK for Real User Monitoring (RUM). It instruments browser applications to capture:

  • Web vitals: Core Web Vitals (LCP, CLS, INP) and additional performance metrics
  • Errors: Unhandled exceptions, rejected promises with stack traces
  • Sessions: User journeys, page views, navigation timing
  • Logs: Custom log messages from frontend code
  • Traces: Distributed traces via OpenTelemetry-JS (correlates with backend spans)
  • Session replay: Rrweb-based DOM recording for reproducing user issues

Data flows: Faro SDK -> Grafana Alloy (faro receiver) OR Grafana Cloud OTLP endpoint -> Loki (logs) + Tempo (traces) + Mimir (metrics)

Faro SDK Packages

@grafana/faro-core          # Core SDK - signals, transports, API
@grafana/faro-web-sdk       # Web instrumentations + transports
@grafana/faro-web-tracing   # OpenTelemetry-JS distributed tracing
@grafana/faro-react         # React-specific integrations (error boundary, router)

Basic JavaScript Setup (npm)

npm install @grafana/faro-web-sdk
# or
yarn add @grafana/faro-web-sdk
import {
  initializeFaro,
  getWebInstrumentations,
} from '@grafana/faro-web-sdk';

const faro = initializeFaro({
  url: 'https://faro-collector-prod-<region>.grafana.net/collect/<app-key>',
  app: {
    name: 'my-frontend-app',
    version: '1.0.0',
    environment: 'production',
  },
  instrumentations: [
    ...getWebInstrumentations({
      captureConsole: true,
    }),
  ],
});

// Manual API usage
faro.api.pushLog(['User clicked checkout button']);
faro.api.pushError(new Error('Payment failed'));
faro.api.pushEvent('button_click', { button: 'checkout' });

CDN Setup (no bundler)

<script src="https://unpkg.com/@grafana/faro-web-sdk@latest/dist/library/faro-web-sdk.iife.js"></script>
<script>
  const { initializeFaro, getWebInstrumentations } = GrafanaFaroWebSdk;

  initializeFaro({
    url: 'https://faro-collector-prod-<region>.grafana.net/collect/<app-key>',
    app: { name: 'my-app', version: '1.0.0' },
    instrumentations: [...getWebInstrumentations()],
  });
</script>

React Setup with Tracing

npm install @grafana/faro-react @grafana/faro-web-tracing
import { initializeFaro, getWebInstrumentations } from '@grafana/faro-web-sdk';
import { TracingInstrumentation } from '@grafana/faro-web-tracing';
import {
  createReactRouterV6DataOptions,
  ReactIntegration,
  withFaroRouterInstrumentation,
} from '@grafana/faro-react';
import { createBrowserRouter, RouterProvider } from 'react-router-dom';

const faro = initializeFaro({
  url: 'https://faro-collector-prod-<region>.grafana.net/collect/<app-key>',
  app: {
    name: 'my-react-app',
    version: '1.0.0',
    environment: 'production',
  },
  instrumentations: [
    ...getWebInstrumentations({ captureConsole: true }),
    new TracingInstrumentation(),
    new ReactIntegration({
      router: createReactRouterV6DataOptions({}),
    }),
  ],
});

const router = withFaroRouterInstrumentation(
  createBrowserRouter([
    { path: '/', element: <Home /> },
    { path: '/about', element: <About /> },
  ])
);

function App() {
  return <RouterProvider router={router} />;
}

Session Configuration

initializeFaro({
  url: '...',
  app: { name: 'my-app' },
  sessionTracking: {
    enabled: true,
    persistent: true,
    maxSessionPersistenceTime: 4 * 60 * 60 * 1000, // 4 hours in ms
    samplingRate: 1,           // 1 = 100%, 0.5 = 50% of sessions
    onSessionChange: (oldSession, newSession) => {
      console.log('Session changed', newSession.id);
    },
  },
  instrumentations: [...getWebInstrumentations()],
});

Getting the Collector URL

  1. In Grafana Cloud, go to Connections (left menu) > search "Frontend Observability"
  2. Click the Frontend Observability card
  3. Navigate to Web SDK Configuration tab
  4. Copy the url value - this is your unique collector endpoint
  5. Paste into your initializeFaro({url: '...'}) call

What Faro Captures Automatically

When using getWebInstrumentations():

  • Page views and navigation timing
  • Core Web Vitals (LCP, CLS, INP - replaces FID in Faro v2)
  • JavaScript errors and unhandled rejections
  • Console errors/warnings (when captureConsole: true)
  • Resource loading performance
  • User interactions (clicks, form events)
  • Fetch/XHR request timing

Correlation with Backend Traces

When TracingInstrumentation is included, Faro:

  • Injects traceparent / tracestate headers into outgoing fetch/XHR requests
  • Creates spans for each HTTP call
  • Links browser session to backend traces in Tempo
  • Enables "Frontend to Backend" trace waterfall in Grafana

AI Observability

What It Is

AI Observability monitors generative AI and LLM applications in production. Built on OTel GenAI semantic conventions and the OpenLIT instrumentation library.

Monitors:

  • LLM API calls (OpenAI, Anthropic, Cohere, Google, etc.)
  • Vector databases (Pinecone, Weaviate, Chroma, etc.)
  • AI frameworks (LangChain, CrewAI, LlamaIndex)
  • Model Context Protocol (MCP) servers
  • GPU utilization
  • AI evaluation quality (hallucination, toxicity, bias)

Key Metrics (OTel GenAI Semantic Conventions)

MetricDescription
gen_ai_usage_input_tokens_totalTotal input/prompt tokens consumed
gen_ai_usage_output_tokens_totalTotal output/completion tokens consumed
gen_ai_usage_cost_USD_sumTotal cost in USD
gen_ai_client_operation_durationLatency per LLM call (histogram)
gen_ai_client_token_usageToken usage histogram

Trace spans capture:

  • Model name (gen_ai.request.model)
  • Temperature, top_p parameters
  • Full prompts and completions (configurable)
  • Provider (gen_ai.system: openai, anthropic, etc.)
  • Time to first token (TTFT)

Python Setup with OpenLIT

pip install openlit openai anthropic cohere
import openlit
import openai

# One-line initialization - auto-instruments all supported LLM libraries
openlit.init()

# Optional parameters
openlit.init(
    application_name="my-ai-app",
    environment="production",
)

# Your existing code works unchanged - OpenLIT intercepts all LLM calls
client = openai.OpenAI()
response = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "Hello!"}]
)

OTel Environment Variables

export OTEL_SERVICE_NAME="my-ai-app"
export OTEL_DEPLOYMENT_ENVIRONMENT="production"
export OTEL_EXPORTER_OTLP_ENDPOINT="https://otlp-gateway-<region>.grafana.net/otlp"
# Base64 encode "instanceID:apiToken"
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Basic <base64-encoded-instanceid:apitoken>"

To get the credentials:

  1. In Grafana Cloud, go to My Account > Stack > OpenTelemetry
  2. Generate a token and copy the OTLP endpoint

AI Evaluations and Guards

# Hallucination detection
evals = openlit.evals.Hallucination(
    provider="openai",
    api_key=os.getenv("OPENAI_API_KEY")
)
result = evals.measure(
    prompt=user_message,
    contexts=["Your knowledge base content here"],
    text=llm_answer
)

# Content safety guard
guard = openlit.guard.All(
    provider="openai",
    api_key=os.getenv("OPENAI_API_KEY")
)
guard.detect(text=user_message)

Prebuilt Dashboards

Once metrics arrive, Grafana Cloud auto-populates five dashboards:

  1. GenAI Observability - request rates, latency percentiles, costs
  2. GenAI Evaluations - hallucination, bias, toxicity scores
  3. Vector Database Observability - query latency, index ops
  4. MCP Observability - tool call rates, errors
  5. GPU Monitoring - utilization, memory, temperature

Setup Path

  1. In Grafana Cloud: Connections > search "AI Observability" > click the card
  2. Follow the UI wizard to get your OTLP endpoint and API key
  3. Set the environment variables
  4. pip install openlit and call openlit.init() at app startup
  5. Deploy - dashboards populate automatically within minutes

Full-Stack Correlation Summary

SignalProductStorageQuery Language
Metrics (RED)App ObservabilityMimirPromQL
TracesTempoTempoTraceQL
LogsLokiLokiLogQL
ProfilesPyroscopePyroscope-
Browser RUMFaro/Frontend ObsLoki + Tempo-
LLM metricsAI ObservabilityMimirPromQL

Correlation keys:

  • service.name / service_name links all signals for a service
  • Trace exemplars embed trace IDs in metric data points (RED metrics -> traces)
  • traceID in logs enables log-to-trace correlation
  • profileID / time range enables trace-to-profile correlation
  • Faro injects traceparent headers to link browser sessions to backend traces

Common Tasks

Find Why a Service Has High Latency

  1. App Observability > Service Inventory > click service
  2. In Service Overview: check p95/p99 latency trend in Operations panel
  3. Click a high-latency operation > "View traces" to open exemplar traces in Tempo
  4. In Tempo trace: use "Go to profiles" to see CPU profile at that time
  5. Check correlated logs in the Logs panel of Service Overview

Debug a Frontend Error

  1. Frontend Observability > Errors panel > click error
  2. View stack trace, browser, OS, session info
  3. Click "View session replay" to see what the user did
  4. Check correlated backend trace if TracingInstrumentation is configured

Monitor LLM Cost Drift

  1. AI Observability dashboard > GenAI Observability
  2. Use gen_ai_usage_cost_USD_sum metric to see cost by model/provider
  3. Set alert on cost threshold or token usage spike
  4. Drill into traces to see which prompts are consuming the most tokens

References

平台分布

Codex

37.7%
按下载量换算106

Claude

28.29%
按下载量换算79

Cursor

16.45%
按下载量换算46

Gemini CLI

8.4%
按下载量换算24

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

接触敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills