Information Security Study

240227 각 컨테이너의 메모리 상태, cpu 사용량을 로그 수집 서버로 전송하기 본문

네트워크 캠퍼스/1차 프로젝트

240227 각 컨테이너의 메모리 상태, cpu 사용량을 로그 수집 서버로 전송하기

gayeon_ 2024. 2. 28. 15:04

worker1 부터

#!/bin/bash

# 현재 시간을 포맷팅하여 파일 이름에 사용
CURRENT_TIME=$(date +"%Y%m%d_%H%M%S")

# 로그 파일 이름에 현재 시간과 송신 서버 이름을 포함
LOG_FILE="${CURRENT_TIME}_system_usage_${HOSTNAME}.log"

# sar 명령어를 사용하여 시스템 사용량 수집 (메모리 및 CPU)
sar -u -r 1 5 > $LOG_FILE

# 전송할 스토리지 서버의 SSH 계정 정보
STORAGE_SERVER_USERNAME="your_username"
STORAGE_SERVER_IP="storage_server_ip"
STORAGE_SERVER_PATH="/path/to/save/logs"

# SCP를 사용하여 로그 파일 전송
scp $LOG_FILE $STORAGE_SERVER_USERNAME@$STORAGE_SERVER_IP:$STORAGE_SERVER_PATH

# 전송 후 로컬에 있는 로그 파일 삭제
rm $LOG_FILE

echo "로그 파일이 성공적으로 전송되었습니다."

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

워커1 공개키 다시 저장하기

 

안돼서 nginx-proxy에서 다시 시도

 

 

 

크론 데몬 실행

sudo service cron start

 

ssh 실행
service  ssh restart

 

 

 

 

 

------------------해결-------------------

 

수신 서버 ssh restart

 

 

 

네트워크 연결

 

 

 

송신 서버에서 키 생성 후

 

 

 

 

.ssh 디렉토리와 id_rsa.pub 공개키 파일의 권한을 위와 같이 변경한다.

 

 

중요※

 

수신 서버의 authorized_keys 파일의 권한을 꼭 755로 해야 한다!!!!

 

 

수신의 크론탭에는 경로 앞에 bash를 적어줘야 한다.

 

 

 

로그 전송 셸 스크립트는 위와 같다.

 

 

 

로그 서버에 전송이 무사히 되었다.

 

 

 

---------- 메모리, cpu 사용량 정보를 담아 로그 보내기----------

 

단순 파일 전송이 아닌 메모리, cpu 사용량 정보를 보내기 위해

log_script.sh를 수정한다.

 

#!/bin/bash

CURRENT_TIME=$(date +"%Y%m%d_%H%M%S")

LOG_FILE="/root/log/${CURRENT_TIME}_system_usage_worker1.log"

# Get memory usage and append to log file
free -h >> "$LOG_FILE"

# Get CPU usage and append to log file
top -bn1 | grep "Cpu(s)" >> "$LOG_FILE"

# Securely copy the log file to the remote server
scp "$LOG_FILE" storage@172.21.0.7:/home/storage/log/

# Optionally, remove the local log file after it's been copied
# rm "$LOG_FILE"

 

 

 

성공!

 

 

 

jenkins-worker 1/2/3 모두 보내졌다.