2021년 3월 15일 월요일

vRealize Log Insight 의 REST API 호출해서 로그 가져오기

vRealize Log Insight 의 REST API 호출해서 로그 가져오기





1. vRLI 가 제공하는 REST API 를 사용하기 위해서는 아래와 같이 id, pw 를 가지고 호출해서 리턴값 중에 session ID 라 불리는 토큰을 획득한 다음, 로그 등을 가져오는 API를 호출해야 함

curl -k -X POST https://loginsight.example.com:9543/api/v1/sessions \
    -d '{"username":"admin","password":"Secret!","provider":"Local"}'
{
  "userId":"3c1b81cc-418e-44c0-b91a-54e10a87b1d3",
  "sessionId":"1234abcd-opaque-bearer-token-abcdlS7QF2hkqVho==",
  "ttl":1800
}

2. 위 sessionId 값을 아래와 같이 HTTP 프로토콜의 Authorization 헤더값으로 사용해서 필요한 API 를 호출하면 됨

curl -k https://loginsight.example.com:9543/api/v1/sessions/current \

    --header "Authorization: Bearer 1234abcd-opaque-bearer-token-abcdlS7QF2hkqVho=="

{

  "userId":"3c1b81cc-418e-44c0-b91a-54e10a87b1d3"

}

* 단 주의할 것은 대부분의 인증 토큰은 유효기간이 있는데, vRLI 도 마찬가지로 유효기간이 있고 그 값은 위 ttl : 1800(초) 임

즉 토큰 발급 후 1800초 가 지나면 expire 되어 API 호출하면 Timeout 되었다는 식의 에러가 리턴됨


3. 특정 문구를 포함하는 로그만 가져오기

아래 예는 Test 문구를 포함하는 로그를 가져옴

CONTAINS Test 를 URL encode 하면 CONTAINS%20Test
curl -k https://loginsight.example.com:9543/api/v1/events/text/CONTAINS%20Test \
    --header "Authorization: Bearer 1234abcd-opaque-bearer-token-abcdlS7QF2hkqVho=="


4. 특정 ESXi 호스트에서 발생하는 로그만 가져오기

CONTAINS devhost 를 URL encode 하면 CONTAINS%20devhost
curl -k https://loginsight.example.com:9543/api/v1/events/hostname/CONTAINS%20devhost \
    --header "Authorization: Bearer 1234abcd-opaque-bearer-token-abcdlS7QF2hkqVho=="


5. vmkernel.log 같이 특정 로그 파일만 가져오기

appname/CONTAINS 에 vmkernel 입력
curl -k https://loginsight.example.com:9543/api/v1/events/appname/CONTAINS%20vmkernel \
    --header "Authorization: Bearer 1234abcd-opaque-bearer-token-abcdlS7QF2hkqVho=="

다른 특정 로그 파일은 appname/CONTAINS 에 다른 값을 입력하면 됨
vmkwarning.log -> vmkwarning
fdm.log -> fdm
vobd.log -> vobd
hostd.log -> hostd

* syslog.log 파일은 appname syslog 로 검색되지 않고, 아래와 같이 syslog.log 파일에 있는 각 로그에서 :(콜론) 으로 구분된 앞의 이름을 appname/ 에 넣어야 검색 됨
아래 같은 경우 appname 이 crond, backup.sh, sfcb-vmware_base 이렇게 구분 됨


2021-03-12T05:01:00Z crond[2099226]: USER root pid 3612231 cmd /sbin/auto-backup.sh
2021-03-12T05:01:01Z backup.sh[3612258]: Locking esx.conf
2021-03-12T05:01:01Z backup.sh[3612258]: Creating archive
2021-03-12T05:01:01Z backup.sh[3612258]: Unlocking esx.conf
2021-03-12T05:02:34Z sfcb-vmware_base[2100821]: VMwareHypervisorStorageExtent::fillVMwareHypervisorStorageExtentInstance - Problem instantiating instance.


6. 특정 호스트에서 발생하는 특정 로그 파일만 가져오기

curl -k https://loginsight.example.com:9543/api/v1/events/hostname/CONTAINS%20devhost/appname/CONTAINS%20vmkernel \
--header "Authorization: Bearer 1234abcd-opaque-bearer-token-abcdlS7QF2hkqVho=="


7. 특정 호스트에서 발생하는 특정 로그 파일을 특정 기간 발생한 로그만 가져오기

timestamp/ 뒤에 시간값을 입력하는 이상, 이하, 미만, 초과 등의 값이 가능함
시간값은 epch time 이고 밀리세컨드 단위임
아래 예제 timestamp/%3E%3D1615680000000 -> timestamp/>=1615680000000
1615680000000 밀리세컨드 -> 2021년 March 14일 Sunday AM 12:00:00
timestamp/%3C%3D1615766399000 -> timestamp/<=1615766399000
Epoch time 변환은 다음 사이트 참고 (https://www.epochconverter.com/)


curl -k https://loginsight.example.com:9543/api/v1/events/hostname/CONTAINS%20devhost/appname/CONTAINS%20vmkernel/timestamp/%3E%3D1615680000000/timestamp/%3C%3D1615766399000 \
--header "Authorization: Bearer 1234abcd-opaque-bearer-token-abcdlS7QF2hkqVho=="


8. VM 마다 생기는 vmware.log 파일은 기본적으로 Log Insight 에서 검색이 안되나,

아래 URL 참고해서 VM 마다 파라미터 설정을 하면 검색이 가능함

https://blogs.vmware.com/management/2020/10/configure-a-vms-vmware-log-file-to-send-messages-to-vrealize-log-insight.html


9. Log Insight API 에 대한 자세한 내용은 아래 URL 참고

https://<vRLI IP>//rest-api 라고 입력하면 getting started 가이드 나옴

https://vmw-loginsight.github.io/#Getting-started-with-the-Log-Insight-REST-API