이제 시스템의 오류 지점을 식별하는 방법을 이해했으므로 문제 해결 프로세스의 다음 단계로 이동할 차례입니다. 팀의 앱을 지원하는 기본 인프라에 문제가 있다는 알림을 받았다고 가정해 보겠습니다. 호스트 데이터를 사용하여 앱 오류 진단 의 기술을 바탕으로 리소스 할당에 대한 결정을 내릴 수 있도록 데이터를 비교하는 한 가지 방법을 배우게 됩니다.
목표
이 튜토리얼에서는 다음 방법을 배웁니다.
- CPU가 높은 알림 호스트 문제 해결
- 리소스 할당에 대해 데이터 기반 결정을 내립니다.
CPU의 갑작스러운 급증 조사
리소스에 문제가 있는지 확인
중단의 성격에 대한 추가 컨텍스트가 없다고 가정해 보겠습니다. 첫 번째 단계는 변경 사항이 리소스와 전혀 연관될 수 있는지 확인하는 것입니다. 요약 페이지에서 시작하여 리소스 관련 데이터(CPU, 메모리 사용량, 디스크 사용률)를 평가하세요.
이 스크린샷을 예로 사용하면 다음과 같이 추론할 수 있습니다.
host-tower-portland
중요한 알림 메시지가 있습니다.요약 테이블에서 CPU가 99.84%로 과열 상태로 실행되고 있음을 확인할 수 있습니다.
측정항목 그래프는 이 동작이 최소 30분 동안 지속되었음을 보여줍니다.
이 동작은 예상치 못한 것이므로 해당 특정 호스트를 더 자세히 살펴보는 것이 좋습니다.
데이터 상관관계
호스트를 클릭하면 해당 호스트와 관련된 데이터가 포함된 새 요약 페이지가 나타납니다. 이 단계에서는 요약 페이지에서 식별된 패턴을 자세히 설명하려고 합니다. CPU 비율을 host-tower-portland
관련 다른 데이터와 연관시킬 수 있는지 살펴보겠습니다.
우리는 CPU 비율을 다루고 있으므로 문제가 앱과 관련된 것인지 아니면 컴퓨터와 관련된 것인지 확인하고 싶습니다. 그렇게 하려면 사이드바의 Latest events 와 비교하여 Processes running 테이블을 확인해야 합니다. 이 단계에서는 시스템에 직접 변경이 이루어졌기 때문에 문제가 발생하는지, 아니면 프로세스에서 리소스가 소모되는지 여부를 명확하게 합니다.
이 스크린샷을 바탕으로:
CPU 사용량이 100%에 가까워지고 정체되고 있습니다.
변경이 처음 발생한 시점인 지난 30분 동안 보고된 이벤트가 없습니다. 보고되는 이벤트가 있는 경우 시스템의 구성 파일에서 변경 사항을 찾거나 누군가가 직접 변경하기 위해 시스템에 들어왔는지 확인합니다.
CPU의 77.34%를 사용하는
ruby
프로세스가 있습니다.CPU 비율을 프로세스와 연관시켰기 때문에 호스트 자체에서 발생하는 문제가 아니라 앱이 리소스를 많이 소모하고 있다는 결론을 내릴 수 있습니다.
해당 앱에 더 많은 리소스를 할당해야 하는지 결정
리소스 관련 문제가 항상 솔루션이 더 많은 리소스를 프로비저닝한다는 의미는 아닙니다. CPU 성능이 높은 데에는 여러 가지 이유가 있지만 그 중 두 가지 큰 이유는 다음과 같습니다.
앱이 CPU 사용량을 급증시키는 중복 프로세스를 실행하고 있습니다. 이 경우 해당 앱 최적화에 대해 소유 팀에 문의해야 합니다.
더 많은 최종 사용자가 해당 구성 요소에 액세스하고 시스템에 스트레스를 가중시키고 있습니다. 이 경우 해당 로드를 충족하기 위해 더 많은 리소스를 프로비저닝해야 합니다.
host-tower-portland
에 대한 요약 페이지를 보면 서로 다른 차트 간의 시계열 패턴을 연관시켜 이 상황에 어떤 시나리오가 적용되는지 식별할 수 있습니다. 네트워크 트래픽을 통합 지표와 비교해 보겠습니다.이 경우
Network traffic
그래프는 CPU 사용량, 메모리 사용량 등에 대한 지표 그래프와 비슷한 추세를 보일 것으로 예상됩니다.
리소스가 로드가 아닌 앱 문제와 관련된 경우 네트워크 시계열은 급증이나 최저점 없이 일반적인 방식으로 추세를 나타냅니다.
그러나 부하가 높은 CPU의 원인이라면 네트워크 시계열이 다른 지수 그래프의 추세를 반영하는 것을 볼 수 있습니다.
CPU usage 과 Network traffic 비교해 보겠습니다.
로드가 시스템에 부담을 주는 경우 네트워크 트래픽은 메트릭 그래프와 평행하게 증가합니다.
피크 이후 시간이 지남에 따라 트래픽이 느리게 감소하는 것을 확인할 수도 있습니다. 이는 리소스가 부족하여 해당 프로세스가 중지되기 때문입니다. 즉, 사용 가능한 리소스가 수요를 지원할 수 없는 경우 네트워크 트래픽이 제한되어 지속적인 감소를 초래할 수 있습니다.
그러나 네트워크 트래픽은 일관된 동작을 보이고 있습니다. 리소스가 고갈되어도 전반적인 동작은 시간이 지나도 변하지 않는 것 같습니다. 대신 시계열은 정기적인 최고점과 최저점을 보여줍니다.
이는 앱이 부하를 충족하기 위해 더 많은 리소스가 필요한 것이 아니라 실제로 앱에 문제가 있음을 나타냅니다.
이 경우 앱에 추가 리소스를 할당 하지 않습니다 . 대신 소유 팀에 연락하여 문제가 되는 Ruby 프로세스를 최적화하도록 권장하세요.
팀과 공유
다른 팀에 추천할 때 모든 사람이 동일한 데이터를 볼 수 있기를 바랍니다. 이렇게 하면 잠재적인 변경 사항에 대한 결정을 내릴 때 문제 해결에 사용된 것과 동일한 데이터를 기반으로 결정이 내려집니다.
이전 단계에서는 문제와 관련된 특정 호스트 집합을 표시하기 위해 필터 쿼리를 적용했습니다. 이렇게 하면 다른 팀을 위해 저장할 수 있는 요약 페이지 데이터가 업데이트됩니다.
다른 팀이 업무를 수행하는 데 필요할 수 있는 데이터의 양을 결정합니다. 고려해야 할 호스트 집합이 있을 수도 있고, 예제 데이터 중 하나만 필요할 수도 있습니다.
관련 데이터만 표시하는 필터를 만듭니다. 단순화를 위해 저장된 보기에는 필터
hostname = host-tower-portland
의 호스트 하나가 포함됩니다. 또 다른 가능성은 앱 이름이나 경고 상태를 기준으로 필터링하는 것입니다.뷰 이름을 지정한 다음 Save 클릭합니다.
데이터 보기를 만든 후에는 다른 팀에서 검색할 수 있도록 해당 보기를 저장해야 합니다. 자신의 앱 동작 문제를 해결할 때 드롭다운을 검색하여 보기를 찾을 수 있습니다.
다음은 뭐지?
지금까지 인프라 데이터를 사용하여 리소스 관련 사고를 해결하는 방법을 다루었습니다. 수천 개의 호스트에서 일련의 호스트로 범위를 좁힌 다음 데이터를 연관시켜 결정을 내리는 방법을 다루었습니다. 다음 문서에서는 인프라 측정항목을 사용하여 사용자 정의 대시보드를 만드는 방법을 보여줍니다.