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

 

2021년 1월 16일 토요일

ESXi Host to Host/VM bandwidth 측정하기

 iperf 라고 아마 대부분 잘 알고 있는 network bandwidth 측정 툴이 있다.

VMware ESXi 호스트에도 이미 이 툴이 설치되어 있는데 정확히는 iperf 가 아니라 iperf3 이다.

정확한 위치는 아래와 같다

/usr/lib/vmware/vsan/bin/iperf3
/usr/lib/vmware/vsan/bin/iperf3.copy

주의할 점은 iperf3.copy 를 실행해야 한다는 것이다.

iperf3 을 실행하면 "Operation not permitted" 같은 에러가 발생하기 때문이다.
혹시 iperf3.copy 가 없다면 아래와 같이 복사해서 사용하면 된다
# cp /usr/lib/vmware/vsan/bin/iperf3 /usr/lib/vmware/vsan/bin/iperf3.copy

그 다음 iperf3 을 서버 모드로 실행해보자
아래와 같이 -s (서버모드) -B (특정 IP 에 bind)





그런데 -B에 사용할 ip 는 아래 명령어로 vmk 에 붙은 ip 를 사용하면 된다.

# esxcli network ip interface ipv4 get


그런데 이렇게 바로 실행하면 정상 실행이 안될 것이다.

ESXi 자체 방화벽이 막고 있기 때문이다.
따라서 아래와 같이 방화벽을 해제한다.

# esxcli network firewall get
# esxcli network firewall set –enabled false
# esxcli network firewall get

그럼 다음 실행하면 아래와 같이 iperf3 가 서버 모드로 정상 동작 할 것이다.


이제 다른 ESXi host 에서 iperf3 를 클라이언트 모드로 실행해보자

마찬가지로 방화벽을 해제하고 iperf3 를 실행해야 한다.
(-c 가 클라이언트 모드를 의미하고 나머지 -t, -V 같은 다양한 옵션을 줄 수 있다)








10G 환경이라면 서버에서 아래와 같이 보일 것이다.


클라이언트에서는 아래와 같이 보일 것이다.


ESXi host <-> VM 을 테스트 해보자

우분투의 경우에는 iperf3 를 설치하면 된다.
(iperf 아님)

$ sudo apt install iperf3

기본적으로 방화벽을 다 막아놓은 환경의 VM 이 아니라면 그냥 아래와 같이 실행하면 될 것이다.

windows 및 다른 OS 에도 iperf3 가 있으므로 설치하면 된다. 

* ESXi 호스트의 경우에는 테스트 완료 후 꼭 잊지말고 방화벽을 활성화 해놓자!!!




2016년 7월 23일 토요일

Ubuntu 에서 IPv6 비활성화 (Disable IPv6 on Ubuntu)

* 현재 IPv6 의 활성화 여부 확인하기
$ sudo cat /proc/sys/net/ipv6/conf/all/disable_ipv6

0: 활성화
1: 비활성화

* IPv6 비활성화 하기

1. sysctl.conf 파일 열어 수정하기
$  vi /etc/sysctl.conf
아래 내용 추가하기
# Disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

2. sysctl.conf 파일 리로드 하기
$  sudo sysctl -p

3. 정상적용 되었는지 확인하기
$ sudo cat /proc/sys/net/ipv6/conf/all/disable_ipv6
하면 이전과 달리 0 이 아닌 1 이 나옴을 알 수 있다.


 

2015년 6월 15일 월요일

Install X-Windows on CentOS

yum grouplist

yum -y groupinstall "Desktop" "Desktop Platform" "X Windows System" "Fonts"


2015년 5월 29일 금요일

ubunt 14.04 에서 NTFS mount 하기

* read only 로 마운트 하기
Majority of current Linux distributions supports NTFS file system out of the box. To be more specific, support for NTFS file system is more feature of Linux kernel modules rather than Linux distributions. First verify if we have NTFS modules installed on our system.

- 커널이 ntfs read 마운트를 지원하는지 알아보기

 sudo ls /lib/modules/3.13.0-24-generic/kernel/fs/ | grep ntfs

fdisk -l | grep NTFS

mkdir /mnt/ntfs

mount -t ntfs /dev/sdb1 /mnt/ntfs