- 로그를 수납하는 서버를 따로 두겠습니다. 인스턴스 두 개를 더 만들어주세요.
- 하나는 수납용 서버, 이제 우리가 수업에 활용한 서버 + 방금 생성한 서버가 로그를 발송하는 서버가 됩니다.
- 양 서버에서 크론탭에서 어플리케이션 및 서버 자원에 대해 주기적으로 로그를 찍어주는 크론잡을 등록해주세요.
- 예를들어 로그를 분마다 찍는다면 n시간에 1번 그간 쌓인 로그파일의 이름을 전송하는 시점.log로 변경한 다음, 로그 수납 서버로 전송하고, 원본 서버에 있던 로그는 지우는 크론잡을 작성해주세요. 이 때, 발송서버가 2개이므로, 각 발송된 로그파일은 어떤 서버에서 발송했는지 확인할 수 있도록 해 주세요.
- 위 과정을 완성하셨다면 해당 작업에 대해 노션이나 블로그 포스팅을 남겨주세요.
- 위 과정이 완료되었다면 어떤 도메인의 인프라를 활용할지도 설계하고 운영 시나리오를 작성해주세요.
네트워크 설정
$ docker network 대역폭 설정
$ docker run 할 때 고정ip 지정해서 실행하기
먼저, 위와 같이 172.30 대역을 사용하는 lognet이라는 네트워크
로그 파일을 수집해주는 savelog와 서버 자원을 주기적으로 찍어주는 로그 파일을 전송할 서버 2개를 생성해주었다.
# apt-get update
# apt-get install iputils-ping
# apt-get install net-tools
같은 내부망 안에서 서로 통신이 되고 있는 것을 확인할 수 있다.
# service ssh start
# apt-get install openssh-server
전송하고받을 컨테이너에서 netstat -ntl로 확인해보면 위와 같이 ssh (22번) 포트가 잘 열려있는 것을 볼 수 있다.
위와 같이 scp 명령어로 파일을 전송할 수 있고, Permission Denied 오류가 뜨는 경우 파일이나 경로의 권한 설정이 제대로 되어있는지 확인해야 한다.
서버 설정
$ docker run -it --net=네트워크명 --name=서버명 ubuntu:22.04 bash
# apt-get update
# apt-get install cron
# apt-get install file
# apt-get install nano
# apt-get install sudo
# adduser 유저명
# service cron start
위와 같이 job1 컨테이너에서 memlog.sh 파일을 수정한 후 실행하면 전송받을 컨테이너의 비밀번호를 입력하라는 문구가 나오고, 비밀번호 확인이 되면 파일이 전송된다.
savelog 컨테이너로 가서 확인해보면 파일이 잘 받아진 것을 볼 수 있고, 명령어가 수행된 내용도 잘 저장된 것을 확인할 수 있다.
쉘스크립트 작성
① job1.mem.sh
먼저, 저장할 로그파일의 경로를 설정해주는 log_file 변수를 만들었다.
또한, free 명령어를 이용하여 메모리 사용량을 가져오고, 로그 파일에 기록하는 스크립트를 작성했다.
② job1-send.sh
log_file : 메모리 사용량이 저장되는 로그파일의 절대 경로
remote_server : 전송할 savelog 서버의 주소와 파일을 저장할 경로
current_time : 현재시간
remote_file : 전송하는 시점의 시간으로 로그파일명 변경
해당 로그 파일이 어떤 서버에서 보내는 것인지 구분하기 위해 sed 명령어를 이용하여 파일의 첫 번째 줄에 위와 같은 문구를 추가했다. -i 옵션은 파일을 직접 수정하라는 의미이다. 1s(파일의 첫(s) 줄의 시작(^)에 /내용\울 추가하라는 의미이다.
scp 명령어를 이용하여 해당 파일을 복사하여 이동시킨 후 rm 명령어로 삭제한다.
실행권한을 준 후 실행시켜보면 위와 같이 잘 전송되는 것을 확인할 수 있다.
savelog 서버에서 확인해보면 위와 같이 잘 이동된 것을 확인할 수 있다.
크론탭 등록
크론탭에는 위와 같이 등록할 수 있다.
job1-mem.sh는 1분마다 실행되어 메모리 사용량을 1분마다 로그파일에 찍어준다.
job1-send.sh는 1시간(매시간 정각)마다 실행되어 전송 시점의 시간을 파일명으로 하는 로그파일을 savelog 서버에 보내주고 해당 파일을 삭제하게 된다.
위와 같이 job1-mem.sh 스크립트로 인해 생성된 job1-mem.log 파일을 확인해보면 1분마다 메모리 사용량이 저장되고 있는 것을 확인할 수 있다.
'네트워크캠퍼스 > LINUX' 카테고리의 다른 글
로그로테이트를 통한 로그파일 관리 (0) | 2024.02.23 |
---|---|
jshell을 활용해서 어플리케이션 로깅 체험하기 (0) | 2024.02.22 |
크론탭 메일전송 (0) | 2024.02.21 |
크론잡과 크론탭 (0) | 2024.02.21 |
Shell Script 실습 (0) | 2024.02.20 |