邏輯集中
1)為什麼集中博客
集中式日誌是可觀察性,審計和合規性的基礎。他們是:- 加快搜索事件的根源(請求id/trace-id);
- 允許在癥狀(錯誤,異常)上構建信號差;
- 提供審核跟蹤(誰/何時/何時);
- 通過統一保留和保留降低成本。
2)基本原則
1.僅結構化邏輯(JSON/RFC5424)-沒有「免費文本」而沒有密鑰。
2.單個密鑰方案是:'ts,level,service,env,region,tenant,trace_id,span_id,request_id,user_id(蒙面),msg,kv……'。
3.默認相關性:將trace_id從網關滾動到後端和日誌。
4.噪音最小:正確的級別、采樣、重復數據消除。
5.設計安全:PII掩蔽,RBAC/ABAC,不可變性。
6.經濟學:hot/warm/cold,壓縮,聚合,TTL和rehydration。
3)典型體系結構
EFK/ELK: (Fluent Bit/Fluentd/Filebeat) → (Kafka — опц.)→ (Elasticsearch/OpenSearch) → (Kibana/OpenSearch Dashboards).通用搜索和聚合。
類似Loki(標簽上的日誌索引):Promtail/Fluent Bit → Loki → Grafana。大體積便宜,功能強大的標簽過濾器+線性查看。
雲:CloudWatch/Cloud Logging/Log Analytics+導出到冷庫(S3/GCS/ADLS)和/或SIEM。
數據湖方法:最近的N天的尖峰→對象存儲(parquet/iceberg)→廉價的分析查詢(Athena/BigQuery/Spark)+在線層(OpenSearch/Loki)。
建議:prod-Oncoll在湖中保持在線層(7-14天的熱量)和存檔(月份/年份),並可以選擇重新分類。
4)邏輯圖和格式(建議)
最小JSON格式:json
{
"ts":"2025-11-01T13:45:12.345Z",
"level":"ERROR",
"service":"payments-api",
"env":"prod",
"region":"eu-central",
"tenant":"tr",
"trace_id":"0af7651916cd43dd8448eb211c80319c",
"span_id":"b7ad6b7169203331",
"request_id":"r-7f2c",
"user_id":"", // masked
"route":"/v1/payments/charge",
"code":"PSP_TIMEOUT",
"latency_ms":1200,
"msg":"upstream PSP timeout",
"kv":{"provider":"psp-a","attempt":2,"timeout_ms":800}
}
標準:時間RFC3339,來自「TRACE/DEBUG/INFO/WARN/ERROR/FATAL」套件的級別,snake_case鍵。
5)拼寫和采樣水平
DEBUG-僅在dev/stage中;在國旗上和TTL上。
INFO是查詢/事件的生命周期。
WARN-不影響SLO的可疑情況。
ERROR/FATAL-對請求/用戶的影響。
- 重復錯誤的rate-limit(例如1/sec/key)。
- 尾部采樣軌道(僅為「不良」請求保留完整的標記/軌跡)。
- 動態:在錯誤風暴中,減少細節,保留摘要。
6)交付標記(代理和推銷員)
在節點上:Fluent Bit/Filebeat/Promtail 收集文件/jurnal,進行解析、掩蔽和緩沖。
網絡隊列:Kafka/NATS,用於平滑峰值,中繼和排序。
可靠性:backpressure,磁盤緩沖區,交付確認(at-least-once),等值索引(密鑰哈希)。
邊緣過濾:在上線之前放棄「聊天」和秘密。
7)索引和存儲
按時間分組(每日/每周)+通過「env/region/tenant」(通過模板索引或標簽)。
存儲層:- Hot (SSD, 3-14天):快速搜索和Alertes。
- Warm(HDD/冰櫃,30-90天):有時會尋找。
- 冷庫(對象,月份/年份):合規性和罕見的調查。
- 壓縮和旋轉:ILM/ISM(生命周期策略)、gzip/zstd、downsampling(聚合表)。
- 改造:臨時將存檔批次裝載到「熱」集群中進行調查。
8)搜索和分析: 典型查詢
事件:時間過濾器× 'service=.'× 'level>=ERROR' × 'trace_id'/'request_id'。
提供者:「代碼:PSP_」和'kv。提供者:psp-a',按區域分組。
異常:消息頻率增加或場分布變化(基於規則的ML檢測器)。
審計:「類別:審核」+「演員」/「資源」+結果。
9)與指標和跟蹤的相關性
相同的標識符在所有三個信號(度量,logi,traces)中為「trace_id/span_id」。
圖中的鏈接:從p99面板到「trace_id」上的日誌的點擊轉換。
版本註釋:用於快速綁定的度量和日誌中的版本/金絲雀。
10)安全,PII和合規性
字段分類:PII/秘密/財務-在入口處掩蓋或刪除(Fluent Bit/Lua過濾器,Re2)。
RBAC/ABAC:按角色訪問索引/標簽,row/field-level-security。
不變性(WORM/append-only)用於審核和監管要求。
轉義和「遺忘權」:TTL/按鍵刪除,「user_id」令牌化。
簽名/散列:關鍵日誌的完整性(管理行動,付款)。
11) SLO和pipline logo指標
交貨:99。9%的熱層事件≤ 30-60秒。
損失:<0。01%在24小時內(通過檢查標簽)。
搜索可用性:≥ 99。9%在28天內。
請求的潛伏性:p95 ≤ 2-5秒在典型過濾器上。
成本:$/1M事件和$/GB存儲在層切口。
12)Dashbords(最低)
Pipline Health:進出/進出shippers,retrai,填充緩沖區,Kafka脫落。
服務/代碼錯誤:前N,趨勢,「latency_ms」。
審核活動:admin-action,提供程序錯誤,訪問。
Ekonomics:數量/日,指數增長,按層計算,「昂貴」查詢。
13)操作和花花公子
Storm Log:在座席上啟用激進采樣/限值,提升緩沖區,暫時將部分流量轉換為warm。
方案漂移:新密鑰/類型的出現,啟動方案匹配(方案目錄)。
緩慢搜索:重新組合索引,增加副本,分析「重」查詢,存檔舊批次。
安全事件:立即啟用不可變性,卸載工件,限制角色訪問,RCA。
14)FinOps: 如何不破產
取出號角:將多行堆棧變成「堆棧」字段,並采樣重播。
啟用TTL:不同的「env」/「level」/「category」。
使用Loki/Archive+ on demand rehydrate進行罕見的訪問。
派對和擠壓:大派對更便宜,但要關註SLA搜索。
實現頻繁的分析報告(每日匯總)。
15)工具示例
Fluent Bit(偽裝並發送到OpenSearch)
ini
[INPUT]
Name tail
Path /var/log/app/.log
Parser json
Mem_Buf_Limit 256MB
[FILTER]
Name modify
Match
Remove_key credit_card, password
[OUTPUT]
Name es
Host opensearch.svc
Port 9200
Index logs-${tag}-${date}
Logstash_Format On
Suppress_Type_Name On
Nginx access log в JSON с trace_id
nginx log_format json escape=json '{ "ts":"$time_iso8601","remote":"$remote_addr",'
'"method":"$request_method","path":"$uri","status":$status,'
'"bytes":$body_bytes_sent,"ua":"$http_user_agent","trace_id":"$http_trace_id"}';
access_log /var/log/nginx/access.json json;
OpenSearch ILM策略(hot→warm→delete)
json
{
"policy": {
"phases": {
"hot": { "actions": { "rollover": { "max_age": "7d", "max_size": "50gb" } } },
"warm": { "min_age": "7d", "actions": { "forcemerge": { "max_num_segments": 1 } } },
"delete":{ "min_age": "90d", "actions": { "delete": {} } }
}
}
}
16)實施支票
- 采用了字段圖和日誌級別;啟用了trace/request-id相關性。
- 已配置具有蒙版和緩沖區的代理(Fluent Bit/Promtail)。
- 選擇了一個在線圖層(OpenSearch/Loki/雲)和一個存檔(S3/GCS+parquet)。
- ILM/ISM+hot/warm/cold, rehydrate process.
- RBAC/ABAC,審計不可變性,訪問日誌。
- Pipline Dashbords,損耗/滯後/磁盤緩沖區。
- 花花公子:一場巢穴風暴,模式漂移,搜索緩慢,安全事件。
- 財務限額:$/1M事件,「昂貴」請求的配額。
17)反模式
沒有結構的文本日誌→無法過濾和聚合。
INFO中的巨型堆棧→體積爆炸。
缺乏相關性→所有服務的「抖動」。
「永遠」存儲→以雲為代價作為飛機。
Logs 中的秘密/PII →合規風險。
手動編輯銷售中的索引→漂移和長時間搜索停機。
18)結果
邏輯集中化是一個系統,而不僅僅是堆棧。標準化電路、相關性、安全噴嘴、後期存儲和嚴格的訪問策略使日誌成為SRE、安全和產品的強大工具。正確的回避和FinOps保持預算,而SLO吹笛和花花公子使調查變得快速和可重復。