Observability関連のデータ圧縮技術
これおもしろかった。
Prometheus Remote Write 2.0 (PRW2)
Section titled “Prometheus Remote Write 2.0 (PRW2)”Prometheusで採用した方法。メトリックのラベルで使われる文字列をinterningしてデータを圧縮する。
{ symbols: ["", "cluster", "foo-cluster", "job", "job1", "job2"] metrics: [ {labels: [1,2,3,4]}, {labels: [1,2,3,5]} ]}Compressed Log Processor (CLP)
Section titled “Compressed Log Processor (CLP)”Uberが採用した方法。ログを可逆圧縮したまま検索可能にする。
{ log_patterns: {1: "request finished in %[0]d ms"} logs: [ {pattern_id: 1, variables: [101]}, {pattern_id: 1, variables: [202]} ]}トレースを圧縮する方法。
{ span_patterns: { 1: {path: "/a", host: "x.com"}, 2: {sql: "select..", db: "postgres"} }, trace_patterns: { 1: { spans: [ {span_pattern_id: 1}, {span_pattern_id: 2} ] } }, traces: [ {trace_pattern_id: 1, variables: [{duration: 101}]}, {trace_pattern_id: 1, variables: [{duration: 202}]} ]}