lindy-observability
/lindy-observability
Wdraża obserwowalność integracji Lindy AI: monitoring, logowanie, tracing i dashboardy operacji Lindy.
- Autor
- HelixDevelopment ↗
- Repozytorium
- agent ↗
- Licencja
- MIT
- Ostatnia zmiana repozytorium
- 14.10.2026
Ocena i bezpieczeństwo
- Pliki w paczce
- 1
- Skrypty
- 0
- Komentarze HTML
- 0
- Adresy URL w SKILL.md
- 3
Brak sygnałów. Repozytorium zmienione 14.10.2026, bez odwołań do wycofanych modeli i API.
MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.
Co robi i kiedy
Wdraża obserwowalność integracji Lindy AI: monitoring, logowanie, tracing i dashboardy operacji Lindy.
Wyzwalacze z opisu
Oryginalny opis (EN)
Implement observability for Lindy AI integrations. Use when setting up monitoring, logging, tracing, or building dashboards for Lindy operations. Trigger with phrases like "lindy monitoring", "lindy observability", "lindy metrics", "lindy logging", "lindy tracing".
Jak działa
- Overview
- Prerequisites
- Instructions
- Output
- Error Handling
- Examples
- Resources
- Next Steps
Podgląd SKILL.md
---
name: lindy-observability
description: |
Implement observability for Lindy AI integrations.
Use when setting up monitoring, logging, tracing,
or building dashboards for Lindy operations.
Trigger with phrases like "lindy monitoring", "lindy observability",
"lindy metrics", "lindy logging", "lindy tracing".
allowed-tools: Read, Write, Edit
version: 1.0.0
license: MIT
author: Jeremy Longshore <jeremy@intentsolutions.io>
---
# Lindy Observability
## Overview
Implement comprehensive observability for Lindy AI integrations.
## Prerequisites
- Production Lindy integration
- Observability stack (Datadog, New Relic, Prometheus, etc.)
- Log aggregation system
## Instructions
### Step 1: Structured Logging
```typescript
// lib/logger.ts
import pino from 'pino';
export const logger = pino({
level: process.env.LOG_LEVEL || 'info',
formatters: {
level: (label) => ({ level: label }),
},
base: {
service: 'lindy-integration',
environment: process.env.NODE_ENV,
},
});
// Lindy-specific logger
export function lindyLogger(operation: string) {
return logger.child({ component: 'lindy', operation });
}
```
### Step 2: Instrumented Client
```typescript
// lib/instrumented-lindy.ts
import { Lindy } from '@lindy-ai/sdk';
import { lindyLogger } from './logger';
import { metrics } from './metrics';
import { tracer } from './tracer';
export class InstrumentedLindy {
private lindy: Lindy;
constructor() {
this.lindy = new Lindy({ apiKey: process.env.LINDY_API_KEY });
}
async runAgent(agentId: string, input: string) {
const log = lindyLogger('runAgent');
const span = tracer.startSpan('lindy.agent.run');
const startTime = Date.now();
try {
span.setAttributes({
'lindy.agent_id': agentId,
'lindy.input_length': input.length,
});
log.info({ agentId, inputLength: input.length }, 'Starting agent run');
const result = await this.lindy.agents.run(agentId, { input });
const duration = Date.now() - startTime;
// Record metrics
metrics.histogram('lindy.agent.duration', duration, { agentId });
metrics.counter('lindy.agent.success', 1, { agentId });
// Log success
log.info({
agentId,
duration,
outputLength: result.output.length,
}, 'Agent run completed');
span.setAttributes({
'lindy.duration_ms': duration,
'lindy.output_length': result.output.length,
'lindy.status': 'success',
});
return result;
} catch (error: any) {
const duration = Date.now() - startTime;
// Record error metrics
metrics.counter('lindy.agent.error', 1, {
agentId,
errorCode: error.code,
});
// Log error
log.error({
agentId,
duration,
error: error.message,
errorCode: error.code,
}, 'Agent run failed');
span.setAttributes({
'lindy.status': 'error',
'lindy.error': error.message,
});
span.recordException(error);
throw error;
} finally {
span.end();
}
}
}
```
### Step 3: Metrics Collection
```typescript
// lib/metrics.ts
import { Counter, Histogram, Registry } from 'prom-client';
const registry = new Registry();
export const metrics = {
agentDuration: new Histogram({
name: 'lindy_agent_duration_ms',
help: 'Duration of Lindy agent runs in milliseconds',
labelNames: ['agent_id', 'status'],
buckets: [100, 500, 1000, 2000, 5000, 10000, 30000],
registers: [registry],
}),
agentRuns: new Counter({
name: 'lindy_agent_runs_total',
help: 'Total number of Lindy agent runs',
labelNames: ['agent_id', 'status'],
registers: [registry],
}),
apiCalls: new Counter({
name: 'lindy_api_calls_total',
help: 'Total Lindy API calls',
labelNames: ['endpoint', 'status'],
registers: [registry],
}),
// Helper methods
histogram(name: string, value: number, labels: Record<string, string>) {
const metric = registry.getSingleMetric(name) as Histogram;
metric?.observe(labels, value);
},
counter(name: string, value: number, labels: Record<string, string>) {
const metric = registry.getSingleMetric(name) as Counter;
metric?.inc(labels, value);
},
};
// Metrics endpoint
export function getMetrics(): Promise<string> {
return registry.metrics();
}
```
### Step 4: Distributed Tracing
```typescript
// lib/tracer.ts
import { trace, SpanStatusCode } from '@opentelemetry/api';
import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
import { SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
const provider = new NodeTracerProvider();
provider.addSpanProcessor(
new SimpleSpanProcessor(
new OTLPTraceExporter({
url: process.env.OTEL_EXPORTER_OTLP_ENDPOINT,
})
)
);
provider.register();
export const tracer = trace.getTracer('lindy-integration');
```
### Step 5: Dashboard Configuration
```yaml
# grafana/dashboards/lindy.json
{
"title": "Lindy AI Monitoring",
"panels": [
{
"title": "Agent Runs per Minute",
"type": "graph",
"targets": [
{
"expr": "rate(lindy_agent_runs_total[1m])",
"legendFormat": "{{agent_id}}"
}
]
},
{
"title": "P95 Latency",
"type": "stat",
"targets": [
{
"expr": "histogram_quantile(0.95, rate(lindy_agent_duration_ms_bucket[5m]))"
}
]
},
{
"title": "Error Rate",
"type": "graph",
"targets": [
{
"expr": "rate(lindy_agent_runs_total{status='error'}[5m]) / rate(lindy_agent_runs_total[5m])"
}
]
}
]
}
```
## Output
- Structured logging
- Prometheus metrics
- Distributed tracing
- Grafana dashboards
- Alerting rules
## Error Handling
| Issue | Cause | Solution |
|-------|-------|----------|
| Missing traces | OTEL not configured | Set OTEL endpoint |
| Metrics not visible | Wrong labels | Check label names |
| Logs not searchable | Missing context | Add structured fields |
## Examples
### Alert Configuration
```yaml
# alerts/lindy.yml
groups:
- name: lindy
rules:
- alert: LindyHighErrorRate
expr: rate(lindy_agent_runs_total{status="error"}[5m]) > 0.1
for: 5m
labels:
severity: critical
annotations:
summary: "High Lindy error rate"
- alert: LindyHighLatency
expr: histogram_quantile(0.95, rate(lindy_agent_duration_ms_bucket[5m])) > 10000
for: 5m
labels:
severity: warning
annotations:
summary: "Lindy P95 latency above 10s"
```
## Resources
- [OpenTelemetry](https://opentelemetry.io/)
- [Prometheus](https://prometheus.io/)
- [Grafana](https://grafana.com/)
## Next Steps
Proceed to `lindy-incident-runbook` for incident response.
Wersje
| Repozytorium | Wynik | Licencja |
|---|---|---|
| Ta strona · HelixDevelopment/agent | 100 | MIT |
| jeremylongshore/tons-of-skills-marketplace | 100 | MIT |
Migawka bazy z 28.10.2026 · wersja paczki 0230ff1bfa4a (skrót SHA-256 całej paczki)
Pobrania w ostatnich 30 dniach: 0 · ranking
Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.
Podobne skille
- 100gamma-observability
Wdraża obserwowalność integracji Gamma: monitoring, logowanie, tracing i dashboardy użycia API. - 100lindy-ci-integration
Konfiguruje integrację CI/CD Lindy AI z GitHub Actions i testami, w tym automatyczne testy i potoki budowania z testami Lindy. - 100lindy-ci-integration
Konfiguruje potoki CI/CD do testowania integracji agentów Lindy AI, w tym GitHub Actions dla testów odbiorników webhooków i sprawdzanie łączności agentów w CI. - 100apollo-observability
Wdraża monitoring i obserwowalność integracji z Apollo.io: logowanie, metryki, tracing i alerty. - 100audit-observability
Audytuje obserwowalność i alerting: logowanie, metryki, tracing, dashboardy oraz alerty.