사내 제공되는 개인 PC는macbook pro(mbp)이며 테스트 기기로도 mac mini, iphone, ipad 등 지급됨
발생하는 문제
하나하나 관리하기가 너무 어렵다.. 예를들어 각 팀별 설치해줘야 할 앱이 있을텐데 하나하나 설치해줄수도 없다. 물론 그냥 초기화해놓은 기기를 주고 팀에서 알아서 하라 할 수도 있지만... 기왕이면 중앙에서 관리하는게 더 좋다. 보안상의 이유로도 그렇고(불필요한 앱 설치 못하도록 설정등) 무엇보다 해당 기기에 직원이 로그인을 해두고 퇴사를 하면. 해당 기기는 퇴사한 직원의 소유로 보기 때문에(애플에서)해당 기기는 벽돌이 된다. 초기화를 해도 로그인은 안풀린다. 나의기기 찾기 ? 뭐 그런거 때문에.
위의 상황들등으로 애플에서는 apple business manager(또는 학교전용apple school manager)을 제공하고 있는데. 이것들만 가지고는 제대로된 기능을 사용할 수 없다. 여기에 모바일 디바이스 메니져라는 MDM을 같이 사용해야 한다.
근데 이게 금액이 싸지 않다. 그래서 오픈소스(무료)로 할만한건 없나 찾아봤는데. osx server로 프로파일을 관리하고 계정 초기화도 할수있고 그런것같다.
방화벽 허용해주고 저거 실행하면 일단... 되긴 하는것같다. df나 몇몇개는 되는데 안되는게 있다.
cpu나 network는 기존 munin에서 불러오는 파일 네임이 다르다. 따라서 소스를 수정해주거나 혹은 파일을 심볼릭 링크 걸어줘야 한다. munin의 아파치 접속되는 소스 홈디렉토리로 들어간 뒤 모니터링 할 서버의 파일이 위치한 곳에서 아래와 같이 심볼릭링크를 걸자.
기존 munin이 참조하는 파일 네임은 cpu.html cpu-day.png 혹은 if_eth0-day.png 등이다. (이건 설치한 munin마다 다를 수 있을듯) 허나 윈도우에 설치한 munin node는 위와같이 cpunew*, network로 생성이 된다. 따라서 심볼릭링크가 필요.
그외에 vmstat 이나 iostat이 안되는게 있는데 이건 아에 windows munin node 에서 생성을 안하는듯 한다.
이건 윈도우의 perfmon 기능을 통해 윈도우 자체에서 생성을 해주고 이걸 munin이 가지고 오게 해야 할 듯 하다.
위 부분을 참고하면 될 것 같은데... 추후에 꼭 진행해볼 예정이다.일단 지금은 macos에도 munin node를 설치해야 하니 패스하고..
----------------
window munin install 두번째 방법 windows subsystem linux(wsl)을 이용하여 윈도우에 우분투를 설치 한 뒤 apt-get으로 munin-node를 설치. 서버 사양에 큰 무리가 없다면 이방법이 가장 심플하고 좋다.
---------
다음은 macos에 munin install. Install munin on OSX 요약 1. Install Xcode 2. Install Xcode Developer Tools, the easy way is to type in terminal $ sudo xcode-select --install 3. Install MacPorts 4. Update port(always useful) $ sudo port selfupdate 6. Install munin using port $ sudo port install munin 7. Install suggested plugins $ sudo -u munin munin-node-configure --suggest --shell | sudo sh 8. Enable munin at startup $ sudo port load munin
macos에서 munin-node가 실행되기 위해서는 Xcode가 설치돼있어야한다. macos의 버전에맞는 xcode를 설치 한 뒤 munin-node를 설치를 진행한다.
centos의 yum이나 ubuntu의 apt-get 같은 패키지 관리 소프트웨어인 macos의 homebrew를 통해서는 munin을 설치할 수 없다. homebrew에서 munin 패키지를 제공하지 않는다. 따라서 macos의 다른 패키지 관리 소프트웨어인 macports를 통해 설치가 필요하다.
macports를 설치 하고 munin을 인스톨해준다. 그리고 설정을 불러와주고. /etc/munin.conf에 접근권한을 수정해주고(메인서버에서 노드서버로 접속하여 정보를 가져갈 수 있도록)
MariaDB ColumnStore is a columnar storage engine that utilizes a massively parallel distributed data architecture. It's a columnar storage system built by porting InfiniDB 4.6.7 to MariaDB, and released under the GPL license. It is designed for big data scaling to process petabytes of data, linear scalability and exceptional performance with real-time response to analytical queries. It leverages the I/O benefits of columnar storage, compression, just-in-time projection, and horizontal and vertical partitioning to deliver tremendous performance when analyzing large data sets.
대용량 병렬 분산 데이터 아키텍처를 사용(massively parallel distributed data architecture) 페타단위의처리를 위한 빅데이터 확장(big data scaling to process petabytes of data) 선형 확장성과 분석쿼리에 대한 실시간 응답을 통한 탁월한 성능(linear scalability and exceptional performance with real-time response to analytical queries)
선형 확장성이란 If the scalability factor stays constant as you scale. This is called linear scalability. 말그대로 노드(컬럼스토어엔진에서는 퍼포먼스모듈, PM)가 1대 > 2대가되면 성능은 2배가 된다. 1대가 3대되면 성능은 3배, 2대가 3배되면 성능은 1.5배. 즉 선형적(linear)으로 확장성을 제공한다.
한마디로 빅데이터 분석과 같은 MPP(대용량 병렬 분산 처리)용으로 설계된 columner 스토리지엔진이다.
Deployments are composed of several MariaDB servers, operating as modules, working together to provide linear scalability and exceptional performance with real-time response to analytical queries. These modules includeUser,PerformanceandStorage.
User Modulesare MariaDB Server instances configured to operate as a front-ends to ColumnStore.
The server runs a number of additional processes to handle concurrency scaling. When a client queries the server, the storage engine passes the query to one of these processes, which then break down the SQL request and distributed the various parts to one or morePerformance Modulesto process the query and read from storage. The User module then collects the query results and assembles them into the result-set to return to the client.
프론트엔드로 작동한다. concurrency scaling(동시성확장? 동시에 실행되는 쿼리를 일관된 속도로 빠르게 처리하기 위해) 에 중점을 두고 있다. 여기서 프론트엔드와 concurrency scaling 가 중요한듯 하다. 프론트엔드 : 엔드유저의 쿼리를 관리&제어한다. 허나 해당 쿼리를 실제로 처리하는건 퍼포먼스모듈임. 그래서 프론트엔드
The User Module manages and controls the operation of end user queries. It maintains the state of each query, issues requests to one or more Performance Modules to process the query, and resolves the query by aggregating the various result-sets from all participating Performance Modules into the one returned to the end user.
concurrency scaling : 컬럼스토어엔진은 빅데이터 처리를 위한 엔진이기 때문에 concurrency scaling가 굉장히 중요하다. 그렇기 때문에 컬럼스토어에서는 여러개의 프로세스를 추가로 실행한다.
Performance Modules are responsible for storing, retrieving and managing data, processing block requests for query operations, and for passing it back to the User module or modules to finalize the query requests.
유저 모듈을 통해 받은 쿼리(데이터 저장 검색 관리등)를 처리하여 사용자 모듈로 다시 전달(셀렉쿼리 같은건 전달해야하고)해주거나 혹은 처리(인설트같은건 처리)하는 모듈
위 스크린샷처럼 각종 프로세스가 있다. mysqld, exemgr, ddlproc,dmlproc는 유저모듈에서 실행하는 프로세스이고 나머지는 퍼포먼스 모듈에서 실행하는 프로세스다. 각각마다 기능이 있다. 예를들어 mysqld는 mariadb쿼리를 처리하기 위해 실행되는 프로세스로 쿼리 구문을 컬럼스토어가 처리할 수 있게 변환해준다. ddl/dml 은 각각 ddl/dml 처리하기 위한 프로세스일꺼고. 프로세스모니터는 procmon 등 자세히 알고 싶으면 공식독스 참고.(근데 굳이 이것까지 알아야 할 필요가 있나 싶다.)
storage란
3.query process는 ?
4.install & start & stop
5.트러블슛팅
local bulk load
각종 명령어
addDbroot MariaDB Columnstore 시스템에 DBRoot 디스크 스토리지 추가
addModule MariaDB Columnstore 시스템 내에 모듈 추가
alterSystem-disableModule 모듈 비활성화 및 MariaDB Columnstore 시스템 변경
alterSystem-enableModule 모듈 활성화 및 MariaDB Columnstore 시스템 변경
assignDbrootPmConfig 할당되지 않은 DBroot를 성능 모듈에 할당
assignElasticIPAddress 모듈에 Amazon Elastic IP 주소 할당
disableLog 프로세스 및 디버그 로깅 수준을 비활성화합니다.
disableMySQLReplication 시스템에서 MySQL 복제 기능 비활성화
enableLog 프로세스 및 디버그 로깅 수준을 활성화합니다.
enableMySQLReplication 시스템에서 MySQL 복제 기능 활성화
exit 콘솔 도구에서 나가기
findObjectFile 객체의 첫 번째 파일을 포함하는 디렉토리의 이름을 가져옵니다.
getActiveAlarms 활성 알람 목록 가져오기
getActiveSQLStatements 시스템 내 활성 SQL 문 목록 가져오기
getAlarmConfig 경보 구성 정보 가져오기
getAlarmHistory 시스템 알람 가져오기
getAlarmSummary 활성 경보의 요약 수 가져오기
getLogConfig 시스템 로그 파일 구성 가져오기
getModuleConfig 모듈 이름 구성 정보 가져오기
getModuleCpu 모듈 CPU 사용량 가져오기
getModuleCpuUsers CPU를 사용하는 모듈 상위 프로세스 가져오기
getModuleDisk 모듈 디스크 사용량 가져오기
getModuleHostNames 모듈 호스트 이름 목록 가져오기(NIC 1만 해당)
getModuleMemory 모듈 메모리 사용량 가져오기
getModuleMemoryUsers 메모리를 활용하는 모듈 상위 프로세스 가져오기
getModuleResourceUsage 모듈 리소스 사용량 가져오기
getModuleTypeConfig 모듈 유형 구성 정보 가져오기
getProcessConfig 프로세스 구성 정보 가져오기
getProcessStatus MariaDB Columnstore 프로세스 상태 가져오기
getSoftwareInfo MariaDB Columnstore 패키지 정보 가져오기
getStorageConfig 시스템 스토리지 구성 정보 가져오기
getStorageStatus 시스템 스토리지 상태 가져오기
getSystemCpu 모든 모듈의 시스템 CPU 사용량 가져오기
getSystemCpuUsers CPU를 사용하는 시스템 최상위 프로세스 가져오기
getSystemDirectories 시스템 설치 및 임시 로깅 디렉토리 가져오기
getSystemDisk 모든 모듈의 시스템 디스크 사용량 가져오기
getSystemInfo 전체 시스템 상태 가져오기
getSystemMemory 모든 모듈에서 시스템 메모리 사용량을 가져옵니다.
getSystemMemoryUsers 메모리를 활용하는 시스템 최상위 프로세스 가져오기
getSystemNetworkConfig 시스템 네트워크 구성 정보 가져오기
getSystemResourceUsage 모든 모듈에서 시스템 리소스 사용량 가져오기
getSystemStatus 시스템 및 모듈 상태 가져오기
help 콘솔 명령에 대한 도움말 보기
monitorAlarms 실시간 모드에서 경보 모니터링
movePmDbrootConfig 한 성능 모듈에서 다른 성능 모듈로 DBroot를 이동합니다.
종료 콘솔 도구에서 종료
redistributeData 디스크 사용량의 균형을 맞추기 위해 모든 dbroot에 걸쳐 테이블 데이터를 재배포합니다.
removeDbroot MariaDB Columnstore 시스템에서 DBRoot 디스크 스토리지 제거
removeModule MariaDB Columnstore 시스템 내에서 모듈 제거
resetAlarm 활성 경보를 재설정합니다.
restartSystem 중지되거나 종료된 MariaDB Columnstore 시스템을 다시 시작합니다.
resumeDatabaseWrites MariaDB Columnstore 데이터베이스에 대한 쓰기 수행 재개
setAlarmConfig 알람 구성 매개변수 설정
setModuleTypeConfig 모듈 유형 구성 매개변수 설정
setProcessConfig 프로세스 구성 매개변수 설정
shutdownSystem MariaDB Columnstore 시스템을 종료합니다.
startSystem 중지되거나 종료된 MariaDB Columnstore 시스템을 시작합니다.
stopSystem MariaDB Columnstore 시스템의 처리를 중지합니다.
suspendDatabaseWrites MariaDB Columnstore 데이터베이스에 대한 쓰기 수행을 일시 중단합니다.
switchParentOAMModule 활성 상위 OAM 모듈을 다른 성능 모듈로 전환합니다.
system 시스템 셸 명령을 실행합니다.
unassignDbrootPmConfig 성능 모듈에서 DBroot 할당 해제
unassignElasticIPAddress Amazon 탄력적 IP 주소 할당 해제