监控、日志记录与告警
在 DevOps 的上下文中,监控 (monitoring) 和日志记录 (logging) 之间有什么区别?
回答:
监控侧重于实时系统健康状况和性能指标,以主动检测问题。日志记录涉及随时间推移记录事件和数据,用于事后分析、调试和审计。监控告诉你“现在发生了什么”,而日志记录告诉你“发生了什么”。
解释“可观测性三大支柱” (three pillars of observability) 的概念。
回答:
可观测性的三大支柱是日志 (Logs)、指标 (Metrics) 和追踪 (Traces)。日志提供离散的事件记录,指标提供随时间聚合的数值数据,而追踪则显示请求在分布式系统中的端到端流。它们共同提供了系统行为的全面视图。
列举一些在云原生环境中用于监控和日志记录的流行工具。
回答:
对于监控,流行的工具有 Prometheus、Grafana、Datadog 和 New Relic。对于日志记录,常见的选择是 ELK Stack (Elasticsearch, Logstash, Kibana)、Splunk、Loki 和 Sumo Logic。云提供商也提供其原生服务,如 AWS CloudWatch 或 Azure Monitor。
你通常如何为关键系统问题设置告警?
回答:
告警通常通过定义关键指标的阈值来设置(例如,CPU 利用率 > 80%,错误率 > 5%)。当达到阈值时,会触发告警,并通过 PagerDuty、Slack、电子邮件或 SMS 等渠道发送给值班人员。应通过设置有意义的阈值来避免告警疲劳。
在告警系统中,“运行手册” (runbook) 的目的是什么?
回答:
运行手册是一份详细指南,概述了诊断和解决特定告警或事件的步骤。它为工程师提供了预定义的程序、命令和上下文,以便快速解决问题,从而缩短平均解决时间 (MTTR) 并确保响应的一致性。
描述 SLOs 和 SLIs 在监控中的重要性。
回答:
服务水平指标 (Service Level Indicators, SLIs) 是服务性能某些方面的量化度量,例如延迟或错误率。服务水平目标 (Service Level Objectives, SLOs) 是这些 SLI 的目标值,定义了期望的服务可靠性水平。它们有助于定义“好”的标准,并指导监控和告警策略。
如何有效地监控微服务架构?
回答:
监控微服务需要分布式追踪来跟踪跨服务的请求,需要聚合日志进行集中分析,以及需要每个组件的服务特定指标。像 Jaeger/Zipkin 用于追踪,Prometheus 用于指标,以及集中的日志解决方案,对于深入了解复杂的交互至关重要。
什么是日志聚合 (log aggregation),为什么它很重要?
回答:
日志聚合是将来自各种来源(应用程序、服务器、网络设备)的日志收集到中央位置的过程。它对于高效搜索、分析、跨系统事件关联以及长期存储很重要,可以使调试和审计变得更加简单。
解释“告警疲劳” (alert fatigue) 的概念以及如何缓解它。
回答:
当工程师收到过多非关键或冗余告警时,就会发生告警疲劳,导致他们忽略重要的告警。缓解策略包括设置可操作且有意义的阈值、使用升级策略、对相关告警进行分组以及实施告警去重和抑制。
仪表板 (dashboards) 在监控系统中的作用是什么?
回答:
仪表板提供关键指标和日志的视觉表示,提供系统健康状况和性能的快速概览。它们有助于识别趋势、发现异常并向不同利益相关者传达运营状态,从而实现更快的决策和故障排除。