데이터 시각화 별거 아니다

로그스태시는 에러 발생 시 상당히 고약한 트러블슈팅 환경을 제공한다. 물론 원인 파악이 쉬울 때도 있음. remove_field 오타 발생.

1
2
3
4
5
filter {
 mutate {
  remove_fiel => ["@version", "@timestamp", "path", "host"]
 }
}

에러 원인을 정확히 찝어준다.

1
2
[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 오타 발생.

1
2
3
4
5
6
7
8
9
output {
 stdout {}
 elasticsearch {
  hosts => "https://192.168.56.1"
  user => "elastic"
  password => "no1"
  ssl.certificate_authorities => "d:/http_ca.crt"
 }
}

남다른 가독성을 뽐내는 한 줄 에러 메시지.

1
[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'"]}

logstash_error

엔터 좀 치라고

엔터 좀 치라고

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

logstash_error (1)

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

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

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

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

visual

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


Popit은 페이스북 댓글만 사용하고 있습니다. 페이스북 로그인 후 글을 보시면 댓글이 나타납니다.