技能 编程开发 Grammarly API可观测性监控

Grammarly API可观测性监控

v20260423
grammarly-observability
本技能用于为Grammarly API集成实现全面的可观测性监控系统。它跟踪关键性能指标,包括文本检查延迟、API错误率、建议接受率和令牌消耗。通过设置指标和告警规则,可以实时发现服务性能的退化,从而确保用户在写作和编辑流程中获得稳定、高质量的体验。
获取技能
430 次下载
概览

Grammarly Observability

Overview

Grammarly API integrations process user text through scoring, AI rewriting, and plagiarism endpoints where latency and accuracy directly affect user experience. Monitor text check response times, suggestion quality signals, API error rates, and token consumption to stay within rate limits. Catching degradation early prevents users from seeing stale suggestions or silent failures in real-time editing flows.

Key Metrics

Metric Type Target Alert Threshold
Text check latency p95 Histogram < 300ms > 800ms
API error rate Gauge < 1% > 5%
Suggestion acceptance rate Gauge > 40% < 20% (quality signal)
Token usage (daily) Counter < 80% quota > 90% quota
Plagiarism check latency Histogram < 2s > 5s
AI rewrite throughput Counter Stable Drop > 30%

Instrumentation

async function trackGrammarlyCall(api: 'score' | 'ai' | 'plagiarism', textLen: number, fn: () => Promise<any>) {
  const start = Date.now();
  try {
    const result = await fn();
    metrics.histogram('grammarly.api.latency', Date.now() - start, { api });
    metrics.increment('grammarly.api.calls', { api });
    metrics.gauge('grammarly.text.length', textLen, { api });
    return result;
  } catch (err) {
    metrics.increment('grammarly.api.errors', { api, status: err.status });
    throw err;
  }
}

Health Check Dashboard

async function grammarlyHealth(): Promise<Record<string, string>> {
  const latencyP95 = await metrics.query('grammarly.api.latency', 'p95', '5m');
  const errorRate = await metrics.query('grammarly.api.error_rate', 'avg', '5m');
  const quotaUsed = await grammarlyAdmin.getQuotaUsage();
  return {
    api_latency: latencyP95 < 300 ? 'healthy' : 'slow',
    error_rate: errorRate < 0.01 ? 'healthy' : 'degraded',
    quota: quotaUsed < 0.8 ? 'healthy' : 'at_risk',
  };
}

Alerting Rules

const alerts = [
  { metric: 'grammarly.api.latency_p95', condition: '> 800ms', window: '10m', severity: 'warning' },
  { metric: 'grammarly.api.error_rate', condition: '> 0.05', window: '5m', severity: 'critical' },
  { metric: 'grammarly.quota.daily_pct', condition: '> 0.90', window: '1h', severity: 'warning' },
  { metric: 'grammarly.ai.throughput', condition: 'drop > 30%', window: '15m', severity: 'critical' },
];

Structured Logging

function logGrammarlyEvent(api: string, data: Record<string, any>) {
  console.log(JSON.stringify({
    service: 'grammarly', api,
    duration_ms: data.latency, status: data.status,
    text_length: data.textLen, suggestion_count: data.suggestions,
    // Never log user text content — only metadata
    timestamp: new Date().toISOString(),
  }));
}

Error Handling

Signal Meaning Action
429 rate limit Token quota exhausted Back off, check daily usage, request limit increase
Latency spike on /score Grammarly service degradation Check status page, enable local cache fallback
Suggestion count drops to 0 API schema change or auth failure Verify API key, check response format
Plagiarism timeout > 5s Large document or service overload Chunk text, retry with exponential backoff

Resources

Next Steps

See grammarly-incident-runbook.

信息
Category 编程开发
Name grammarly-observability
版本 v20260423
大小 3.92KB
更新时间 2026-04-28
语言