티스토리 뷰

  1.  

개요

개발 도중 이유를 알아내기 어려웠던 문제를 ChatGPT를 이용하여 해결했던 경험을 공유해본다. 가장 인상적이었던 것은 해석해내기 어려웠던 모니터링 도구의 로그를 풀어내준 것이다.

문제

상황

GitHub의 Container Registry인 GHCR에서 이미지를 가져오려면(pull) 로그인을 해두어야 한다.

# CR_PAT: GitHub에서 PAT(Personal Access Token)을 생성해둔 것이다. 
$ echo $CR_PAT| docker login ghcr.io --username $GITHUB_USERNAME --password-stdin

이렇게 로그인을 해두면 로그인 정보를 저장해두어서 다시 로그인을 할 필요가 없어진다.

$ cat ~/.docker/config.json 
{
        "auths": {
                "ghcr.io": {
                        "auth": "ZGV2AAAAbm90YXRpb24tYWAAAA(생략)=="
                }
        }
}

이슈

문제는 희한하게 여러 서버중에서 이 서버에서만 ~/.docker/config.json 파일이 불규칙적으로 리셋된다는 것이다. 위의 auth 필드가 모두 지워져 버린다. 다양한 구글 검색으로 모니터링 방법을 알아보았지만 정확한 원인을 알아낼 수 없었다.

ChatGPT plus

최근에 생성형 AI에 관심이 많아져서 몇몇 제품을 사용해보고 있는데 특히나 ChatGPT를 업무중에 많이 이용하게 되었다. 1~2주 묵은 이 문제를 ChatGPT로 풀어보면 어떨까 생각이 들었고 그 결과는 성공적이었다. 이제 그 과정의 단계를 정리해본다. GPT-4를 사용하였으며, 영어 문장의 빈곤함은 양해를 바란다.

첫 질문. 특정 파일이 자꾸만 리셋이 된다.

다음과 같이 프로그램을 이용하여 파일을 지켜보게 설정하였다.

  1. auditd 라는 프로그램을 설치하고 서비스를 시작
  2. auditctl로 어느 파일을 지켜볼지를 정하고, write랑 attribute change에 대해서 볼 권한을 주고, 파일이 변경되는 경우에 보겠다고 키를 설정한다.
  3. ausearch로 로그를 볼 수 있다.

두 번째 질문. 로그를 분석해줘

이 부분이 이 포스팅의 하이라이트이다. auditd 라는 프로그램을 처음 알게되었는데 또다시 이슈가 발생하고 나서 로그를 보니 나로서는 외계어나 다름없었다. 로그에 대한 분석을 요청해보자! 라는 생각이 떠올랐다.

로그는 다음과 같았다

could you explain the ausearch result log below 라고만 쓰고 그 아래에 로그를 복사해 붙여넣은 것이 전부이다. 로그의 세부 내용은 혹시 몰라 삭제했다.

촘촘한 ChatGPI의 설명

로그의 각 키에 대한 설명을 상세하게 해 주어서 큰 도움이 되었다. 그 중에서도 핵심은 이 명령을 호출한 pid와 ppid를 알려준 것이다.

해결

결국 pid, ppid로 원인을 찾아내었다. 이 포스팅의 주제와는 상관없지만 원인은 다음과 같았다.

1. 특정 GitHub 저장소에서는 PR merge시에 GitHub Action으로 도커 이미지를 생성하고 이를 GHCR로 push 한다.

2. 그런데, 해당 프로젝트의 빌드 타임이 오래걸려서 재미, 경험, 실험의 의미로 위에 문제가 되었던 서버에 self-hosted runner를 생성해서 실행시키고 있었던 것이다. (아래 설명은 Notion AI로 생성)

 self-hosted runner는 GitHub Actions에서 제공하는 기능 중 하나로, 사용자가 직접 구성한 환경에서 워크플로우를 실행할 수 있도록 해줍니다. 즉, 사용자가 소유한 머신, 가상 머신, 컨테이너 등에서 GitHub Actions 워크플로우를 실행할 수 있습니다.

3. 그런데 GitHub Actions는 이 모든 작업이 끝나면 GHCR logout을 하며 작업을 정리하는데 바로 이 때문에 해당 액션이 작동할 때마다 해당 서버의 GHCR login이 풀렸던 것이다.

 

반응형
반응형
잡학툰 뱃지
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함