夜莺监控(Nightingale)是一款开源的分布式监控系统,特别擅长从日志数据中提取关键指标。作为IT工程师,我将详细介绍夜莺监控在日志指标提取方面的强大功能和应用方法。
日志解析能力:
指标转换:
灵活的过滤机制:
# 示例日志格式
127.0.0.1 - - [10/Oct/2023:13:55:36 +0800] "GET /api/v1/user HTTP/1.1" 200 1234
# 提取规则示例
regex: ^(?P<ip>\S+) \S+ \S+ \[(?P<time>[^\]]+)\] "(?P<method>\S+) (?P<path>\S+) HTTP/\d\.\d" (?P<status>\d+) (?P<bytes>\d+)$
metrics:
- name: http_request_count
labels:
method: $method
path: $path
status: $status
value: 1
- name: http_response_bytes
value: $bytes
# 提取ERROR级别的日志并分类统计
filter: level=ERROR
metrics:
- name: error_log_count
labels:
service: $service_name
module: $module
value: 1
# 从业务日志中提取交易金额
regex: "order created, id: (?P<order_id>\d+), amount: (?P<amount>\d+)"
metrics:
- name: order_amount
value: $amount
# 使用Docker快速部署
docker run -d -p 1234:1234 --name nightingale n9e/nightingale
# 示例配置文件 log_collector.yaml
sources:
- type: file
paths:
- /var/log/nginx/access.log
parser:
type: regex
pattern: '^...$' # 你的日志正则
metrics:
- name: http_requests
labels:
method: $method
status: $status
value: 1
-- 示例:5分钟内错误日志超过10条触发告警
SELECT count(error_log_count) FROM metrics
WHERE service = 'payment'
GROUP BY time(5m)
HAVING count > 10
日志规范化:
指标设计原则:
性能优化:
Q1: 日志量太大导致采集延迟? - 解决方案:增加采集器节点,或调整采集频率
Q2: 正则表达式匹配失败? - 解决方案:使用夜莺内置的日志调试工具测试正则表达式
Q3: 提取的指标数值异常? - 解决方案:检查日志格式是否一致,数值字段是否存在非数字字符
夜莺监控的日志指标提取功能犹如瑞士军刀般灵活强大,通过合理配置可以满足绝大多数监控场景需求,是构建可观测性系统的重要组件。