상황

사내 제공되는 개인 PC는macbook pro(mbp)이며 테스트 기기로도 mac mini, iphone, ipad 등 지급됨

 

발생하는 문제

하나하나 관리하기가 너무 어렵다.. 예를들어 각 팀별 설치해줘야 할 앱이 있을텐데 하나하나 설치해줄수도 없다. 물론 그냥 초기화해놓은 기기를 주고 팀에서 알아서 하라 할 수도 있지만... 기왕이면 중앙에서 관리하는게 더 좋다. 보안상의 이유로도 그렇고(불필요한 앱 설치 못하도록 설정등)
무엇보다 해당 기기에 직원이 로그인을 해두고 퇴사를 하면. 해당 기기는 퇴사한 직원의 소유로 보기 때문에(애플에서)해당 기기는 벽돌이 된다. 초기화를 해도 로그인은 안풀린다. 나의기기 찾기 ? 뭐 그런거 때문에. 

위의 상황들등으로 애플에서는 apple business manager(또는 학교전용apple school manager)을 제공하고 있는데. 이것들만 가지고는 제대로된 기능을 사용할 수 없다. 여기에 모바일 디바이스 메니져라는 MDM을 같이 사용해야 한다.

근데 이게 금액이 싸지 않다. 그래서 오픈소스(무료)로 할만한건 없나 찾아봤는데. osx server로 프로파일을 관리하고 계정 초기화도 할수있고 그런것같다. 

 

https://support.apple.com/ko-kr/guide/profile-manager/pm9cz84lqi/5.11/mac/11.0

 

프로파일 관리 개요

프로파일 관리를 사용하여 조직, 학교 또는 회사에 있는 Apple 기기에 설정을 구성하고 배포합니다.

support.apple.com

 

https://help.apple.com/serverapp/mac/5.0/?lang=ko#/apdA7FC4B2C-DB46-4A9C-BCF6-E6857B39E6C3 

 

https://help.apple.com/serverapp/mac/5.0/?lang=ko#/apdA7FC4B2C-DB46-4A9C-BCF6-E6857B39E6C3

To see this page, you must enable JavaScript. Pour afficher cette page, vous devez activer JavaScript. Zur Anzeige dieser Seite müssen Sie JavaScript aktivieren. このページを表示するには、JavaScript を有効にする必要があります。

help.apple.com

 

각각 간략한 사용법과 자세한 사용법

전부 읽어보고 구축해볼생각이다. 후기 및 사용법은 주기적으로 업데이트하기

 

abm - abm에 기기를 등록한다. 즉 해당 기기가 개인의 소유가 아닌 abm에 가입한 회사의 소유임을 입증한다.
ㄴabm은 apple business manager로 회사계정으로 여기에 가입 해야 함. 아주 간단한 기기 컨트롤까지 가능함

mdm - 기기 컨트롤하는게 mdm

 

apple configurater2
ㄴabm에 등록하기 위한 수단

macosserver-profile manager

ㄴmdm 

 

 

아이패드를 apple configurater2 를 통해 ABM에 등록
ㄴ아이패드 초기화해야 함
ㄴ만약 아이패드에 애플 로그인 돼 있으면 아이디/패스워드 알아야 함

macos server 와 ABM 연동

 

macos server의 프로파일 매니져를 통해 아이패드 컨트롤 

 

 

 

유료 jampnow인지 뭔지 보다는 완벽한 컨트롤이 되진 않지만. 그래도 이정도면 나름 만족이다.

ios 기기 벽돌 방지도 성공했고
ios/osx 별로 기기그룹을 나눈뒤 프로파일 설치하여 VPN구성, wifi 구성, 기기별 설정, 패스워드 삭제, 패스워드 설정, 분실설정등이 가능해졌다.

munin main 설치하는거나 노드 설치시 centos 나 우분투에 설치하는건 워낙 많으니 패스하고.

여기서는 munin node를 windows 와 macos x 에 설치해볼 예정이다.

 

먼저 윈도우

 

https://github.com/singularcitrus/munin-node-win32

https://github.com/singularcitrus/munin-node-win32/releases/tag/1.7.3.0

 

singularcitrus/munin-node-win32

Munin Node for Windows. Contribute to singularcitrus/munin-node-win32 development by creating an account on GitHub.

github.com

이사람께 가장 최근(2020년)에 올라온 윈도우용 노드 설치같다.

 

munin master 설정파일은
    apache_accesses.graph_args  --upper-limit 500
    load.graph_args     --upper-limit 50
    netstat.graph_args  --upper-limit 2000
    iostat.graph_args   --upper-limit 5000 --lower-limit -5000
    if_eth0.graph_args  --upper-limit 100000000 --lower-limit -100000000
    memory.graph_args   --upper-limit 128000000000
    cpu.graph_args      --upper-limit 800
    cpu.idle.colour     D4E4F7



방화벽 허용해주고 저거 실행하면 일단... 되긴 하는것같다. 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에 접근권한을 수정해주고(메인서버에서 노드서버로 접속하여 정보를 가져갈 수 있도록)

 

이글은 마리아디비 공식 홈페이지에 있는 내용만을 참고하여서 오인입된 내용은 없을것같다.
영어에 익숙치 않고 columnstore가 뭔지 & 어떻게 사용하는지에 대해 알아보는 글이고, 알아보면서 한번에 이해되지 않는 용어들은 구글링해서 적어둠

1.mariadb columnstore란 

더보기

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.


컬럼지향 스토리지 엔진이고(columnar storage)

더보기

<정의> columnar storage engine 이란

데이터의 저장을 칼럼단위로 처리하는 데이터베이스를 말한다. 

<장점>

칼럼 단위의 값은 데이터가 유사할 가능성이 높다. 이로 인해 높은 압축율을 얻을 수 있다. 

MIN, MAX, SUM, COUNT 와 같은 연산에서 높은 성능을 얻을 수 있다. 

<종류>

아마존 Redshift, 아파치 Cassandra, HBase 등이 있다. 

출처: https://118k.tistory.com/400 [개발자로 살아남기]

대용량 병렬 분산 데이터 아키텍처를 사용(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 스토리지엔진이다.

 

2.architecture 

더보기

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 include User, Performance and Storage.

user모듈(UM), performance모듈(PM), storage로 구성

 

user module이란

더보기

User Modules are 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 more Performance Modules to 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.

For more information, see the ColumnStore User Module.

프론트엔드로 작동한다. 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가 굉장히 중요하다. 그렇기 때문에 컬럼스토어에서는 여러개의 프로세스를 추가로 실행한다.

더보기

The server runs a number of additional processes to handle concurrency scaling.

마지막으로 유저모듈에서 실행하는 프로세스들이 몇가지 있다. 마찬가지로 퍼포먼스 모듈에서도 몇가지 실행하는 프로세스들이 있는데 퍼포먼스 모듈 설명 말미에 스샷과 함께 설명할 예정

performance module이란

더보기

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 주소 할당 해제

 

 

+ Recent posts