Erlang Observer
Erlang Observer 는 BEAM(Erlang 가상 머신) 위에서 실행되는 애플리케이션을 모니터링하고 디버깅하기 위한 도구이다. Elixir 프로젝트도 결국 BEAM 에서 동작하기 때문에 erlang 의 observer 를 사용할 수 있다.
Phoenix 프로젝트에서 사용
Phoenix 프로젝트에서 iex -S mix phx.server 로 서버를 구동하고 :observer.start() 로 실행할 수 있다.
다만 기본 Phoenix 세팅을 사용중이라면 아래와 같은 에러가 발생한다.
아마 mix.exs 의 application 함수를 보면 아래와 같이 되어있을 것이다.
def application do [ mod: {Sqetchclub.Application, []}, extra_applications: [:logger, :runtime_tools] ] end
여기에 :wx, :observer 를 추가한다.
def application do [ mod: {Sqetchclub.Application, []}, extra_applications: [:logger, :runtime_tools, :wx, :observer] ] end
이제 다시 iex 로 서버실행 후 :observer.start 를 해보면 아래와 같은 프로그램이 실행된다.
이것저것 유용한 정보들을 많이 볼 수 있다.
특히 Applications 탭으로 가보면 아래와 같은 프로세스 트리를 볼 수 있다.
좌측에는 app 들이 쭉 나열되어있다.
앱을 선택해서 프로세스트리를 확인할 수 있다.
여기서 아래와 같이 특정 프로세스를 우클릭하면 프로세스를 kill 하는 것도 가능하다.
굳이 싶지만, Repository 연결이 끊어졌을 때의 동작을 테스트 하거나 비정상 동작을 테스트 할 때 manual 하게 사용가능해서 좋다. 그리고 프로세스에 message 를 직접 전송할 수도 있다.
익숙해지면 여러모로 유용하게 사용할 수 있을 듯 하다.