본문 바로가기

Data

(184)
[Github] Github Action Self-hosted Runner 만들기 하드웨어(GPU)적인 문제로 github action에 사용되는 Runner를 자기만의 server로 띄울때가있는데 해당 과정을 소개한다. Runner로 띄우려는 Server로접속해서 아래와같은 명령어를 차례대로 입력한다. Linux 환경에서의 기준이다. mkdir actions-runner && cd actions-runner curl -o actions-runner-linux-x64-2.300.2.tar.gz -L https://github.com/actions/runner/releases/download/v2.300.2/actions-runner-linux-x64-2.300.2.tar.gz echo "ed5bf2799c1ef7b2dd607df66e6b676dff8c44fb359c6fedc9ebf7d..
[Jenkins] Build periodically시 환경변수 주기 Jenkins를 사용하고 있는 상태에서, 주기적으로 빌드를 해야하는 작업이 생길것같아 확인해보았는데 기본 세팅된 Jenkins에서는 아래와같이 "Build periodically" 옵션만 존재하는 상태였다. 당연히, 빌드할때 환경변수가 별도로 필요없다면 본문을 읽을필요가 없지만 만약 환경변수가 필요할때는 해당 옵션을 사용하면 에러가 발생한다. 조사해본결과 위와같이 환경변수를 사용하기위해서는 별도로 jenkins plugin 설치가 필요하다. 설치 방법은 다음과 같다. Jenkins 관리 -> 플러그인 관리 -> Available plugins 로 들어가서 "Parameterized Scheduler" 를 검색해서 다운로드 받아준다. 설치 이후에 다시 빌드 설정 페이지를 들어가면 "Build periodi..
[Airflow] Task Was the task killed externally? + 아무런 로그없이 죽는 현상 해결 일단 확실하진않은 해결법입니다. 전 이렇게 해서 해결이된 상태라 참고만 부탁드립니다 :) Airflow에서 갑자기 Task들이 아무런 log가 발생안되고 죽는 현상이 빈번하게 발생해서 디버깅중에, airflow_scheduler에서 다음과같은 로그가 무수히 발생했다. [2022-11-30 05:11:28,252] {scheduler_job.py:684} ERROR - Executor reports task instance finished (failed) although the task says its queued. (Info: None) Was the task killed externally? 대충 외부요소로 인해서 Task가 죽었다는건데, 자료 조사를 해보니 한가지 공통되는 원인이 보였다. "일단 Re..
[conda] conda env 환경 복사하기 conda env 환경을 완전하게 똑같이 복사를 하고싶어서 자료조사를 해보았고. 아래와 같이 환경에 대한 yaml파일을 얻을수가있다. # 복사하고싶은 conda 가상환경 activate conda activate test # 복사하고자하는 conda 가상환경에 대한 패키지 yml파일 추출 conda env export > environment_root.yml # 가상환경 deactivate conda deactivate # 해당 파일을 가지고 다른 PC로 이동하여 코드 실행 conda env create -f ./environment_root.yml
[Grafana] Slack Alert 메세지 커스텀마이징 우리는 지난 게시글에서 그라파나를 활용하여 슬랙 알람화를 진행했다. 하지만 아래 이미지와 같이 굳이 불필요한 메시지까지 포함되어 슬랙알람이 울리게된다. 알람이 위와같이 울리게된다면 가시성도 떨어지고, 알람이 여러번 울리게된다면 채널이 매우 복잡해진다. 따라서, 이번 게시글에서는 어떻게 슬랙 메세지를 꾸밀지에 대해서 정리해본다. 이번 작업에 필요한건 Grafana Alerting에서 Contact Points탭을 활용할것이다. 위와 같이 보이며, 슬랙 메세지 커스텀을 위해서 새로운 메세지 template을 설정해줄것이다. 해당 template을 작성하기 위해서는 GoLang이 필요하다... 나도 한번도 써보지못한 언어라서 당황했지만... 일단 기본적으로 Grafana에서 예제를 제공해준다. https://..
[Grafana] Slack Alert 만들기 업무상 특정 머신이 고장이 날때마다 매번 사람의 눈으로 모니터링을 하고있었는데, 이를 해결하기 위해서 슬랙과 Grafana를 연동하여 자동으로 머신이 고장날때마다 알람이 보내지게끔 작업을 했다. 처음으로 그라파나를 만져봐서 많은 시행착오를 겪었고 이를 정리하고자한다. Grafana Alerting Rules Setting Grafana의 왼쪽 카테고리에서 종모양(Alerting)을 클릭하면 아래와같이 메뉴들이 존재한다. 여기서 앞에 두개 메뉴만 이용할것이다. Alert rules - 직역하듯이, 알람의 룰을 설정해놓는곳이다 Contact points - 알람이 발생했을때 어떤 방식으로 알람을 보낼것인지에 대한 설정이다 Alert rules에서 새로운 룰을 만드는 버튼을 클릭하면 아래와같이 표시된다 일단 ..
[Airflow] DagFileProcessorManager heartbeat 관련에러 Airflow작업중 webserver에 작성한 DAG이 보이지않아서, 혹시 scheduler에 문제가 생긴게 아닌지해서 docker 로그를 살펴보니 아래와같은 문구가 계속해서 출력중인 상태였음 Airflow Sechulder error ERROR - DagFileProcessorManager (PID=1234) last sent a heartbeat 50.72 seconds ago! Restarting it 해당 문제는 다음과같이 작업하면 해결이 가능함. 만약 로컬 airflow에서 작업한다면 dag_file_processor_timeout의 값을 조정이 필요함. default값으로 50초인데 약 60초로 키우면됨 만일 docker-compose airflow에서 작업한다면 AIRFLOW__CORE__D..
[Jenkins] Docker Jenkins 기본 포트 변경방법 업무에서 Jenkins를 좀 살펴보려는중에, Docker를 이용하여 Jenkins를 띄워보려고했는데 기존 Container에 8080포트를 사용중에 있어서 기본 Jenkins 포트를 바꿔줘야하는 일이 생겼다. 만약에 Docker가 아닌 Local에 Jenkins를 설치했을경우에는 "/etc/default/jenkins" 파일을 수정해야한다라는 정보는 인터넷에 많지만 뭐랄까 Docker안에서의 기본 Jenkins 포트를 변경하는 정보는 그렇게 많지않은것같다. 참고로 아래는 DockerHub에 Jenkins Documentation이다 https://hub.docker.com/_/jenkins jenkins - Official Image | Docker Hub DEPRECATION NOTICE This im..