method
- This is a required setting.
- Value can be any of:
SHA1
,SHA256
,SHA384
,SHA512
,MD5
,MURMUR3
,IPV4_NETWORK
,UUID
,PUNCTUATION
- Default value is
"SHA1"
로그스태시 fingerprint 필터가 지원하는 해시 함수 중 SHA와 MD5를 이용한 해시값은 모두 16진수.
filter { mutate { remove_field => ["@version", "@timestamp", "path", "host"] }
fingerprint {}}
[2022-04-10T18:41:34,125][INFO ][logstash.agent ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}{ "fingerprint" => "8fbd8e994261eca5615206e1874503a2813e59e1", "message" => "test!@\r"}
그런데 MURMUR3은 해시값을 숫자로 제공한다.
filter { mutate { remove_field => ["@version", "@timestamp", "path", "host"] }
fingerprint { method => "MURMUR3" }}
[2022-04-10T18:42:07,103][INFO ][logstash.agent ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}{ "fingerprint" => 3212681722, "message" => "test!@\r"}
Beats 역시 fingerprint 프로세서를 제공한다
method
md5
, sha1
, sha256
, sha384
, sha512
, xxhash
. Default is sha256
.processors: - drop_fields: fields: [ "log", "input", "ecs", "host", "agent" ] - fingerprint: fields: "message"
{ "@timestamp": "2022-04-10T09:47:07.229Z", "@metadata": { "beat": "filebeat", "type": "_doc", "version": "8.1.0" }, "message": "test!@", "fingerprint": "a12813f5c5d23638655f15b27404f66b3577f0d9272470565f60c5260da37922"}
그런데 MURMUR3은 지원하지 않음. 하지만 언제나 방법은 있다. 자바스크립트의 진수 변환 기능 활용.
processors: - drop_fields: fields: [ "log", "input", "ecs", "host", "agent" ] - fingerprint: fields: "message" - script: lang: javascript source: > function process(hash2num) { hash2num.Put("hash2num", parseInt(hash2num.Get("fingerprint"), 16)) }
{ "@timestamp": "2022-04-10T09:49:12.441Z", "@metadata": { "beat": "filebeat", "type": "_doc", "version": "8.1.0" }, "hash2num": 7.289318026369755e+76, "message": "test!@", "fingerprint": "a12813f5c5d23638655f15b27404f66b3577f0d9272470565f60c5260da37922"}
해시값을 숫자로 바꾸면 뭐가 좋을까? 데이터 분석은 통계 분석이며, 통계 분석은 정량적인 수치화를 통해 데이터의 상태를 파악하는 방법이다. 그래서 보고 싶은 데이터의 상태가 무엇인지, 그 상태를 숫자로 바꿀 수 있는지에 대한 답을 구할 수 있으면 데이터 분석이 쉬워진다.
관련 글
댓글 없음:
댓글 쓰기