2023년 10월 23일 월요일

데이터 시각화 별거 아니다 - 2nd

로그스태시는 에러 발생 시 상당히 고약한 트러블슈팅 환경을 제공한다. 물론 원인 파악이 쉬울 때도 있음. remove_field 오타 발생.
filter {
 mutate {
  remove_fiel => ["@version", "@timestamp", "path", "host"]
 }
}

에러 원인을 정확히 찝어준다.
[2023-10-22T16:01:47,905][ERROR][logstash.filters.mutate  ] Unknown setting 'remove_fiel' for mutate
[2023-10-22T16:01:47,906][ERROR][logstash.agent           ] Failed to execute action {:id=>:main, :action_type=>LogStash::ConvergeResult::FailedAction, :message=>"Unable to configure plugins: (ConfigurationError) Something is wrong with your configuration.", :backtrace=>["org.logstash.config.ir.CompiledPipeline.<init>(CompiledPipeline.java:120)", "org.logstash.execution.AbstractPipelineExt.initialize(AbstractPipelineExt.java:186)", "org.logstash.execution.AbstractPipelineExt$INVOKER$i$initialize.call(AbstractPipelineExt$INVOKER$i$initialize.gen)", "D_3a_.ELK.logstash_minus_8_dot_10_dot_3.logstash_minus_core.lib.logstash.pipeline_action.reload.RUBY$method$execute$0(D:/ELK/logstash-8.10.3/logstash-core/lib/logstash/pipeline_action/reload.rb:51)", "D_3a_.ELK.logstash_minus_8_dot_10_dot_3.logstash_minus_core.lib.logstash.agent.RUBY$block$converge_state$2(D:/ELK/logstash-8.10.3/logstash-core/lib/logstash/agent.rb:386)", "org.jruby.runtime.CompiledIRBlockBody.callDirect(CompiledIRBlockBody.java:141)", "org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:64)", "org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:58)", "org.jruby.runtime.Block.call(Block.java:143)", "org.jruby.RubyProc.call(RubyProc.java:352)", "org.jruby.internal.runtime.RubyRunnable.run(RubyRunnable.java:110)", "java.base/java.lang.Thread.run(Thread.java:833)"]}

문제는 안 그럴 때가 많다는 거. ssl_certificate_authorities 오타 발생.
output {
 stdout {}
 elasticsearch {
  hosts => "https://192.168.56.1"
  user => "elastic"
  password => "no1"
  ssl.certificate_authorities => "d:/http_ca.crt"
 }
}

남다른 가독성을 뽐내는 한 줄 에러 메시지. 
[2023-10-22T16:05:39,693][ERROR][logstash.agent           ] Failed to execute action {:id=>:main, :action_type=>LogStash::ConvergeResult::FailedAction, :message=>"Expected one of [A-Za-z0-9_-], [ \\t\\r\\n], \"#\", \"=>\" at line 21, column 6 (byte 328) after output {\r\n\tstdout {}\r\n\telasticsearch {\r\n\t\thosts => \"https://192.168.56.1\"\r\n\t\tuser => \"elastic\"\r\n\t\tpassword => \"no1ids\"\r\n\t\tssl", :backtrace=>["D:/ELK/logstash-8.10.3/logstash-core/lib/logstash/compiler.rb:32:in `compile_imperative'", "org/logstash/execution/AbstractPipelineExt.java:239:in `initialize'", "org/logstash/execution/AbstractPipelineExt.java:173:in `initialize'", "D:/ELK/logstash-8.10.3/logstash-core/lib/logstash/pipeline_action/reload.rb:51:in `execute'", "D:/ELK/logstash-8.10.3/logstash-core/lib/logstash/agent.rb:386:in `block in converge_state'"]}
엔터 좀 치라고

엔터 좀 쳐주면 낫지 않을까? 저 상황에서도 읽기 좋으라고 사용된 문장 기호 중 쉼표를 줄바꿈 문자로 치환.


몇 번째 라인(항상 정확하진 않음), 어느 지점에 문제가 있는지 보이기 시작한다. 적당한 엔터 삽입만으로도 정보 처리 수준이 달라진다. 정보가 잘 보이지 않던 구조를 잘 보이는 구조로 바꾸는 데이터 시각화 사례.

이것도 데이터 시각화라고 하면 혼나려나?

데이터 시각화라고 하면 예쁘고 화려할수록 좋아 보이는 (그래서 어렵다는) 인식이 있다보니, 시각화 툴에 집착하는 경우를 보게 된다.

이왕이면 다홍치마지만

하지만 본질은 보고 싶은 정보를 잘 보여주는 것. 그리고 그 목적을 위해 시도하는 모든 방법이 데이터 시각화(=EDA). 보고 싶은 정보를 쉽게 볼 수 있는 방법을 고민하다 보면 툴에 익숙해지는 건 시간 문제다.

관련 글

댓글 없음:

댓글 쓰기

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