Skip to main content

API 연동 가이드

OPENMARU APM의 데이터 항목에 대한 정보를 RESTAPI를 이용하여 연동할 수 있다. 본 문서에서 OPENMARU APM의 주요 RESTAPI를 이용하는 방법을 설명한다.

RESTAPI의 데이터는 JSON 포맷으로 반환된다.

공통 그래프 데이터 API를 사용하면, OPENMARU APM에서 표현할 수 있는 모든 그래프 정보는 API를 통해 호출이 가능하다.

사용자 인증 관련 API

로그인 요청 항목

요청

항목설명
URL/monitoring/api/auth/login
HTTP METHODPOST
Content-Typeapplication/json
파라미터없음
POST BODY{ "userId": "admin", "password": "2fefb853a18e46159682c77325379156bd56cd897651cace119a31500381167a" }

응답

항목설명
Response BodyResponse의 JSON 문자열의 내용은 다음 항목과 같다.
정상 로그인{ "status": 200 }
패스워드 오류{ "status": 500, "errorCode": 102020, "reason": "API_AUTH_PASSWORD_MISMATCH_ERROR" }

로그인 되어 있는지 체크

요청

항목설명
URL/monitoring/api/auth/check
HTTP METHODGET
Content-Typeapplication/json
파라미터없음

응답

항목설명
Response BodyResponse의 JSON 문자열의 내용은 다음 항목과 같다.
로그인되어 있음{ "status": 200 }
로그인되어 있지 않음{ "status":500, "errorCode":102050, "reason":"API_AUTH_NOT_LOGIN" }

POSTMAN을 이용한 로그인 API 처리 확인 방법

사용자 인증 처리를 위한 Http Method, URL, Content-Type 설정

POST와 URL을 설정한다 Content-Type을 설정한다

로그인을 위한 사용자 정보 입력

POST Body를 설정한다

로그인 요청 및 결과 확인

응답을 확인한다 ‘Send’를 클릭한다.

로그인 확인을 위한 URL 설정 후 요청/응답을 확인.

URL설정후 Send를 클릭한다 응답을 확인한다

CURL을 이용한 로그인 처리 API 확인 방법

로그인 요청 및 응답확인

 $ curl -i -H "Content-Type: application/json" -d '{"userId": "admin", "password": "2fefb853a18e46159682c77325379156bd56cd897651cace119a31500381167a"}' http://192.168.23.14/monitoring/api/auth/login
HTTP/1.1 200 OK
X-Powered-By: Undertow/1
Set-Cookie: __KSMSID__=4cddea68-f8d3-4986-a453-0b543b23f286;Path=/;HttpOnly
Set-Cookie: JSESSIONID=D0Sus7sIo8ybHdXVYjZ2K1UFlWFBayYQgXlpm-Dq.khan11; path=/monitoring
Server: WildFly/10
Content-Type: application/json; charset=UTF-8
Content-Length: 14
Content-Language: en-US
Date: Wed, 26 Apr 2017 02:30:01 GMT
Connection: close
{"status":200}

여기서 주의할 점은 로그인 요청의 응답으로 반환되는 Cookie 값 중에 KSMSID 값을 다음 API 요청에서 사용해야만 API 요청을 처리할 수 있다.

로그인 확인 요청 및 응답

아래 로그인 확인 API에서 로그인 요청에서 응답받은 Cookie값을 설정하여 요청하여야 API 처리가 된다.

  • 로그인 되어 있는 경우
$ curl -i --cookie "__KSMSID__=4cddea68-f8d3-4986-a453-0b543b23f286;Path=/;" -H "Content-Type: application/json" http://192.168.23.14/monitoring/api/auth/check
HTTP/1.1 200 OK
X-Powered-By: Undertow/1
Set-Cookie: __KSMSID__=4cddea68-f8d3-4986-a453-0b543b23f286;Path=/;HttpOnly
Set-Cookie: JSESSIONID=2OTeL_dGQG2DcwCjT0SyM0gsXk-zS_bkAzxrKSlA.khan11; path=/monitoring
Server: WildFly/10
Content-Type: application/json; charset=UTF-8
Content-Length: 14
Content-Language: en-US
Date: Wed, 26 Apr 2017 02:30:29 GMT
Connection: close
{"status":200}
  • 로그인되어 있지 않은 경우
 $ curl -i --cookie "__KSMSID__=4cddea68-f8d3-4986-a453-0b543b23f286;Path=/;" -H "Content-Type: application/json" http://192.168.23.14/monitoring/api/auth/check
HTTP/1.1 500 Internal Server Error
X-Powered-By: Undertow/1
Set-Cookie: __KSMSID__=4cddea68-f8d3-4986-a453-0b543b23f286;Path=/;HttpOnly
Set-Cookie: JSESSIONID=8LiZbTP3RiIRSbme31VKEDqUPS3JGEs5LsN3XYq6.khan11; path=/monitoring
Server: WildFly/9
Content-Type: application/json; charset=UTF-8
Content-Length: 63
Content-Language: en-US
Date: Sat, 29 Apr 2017 02:56:06 GMT
{"status":500,"errorCode":102050,"reason":"API_AUTH_NOT_LOGIN"}

HTTP Client 라이브러리를 이용한 로그인 처리

maven dependency 지정

Apache Commons Http Client 모듈을 사용하여 연동하고자 할 때, 다음과 같이 maven pom.xml 파일에 Dependency를 지정한다.

<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4.1</version>
</dependency>

로그인 처리 예제 코드

아래는 HttpClient 모듈을 사용한 로그인과 로그인 상태 체크를 위한 간략한 예제 코드이다.

주의할 점은 HttpClient 객체에 BasicCookieStore를 설정하여 Login 응답의 쿠키를 계속 사용한다는 것이다.

package test;

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.DefaultHttpClient;

import java.io.BufferedReader;
import java.io.InputStreamReader;

/**
* Created by Opennaru, Inc.
*/
public class TestHttpClientCookie {

public static void main(String args[]) throws Exception {
String LOGIN_JSON_STRING = "{\n" +
"\t\"userId\": \"admin\", \n" +
"\t\"password\": \"2fefb853a18e46159682c77325379156bd56cd897651cace119a31500381167a\"\n" +
"}";

// Cookie Store
BasicCookieStore cookieStore = new BasicCookieStore();

DefaultHttpClient client = new DefaultHttpClient();
client.setCookieStore(cookieStore);

// HTTP POST Login
HttpPost httpLoginPost = new HttpPost("http://192.168.23.14/monitoring/api/auth/login");

StringEntity requestEntity = new StringEntity(
LOGIN_JSON_STRING,
ContentType.APPLICATION_JSON);

httpLoginPost.setEntity(requestEntity);

HttpResponse loginResponse = client.execute(httpLoginPost);
System.out.println("Send Login Request");

if (loginResponse.getStatusLine().getStatusCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ loginResponse.getStatusLine().getStatusCode());
}

BufferedReader loginBufferedReader = new BufferedReader(
new InputStreamReader((loginResponse.getEntity().getContent())));

String loginOutput;
System.out.println("Login Result from Server ....");
while ((loginOutput = loginBufferedReader.readLine()) != null) {
System.out.println(loginOutput);
}


HttpGet checkRequest = new HttpGet("http://192.168.23.14/monitoring/api/auth/check");
checkRequest.setHeader("Content-Type", "application/json");

HttpResponse checkResponse = client.execute(checkRequest);
System.out.println("Send Login Check Request");

if (checkResponse.getStatusLine().getStatusCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ checkResponse.getStatusLine().getStatusCode());
}

BufferedReader checkBufferedReader = new BufferedReader(
new InputStreamReader((checkResponse.getEntity().getContent())));

String checkOutput;
System.out.println("Login Check Result from Server .... ");
while ((checkOutput = checkBufferedReader.readLine()) != null) {
System.out.println(checkOutput);
}

}
}

실행 결과

예제 코드의 실행 결과는 다음과 같다.

Send Login Request
Login Result from Server ....
{"status":200}
Send Login Check Request
Login Check Result from Server ....
{"status":200}

Health Check

항목설명
URL/monitoring/api/check/healthCheck
URL 요청 예시/monitoring/api/check/healthCheck
HTTP METHODGET
Content-Typeapplication/json; charset=UTF-8
Body
Response{"status": 200}

Health Check

항목설명
URL/monitoring/api/check/healthCheck
URL 요청 예시/monitoring/api/check/healthCheck
HTTP METHODGET
Content-Typeapplication/json; charset=UTF-8
Body
Response{"status": 200}