Skip to content

日志监控 ​

日志监控是运维工作的核心,通过收集和分析应用日志,可以快速定位系统问题,分析业务趋势,提升系统可靠性。

📋 日志监控体系 ​

🎯 ELK Stack ​

1. ELK Stack 架构 ​

ELK Stack是最流行的日志监控解决方案,包含Elasticsearch、Logstash、Kibana三个核心组件。

架构图:

2. Elasticsearch ​

特点:

  • 分布式搜索:分布式搜索引擎
  • 全文检索:强大的全文检索能力
  • 实时分析:实时数据分析
  • 水平扩展:支持水平扩展

配置示例:

yaml
# elasticsearch.yml
cluster.name: logs-cluster
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["node-1", "node-2", "node-3"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]

3. Logstash ​

功能:

  • 日志收集:从各种来源收集日志
  • 日志处理:过滤、转换日志
  • 日志输出:输出到Elasticsearch

配置示例:

ruby
# logstash.conf
input {
  beats {
    port => 5044
  }
}

filter {
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{GREEDYDATA:message}" }
  }
  
  date {
    match => [ "timestamp", "yyyy-MM-dd HH:mm:ss" ]
  }
}

output {
  elasticsearch {
    hosts => ["http://elasticsearch:9200"]
    index => "logs-%{+YYYY.MM.dd}"
  }
}

4. Filebeat ​

特点:

  • 轻量级:资源占用少
  • 高效收集:高效收集日志
  • 自动发现:自动发现日志文件

配置示例:

yaml
# filebeat.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/app/*.log
  fields:
    app: user-service
    env: production

output.logstash:
  hosts: ["logstash:5044"]

5. Kibana ​

功能:

  • 日志查询:搜索和查询日志
  • 可视化:创建图表和仪表板
  • 告警:设置告警规则
  • 分析:日志分析和统计

Kibana查询示例:

json
{
  "query": {
    "bool": {
      "must": [
        { "match": { "level": "ERROR" } },
        { "range": { "@timestamp": { "gte": "now-1h" } } }
      ]
    }
  }
}

🎯 其他日志监控方案 ​

1. EFK Stack ​

架构:

  • Elasticsearch:日志存储
  • Fluentd:日志收集(替代Logstash)
  • Kibana:日志可视化

Fluentd配置示例:

xml
<source>
  @type tail
  path /var/log/app/*.log
  pos_file /var/log/fluentd/pos/app.log.pos
  tag app.logs
  format json
</source>

<match app.logs>
  @type elasticsearch
  host elasticsearch
  port 9200
  index_name logs
  type_name _doc
</match>

2. Loki + Grafana ​

架构:

  • Loki:轻量级日志聚合系统
  • Grafana:日志可视化(复用Grafana)

特点:

  • 轻量级:比ELK Stack更轻量
  • Grafana集成:与Grafana深度集成
  • Prometheus集成:与Prometheus集成

配置示例:

yaml
# loki-config.yml
server:
  http_listen_port: 3100

schema_config:
  configs:
    - from: 2024-01-01
      store: boltdb
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h

storage_config:
  boltdb:
    directory: /loki/index
  filesystem:
    directory: /loki/chunks

3. ClickHouse ​

特点:

  • 列式存储:高效的列式存储
  • 查询性能:查询性能极好
  • 压缩比:高压缩比

适用场景:

  • 大规模日志存储
  • 日志分析
  • 时序数据

📋 日志收集最佳实践 ​

1. 日志格式规范 ​

结构化日志:

json
{
  "timestamp": "2024-01-01T10:00:00Z",
  "level": "INFO",
  "service": "user-service",
  "traceId": "abc123",
  "message": "User login successful",
  "userId": "12345",
  "ip": "192.168.1.100"
}

日志字段:

  • timestamp:时间戳
  • level:日志级别
  • service:服务名
  • traceId:链路追踪ID
  • message:日志消息
  • context:上下文信息

2. 日志级别使用 ​

日志级别:

  • DEBUG:调试信息
  • INFO:一般信息
  • WARN:警告信息
  • ERROR:错误信息
  • FATAL:致命错误

使用建议:

  • DEBUG:开发环境使用
  • INFO:关键业务流程
  • WARN:潜在问题
  • ERROR:错误和异常
  • FATAL:系统级错误

3. 日志存储策略 ​

存储策略:

  • 热数据:最近7天的日志(SSD)
  • 温数据:7-30天的日志(普通存储)
  • 冷数据:30天以上的日志(对象存储)

索引策略:

  • 按日期索引:logs-2024-01-01
  • 按服务索引:user-service-logs
  • 按环境索引:production-logs

📋 日志分析场景 ​

1. 错误日志分析 ​

分析内容:

  • 错误频率统计
  • 错误类型分布
  • 错误时间趋势
  • 错误影响范围

2. 性能日志分析 ​

分析内容:

  • 接口响应时间
  • 慢查询分析
  • 系统资源使用
  • 性能趋势分析

3. 业务日志分析 ​

分析内容:

  • 用户行为分析
  • 业务流程分析
  • 业务指标统计
  • 异常行为检测

📋 日志告警 ​

1. 告警规则 ​

告警规则示例:

yaml
# 错误日志告警
- alert: HighErrorRate
  expr: rate(logs{level="ERROR"}[5m]) > 10
  for: 5m
  annotations:
    summary: "错误日志频率过高"
    description: "错误日志频率持续5分钟超过10次/秒"

# 慢接口告警
- alert: SlowAPI
  expr: histogram_quantile(0.95, rate(api_duration_seconds_bucket[5m])) > 1
  for: 5m
  annotations:
    summary: "接口响应时间过长"
    description: "95%接口响应时间超过1秒"

2. 告警通知 ​

通知渠道:

  • 邮件:错误汇总邮件
  • 短信:紧急告警短信
  • 钉钉/企业微信:实时告警通知
  • 电话:严重告警电话

📖 学习资源 ​

视频教程 ​

书籍推荐 ​

  • 《Elasticsearch权威指南》 - Elasticsearch使用指南
  • 《ELK Stack实战》 - ELK Stack最佳实践
  • 《日志管理与分析》 - 日志管理方法论
  • 《实时日志分析》 - 实时日志分析技术

网站资源 ​

工具推荐 ​

  • 日志收集:Filebeat、Logstash、Fluentd、Fluent Bit
  • 日志存储:Elasticsearch、ClickHouse、Loki
  • 日志可视化:Kibana、Grafana
  • 日志分析:Elasticsearch、Splunk

✅ 日志监控检查清单 ​

  • [ ] 日志格式已规范
  • [ ] 日志级别使用正确
  • [ ] 日志收集已配置
  • [ ] 日志存储已建立
  • [ ] 日志分析已配置
  • [ ] 日志告警已设置
  • [ ] 日志存储策略已制定
  • [ ] 日志备份机制已建立

上一章节:系统监控
下一章节:告警机制
返回目录:工程架构能力