블로그

클라우드 모니터링, 서버 모니터링, DB 모니터링, 네트워크 관리, 웹 애플리케이션 성능 모니터링, 통합로그관리, ITSM을 단일 플랫폼에서 관리, 브레인즈컴퍼니의 소식을 전합니다.

서버를 안정적으로 운영하기 위해서는 CPU, 메모리와 같은 시스템 자원의 전체 사용률뿐만 아니라 실제로 어떤 프로세스가 자원을 사용하고 있는지 함께 확인하는 과정이 중요합니다.


예를 들어 서버의 CPU나 메모리 사용률이 갑자기 높아졌다면 어떤 프로세스가 자원을 많이 사용하고 있는지 확인해야 원인을 보다 구체적으로 파악할 수 있습니다. 또한 평소에는 자원 점유율이 높지 않더라도 특정 작업이나 시간대에 사용량이 증가하는 주요 프로세스라면 지속적으로 성능 변화를 살펴볼 필요가 있습니다.


이처럼 서버에서 실행되는 프로세스의 상태와 자원 사용 현황을 파악하고, 주요 프로세스의 성능 변화를 지속적으로 확인하기 위해 서버 모니터링 툴이 활용됩니다. 그렇다면 실제 서버 환경에서는 다양한 프로세스를 어떻게 모니터링하고 분석할 수 있을까요? Zenius SMS의 프로세스 모니터링 기능을 통해 구체적으로 알아보겠습니다.




Zenius SMS에서는 서버 프로세스를 어떻게 모니터링할까요?

Zenius SMS의 프로세스 모니터링 기능에서는 크게 세 가지 관점에서 서버 프로세스를 확인할 수 있습니다.


첫째, 현재 서버에서 실행되고 있는 프로세스의 상태와 자원 점유율을 확인할 수 있습니다. 이를 통해 현재 어떤 프로세스가 실행 중인지 파악하고 CPU 또는 메모리를 상대적으로 많이 사용하는 프로세스를 찾아볼 수 있습니다.


둘째, 업무상 중요하게 관리해야 하는 특정 프로세스의 자원 점유율을 별도로 확인할 수 있습니다. 현재 Top 프로세스 목록에 나타나지 않더라도 감시 대상으로 등록하면 해당 프로세스의 성능 변화를 지속적으로 살펴볼 수 있습니다.


셋째, 특정 시점 또는 날짜를 기준으로 프로세스의 자원 점유율을 분석할 수 있습니다. 이를 활용하면 현재는 서버 상태가 정상으로 돌아왔더라도 특정 작업일이나 장애 발생 시점에 어떤 프로세스가 많은 자원을 사용했는지 다시 확인할 수 있습니다.


대표적으로 서버 내 프로세스들의 자원 점유율을 파악해야 하는 경우, 특정 또는 주요 프로세스의 CPU·메모리 점유율을 확인해야 하는 경우, 상위 자원 점유율을 차지하는 프로세스를 빠르게 찾아야 하는 경우 등에 활용할 수 있습니다.




프로세스 상태도 함께 확인할 수 있습니다

프로세스 목록에서는 프로세스가 단순히 존재하는지만 보여주는 것이 아니라 현재 어떤 상태인지도 함께 확인할 수 있습니다.

  • Sleep은 서버 내에서 프로세스가 현재 대기 중인 상태로, 프로세스가 실행을 멈추고 특정 이벤트가 발생하기를 기다리고 있는 상태를 의미합니다.
  • Zombie는 프로세스 실행은 이미 완료됐지만 부모 프로세스가 아직 해당 프로세스의 종료 상태를 수거하지 않은 상태입니다.
  • Running은 프로세스가 현재 실행 중이거나 실행 가능한 상태입니다.
  • Stopped는 프로세스 실행이 일시적으로 중지된 상태로, 일반적으로 사용자 신호 또는 디버거 등에 의해 중지된 경우에 해당합니다.


프로세스 상태와 CPU·메모리 점유율을 함께 살펴보면 현재 서버의 프로세스 동작 현황을 보다 구체적으로 파악할 수 있습니다.그럼 실제 Zenius SMS 화면에서는 이러한 정보를 어떻게 확인할 수 있는지 순서대로 살펴보겠습니다.




[1] 서버에서 실행 중인 프로세스 현황 확인하기

Step 1. 모니터링 대상 서버를 선택합니다

먼저 [SMS > 모니터링 > 모니터링 상세보기]로 이동한 후 프로세스를 확인할 대상 서버를 선택합니다.


Zenius SMS에서는 서버별 상세 모니터링 화면을 통해 해당 서버의 주요 성능과 프로세스 정보를 확인할 수 있습니다. 따라서 여러 서버를 운영하고 있다면 먼저 분석하고자 하는 서버를 정확하게 선택한 뒤 프로세스 정보를 확인하는 것이 첫 단계입니다.



Step 2. 실행 중인 프로세스와 상태별 현황을 확인합니다

대상 서버를 선택한 후 [모니터링 상세보기 > 프로세스 > 프로세스 목록]으로 이동합니다.


프로세스 목록에서는 현재 서버에서 실행되고 있는 프로세스를 한눈에 확인할 수 있으며, 앞서 설명한 Running, Sleep, Stopped, Zombie 등의 상태별 프로세스 현황도 함께 확인할 수 있습니다.



이 화면은 서버 프로세스 모니터링의 기본적인 출발점입니다.


예를 들어 특정 서버에서 성능 문제가 발생했다면 먼저 어떤 프로세스가 실행 중인지 확인하고, 비정상적으로 많은 프로세스가 생성되지는 않았는지 또는 특정 상태의 프로세스가 증가하지 않았는지 살펴볼 수 있습니다.


즉, 단순히 CPU나 메모리 사용률만 확인하는 것이 아니라 현재 서버에서 실제로 동작하고 있는 프로세스의 전체적인 상태를 함께 확인할 수 있습니다.




Step 3. CPU·메모리 점유율이 높은 프로세스를 확인합니다


프로세스 목록 하단에서는 현재 서버에서 상대적으로 높은 성능 점유율을 나타내는 프로세스를 확인할 수 있습니다.


특히 CPU와 MEM을 기준으로 프로세스를 정렬할 수 있기 때문에 어떤 프로세스가 CPU 또는 메모리 자원을 많이 사용하고 있는지 쉽게 확인할 수 있습니다.



예를 들어 서버 전체의 CPU 사용률이 높게 나타났다면 CPU 기준으로 프로세스를 정렬해 현재 가장 많은 CPU 자원을 사용하고 있는 프로세스부터 확인할 수 있습니다.


메모리 사용량이 증가한 경우라면 MEM 기준으로 정렬해 메모리 점유율이 높은 프로세스를 중심으로 살펴볼 수 있습니다.


또한 Zombie 프로세스 탭에서는 서버에 존재하는 Zombie 프로세스를 별도로 확인할 수 있습니다.


따라서 이 화면에서는 현재 실행 중인 프로세스 목록뿐만 아니라 서버 자원을 많이 사용하는 프로세스와 프로세스 상태를 함께 확인할 수 있어 서버 성능 문제를 분석할 때 활용할 수 있습니다.




[2] 프로세스 정보를 최신 상태로 확인하기

Step 4. 최근 목록을 통해 프로세스를 최신화합니다

서버 프로세스는 실행과 종료가 반복되기 때문에 특정 시점에 따라 프로세스 목록이 달라질 수 있습니다.따라서 현재 서버에서 실행 중인 최신 프로세스를 확인해야 할 경우에는 최근 목록 버튼을 이용할 수 있습니다.


최근 목록 버튼을 클릭하면 서버 내 프로세스 정보를 다시 수집하고 최신 상태의 프로세스 목록을 확인할 수 있습니다.



이 과정은 단순히 화면 정보를 갱신하는 것뿐만 아니라 이후 특정 프로세스를 감시 대상으로 등록할 때도 필요합니다. Zenius SMS에서는 업데이트 요청 후 실제로 수집된 프로세스에 한해 프로세스 감시설정을 진행할 수 있습니다.


즉, 지속적으로 모니터링하고 싶은 프로세스가 있다면 먼저 최근 목록을 통해 해당 프로세스가 서버에서 수집되었는지 확인한 뒤 감시설정을 진행해야 합니다.



이를 통해 실제 서버에서 확인된 프로세스를 기준으로 필요한 감시 대상을 설정할 수 있습니다.




[3] 특정 프로세스의 성능 점유율 확인하기

Step 5. 프로세스 통계를 확인합니다

다음으로 [프로세스 > 프로세스 통계]로 이동합니다.

프로세스 통계에서는 서버 내 특정 프로세스를 등록해 해당 프로세스의 성능 점유율을 확인할 수 있습니다.



앞서 살펴본 프로세스 목록이 현재 서버에서 자원을 많이 사용하는 프로세스를 파악하는 데 초점을 맞춘다면, 프로세스 통계는 운영상 중요하게 관리해야 하는 특정 프로세스를 별도로 추적하는 용도로 활용할 수 있습니다.


예를 들어 특정 업무 애플리케이션과 관련된 프로세스가 항상 CPU나 메모리를 많이 사용하는 것은 아닐 수 있습니다.


평소에는 전체 프로세스 가운데 Top 10~20에 포함되지 않다가 특정 작업 또는 특정 시간대에만 자원 사용량이 높아질 수도 있습니다. 이러한 경우에는 현재 상위 프로세스 목록만 확인해서는 해당 프로세스의 성능 변화를 지속적으로 파악하기 어렵습니다.


프로세스 통계를 활용하면 이러한 특정 프로세스를 별도로 관리하면서 성능 점유율을 확인할 수 있습니다.




[4] 지속적으로 확인할 프로세스를 감시 대상으로 등록하기

Step 6~7. 프로세스 감시설정을 등록합니다

특정 프로세스의 성능을 지속적으로 모니터링하려면 [SMS > 설정 > 감시설정 > 등록]으로 이동해 프로세스 감시설정을 진행합니다.



감시설정 화면에서는 앞서 최신 목록을 통해 수집된 프로세스를 기준으로 지속적으로 확인하고자 하는 프로세스를 선택할 수 있습니다.


이를 통해 현재 점유율이 높은 프로세스뿐만 아니라 업무상 중요도가 높은 특정 프로세스를 별도의 모니터링 대상으로 지정할 수 있습니다.



필요한 설정을 완료한 뒤 프로세스를 감시 대상으로 등록합니다.


등록된 프로세스는 이후 프로세스 통계에서 확인할 수 있으며, 시간에 따른 성능 점유율 변화도 지속적으로 살펴볼 수 있습니다.


이 방식은 일반적인 Top 프로세스 모니터링으로는 파악하기 어려운 주요 업무 프로세스의 성능 변화를 관리할 때 활용할 수 있습니다.


예를 들어 특정 서비스 프로세스가 평상시에는 낮은 CPU 사용률을 유지하지만 업무 처리량이 증가하는 시간대에만 CPU 또는 메모리 사용량이 높아지는 경우, 해당 프로세스를 감시 대상으로 등록해두면 시간에 따른 성능 변화 추이를 확인할 수 있습니다.




[5] 일별 과부하 프로세스 확인하기

Step 8. 특정 날짜의 과부하 프로세스를 조회합니다

서버 프로세스 분석에서는 현재 상태뿐만 아니라 과거 특정 시점의 상태를 확인해야 하는 경우도 있습니다.


예를 들어 특정 작업을 수행한 날짜에 서버의 CPU 또는 메모리 사용률이 크게 증가했지만 현재는 서버 상태가 정상이라면, 현재 프로세스 목록만으로는 당시 어떤 프로세스가 부하를 발생시켰는지 확인하기 어렵습니다.


이러한 상황에서는 [프로세스 > 일별 과부하 프로세스] 기능을 활용할 수 있습니다.


일별 과부하 프로세스에서는 서버 성능에 대한 조건을 설정하고 해당 기준에 맞는 프로세스를 날짜별로 확인할 수 있습니다.



따라서 특정 작업일이나 성능 저하가 발생했던 날짜를 기준으로 당시 서버 자원을 많이 사용했던 프로세스를 다시 확인할 수 있습니다.


현재 상태를 확인하는 실시간 모니터링뿐만 아니라 과거 서버 부하의 원인을 프로세스 단위로 살펴보는 데 활용할 수 있는 기능입니다.




프로세스 모니터링, 실제로 이렇게 활용할 수 있습니다

지금까지 서버 프로세스 상태를 확인하고 특정 프로세스를 감시 대상으로 등록하는 기본적인 기능을 살펴봤습니다.이번에는 실제 서버 운영 상황을 기준으로 프로세스 통계와 일별 과부하 프로세스를 어떻게 활용할 수 있는지 살펴보겠습니다.


Case 1. 특정 프로세스의 성능 점유율을 지속적으로 확인해야 하는 경우

서버를 운영하다 보면 현재 자원 사용량이 높은 프로세스보다는 특정 업무 프로세스의 성능을 지속적으로 관찰해야 하는 경우가 있습니다.


먼저 감시설정을 통해 등록한 프로세스를 선택하면 해당 프로세스의 성능 점유율을 그래프로 확인할 수 있습니다.



그래프에 마우스를 올리면 수집 주기에 따라 저장된 다양한 성능값을 확인할 수 있습니다. 이를 통해 단순히 전체적인 그래프 추세만 보는 것이 아니라 특정 시점에 해당 프로세스가 어느 정도의 자원을 사용했는지도 구체적으로 확인할 수 있습니다.


또한 화면 우측 상단의 기간 검색 기능을 활용하면 원하는 기간을 지정해 특정 프로세스의 성능 변화를 확인할 수 있습니다.


예를 들어 특정 작업 전후의 CPU·메모리 점유율을 비교하거나, 서버 성능 문제가 발생했던 시간대의 프로세스 사용량을 확인하는 데 활용할 수 있습니다.


이 기능은 특히 Top 10~20 프로세스 목록에는 나타나지 않지만 업무상 중요하게 관리해야 하는 프로세스를 모니터링할 때 활용도가 높습니다.


평소에는 자원 사용량이 높지 않더라도 특정 시점에만 CPU나 메모리 사용량이 증가한다면 해당 프로세스를 별도로 등록해 성능 추이를 지속적으로 확인할 수 있습니다.



Case 2. 일별로 어떤 프로세스가 서버 자원을 많이 사용했는지 확인해야 하는 경우

두 번째는 특정 날짜에 서버 성능 점유율이 높았던 프로세스를 확인해야 하는 경우입니다. 일별 과부하 프로세스에서는 먼저 분석하려는 성능 조건과 화면에 표시할 프로세스 개수를 설정합니다.


성능 기준은 소수점 단위까지 지원하기 때문에 운영 환경에 맞춰 보다 세부적인 조건을 적용할 수 있습니다.



조건에 따라 조회된 프로세스는 각 컬럼을 기준으로 정렬할 수 있습니다.



이를 통해 특정 날짜에 CPU 또는 메모리를 상대적으로 많이 사용한 프로세스를 비교하고, 어떤 프로세스가 높은 자원 점유율을 나타냈는지 확인할 수 있습니다.


예를 들어 특정 작업일에 서버 자원 사용량이 평소보다 크게 증가했다면 해당 날짜의 과부하 프로세스를 조회하고 점유율 기준으로 정렬해 원인 후보가 되는 프로세스를 확인할 수 있습니다.



실제 서버 운영 환경에서는 어떻게 활용할 수 있을까요?

실제 서버 운영에서는 단순히 현재 CPU나 메모리를 많이 사용하는 프로세스만 확인해서는 충분하지 않은 경우가 있습니다.


대표적인 사례가 Top 10~20에 포함되지 않는 특정 주요 프로세스의 성능을 확인해야 하는 경우입니다.


업무상 중요한 프로세스라고 하더라도 평소에는 상대적으로 자원 사용량이 낮아 상위 프로세스 목록에 나타나지 않을 수 있습니다. 하지만 특정 작업이나 업무 처리량 증가 시점에는 CPU 또는 메모리 점유율이 높아질 수 있기 때문에 해당 프로세스를 별도로 추적할 필요가 있습니다.


이때 Zenius SMS의 프로세스 감시설정과 프로세스 통계를 활용하면 해당 프로세스를 별도의 감시 대상으로 등록하고 성능 점유율을 그래프 형태로 확인할 수 있습니다.


기간 검색을 활용해 특정 기간이나 시점의 성능 데이터를 확인할 수 있으며, 기간별·특정 시점별 Raw Data 확인과 Excel 출력도 가능합니다. 따라서 성능 이력에 대한 추가 분석이 필요하거나 특정 작업 전후 데이터를 비교해야 하는 경우에도 활용할 수 있습니다.


또 다른 활용 사례는 특정 작업일에 서버 자원을 많이 사용했던 프로세스를 확인해야 하는 상황입니다.


현재 서버 상태가 이미 정상으로 돌아왔다면 현재 프로세스 목록만으로는 과거 부하 발생 당시의 원인을 확인하기 어렵습니다. 이 경우 일별 과부하 프로세스 기능을 활용하면 특정 날짜에 높은 서버 성능 점유율을 나타냈던 프로세스를 다수 확인할 수 있어 당시 서버 부하와 관련된 프로세스를 추적하는 데 활용할 수 있습니다.




서버 성능을 보다 구체적으로 파악하려면 프로세스까지 확인해야 합니다

서버 모니터링에서 CPU와 메모리의 전체 사용률을 확인하는 것은 중요하지만, 그것만으로는 실제 성능 문제의 원인을 충분히 파악하기 어려울 수 있습니다. CPU 사용률이 높다면 어떤 프로세스가 CPU를 많이 사용했는지, 메모리 사용량이 증가했다면 어떤 프로세스의 점유율이 높아졌는지까지 함께 살펴봐야 합니다.


Zenius SMS에서는 현재 서버의 프로세스 상태 확인, CPU·메모리 점유율이 높은 프로세스 확인, 특정 프로세스 감시설정, 기간별 성능 추적, 일별 과부하 프로세스 분석까지 단계적으로 확인할 수 있습니다.


특히 현재의 Top 프로세스뿐만 아니라 평소에는 상위 목록에 나타나지 않는 주요 업무 프로세스를 지속적으로 관리하거나, 특정 작업일의 서버 부하 원인을 과거 데이터에서 확인해야 하는 경우에도 활용할 수 있습니다.


서버의 전체적인 성능 지표만으로 원인을 파악하기 어려운 상황이라면 Zenius SMS의 프로세스 모니터링 기능을 활용해 서버 자원과 실제 프로세스의 관계를 함께 확인해보시기 바랍니다.


임성현 Technical Consulting팀 사진
임성현Technical Consulting팀

TC 팀에서 Zenius의 성공적인 활용을 위한 다양한 활동을 하고 있습니다.

추천 콘텐츠