로그스태시는 에러 발생 시 상당히 고약한 트러블슈팅 환경을 제공한다. 물론 원인 파악이 쉬울 때도 있음. 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). 보고 싶은 정보를 쉽게 볼 수 있는 방법을 고민하다 보면 툴에 익숙해지는 건 시간 문제다.
관련 글
댓글 없음:
댓글 쓰기