Open API (Server)

제목 : Open API
작성자 : WhaTap Support
이메일 : support@whatap.io
날짜 : 2019-10-30
버전 : 1.0.0

설명 : 본 문서는 WhaTap 모니터링에서 제공하는 Server Monitoring의 Open API 가이드 입니다.

수집중인 모니터링 정보를 추출하여 별도로 활용하고자 하는 경우 Open API 를 통해 해당 정보를 추출할 수 있는 기능을 제공합니다. 계정 API토큰 및 프로젝트 API토큰 및 프로젝트 코드를 파라메타로 전달하여 수집된 정보를 획득할 수 있습니다.

1. Open API Token 확인

토큰은 계정 API토큰과 프로젝트 API토큰으로 구분됩니다. 계정 API 토큰은 프로젝트의 목록 정보를 취득하기 위한 용도로, 프로젝트 API 토큰은 프로젝트의 모니터링 정보를 취득하기 위한 용도로 활용됩니다.

프로젝트 코드는 프로젝트 진입 시, 화면 상단의 윈도우 또는 탭 제목에 "[{프로젝트 코드}] Cloud Application Monitoring"와 같이 표시되는 정보를 통해 확인하실 수 있습니다. API토큰을 변경하고자 하는 경우, 각 화면의 재발급 또는 토큰 재발급 버튼을 통하여 토큰을 갱신 합니다.

계정 토큰은 화면 우측 상단의 계정 이메일을 클릭하여 표시되는 계정 수정 버튼을 클릭한 후 API토큰에서 확인합니다.

modify account
Figure 1. 이메일 | 계정 수정
token by user
Figure 2. API 토큰

프로젝트 토큰은 프로젝트 진입 후 관리 | 프로젝트 관리 메뉴를 통해 확인할 수 있습니다.

open api token
Figure 3. 관리 | 프로젝트 관리 - 프로젝트 API 토큰

2. Open API Spec

2.1. 계정 API

프로젝트 목록 조회 등, 프로젝트의 권한 범위를 넘는 Open API의 경우 계정 API토큰을 사용하여 호출합니다.

Open API 호출 시 헤더에 포함될 내용은 다음과 같습니다.

구분 설정 값 비고

헤더

x-whatap-token

API토큰

계정 API토큰: 계정 수정 메뉴

프로젝트 API토큰: 관리 > 프로젝트 관리 메뉴

메타성 정보 조회용 Open API 호출 URL 입니다.

URL 설명

https://service.whatap.io/open/api/json/projects

프로젝트 목록 조회

https://service.whatap.io/open/json/project

프로젝트 정보 및 상세서버 조회

2.2. 프로젝트 API

프로젝트 권한 범위 내의 Open API의 경우 프로젝트 코드와 함께 프로젝트 API토큰을 사용하여 호출합니다.

Open API 호출 시 헤더에 포함될 내용은 다음과 같습니다.

구분 설정 값 비고

헤더

x-whatap-token

API토큰

계정 API토큰: 계정 수정 메뉴

프로젝트 API토큰: 관리 > 프로젝트 관리 메뉴

x-whatap-pcode

프로젝트 코드

화면 윈도우 또는 탭 타이틀에서 확인

"[{프로젝트 코드}] Cloud Application Monitoring"

2.2.1. 메타 정보 조회 URL

메타성 정보 조회용 Open API 호출 URL 입니다.

구분 URL

프로젝트 정보 조회

https://service.whatap.io/open/api/json/project

프로젝트 정보 및 상세서버 조회

https://service.whatap.io/open/json/project

2.2.2. Spot 정보 조회 URL

Spot 정보 조회용 Open API 호출 URL 입니다.

구분 URL

활성화 상태의 에이전트 수

https://service.whatap.io/open/json/act_agent

비활성화 상태의 에이전트 수

https://service.whatap.io/open/json/inact_agent

호스트 수

https://service.whatap.io/open/json/host

호스트의 CPU 코어 합

https://service.whatap.io/open/json/cpucore

CPU 사용률

https://service.whatap.io/open/json/infra_cpu

디스크 IOPS 합계

https://service.whatap.io/open/json/infra_disk_iops

네트워크 트래픽(IN/OUT) 합산

https://service.whatap.io/open/json/infra_net_traffic

프로세스 현황

https://service.whatap.io/open/json/sm_proc

서버 목록

https://service.whatap.io/open/json/sm_servers

서버 모니터링 상세

https://service.whatap.io/open/json/sm

서버 통계 상세

https://service.whatap.io/open/json/stat/sm_stat

3. Open API 호출

Open API 호출 시에는 계정 API토큰 또는 프로젝트 코드와 프로젝트 API토큰을 헤더로 전송합니다. 본 문서에서는 curl을 통한 호출 예시를 제시합니다.

3.1. 프로젝트 목록 조회

command
$ curl -L -w "\n" -H "x-whatap-token: J************************A" "https://service.whatap.io/open/api/json/projects"
response
{
"data": [ {
      "groupName": "",
      "projectCode": ****,
      "projectName": "SERVER_TEST",
      "createTime": "2018-10-19 07:17:03.774",
      "lastUpdatedTime": "2018-10-19 07:46:05.167",
      "status": "subscribe",
      "productType": "SMS",
      "platform": "INFRA",
      "gatewayName": "LOCAL",
      "apiToken": "5**********************R"
}, {
}, ()
  ],
  "accountEmail": "xxx@whatap.io",
  "total": 6
}

3.2. 프로젝트 정보 조회

command
$ curl -L -w "\n" -H "x-whatap-token: J************************A" -H "x-whatap-pcode: 1**1" "https://service.whatap.io/open/api/json/project"
response
{
"platform": "INFRA",
"createTime": "Tue Sep 18 08:34:27 GMT 2018", "gatewayName": "Office-OTE",
"projectCode": ****,
"status": "Subscribe",
"lastUpdatedTime": "Tue Sep 18 08:34:34 GMT 2018", "name": "SERVER_TEST",
"productType": "SMS"
}

3.3. 프로젝트 정보 및 상세서버 조회

command
$ curl -L -w "\n" -H "x-whatap-token: J************************A" -H "x-whatap-pcode: 1**1" "https://service.whatap.io/open/json/project"
response
{
"pname":"LOCAL_PC",
"timezone":9,
"regionName":"LOCAL",
"values":{
"servers":[
{
"public_ip":"192.168.1.0",
"os_cpuvendor":"Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz",
"agent_created":"1572406071216",
"ip":"192.168.1.0",
"os_arch":"amd64",
"actTime":1572406264112,
"cpu_cores":"8",
"oid":-1030311093,
"isActive":true,
"okind":"",
"version":"1.2.4",
"tags":[
"network:169.254.0.0/16",
"network:192.168.1.0/24",
"java",
"OpenVpn",
"oracle",
"ftp"
],
"inactTime":0,
"oname":"DESKTOP-KEIPLT5",
"os_name":"windows",
"startTime":1572406263602,
"os_memory":"17036419072",
"os_status":"warning"
},
()

3.4. Spot 정보 조회

3.5. 활성화 상태의 에이전트 수

command
$ curl -w "\n" -H "x-whatap-pcode: 1" -H "x-whatap-token: Y**********************U" "https://service.whatap.io/open/json/act_agent"
response
{"pname":"LOCAL_INFRA","values":"57.0"}

3.6. 비활성화 상태의 에이전트 수

command
$ curl -w "\n" -H "x-whatap-pcode: 1" -H "x-whatap-token: Y**********************U" "https://service.whatap.io/open/json/inact_agent"
response
{"pname":"LOCAL_INFRA","values":"4.0"}

3.7. 호스트 수

command
$ curl -w "\n" -H "x-whatap-pcode: 1" -H "x-whatap-token: Y**********************U" "https://service.whatap.io/open/json/host"
response
{"pname":"LOCAL_INFRA","values":"57.0"}

3.8. 호스트의 CPU 코어 합

command
$ curl -w "\n" -H "x-whatap-pcode: 1" -H "x-whatap-token: Y**********************U" "https://service.whatap.io/open/json/cpucore"
response
{"pname":"LOCAL_INFRA","values":"108.0"}

3.9. CPU 사용률

command
$ curl -w "\n" -H "x-whatap-pcode: 1" -H "x-whatap-token: Y**********************U" "https://service.whatap.io/open/json/infra_cpu"
response
{
  "pname": "LOCAL_INFRA",
  "values": {
    "s-p-gtw-03": 2.802803,
    "t-a-yrd-01": 8.709015,
    ()
  }
}

3.10. 디스크 IOPS 합계

command
$ curl -w "\n" -H "x-whatap-pcode: 1" -H "x-whatap-token: Y**********************U" "https://service.whatap.io/open/json/infra_disk_iops"
response
{
  "pname":"LOCAL_INFRA",
  "values":{
    "s-a-yrd-01-1": {
      "bps": 4447.892,
      "iops": 0.77481234
    },
    "h-i-yrd-02": {
      "bps": 6203241.5,
      "iops": 396.4099
    },
    ()
  }
}

3.11. 네트워크 트래픽(IN/OUT) 합산

command
$ curl -w "\n" -H "x-whatap-pcode: 1" -H "x-whatap-token: Y**********************U" "https://service.whatap.io/open/json/infra_net_traffic"
response
{
  "pname":"LOCAL_INFRA",
  "values":{
    "s-p-gtw-03": 4487137.014340188,
    "t-a-yrd-01": 2500277.566511181,
    ()
  }
}

3.12. 프로세스 현황

command
$ curl -w "\n" -H "x-whatap-pcode: 1" -H "x-whatap-token: Y**********************U" "https://service.whatap.io/open/json/sm_proc"
response
{
  "pname":"LOCAL_INFRA",
  "values":{
    "s-p-gtw-03": [
      {
        "memoryBytes": 1274269696,
        "bps": 819.2,
        "cmd1": "java",
        "cpu": 2.8507125
      },
      {
        "memoryBytes": 2895872,
        "bps": 0,
        "cmd1": "rsyslogd",
        "cpu": 0
      },
      ()
    ],
    "t-a-yrd-01": [
      {
        "memoryBytes": 2583621632,
        "bps": 1175961.5,
        "cmd1": "java",
        "cpu": 10.621243
      },
      ()
    ],
    ()
  }
}

3.13. 서버 목록

command
$ curl -w "\n" -H "x-whatap-pcode: 1" -H "x-whatap-token: Y**********************U" "https://service.whatap.io/open/json/sm_servers"
response
{
  "pname":"LOCAL_INFRA",
  "values":[
    {
      "os.status": "ok",
      "oname": "h-db-prx-01",
      "os.name": "linux",
      "oid": -1359816680,
      "isActive": true
    },
    {
      "os.status": "ok",
      "oname": "h-db-prx-02",
      "os.name": "linux",
      "oid": 1745981315,
      "isActive": true
    },
    ()
  ]
}

3.14. 서버 모니터링 상세

command
$ curl -w "\n" -H "x-whatap-pcode: 1" -H "x-whatap-token: Y**********************U" "https://service.whatap.io/open/json/sm"
response
{
  "pname":"LOCAL_INFRA",
  "values":{
    "servers": [
      {
        "public_ip": "192.168.0.1",
        "os_cpuvendor": "Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz",
        "agent_created": "49572130779",
        "ip": "127.0.0.1,10.128.0.1",
        "os_arch": "amd64",
        "actTime": 1570672662216,
        "cpu_cores": "1",
        "oid": -1359816680,
        "isActive": true,
        "version": "1.2.5",
        "tags": [
          "gateway",
          "python",
          "network:10.0.0.0/8",
          "@PRX"
        ],
        "inactTime": 0,
        "oname": "h-db-prx-01",
        "os_name": "linux",
        "startTime": 1570672662000,
        "os_memory": "2088476672",
        "os_status": "ok",
        "snapshot": {
          "disk": {
            "/boot": {
              "writeIops": 0,
              "fileSystem": "ext4",
              "mountPoint": "/boot",
              "queueLength": 0,
              "usedSpace": 58863616,
              "blksize": 4096,
              "freeSpace": 841175040,
              "display": true,
              "count": 1,
              "readBps": 0,
              "totalSpace": 966778880,
              "ioPercent": 0,
              "mountOption": "rw,relatime",
              "deviceId": "/dev/sda1",
              "usedPercent": 6.540122985839844,
              "freePercent": 93.45987701416016,
              "writeBps": 0,
              "readIops": 0
            },
            "/home": {
              "writeIops": 0,
              "fileSystem": "ext4",
              "mountPoint": "/home",
              "queueLength": 0,
              "usedSpace": 1670574080,
              "blksize": 4096,
              "freeSpace": 69533446144,
              "display": true,
              "count": 1,
              "readBps": 0,
              "totalSpace": 75039498240,
              "ioPercent": 0,
              "mountOption": "rw,relatime",
              "deviceId": "/dev/sda3",
              "usedPercent": 2.3461761474609375,
              "freePercent": 97.65382385253906,
              "writeBps": 0,
              "readIops": 0
            },
            "/": {
              "writeIops": 0,
              "fileSystem": "ext4",
              "mountPoint": "/",
              "queueLength": 0,
              "usedSpace": 5079060480,
              "blksize": 4096,
              "freeSpace": 22798901248,
              "display": true,
              "count": 1,
              "readBps": 0,
              "totalSpace": 29394726912,
              "ioPercent": 0,
              "mountOption": "rw,relatime",
              "deviceId": "/dev/sda2",
              "usedPercent": 18.218902587890625,
              "freePercent": 81.78109741210938,
              "writeBps": 0,
              "readIops": 0
            }
          },
          "memory": {
            "shared": 21590016,
            "swapused": 0,
            "buffers": 182550528,
            "available": 1746370560,
            "swaptotal": 0,
            "used": 342106112,
            "pused": 16.380653381347656,
            "slab": 85729280,
            "total": 2088476672,
            "sunreclaim": 23261184,
            "cached": 521756672,
            "pavailable": 83.61934661865234,
            "pagefaults": 0,
            "sreclaimable": 62468096,
            "free": 1167208448,
            "swappused": 0
          },
          "cpu": {
            "softirq": 0,
            "usr": 0,
            "idle": 100,
            "steal": 0,
            "irq": 0,
            "load5": 0,
            "iowait": 0,
            "sys": 0,
            "nice": 0,
            "load1": 0,
            "load15": 0
          },
          "open_filedescriptors": 249,
          "netstat": {
            "established": 1,
            "syn_sent": 1,
            "syn_recv": 0,
            "closing": 0,
            "time_wait": 19,
            "last_ack": 0,
            "fin_wait1": 0,
            "close_wait": 0,
            "fin_wait2": 0,
            "listen": 3,
            "unknown": 0
          },
          "uptime": 16313689,
          "network": {
            "lo": {
              "errorOut": 0,
              "packetOut": 0.3991734786600438,
              "trafficIn": 281.0181289766709,
              "trafficOut": 281.0181289766709,
              "hwAddr": "",
              "errorIn": 0,
              "ip": "127.0.0.1",
              "count": 1,
              "droppedIn": 0,
              "droppedOut": 0,
              "packetIn": 0.3991734786600438,
              "desc": "lo"
            },
            "eth0": {
              "errorOut": 0,
              "packetOut": 8.1830563125309,
              "trafficIn": 11314.173079140282,
              "trafficOut": 19447.731880317337,
              "hwAddr": "00:1d:d8:b7:87:18",
              "errorIn": 0,
              "ip": "10.128.112.133",
              "count": 1,
              "droppedIn": 0,
              "droppedOut": 0,
              "packetIn": 24.549168937592693,
              "desc": "eth0"
            }
          }
        }
      },
      ()
    ],
    "max": {
      "disk": {
        "writeIops": 240.9893,
        "usedPercent": 94.38699,
        "freePercent": 100,
        "usedSpace": 2.46495681E+12,
        "freeSpace": 0,
        "writeBps": 2917852,
        "readBps": 118646.15,
        "readIops": 75.80727,
        "totalSpace": 9.223372E+18,
        "ioPercent": 100,
        "freespace": 1.58926471E+11
      },
      "nic": {
        "errorOut": 0,
        "packetOut": 2175.8743,
        "trafficIn": 4856648,
        "trafficOut": 2503208.8,
        "errorIn": 1,
        "droppedIn": 1,
        "droppedOut": 0,
        "packetIn": 2175.8743
      },
      "compound_eye_traffic": 1000000000
    },
    "count": {
      "total": 14,
      "paused": 0,
      "inactive": 0,
      "warning": 1,
      "ok": 13,
      "close": 0,
      "fatal": 0
    },
    "tags": {
      ()
    }
  }
}

3.15. 서버 통계 상세

command
$ curl -w "\n" -H "x-whatap-pcode: 1" -H "x-whatap-token: Y**********************U" "https://service.whatap.io/open/json/stat/sm_stat?stime=시작UTC&etime=종료UTC&filter=m5&oid=0"
[parameter 설명]
	1. oid : 특정 서버만 모니터링을 원할시에 추가
	2. (*)stime : 시작 시간 UTC
	3. (*)etime : 종료 시간 UTC
	4. filter : 기본적으로 m5 가 지동으로 지정. 시간 범위 내에 5분 통계를 가지고 올때 m5 사용
	            5초 통계는 s5 , 1시간 통계는 h1 사용
response
{
        "servers":[
                {
                        "oid":-1030311093 ,
                        "timeData":[
                                "
                                {
                                "usedPercent":69.1,
                                "trafficIn":12113.57,
                                "trafficOut":24781.08,
                                "cpu":4.08,
                                "memory_swappused":15.41,
                                "time":1572341400000,
                                "memory_pused":47.6,
                                "ioPercent":0.26
                                },
                                {
                                "usedPercent":69.1,
                                "trafficIn":12183.97,
                                "trafficOut":25600.59,
                                "cpu":7.89,
                                "memory_swappused":15.5,
                                "time":1572341700000,
                                "memory_pused":47.79,
                                "ioPercent":0.22
                                },
                        (생략)
                        ],
                } ,
                (중략)
        ]
}