Openstack으로 운영하면서 windows OS도 새로 추가하는 작업을 하고 있는 중에 ceilometer 에서 메모리 사용량이 DB에 쌓이지 않는것을 발견 했습니다.
이로 인해 메모리 resouce 모니터링도 되지 않았으며 이를 바탕으로 heat 프로젝트의 autoscale에 메모리를 바탕으로한 인스턴스의 자동 증감이 되지 않는 문제도 추가로 확인되었습니다.
이를 해결하기 위해서는 windows 가상 서버를 위한 virtio 드라이버 내의 실행 파일을 윈도우즈에 서비스 등록해야 메모리 사용량을 가져 올수 있습니다.
하단에 해결 과정을 순차적으로 적겠습니다.
1.문제 발생 사항
root@controller:~# nova list
+--------------------------------------+----------+--------+------------+-------------+------------------------------------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+----------+--------+------------+-------------+------------------------------------+
| 14987520-2fa0-4ee2-bcd2-cd83c8272196 | lkh | ACTIVE | - | Running | dicaniu=172.16.0.46 |
| 8bd98ec3-2b08-4567-9ca6-3bfe82f9ed9c | lkh2 | ACTIVE | - | Running | dicaniu=172.16.0.52 |
| cb4a8ba8-6576-4da6-812e-cb939d14e72c | win_test | ACTIVE | - | Running | dicaniu=172.16.0.72 |
+--------------------------------------+----------+--------+------------+-------------+------------------------------------+
root@controller:~# ceilometer sample-list -l 2 -m memory.usage -q resource=8b33d745-0f16-49fd-b281-8cb6d402943c
+--------------------------------------+--------------+-------+--------+------+----------------------------+
| Resource ID | Name | Type | Volume | Unit | Timestamp |
+--------------------------------------+--------------+-------+--------+------+----------------------------+
| 8b33d745-0f16-49fd-b281-8cb6d402943c | memory.usage | gauge | 2401.0 | MB | 2017-08-25T06:10:03.197000 |
| 8b33d745-0f16-49fd-b281-8cb6d402943c | memory.usage | gauge | 2413.0 | MB | 2017-08-25T06:09:03.114000 |
+--------------------------------------+--------------+-------+--------+------+----------------------------+
root@controller:~# ceilometer sample-list -l 2 -m memory.usage -q resource=cb4a8ba8-6576-4da6-812e-cb939d14e72c
+-------------+------+------+--------+------+-----------+
| Resource ID | Name | Type | Volume | Unit | Timestamp |
+-------------+------+------+--------+------+-----------+
+-------------+------+------+--------+------+-----------+
root@compute1:~# virsh list
Id 이름 상태
----------------------------------------------------
8 instance-00001025 실행중
root@compute1:~# virsh dommemstat 8
actual 8388608
rss 8603932
※ 다른 인스턴스는 memory.usage 값을 받아오나 window 인스턴스는 출력이 되지 않는다.
또한 컴퓨트 노드에서도 메모리 관련 사용량 확인이 안된다.
2.해결 과정
- virio 다운로드
※ virtio는 https://fedorapeople.org에서 다운로드 받으면 되며 해당 OS에 맞게 Ballon 디렉토리에서 blnsvr.exe 파일을 systemr32로 복사해 놓는다.
- blnsvr.exe 파일 서비스에 등록
※ 윈도우즈 서비스 등록 하고 서비스에서 해당 등록한 서비스 시작 한다.
명령어 : sc create Mon_Daemon binPath= c:\Windows\system32/blnsvr.exe DisPlayName= “메모리 모니터링” start= auto
3. 메모리 사용량 체크 되는지 확인
root@controller:~# ceilometer sample-list -l 2 -m memory.usage -q resource=cb4a8ba8-6576-4da6-812e-cb939d14e72c
+--------------------------------------+--------------+-------+--------+------+----------------------------+
| Resource ID | Name | Type | Volume | Unit | Timestamp |
+--------------------------------------+--------------+-------+--------+------+----------------------------+
| cb4a8ba8-6576-4da6-812e-cb939d14e72c | memory.usage | gauge | 932.0 | MB | 2017-08-25T07:24:06.148000 |
| cb4a8ba8-6576-4da6-812e-cb939d14e72c | memory.usage | gauge | 933.0 | MB | 2017-08-25T07:23:03.278000 |
+--------------------------------------+--------------+-------+--------+------+----------------------------+
root@compute1:~# virsh dommemstat 8
actual 8388608
swap_in 4706036
swap_out 0
major_fault 124059
minor_fault 44935282
unused 7433188
available 8388084
rss 8598516
※ memory.usage 확인되며 컴퓨트 노드에서도 메모리 사용량이 체크 된다.