목록DevOps & Infra (151)
오늘도 한 뼘 더
# 배경 이전에 카카오톡 알림톡을 보내주는 외주 업체에서 서버 에러가 나서 회사에서 보내야 할 카카오톡 알림톡이 보내지지 않는 문제가 발생했다. 문제는 알리톡 발송에 실패하면서 같이 엮여 있었던 서비스가 같이 실패하게 되었다. 너무 강한 결합으로 인해 발생한 문제였다. 이를 해결하기 위해 Kafka와 같은 서비스 중 AWS에서 제공하는 Simple Notification Service(SNS)를 사용해보기로 했다. # AWS SNS란? AWS SNS는 게시자에서 구독자로 메시지를 전송하는 관리현 서비스이다. https://docs.aws.amazon.com/ko_kr/sns/latest/dg/welcome.html Amazon SNS란 무엇인가요? - Amazon Simple Notification Se..
# 배경 AWS Lambda에서 코드 편집기가 Go는 지원을 하지 않아 직접 코드를 zip 파일로 묶어서 올려야 했다. # 프로젝트 zip 파일로 묶기 go 프로젝트 terminal 창에서 lambda 패키지를 설치한다. go get github.com/aws/aws-lambda-go/cmd/build-lambda-zip import에 코드 추가하기 (실제로 코드에 사용하지 않기 때문에 앞에 '_'를 추가한다.) import ( _ "github.com/aws/aws-lambda-go/lambda" ) 다음 명령어를 차례대로 실행한다. $ set GOOS=linux $ go build -o main main.go $ %USERPROFILE%\Go\bin\build-lambda-zip.exe -output..
리눅스에서 쉘 스크립트를 작성할 때 예약을 걸거나 파일명을 설정할 때 날짜 표기를 해야 하는 경우가 종종 발생했다. 날짜 표기법, 포맷 등에 대한 정리본! 기본 날짜 출력 방식 $ date > Thu Aug 25 02:34:50 UTC 2022 # 날짜 포맷 포맷 설명 %a 요일 약어 (e.g. Sun, Mon, ..., 일, 월, ...) %A 요일 (e.g. Sunday, Monday,.., 일요일, 월요일...) %b 달 약어 (e.g. Jan, Feb, ..., 1월, 2월, ...) %B 달 (e.g. January, Febuary, ..., 1월, 2월, ...) %c 날짜와 시간 (e.g. Wed Aug 10 11:46:50) %d 그 달의 일 (e.g. 1, 2, 3, ... 31) %D ..
# 배경 Jenkins에서 배포를 할 때마다 API 호출을 해야 했다. 이를 Jenkins Job 설정의 Post Build Task로 진행을 하도록 한다. # Post Build Task - Execute Scripts Execute Scripts를 사용해서 빌드가 끝나고 나면 API 호출 명령어를 작성한다. curl 명령어를 통해서 사용하고자 하는 API를 작성한다. curl -X POST https://localhost:5000/my
AWS Elastic Beanstalk(이하 EB)의 로그는 EB 콘솔에 접근하여 볼 수 있지만 마지막 100줄과 전체만 볼 수 있다는 불편함이 있다. S3의 Select 기능을 사용하여 로그를 좀 더 편하게 보기 위해서 EB에 쌓이는 로그를 S3에 쌓도록 한다. CloudWatch의 로그 그룹을 S3로 내보내기 S3로 데이터 내보내기 S3 버킷 정책 추가 다음 내용을 참고하여 진행하였다. https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/logs/S3ExportTasksConsole.html 콘솔을 사용하여 Amazon S3로 로그 데이터 내보내기 - Amazon CloudWatch Logs 기존 버킷에 이미 하나 이상의 정책이 연결된 경우 Clou..
1. Jmeter 설치 https://jmeter.apache.org/download_jmeter.cgi Apache JMeter - Download Apache JMeter Download Apache JMeter We recommend you use a mirror to download our release builds, but you must verify the integrity of the downloaded files using signatures downloaded from our main distribution directories. Recent releases (48 hours) may not yet be ava jmeter.apache.org 다운로드 > 압축해제 > jmeter.bat ..
# 배경 Crontab를 사용하여 자정마다 작업을 돌리는데 해당 작업이 SQL과 관련된 내용이라 따로 에러 알림을 받지 못하고 데이터를 확인했을 때 제대로 들어오지 않음을 확인했다. Crontab이 돌아갈 때의 메시지를 받고 싶어 로그를 남기는 방법을 찾아보았다 # 실행시키 파일 작성 로그에 시간별로 쌓이는 것을 확인하기 위해서 시간 작성을 하였다 test.sh #!/bin/bash NOW=`date +"%Y-%m-%d %H:%M"` echo "${NOW}" echo "Hello World" # Crontab 작성 로그 없이 예약설정 * * * * * /home/ubuntu/test.sh 로그 설정 (로그 덮어쓰기) */5 * * * * /home/ubuntu/test.sh > /home/ubuntu/t..
# 배경 crontab을 작성 후 저장을 하고 나오는데 제대로 저장이 되지 않았다! # Crontab 작성 후 저장하기 1. Crontab -e로 작성하기 Crontab -e 명령어를 입력하면 바로 편집창이 뜬다. 예약 시간과 파일을 작성한다. # Edit this file to introduce tasks to be run by cron. # # Each task to run has to be defined through a single line # indicating with different fields when the task will be run # and what command to run for the task # ... 0 0 * * * /home/ubuntu/test.sh 2. Ctrl ..
# 배경 사설 Docker Registry의 이미지를 누구나 사용할 수 없도록 아이디, 비밀번호를 설정하고자 한다. # Htpasswd 설정 1. id, pw기반으로 사용하기 위해서는 htpasswd를 사용할 수 있어야한다. 이를 위한 디렉토리를 생성 $ mkdir -p /mnt/docker/auth 2. htpasswd파일을 생성한다 $ docker run --entrypoint htpasswd registry:latest -Bbn {user} {PW} > /mnt/docker/auth/htpasswd 이렇게 진행을 했을 때 htpasswd에 대한 에러가 났다. 확인을 하니 registry 2.7이상부터는 registry 이미지에 htpasswd가 포함되지 않는다고 한다. 3. htpasswd를 직접 ..
# 배경 Jenkins를 올린 서버에서 다른 서버에 Jenkins를 통해 빌드한 내용을 토대로 배포하고 싶다. # Publish Over SSH 플러그인 설치 1) Jenkins 관리 > 플러그인 관리 2) Publish Over SSH 검색 > 다운로드 및 재시작 # Publish Over SSH 플러그인 설정 1) Jenkins 관리 > 시스템 설정 2) Publish Over SSH 설정 * 이때 접근하고자 하는 서버의 SSH > authorized_keys에 jenkins 서버의 id_rsa.pub 키가 등록되어있어야 한다. 다음과 같이 지정한 후 "Test Configuration"을 눌렀을 때 "Success"가 뜨면 된다. Key - Jenkins가 올라가 있는 서버의 id_rsa(priva..