Skip to content

alloy 가 textfile 지표를 수집하게 한다 - #36

Merged
m-a-king merged 1 commit into
mainfrom
infra/35-alloy-textfile-collector
Aug 9, 2026
Merged

alloy 가 textfile 지표를 수집하게 한다#36
m-a-king merged 1 commit into
mainfrom
infra/35-alloy-textfile-collector

Conversation

@m-a-king

@m-a-king m-a-king commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Situation

  • 배치성 작업(cron 등)은 상시 노출할 엔드포인트가 없어 스크랩 대상이 못 된다. 그래서 그 결과가 관측에 전혀 잡히지 않는다.
  • 당장 걸린 것은 core 의 DB 백업이다 (DB 백업 실패를 알아채도록 알림을 붙인다 core#905). 마지막 성공 시각을 지표로 남기기 시작했는데, 공용 alloy 블록이 그 디렉터리를 읽지 않아 Grafana 까지 가지 않았다.

Task

  • 파일로 놓인 지표를 호스트 메트릭에 얹어 함께 전송한다.
  • 다른 서비스(extractor·renderer)에는 아무 영향이 없어야 한다. 공용 블록이라 세 박스가 모두 이 변경을 받는다.

Action

  • config.alloy 의 호스트 메트릭 수집기에 textfile collector 를 켰다. node_exporter 의 표준 기능으로, 시스템이 직접 주지 않는 값을 파일에서 받아 함께 내보내는 자리다.
  • provision-alloy.sh 가 호스트 디렉터리를 미리 만들고 읽기 전용으로 마운트한다.
  • mkdir 을 먼저 하는 이유: 없는 경로를 -v 로 넘기면 docker 가 호스트에 root 소유 디렉터리를 만들어 버린다. 그러면 지표를 쓰는 쪽(백업 스크립트 등)이 권한에 걸릴 수 있어, 소유·권한을 예측 가능하게 두려고 먼저 만든다.
  • 영향 범위: 디렉터리가 비어 있는 박스에서는 collector 가 아무 지표도 안 읽고 그대로 넘어간다. 쓰는 쪽이 없는 서비스는 변화가 없다.

Result

운영과 같은 버전(v1.16.1)으로 검증하고, DB 박스에 실제 적용해 확인했다.

검증 결과
설정 문법 validate 통과. 틀린 키를 넣으면 exit 1 이 나오는 것까지 대조해 검사가 성립함을 확인
마운트 /var/lib/node_exporter/textfile -> /host/textfile 읽기 전용으로 붙음
collector 활성화 alloy 로그에 collector=textfile
실제 수집 임시 지표 파일을 넣자 전송 series 가 532 에서 534 로 증가, 지우자 원복
  • 첫 소비자인 DB 백업 지표(마지막 성공 시각·크기·상태)가 이제 Grafana 로 간다. 박스에 이미 쌓여 있던 과거분도 함께 보인다.
  • 후속으로 "24시간 넘게 성공 없음" 알림 룰을 건다. 이 프로젝트의 첫 Grafana 알림 룰이 된다.

연관 이슈

Summary by CodeRabbit

  • 새로운 기능
    • 호스트의 사용자 정의 Prometheus 지표(.prom 파일)를 시스템 메트릭과 함께 수집합니다.
    • 필요한 지표 디렉터리를 자동으로 생성하고 읽기 전용으로 연결합니다.
    • 지표 디렉터리가 없어도 기존 수집 작업은 정상적으로 계속됩니다.

- 배치성 작업은 상시 노출할 엔드포인트가 없어 스크랩 대상이 못 된다. 결과를 .prom 파일로 써 두면 호스트 메트릭에 얹혀 함께 전송되도록, node_exporter 의 textfile collector 를 켠다
- 첫 소비자는 core 의 DB 백업이다(TeamPiKi/core#905). 마지막 성공 시각을 지표로 남겨야 "며칠째 성공하지 못했다"를 판단할 수 있다 - 실패 알림만으로는 스크립트가 아예 실행되지 않은 침묵을 못 잡는다
- provision-alloy.sh 가 호스트 디렉터리를 미리 만들고 읽기 전용으로 마운트한다. mkdir 을 먼저 하는 이유는, 없는 경로를 -v 로 넘기면 docker 가 root 소유로 만들어 버려 지표를 쓰는 쪽이 권한에 걸릴 수 있어서다
- 다른 박스에는 영향이 없다. 디렉터리가 비어 있으면 collector 가 아무 지표도 안 읽고 넘어간다
- 검증: 운영과 같은 v1.16.1 로 validate 통과(틀린 키를 넣으면 exit 1 이 나오는 것까지 대조), DB 박스에 적용 후 마운트가 ro 로 붙은 것과 collector 활성화 로그 확인. 임시 지표 파일을 넣자 전송 series 가 532 에서 534 로 늘고 지우자 원복되는 것으로 실제 수집을 실증했다
@m-a-king m-a-king added the infra 운영 환경 (IaC·클라우드 리소스·secret·배포 workflow) label Aug 9, 2026
@m-a-king m-a-king linked an issue Aug 9, 2026 that may be closed by this pull request
@m-a-king m-a-king self-assigned this Aug 9, 2026
@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 3844bd8a-e3ba-4941-86f2-a2ed4f3fe586

📥 Commits

Reviewing files that changed from the base of the PR and between 6fd7ffe and a9ae9d8.

📒 Files selected for processing (2)
  • blocks/alloy/config.alloy
  • blocks/alloy/provision-alloy.sh

📝 Walkthrough

Walkthrough

호스트 textfile 메트릭 디렉터리를 생성하고 Alloy 컨테이너에 읽기 전용으로 마운트한다. Unix exporter는 /host/textfile.prom 파일을 기존 호스트 메트릭과 함께 수집한다.

Changes

호스트 textfile 메트릭 수집

Layer / File(s) Summary
Textfile 수집 경로 설정
blocks/alloy/provision-alloy.sh, blocks/alloy/config.alloy
호스트 textfile 디렉터리를 생성하고 /host/textfile로 읽기 전용 마운트한다. Unix exporter에 textfile collector를 추가한다. 디렉터리가 없으면 기존 호스트 메트릭 수집을 계속한다.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

  • TeamPiKi/infra#3: 기존 Alloy 설정과 provision 스크립트에 호스트 textfile collector 및 읽기 전용 볼륨 마운트를 확장한 변경이다.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목이 Alloy의 textfile 지표 수집이라는 주요 변경 사항을 명확하고 간결하게 설명합니다.
Linked Issues check ✅ Passed 설정에 textfile collector를 추가하고 호스트 디렉터리를 읽기 전용으로 마운트하여 이슈의 요구 사항을 충족합니다.
Out of Scope Changes check ✅ Passed 모든 변경 사항이 Alloy의 textfile 지표 수집과 호스트 디렉터리 마운트 범위에 포함됩니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@m-a-king
m-a-king merged commit 73300ea into main Aug 9, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

infra 운영 환경 (IaC·클라우드 리소스·secret·배포 workflow)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

alloy 가 textfile 지표를 수집하게 한다

1 participant