计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
btp-cloud-logging【效率与协作】SAP BTP Cloud Logging — OpenSearch-based centralized logging with structured logs, correlation IDs, Kibana dashboards, and retention management.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Centralized observability on SAP BTP powered by OpenSearch + Kibana dashboards.
cf create-service cloud-logging standard my-logging
cf bind-service my-app my-logging
cf restage my-app
Verify the binding appears in VCAP_SERVICES:
cf env my-app | grep -A 20 cloud-logging
const cds = require('@sap/cds')
const LOG = cds.log('procurement')
LOG.info('Order created', { orderId: 'ORD123', userId: 'USER1', duration: 245 })
LOG.error('BAPI call failed', new Error('Connection timeout'))
Log entries appear in OpenSearch with fields: correlation_id, component, level, message, custom_fields.
const { trace } = require('@opentelemetry/api')
const tracer = trace.getTracer('procurement-service')
async function processOrder(orderId) {
const span = tracer.startSpan('processOrder')
span.setAttribute('order.id', orderId)
try {
await callBapi(orderId)
span.setStatus({ code: trace.SpanStatusCode.OK })
} catch (e) {
span.setStatus({ code: trace.SpanStatusCode.ERROR, message: e.message })
span.recordException(e)
} finally {
span.end()
}
}
import logging
from sap_cloud_logging import CloudLoggingHandler
logger = logging.getLogger('my-btp-app')
handler = CloudLoggingHandler(
component='procurement',
correlation_id=request.headers.get('X-Correlation-ID')
)
logger.addHandler(handler)
logger.info('Processing batch', extra={'batch_size': 1000})
# Errors for a specific order
component:"procurement" AND level:"error" AND custom_fields.orderId:"ORD123"
# Slow requests over 5 seconds
response_time:>5000
# All activity by user in last 24h
custom_fields.userId:"USER1" AND @timestamp:>now-24h
Logs not appearing immediately
Free tier logs silently dropped
Correlation ID missing across services
X-Correlation-ID header is not propagated between service calls.Inconsistent component names
procurement, fulfillment) across all instances.Logs are immutable
# Confirm service instance is created
cf services | grep my-logging
# Confirm binding exists
cf services | grep my-app
# Check app logs are flowing (from app side)
cf logs my-app --recent | grep "procurement"
# Open Kibana dashboard from BTP Cockpit:
# Subaccount → Instances → my-logging → Open Dashboard
# Run: component:"procurement" AND level:"info"