- 시스템 관리, 자동화, 문제 해결을 위해 개발한 스크립트와 플레이북 모음입니다.
- 시스템 엔지니어링에서 실제로 겪은 문제를 해결하기 위해 만들어졌습니다.
- 모든 스크립트는 ChatGPT 나오기 이전에 작성하였습니다 (본 README.md는 약간의 힘을 빌렸습니다)
bash/motd-secure.sh
시스템 MOTD를 비활성화하고 관련 설정을 보안적으로 강화하며 불필요한 메시지를 정리합니다.bash/set-umask-to-all.sh
모든 사용자에 대해umask 022
를 강제 적용하여 일관된 파일 권한을 유지합니다.
python/pause_prtg.py
호스트 이름을 기반으로 PRTG 장치를 API 통합을 통해 일시 중지 또는 재개합니다.bash/ipmi-sel-clean.sh
IPMI SEL 로그를 정리하고 시스템 시계를 동기화하여 하드웨어 상태를 유지합니다.
ansible/update-ca-certificates.yml
Ansible을 사용하여 CA 인증서를 업데이트하고, Comodo AddTrust 만료와 같은 문제를 해결합니다.python/check_ceph_daemons.py
README.md
Ceph 데몬 상태를 모니터링하고 비정상 데몬을 자동으로 재시작하여 클러스터 안정성을 보장합니다.
-
bash/s3-log-structure-update.sh
작성 동기:- ELK 로그 파이프라인중 S3 access log 수집중
- 어느날 S3 -> pull to On-premise ELK로 로그 수집이 되지 않고 있음
- access log 쌓이는 경로, 파일명 형식과 ELK 가 가져가는 형식이 다름
- 이를 aws s3 mv 명령으로 다시 재구성 해주는 1분 단위 크론잡 스크립트가 속도를 따라가지 못함
- 기존 누락되어 밀린 파일까지 재구성 하기 위해 병렬 처리 필요
S3 로그 파일 경로를 병렬로 처리 및 재구조화하여 대량 로그 데이터를 효율적으로 처리
- 스레드 변수로 최대 스레드 수 지정
- 기본값은 5로 설정. 파일이 5개 이하일 경우 자동으로 스레드 수를 줄임.
- 파일이 5개 이상일 경우, 파일 목록을 최대 5개의 스레드로 고르게 분배.
- S3에서 파일 목록 생성 및 분배
- S3에서 대상 파일(
access-log202
)의 전체 목록을 가져오고split
명령어로 병렬 처리를 위한 소규모 목록으로 분할.
- S3에서 대상 파일(
- 새로운 구조로 복사, 검증 후 원본 삭제
- 파일을 새로운 디렉토리 구조로 복사하고, 검증 후 원본 파일을 삭제.
주요 변수
- BUCKET: S3 버킷 주소.
- THREAD: 실행 가능한 최대 스레드 수.
- FILE_DIR: S3 파일 목록을 임시 저장하는 디렉토리.
- LOG_DIR: 로그 파일을 저장할 디렉토리.
- ELK 로그 파이프라인중 S3 access log 수집중