[와탭 활용 팁 #1] 와탭을 이용한 서버의 프로세스 모니터링

와탭을 이용하여 서버에서 실행 중인 프로세스를 모니터링하는 방법에 대해 알아봅니다.

와탭은 서버 모니터링에 있어 가장 중요한 CPU, Memory, Disk, Traffic의 성능 지표를 매 분마다 수집하여 사용자에게 알려주고 있습니다. 이 외에도 서버에서 실행 중인 프로세스 역시 서버의 자원을 사용하기 때문에 주요 성능지표와 마찬가지로 모니터링의 필요성이 매우 높습니다.

와탭의 프로세스 모니터링은 크게 CPU, Memory 관점에서 바라본 프로세스의 서버 자원 사용량과 프로세스의 관점에서 바라본 CPU와 Memory 사용량, 그리고 실행 중인 프로세스 개수로 나눌 수 있습니다.

 
[CPU]

20151223_1.cpu

이 페이지에서는 기본적으로 해당 서버의 CPU 사용율 및 CPU Idle 사용율을 차트 그래프를 이용하여 표시하고 있습니다. 또한 CPU의 관점에서 각 프로세스가 CPU 자원을 얼마나 사용하고 있는지 백분율로 파악할 수 있습니다.

 
[MEMORY]

20151223_2.memory

이 페이지에서는 해당 서버의 전체 Memory의 사용율 및 실제 Memory의 사용량을 차트 그래프로 확인할 수 있습니다. 또한 Memory의 관점에서 각 프로세스가 Memory 자원을 얼마나 사용하고 있는지 실제 사용량을 볼 수 있습니다.

 
[프로세스]

20151223_3.process

선택된 프로세스의 관점에서 서버의 CPU 자원 사용율, Memory 자원 사용량, 실행 중인 프로세스의 개수를 파악할 수 있습니다. 각 지표는 항목 별로 오름 / 내림차순 별 정렬이 가능하므로 특정 자원의 사용량 순을 파악하기에 용이합니다.

아울러 프로세스 알림을 설정하면 해당 프로세스가 실행되지 않을 때 사용자에게 즉각적인 알림을 보내게 됩니다.

 
 
*프로세스 알림 설정 방법

  1. 각 자원 사용량 우측에 위치한 프로세스 알림 박스를 체크합니다.

    20151223_6.check 

  2. 설정에 대한 성공 메시지가 정상적으로 발생하는지 확인합니다.

    20151223_7.success 

  3. 이후 해당 프로세스가 실행되지 않으면 이메일, 문자, 앱 알림 등을 통해 사용자에게 즉각적으로 알려줍니다.

Selenium 을 이용한 Web 어플리케이션 테스트 자동화(3) – TestNG를 이용한 데이터 주도(Data-driven) 테스트 맛보기

“데이터 주도 테스트” 많이들 들어 보셨을 것입니다. 말 그대로 데이터 기반의 테스트를 진행한다는 의미입니다. Selenium 을 이용해서 Regression Test 와 기능 테스트등을 수행할 때 같은 기능들을 여러번 수행하거나 같은 스텝의 기능에 입력값 만 바뀌는 시나리오들이 있을 수 있습니다. 다량의 데이터를 기반으로 데이터만 바꿔서 테스트 하는 데이터 주도 테스트 접근법을 사용할때 CSV, Excel, DataBase 등 을 Data Source로입력 받아 테스트를 수행할 수있습니다.

아쉽게도 셀레늄에서는 데이터 주도 테스트를 할 수 있는 API를 제공하지 않고 있습니다. 하지만 Java 기반이기에 JAVA 에서 사용하는 기법들을 적용해서 데이터 주도 테스트를 수행할 수 있습니다.

그럼 TestNG를 이용해서 테스트를 만들어 보겠습니다.

Test 시나리오

Whatap 에는 조직에 사용자를 초대 하는 기능이 있습니다. 조직에 초대된 사용자는 Whatap 의 기능을 이용할 수 있습니다. Admin 사용자와 User 사용자로 사용자를 초대하는 기능이 있습니다. 1명의 사용자를 초대하는 시나리오를 보면 아래와 같습니다.

코드 작성하기

셀레늄으로 만들면 아래와 같습니다.

 

간단한 Step 으로 이루어진 아주 간단한 시나리오입니다.

하지만 100 명의 사용자를 추가하려면? 난감해집니다.

qa2@whatap.io/Admin qa3@whatap.io/User … qa99@whatap.io/Admin

DataProvider Annotation 이용하기

이때 TestNG 를 이용해서 데이터 주도의 테스트를 하면 됩니다. 이전 블로그에서 간단하게 TestNG를 이용해서 Selenium 을 이용해 보았습니다. JAVA 를 이용하시는 분들은 대부분 TestNG를 알고 있을것입니다. Junit 과 같은 test automationframework 중 하나입니다. TestNG 에서 제공하는 DataProvider Annotation 을 이용해서 저희는 데이터 주도(Data-driven) 테스트를 할수 있습니다.

메소드가 @DataProvider로 시작하면 데이터를 테스트 케이스로 전달하는 데이터 메소드가됩니다. 위의 Data 배열에서 한행씩 테스트 메소드로 절달되게 됩니다. 이전달 받은 데이터를 이용해서 사용하려면 @Test(dataProvider = “userData”) Annotation 을 이용하면 됩니다.

@DataProvider에 6개의 Object가 총 6번의 테스트를 수행하게 됩니다.

이상으로 TestNG를 이용해서 Data-Driven 테스트를 수행해 보았습니다.

조금더 쉬운 이해를위해 전체 Code 를 참고해보시기 바랍니다.

테스트 수행 순서는 아래와 같습니다.

  1. 로그인 하기
  2. 사용자 초대 하기

감사합니다.

데브 옵스로 경쟁사보다 30배 많은 코드 배포를 경험하다.

데브 옵스란 문화를 만들어 가는 것입니다.

DevOps(Development + Operations)는 소프트웨어를 배포를 자동화하고 인프라를 변경하는 과정에서 소프트웨어 개발자와 타 분야 IT 전문가들의 협업과 대화를 강조하는 문화, 움직임 또는 행동이라 할수 있습니다. 데브 옵스는더 빠른, 더 빈번한 그리고 안정적인 빌드, 테스트, 소프트웨어 릴리즈가 가능한 문화와 환경을 만들어 가는 것을 목표로 합니다.

개발 주기의 극적인 변화

2000년대 중반까지도 소프트웨어를 만드는데 필요한 개발 주기는 작은 프로젝트라해도 1년 이상을 잡았습니다. 수 개월간 기획을 하고 개발을 완료하면 품질 관리부서가 테스트를 진행하였습니다. 수많은 테스트를 완료하고 나서야 제품이 고객에게 인도될 수 있었습니다. 이런 작업 방식은 서비스까지도 이어졌죠. 개발팀이 개발을 완료하면 운영팀이 들어가서 서비스를 운영하는 것이 너무나도 당연하였습니다. 하지만 2000년대 후반부터 조금씩 변화의 조짐이 나오기 시작했습니다. 스타트업에서 부터 점점 더 짧은 개발 주기에 대한 이야기들이 나오기 시작한 것입니다. 대표적인 방식이 린 스타트업이였죠. 그리고 페이스북 같이 매일 서비스를 릴리즈 하는 기업들이 나타나게 됩니다.이렇게 개발 주기의 극적인 변화와 함께 개발과 운영의 경계가 무너지기 시작하게 되었고 데브 옵스는 이런 움직임을 이끌어 가고 있습니다.

데브 옵스, 더 자주 코드를 배포하다.

데브 옵스의 프랙틱스를 실행하는 회사들은 더 많은 것들을 완료해 나가고 있습니다. Puppet Labs에 따르면 데브 옵스의 회사들은 일반적으로 경쟁사들보다 30배 더 코드를 배포하며 배포가 실패하는 확률은 50% 이상 줄어들었습니다. 데브 옵스 환경안에서 가장 큰 변화는 개발자, 품질관리자, DBA, 비즈니스 분석가, 운영자 가 하나의 팀으로 구성된다는 것입니다. 이렇게 다양한 멤버들이 하나의 팀으로 구성된다는 것은 다음과 같은 이점을 제공해 줍니다.

기술 장점 :

소프트웨어의 지속적인 제공이 가능해 집니다. 해결해야 할 문제의 복잡도를 낮출 수 있습니다. 문제를 다양한 관점에서 빠르게 해결할 수 있습니다.

비즈니스 이점 :

고객에게 기능을 더 빠르게 제공합니다. 보다 안정적인 운영 환경을 구축할 수 있습니다. 유지와 보수에 들어가는 시간보다 더 많은 시간을 가치를 제공하는데 사용할 수 있습니다.

데브 옵스와 서비스의 지속적인 개선

이전에는 기획, 개발, 운영이라는 사이클 상에서 서비스가 이루어 졌습니다. 하지만 린 스타트업은 개발과 운영 과정에서 나온 데이터를 기반으로 기획을 하게 되죠. 그런 의미에서 지속적인 소프트웨어 배포는 서비스를 성공으로 이끄는 거대한 두개의 요소를 가지고 있습니다. 먼저, 아이디어에서 작동하는 소프트에어까지의 초기 프로젝트 개발 기간을 단축할 수 있습니다. 그리고 우리는 실행 속도, 판매, 가입과 같은 측정 가능한 것들을 지속적으로 개선하는 과정에서 더 많은 것들을 경험할 수 있습니다.

기능을 자주 추가하면 안정성이 떨어지더라.

개발과 운영이 분리된 환경에서는 새로운 기능을 배포하는 것과 운영적 안정성을 유지하는 것 사이에서 갈등이 발생하는 경우가 있습니다. 개발팀은 새로운 기능을 더 많이 배포하는 것으로 인정받으며 운영팀은 안정적으로 시스템을 운영해야지만 인정받을 수 있기 때문입니다. 여기서 발생되는 다양한 이슈들은 과거 몇년간 많은 조직의 고민이였습니다.

데브 옵스 환경에서는 개발과 운영이 하나의 팀이며 새로운 기능과 안정성에 대한 책임을 모두 가지게 됩니다. 더이상 운영과 코드의 경계가 존재하지 않기 때문에 코드의 공유, 지속적인 통합, 테스트 기반의 개발 기술들과 자동 배포의 조합을 통해 어플리케이션 코드, 인프라의 구성 또는 설정에서 발생되는 문제를 더 빠르게 찾아낼 수 있습니다. 또한 잦은 배포로 인해 변화의 크기가 작아지면 작아질 수록 문제의 복잡도는 점점 더 떨어지는 경향이 있습니다. 팀이 분리되어 있지 않기 때문에 트러블슈팅과 수정이 한 팀에서 이루어지며 문제를 해결하는 시간은 더 단축됩니다.

개발팀과 운영팀을 합치면 데브 옵스인가?

데브 옵스는 자동화된 배포와 표준화 된 생산 환경등으로 일상적인 반복 작업을 없애는 것이 핵심입니다. 이런 목표를 만들어 가는 과정에서 개발팀과 운영팀이 합쳐지는 것입니다. 운영팀이 일상적으로 책임져야 하는 단순 업무가 많다면 이런 것들을 개발팀과 함께 줄여가야 합니다. 이런 활동에 도움을 주는 다양한 오픈 소스와 좋은 서비스들이 정말 많습니다. 와탭 과 같은 서버 모니터링 서비스 또한 이런 흐름에서 만들어진 좋은 서비스입니다. 데브 옵스는 린 스타트업과 함께 현재의 개발 흐름을 대표하는 움직임 중에 하나입니다. 데브 옵스를 통해 많은 회사들이 개발과 운영의 벽을 허무는 과정에서 더 빠른 릴리즈와 더 안정적인 환경을 만들어 갈 수 있으면 합니다.

관련 글

https://en.wikipedia.org/wiki/DevOps http://newrelic.com/devops/benefits-of-devops

Windows Whatap Agent 자동 업데이트 하기

와탭 Agent가 업데이트 될 때 마다 서버에 접속하여 업데이트 명령 혹은 설치파일을 실행하는것은 설치 대수가 많으면 힘든 일 일수 있습니다. vbscript 와 windows scheduler를 통해서 주기적으로 업데이트를 확인하고 신버젼 발견시 업데이트를 하는 방법에 대해 적어보겠습니다.

1. Windows Whatap Agent 설치

Whatap에 가입하고 윈도우 서버에 Whatap Agent를 설치합니다. 설치방법은 와탭에 로그인 후 왼쪽 메뉴의 서버추가를 클릭하시면 볼 수 있습니다.

2. 서버에 업데이트 설정 추가

1) pc 에서 브라우져를 열어

에 접속하여 파일을

로 저장합니다.

2) 서버의 c:\program files\whatap 폴더에 위에서 다운로드 받은 파일을 복사합니다.

3) 서버에서 명령 프로프트 창을 엽니다.

4) 아래와 같이 입력하면 매일 오전 9시에 와탭 Agent의 버젼을 체크하고 신버젼 발견시 다운로드 합니다. 관리자패스워드란에는 서버의 실재 패스워드를 입력합니다.

5) 서버에서 Windows+R 을 눌러 Taskschd.msc 를 입력해 scheduler를 실행합니다. 아래 사진과 같이 업데이트 스케줄러가 등록된 것을 알 수 있습니다.

20151206_TaskScheduler

 

마치면서

리눅스와 달리 윈도우에는 apt-get이나 yum이 없어 설치파일이 반드시 필요합니다. SystemCenter나 chef를 이용하여 업데이트를 할 수 없는 환경에서 간단한 vbscript로 자동 업데이트를 할 수 있도록 구성하여 보았습니다. 서버관리시 불편함을 조금이나마 덜 수 있으면 좋겠습니다.