서버 부하 등을 확인하기 위해 netstat을 어떻게 설치하나요?

앱에 진입하는 명령어 ./launcher enter app를 실행하고

apt install net-tools

명령어를 실행했습니다.

하지만 작동하지 않습니다.

저는 discourse 설정을 그대로 두는 편을 선호하지만, 최근 서버 부하가 증가한 것(사용자 수요 증가)을 확인해야 해서 앱에 진입한 후 netstat를 실행해야 한다고 생각했습니다.

그런데 기본적으로 설치되어 있지 않고, 설치도 할 수 없더군요.

이건 꽤 초보적인 질문이라는 걸 압니다. 여기서는 뭔가 아주 명백한 것을 놓치고 있는 것 같습니다. 혹시 앱 안에 있을 필요가 없는 걸까요?

Discourse 컨테이너는 app.yml 템플릿을 사용하여 빌드되며, 필요한 패키지는 이미지 빌드 과정(즉, ./launcher rebuild app 실행 시) 중에 설치되어야 합니다. 실행 중인 컨테이너 내에서 패키지를 대화형으로 설치할 수 없습니다.

이로 인해 net-tools(netstat를 제공하는 패키지)와 같은 일반적인 도구는 기본적으로 포함되지 않으며, 컨테이너가 실행된 후 쉽게 추가할 수도 없습니다.

컨테이너 내부에서 netstat가 필요한 경우, app.yml에 해당 항목을 추가한 뒤 컨테이너를 다시 빌드해야 합니다.

아, 알겠습니다. 그 통찰을 알려주셔서 감사합니다.

사실 그래서 저는 그 부분을 거의 건드리지 않는 편입니다. 저는 그런 작업을 해본 경험이 거의 없고, 플러그인 설치나 기본 app.yml 파일의 간단한 커스터마이징 정도만 해봤거든요.

더 심도 있는 app.yml 관련 내용을 다루는 메타 가이드가 있을까요?

왜 컨테이너가 아닌 호스트에 설치하지 않는 건가요? 서버 부하를 확인하려면 호스트 레벨에서 확인하는 것이 합리적입니다.

호스트라고 하셨을 때, OS/Linux 레벨을 의미하시나요?

저는 Ubuntu OS에서 netstat를 사용하고 있지만, 제 이해가 맞다면 모든 마법이 일어나는 컨테이너(nginx 등) 내부에서 필요할 것 같았습니다.

이 다른 사용자 사례(Discourse overloaded real traffic or DDOS? 100% CPU usage despite of decent traffic and high specs server)와 유사하거나 동일한 문제가 우리 드롭렛에서도 발생하고 있는지 파악해 보고 있었습니다.

실제로, 외부 레벨에서 모니터링을 설치해야 합니다. 컨테이너를 '격리’로 생각하십시오. 컨테이너 내부의 요소가 외부의 요소를 손상시킬 수 없도록 하는 것이 핵심입니다. 하지만 외부 레벨에서는 내부에서 일어나는 모든 것을 볼 수 있습니다. 모든 네트워크 트래픽, CPU 활동, 메모리 압력까지도요.