GN⁺: 리눅스 위기 관리 도구
(brendangregg.com)리눅스 위기 도구
- 리눅스 서버에 기본적으로 설치해야 할 "위기 도구" 목록과 해당 도구가 포함된 (우분투) 패키지 이름 제공.
- 기본 통계, 시스템 로그, 장치 정보, 장치 통계, 네트워크 도구, NUMA 통계, 네트워크 스니퍼, 프로파일러 및 PMU 통계 등을 위한 도구 포함.
-
bpfcc-tools
(bcc)와bpftrace
는 eBPF 도구를 제공하며, bcc는 더 많은 기능을 가지고 있고 bpftrace는 실시간으로 편집 가능. - 서버에 따라 특정 가속기 분석 도구나 디버깅 도구도 사전 설치 권장.
- 이러한 필수 분석 도구는 자주 변경되지 않아 몇 년에 한 번만 업데이트 필요.
위기 시 도구 설치의 중요성
- 생산 환경의 위기 상황에서 소프트웨어 설치 시 발생할 수 있는 문제들을 예시를 들어 설명.
- 시스템이 느려져 필요한 도구를 설치하는 데 시간이 오래 걸리고, 여러 설정 문제나 보안 정책으로 인해 설치가 어려울 수 있음.
- 위기 상황에서 신속하게 문제를 진단하고 해결하기 위해 위기 도구를 사전에 설치하는 것이 바람직.
GN⁺의 의견
- 이 기사는 시스템 관리자나 SRE(사이트 신뢰성 엔지니어)에게 매우 유용한 정보를 제공함. 실제 위기 상황에서 필요한 도구를 빠르게 사용할 수 있도록 사전 준비의 중요성을 강조함.
- 위기 도구의 사전 설치는 시스템의 가용성과 복원력을 높이는 데 기여하며, 잠재적인 시스템 다운타임을 최소화하는 데 도움이 됨.
- 하지만, 보안과 성능 사이의 균형을 찾는 것이 중요함. 예를 들어, 불필요한 도구가 시스템에 설치되어 있으면 공격자가 이를 악용할 수도 있음.
- 리눅스 배포판이 기업 환경에 맞춰 위기 도구를 기본적으로 포함하는 것을 고려할 수 있으나, 이는 각 조직의 보안 정책과 필요에 따라 달라질 수 있음.
- 오픈소스 커뮤니티에서는 이미 다양한 모니터링 및 성능 분석 도구가 제공되고 있으며, 예를 들어 Prometheus, Grafana와 같은 도구는 시스템 성능 모니터링에 널리 사용됨. 이러한 도구들과 함께 위기 도구를 통합하여 사용하면 시스템 관리가 더욱 효과적일 수 있음.
Hacker News 의견
-
4:07pm 패키지 설치 실패, 저장소를 해결할 수 없음. /etc/apt 설정에 문제가 있음…
- 클라우드 환경의 단점이 있지만, 이런 상황에서 유용함. 복잡한 수리 대신 문제가 있는 기계를 종료하거나 풀에서 제거하고 새 기계를 사용함으로써 문제를 해결할 수 있음.
-
컨테이너화된 서버들이 많지만, 여전히 도전과제가 존재함.
- 도커 이미지 내의 많은 도구들이 보안 스캔 도구에 의해 위험 요소로 표시됨. gdb와 같은 도구는 우려의 대상이지만, 많은 도구들은 그렇지 않음.
- 이를 피하기 위해 별도의 볼륨에 도구들을 정적 바이너리로 두거나 마운트 경로를 설치 접두어로 사용하여 컴파일 및 설치함. 디버깅이 필요할 때는 운영팀이 볼륨을 읽기 전용으로 일시적으로 마운트함.
-
특정 커널 기능을 활성화해야 하는 디버그 도구가 있을 경우, 같은 호스트에서 실행되는 다른 컨테이너에 미치는 영향에 대한 우려가 있음.
-
FreeBSD 시스템에서는 /rescue/ 디렉토리가 있어, 약 150개의 중요 도구를 결합한 단일 정적 링크된 약 17MB 바이너리 파일을 제공함.
-
넷플릭스에서 근무할 때, Brendan과 그의 팀은 bpftrace, bcc, 작동하는 perf와 같은 디버깅 도구를 곳곳에 설치해두었고, 이는 여러 번 생명을 구하는 역할을 함.
-
strace
가 리스트에 없는 것에 놀람. 프로그램이 쓸모없거나 잘못된 에러 메시지를 반환할 때 특히 유용한 도구임. -
SRE 유형의 포지션을 면접할 때 이러한 도구들을 항상 다룸. 후보자가 기억하는 특정 명령어보다는 가능한 것, 사용 가능한 도구의 종류, 그리고 그 사용법을 중요시함.
-
도구 설치가 불가능한 위기 상황에서는 Docker를 통해 많은 유틸리티를 실행할 수 있음. 예를 들어, 호스트 네트워크에 연결된 상태로 tcpdump를 실행하는 Docker 컨테이너를 빌드하고 실행하는 방법을 제시함.
-
yum install이 선호되지만, Docker가 사용 가능하다면 추가적인 매핑이 필요하더라도 이는 실행 가능한 대안임. rootless/podman 설정에서는 작동하지 않을 수 있음.
-
nmap, netstat, nc가 언급되지 않았음. 이 도구들은 여러 번 문제를 해결하는 데 도움이 됨.
-
루트 액세스를 얻을 수 있음? 시스템 관리자에게 티켓을 올려야만 어떤 작업도 수행할 수 있음.
-
추가하고 싶은 것은 nmap임. 네트워크 연결 문제는 일부 앱에서 명확하지 않을 수 있음.