2023년 목표로 업무자동화를 키워드로 프로젝트를 진행해보고자 한다.
시발점은 PM님이 시켜서...?!
누이좋고 매부좋은 일이니까 해보자.
개요는 다음과 같다.
1) 프로젝트 명 : 빌링업무 자동화
2) 기간 : 미정(~2023)
3) 프로젝트원 : PM님, 나, 그 외...는 잘 모르겠다 도와줄지
4) 목표 : 빌링과 관련된 자료 수집 및 빌링 양식에 맞게 편집, DB 저장 및 웹 출력
5) 대상 : AIX, LINUX, WINDOWS, SOLARIS (OS 기반 과금)
6) 인프라 : ansible, postgres db, django framework, python 외 추가 예정
테스트 환경을 공유하는게 아니므로 블로그에 올리는 자료는 조금 빈약할 지 모르겠다.
프로젝트를 단위 모듈로 구분하면 다음과 같다.
물론 세분화하면 더 깊게 쪼개지겠지만, 내가 담당할 부분은 1) 자료 수집 부분이며,
빌링에 필요한 항목들은 아래 추가로 나열한다.
1) 자료 수집
2) 데이터 저장
3) 웹 출력
##########################################################
□ 빌링 관련 수집 항목(당월, 전월 차이 비교)
1) Hostname
2) Core
3) Memory
4) HA SW (유료 툴만 언급, ex. pacemaker, hacmp, gpfs 등)
5) GPU
6) NIC
7) HBA
8) Storage 종류(Highend, Midrange, NAS, ECS)
9) Storage 할당량(DR, BCV 복제 볼륨 포함)
기타) OS 종류, 버전, VM/BM여부, 주센터/DR 위치
##########################################################
OS는 AIX, LINUX, WINDOWS (SUNOS 는 1대 이므로 포함할 지 고민)
기본은 LINUX로 잡고 확산 진행한다.
1) Hostname
# hostname
# cat /etc/hostname
둘 중 하나로 조회
2) Core(물리 Core 수 기준 과금)
# cat /proc/cpuinfo | grep -i processor | wc -l
Multithread on/off 에 따라 값이 변경된다. on 이면 1/2 해줘야 한다.
ansible facts로 값을 가져올 수 있으나 multithread on/off 는 별도 값으로 가져오므로 계산이 필요하다.
※ ansible 모듈 정보는 추후에 별도로 추가하기로 한다.
Multithread, VM/BM 구분 없이 값을 가져오려면
물리 CPU 갯수, 물리 CPU 별 Core 수를 곱하면 된다.
물리 CPU 갯수
# dmidecode -t processor | grep 'Socket Designation' | wc -l
물리 CPU 별 Core 수
# grep 'cpu cores' /proc/cpuinfo | tail -1
3) Memory(메모리 할당량 기준 과금)
top, sar 로 조회할 경우 물리적으로 할당한 용량보다 적게 출력된다.
따라서 정확한 용량은 /proc/meminfo 를 참조한다. 둘 중 하나를 사용해도 결과는 동일하다.
# cat /proc/meminfo | grep MemTotal
# grep MemTotal /proc/meminfo
결과 예시
MemTotal: 2097152 kB
결과 값이 문자열로 나오기 때문에 편집해줘야 한다.
4) HA
조건에 따라 조회 방법이 다를 것 같다.
리눅스 한정으로 할 경우 과금 대상은 pacemaker 뿐이고(RAC는 고객사 자산)
pacemaker는 과금 할 경우만 설치하므로
# rpm -qa | grep pacemaker | wc -l
결과 값이 0보다 크면 과금하는 것으로 함(임시)
5) GPU
현재 설치된 GPU는 NVIDIA 모델 밖에 없으므로 NVIDIA 커맨드로 확인(임시)
# nvidia-smi
6) NIC, 7) HBA는 일단 패스
전체 할당된 device 중 과금 대상인지 여부 별도 확인이 필요하다.
8) Storage 종류(Highend, Midrange, NAS)
VM의 경우 Datastore로 할당하면 모델명 확인이 어렵다.
BM의 경우 기본적으로 multipath 사용하므로 BM부터 확인. BM의 경우 internal disk는 과금하지 않는다.
# multipath -ll
각 장치들 뒤에 storage 모델이 표시된다. 물론 alias로 변경할 수 있으므로, 실제 스토리지 모델이 맞는지는 사전에 확인하도록 한다.
VM의 경우는 OS에서 확인이 어려우므로(multipath도 안쓰니까) VMware rvtools 자료를 활용해야 한다.
이 부분은 별도로 방법을 찾아본다.
NAS는 현재 HITACHI, EMC를 사용하고 있다. 과금 정책은 동일하므로 사용여부만 확인
# df -h | grep ":"
9) Storage 할당량(DR, BCV 복제 볼륨 포함)
VM의 경우 다음으로 조회된 결과의 size 합산
# lsblk | grep disk
OS 영역(기본적으로 /dev/sda)은 과금하지 않으나, 해당 부분은 영업과 별도 협의가 필요하다.
BM의 경우 multipath 를 사용하나 기본적으로 multipath에 용량이 나오지 않는다.
따라서 multipath 구성 시 alias 설정하면서 볼륨별 용량정보, 공유정보를 볼륨 이름에 표기한다.
(ex. LOCAL_100G, SHARE_100G)
# multipath -ll
결과값을 편집해서 사용한다. general 하게 구현하라면 별도의 방법을 찾아봐야 할 것 같다.
AIX 처럼 lscfg, lsattr로 정보를 긁어오면 좋을 것 같은데 고민이 필요하다.
NAS의 경우 OS에서 조회하면 중복되므로 NAS에서 조회하여 빌링하는 게 좋으나, 현재는 OS에 붙여서 과금하게 되어있다.(왜 그랬는지 노이해)
어쩔 수 없이 OS에서 조회해야 하므로 OS에서 조회 후 같은 볼륨 이름은 중복제거 해주자.
# df -h | grep ":"
이렇게 하면 NFS도 조회될 수 있는데, NFS는 권장사항이 아니므로 현재 사용하고 있지 않다.
NAS path 명은 유니크하므로, 조회된 리스트를 중복제거하여 사용한다.
일단 현재까지 대략적인 커맨드는 확인했고,
ansible 로 대체가 가능한 지, rvtools를 어떻게 포팅할 지는 차차 해보도록 한다.
AWS처럼 자동으로 리포트 뽑아주는 솔루션을 사주세요...
'Linux' 카테고리의 다른 글
[빌링자동화] nginx + tomcat + postgresql 연동 (0) | 2023.01.16 |
---|---|
SHA-1 알고리즘 사용이 필요할 때 (0) | 2023.01.10 |
Unix 계열 OS별 명령어 비교 정리 사이트 (0) | 2023.01.02 |
nmap 사용법 (0) | 2023.01.02 |
SAN Usable Port 수 조회 스크립트 (0) | 2022.12.05 |
댓글