2025년 4월 4일 금요일

데이터 노가다 실수담 - 10th

url 중 파일 정보 비교. 파일과 디렉토리를 구분하지 않고 저장하는 file과 최소한의 검사를 거친 file2의 차이가 크다. 


2025년 3월 28일 금요일

Logstash 필터 ruby - 7th

ruby 필터를 이용한 숫자 검사.
filter {
 mutate {
  remove_field => ["@timestamp", "@version", "path", "host"]
 }

 dissect {
  mapping => {"message" => '%{}"%{}" %{status} %{}'}
  convert_datatype => {"status" => "int"}
 }

2025년 3월 23일 일요일

Logstash 필터 geoip - 2nd

geoip 필터를 이용하면 위경도를 포함한 ip 주소의 다양한 지리 정보를 사용할 수 있다. 
{
    "message" => "122.213.34.56",
      "geoip" => {
             "longitude" => 139.6297,
                    "ip" => "122.213.34.56",
         "country_code3" => "JP",
              "latitude" => 35.5843,
              "timezone" => "Asia/Tokyo",
             "city_name" => "Chitose",
           "region_name" => "Kanagawa",
           "region_code" => "14",
              "location" => {
            "lat" => 35.5843,
            "lon" => 139.6297

2025년 3월 17일 월요일

ingest pipeline - 6th

로그스태시는 조건문으로 필터의 유기적인 실행 관계를 설정할 수 있다. beat processor도 마찬가지. 다음은 데이터 조건에 따라 달라지는 로그스태시 필터.
filter {
 mutate {
  remove_field => ["@timestamp", "@version", "path", "host"]
 }

 dissect {
  mapping => {"message" => '%{} "%{} %{uri} %{}" %{}'}
 }
 

2025년 3월 14일 금요일

ingest pipeline - 5th

다음은 url과 변수를 구분해서 검사하는 정규표현식.


2025년 3월 6일 목요일

엘라스틱의 합집합 집계

특정 프로세스 발생 통계.


2025년 3월 3일 월요일

엘라스틱 Runtime field - 10th

beat 기본 인덱스 템플릿을 사용하면 1,500여 개 필드로 구성된 인덱스가 생성된다.


2025년 2월 27일 목요일

Beat processors - 6th

;을 구분자로 사용한 데이터 분리.
- script:
    lang: javascript
    source: >
      function process(evt
        var str = evt.Get('message').split(';')
        evt.Put('result', str)
      }
{
  "@timestamp": "2025-02-27T03:49:19.802Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "_doc",
    "version": "8.17.0"
  },
  "message": "type:  5 crl.root-x1.letsencrypt.org.edgekey.net;type:  5 e8652.dscx.akamaiedge.net;::ffff:23.207.177.83;",

2025년 2월 14일 금요일

Splunk 대시보드 - 3rd

스플렁크 대시보드 생성 시 조건 입력창은 다섯 가지인데 UI만 다를 뿐 기능은 모두 동일하다.


2025년 1월 22일 수요일

나라를 위해서 일한다는 거짓말


전도유망한 30대 서기관이 공직을 그만두고 책을 쓴 이유는 무엇일까? 저자는 그 이유를 '비효율', '헛짓거리', '쓸데없는 일' 세 단어로 고백한다.
공직사회의 일이란 그저 관습에 따르거나 기관장을 빛내기 위한 거대한 비효율의 반복 (83페이지)
진짜 필요한 일이 아닌 헛짓거리에 자신의 인생을 갈아 넣으며 느끼는 공무원들의 자괴감 (188페이지)
공직사회는 일을 못한다. 관료가 게을러서도, 철밥통이어서도 아니다. 그저 쓸데없는 일이 너무 많아서다 (274페이지)

누가 그랬다. 노동 없는 삶은 부패하지만 영혼 없는 노동은 삶을 질식시킨다고. 

2025년 1월 18일 토요일

Logstash 필터 ruby - 6th

캡쳐그룹 순서번호는 1부터 시작한다.


Logstash 필터 ruby - 5th

ruby 필터는 == 등의 비교 연산자를 지원하지 않는다. 다음은 include 메소드를 이용한 ? 검사.
ruby {
 code => "
  if event.get('message').include?('?')
   event.set('result', 'TRUE')
  else
   event.set('result', 'FALSE')
  end
 "
}

2025년 1월 14일 화요일

Logstash 필터 split

공백으로 구분된 데이터.
[2025-01-14T21:09:09,525][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
{
    "message" => "a b c\r"
}

mutate 필터의 split 옵션을 적용하면 다중값 구조로 바뀐다.
filter {
 mutate {
  remove_field => ["host", "@version", "path", "@timestamp"]
  split => {"message" => " "}
 }
}

2025년 1월 13일 월요일

Beat processors - 5th

filebeat를 이용한 웹로그 전처리.
processors:
  - include_fields:
      fields: "message"
  - if.contains:
      message: "?"
    then:
      - dissect:
          tokenizer: '%{clientip} %{} %{} [%{timestamp} %{}] "%{method} %{url}?%{param} %{}" %{status} %{}'
          field: "message"
          target_prefix: "" 
    else:
      - dissect:
          tokenizer: '%{clientip} %{} %{} [%{timestamp} %{}] "%{method} %{url} %{}" %{status} %{}'
          field: "message"
          target_prefix: "" 

2025년 1월 4일 토요일

Thick data

맥킨지, 구글 등 쟁쟁한 이력을 자랑하는 백영재 문화인류학 박사의 2023년작. thick data라는 낯선 용어가 시선을 끈다. 두꺼워? 데이터가? 

뭔 말인가 했더니 인류학에서 뭔가를 관찰할 때 고유 맥락과 상황을 포함시켜 연구 대상을 더 구체적이고 풍부하게 묘사하는 thick description에서 따온 말이라고.

빅데이터는 표면상으로 드러난 데이터, thick data는 표면에서는 보이지 않는 배경과 맥락을 포함한 데이터라는게 저자의 설명.
빅데이터는 '무엇을 얼마나 '에 관해서만 설명할 수 있다면, thick data는 '어떤 맥락에서 왜 '에 관해 말해 준다...
오직 thick data만이 빅데이터가 매끈하게 정규화, 표준화하느라 의도적으로 외면한 인간의 실제 경험, 진짜 얼굴을 보여준다 (14페이지)

크리에이티브 커먼즈 라이선스