μ‘°μ§μ—μ„œ μ•„λ§ˆμ‘΄ μ›Ή μ„œλΉ„μŠ€λ₯Ό ν΄λΌμš°λ“œ ν™˜κ²½μœΌλ‘œ μ‚¬μš©ν•˜κ³€ μžˆμ§€λ§Œ 인프라 μ—”μ§€λ‹ˆμ–΄λ‘œ κ΅¬μ„±λœ μΈν”„λΌνŒ€μ΄ λ³„λ„λ‘œ μ‘΄μž¬ν•˜μ§€ μ•Šλ‹€λ³΄λ‹ˆ ν΄λΌμš°λ“œ μ„œλΉ„μŠ€λ₯Ό μ œλŒ€λ‘œ ν™œμš©ν•˜μ§€ μ•Šκ³  ν•„μš”ν•˜λ‹€κ³  생각될 λ•Œ μ–΄λ–»κ²Œ μ‚¬μš©ν•΄μ•Όν•˜λŠ”κ°€λ₯Ό 찾아보고 κ³ λ―Όν•˜κ²Œ λ˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. μ„œλ²„ μΈμŠ€ν„΄μŠ€ λͺ¨λ‹ˆν„°λ§μ— λŒ€ν•΄μ„œλ„ κΈ°λ³Έμ μœΌλ‘œλŠ” μ›Ή μ½˜μ†”μ—μ„œ μ§€ν‘œλ₯Ό 확인할 수 μžˆλ„λ‘ Amazon EC2 λͺ¨λ‹ˆν„°λ§κΈ°λŠ₯을 μ œκ³΅ν•˜κ³  μžˆμ§€λ§Œ 5λΆ„ λ‹¨μœ„λ‘œ μˆ˜μ§‘λ˜λŠ” μ§€ν‘œλ₯Ό 1λΆ„ λ‹¨μœ„λ‘œ μˆ˜μ§‘ν•˜κΈ° μœ„ν•΄μ„œλŠ” μΈμŠ€ν„΄μŠ€μ— λŒ€ν•œ μ„ΈλΆ€ λͺ¨λ‹ˆν„°λ§ ν™œμ„±ν™”λ₯Ό ν•΄μ•Όν•˜κ³  더 λ§Žμ€ μΈμŠ€ν„΄μŠ€μ— λŒ€ν•œ μ§€ν‘œλ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄μ„œλŠ” EC2 μΈμŠ€ν„΄μŠ€μ— CloudWatch μ—μ΄μ „νŠΈ μ„€μΉ˜ν•΄μ•Όν•˜κ³  λ³„λ„μ˜ λΉ„μš©μ΄ μΆ”κ°€μ μœΌλ‘œ λ“ λ‹€λŠ” 점으둜 μΈν•˜μ—¬ μ‚¬μš©ν•˜μ§€λŠ” μ•Šκ³  μžˆμŠ΅λ‹ˆλ‹€.

νšŒμ‚¬ 사내 μ„œλ²„μ— 개인적으둜 ν”„λ‘œλ©”ν…Œμš°μŠ€ 및 κ·ΈλΌνŒŒλ‚˜ μ„œλ²„λ₯Ό μ‹€ν–‰ν•΄λ‘μ—ˆκΈ° λ•Œλ¬Έμ— Node Exporterλ₯Ό ν™œμš©ν•΄μ„œ EC2 μΈμŠ€ν„΄μŠ€μ— 접속할 수 μžˆλŠ” κΆŒν•œμ΄ μžˆλ‹€λ©΄ μ§€ν‘œλ₯Ό μˆ˜μ§‘ν•  수 μžˆλŠ” λ°©μ•ˆμ„ λ§ˆλ ¨ν•  수 μžˆλ‹€κ³  μƒκ°λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 고객으둜 λΆ€ν„° μ›Ή μ½˜μ†”μ„ μ ‘κ·Όν•  수 μžˆλŠ” κΆŒν•œμ„ 뢀여받기도 ν•˜κ³  μ–΄λ–€ 고객은 λ³΄μ•ˆ 상 이유둜 μΈν•˜μ—¬ 인프라 ꡬ성과 κ΄€λ¦¬λŠ” 직접 λ‹΄λ‹Ήν•˜κ³  정해진 μŠ€νŽ™μ— λ”°λΌμ„œ μƒμ„±ν•œ EC2 μΈμŠ€ν„΄μŠ€ 접속 κΆŒν•œλ§Œ λΆ€μ—¬ν•˜κΈ° λ•Œλ¬Έμ— CloudWatchλ₯Ό κ³΅ν†΅μ μœΌλ‘œ μ‚¬μš©ν•˜λ„λ‘ ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

νšŒμ‚¬ 사내 μ„œλ²„μ— μž„μ‹œμ μœΌλ‘œ κ΅¬μ„±ν•œ ν”„λ‘œλ©”ν…Œμš°μŠ€ 및 κ·ΈλΌνŒŒλ‚˜λŠ” λͺ¨λ‹ˆν„°λ§ λ°©μ•ˆμ΄ κ²€ν† λ˜λ©΄ μ‘°μ§λ‚΄μ—μ„œ μš΄μ˜μ€‘μΈ ν΄λΌμš°λ“œ ν™˜κ²½μœΌλ‘œ 이전할 μƒκ°μž…λ‹ˆλ‹€.

μ•„λ¬΄νŠΌ ν˜„μž¬ μ‘°μ§μ—μ„œ λͺ¨λ‹ˆν„°λ§ λ°©μ•ˆμ„ μ œλŒ€λ‘œ κ²€ν† ν•  수 μžˆλŠ” λ‹¨κ³„λŠ” μ•„λ‹ˆμ§€λ§Œ 고객의 인프라 ν™˜κ²½μ— μ‹œμŠ€ν…œμ„ λ°°ν¬ν•˜κ³  μš΄μ˜ν•˜κ³  μžˆμœΌλ―€λ‘œ μ΅œμ†Œν•œ 원인을 μ°Ύμ•„κ°€κΈ° μœ„ν•œ μ§€ν‘œλŠ” λ‚¨κ²¨λ‘μ–΄μ•Όν•œλ‹€κ³  μƒκ°ν•˜κΈ°μ— Node Exporterλ₯Ό μΌκ΄„μ μœΌλ‘œ μ„€μΉ˜ν•˜λŠ” μž‘μ—…μ„ μˆ˜ν–‰ν–ˆκ³  이에 λŒ€ν•œ 정보λ₯Ό λ‚¨κΈ°κ³ μž ν•©λ‹ˆλ‹€.

Node Exporter

Node ExporterλŠ” ν”„λ‘œλ©”ν…Œμš°μŠ€ ν”„λ‘œμ νŠΈμ—μ„œ κ³΅μ‹μ μœΌλ‘œ μ§€μ›ν•˜λŠ” μ‹œμŠ€ν…œ λ§€νŠΈλ¦­μ„ μˆ˜μ§‘ν•˜λŠ” 방법을 μ œκ³΅ν•˜λŠ” Exporter μž…λ‹ˆλ‹€. Installing and running the Node Exporter와 같이 Node Exporterλ₯Ό μ„€μΉ˜ν•˜κ³  μ‹€ν–‰ν•˜λŠ” 방법에 λŒ€ν•œ κ°€μ΄λ“œ λ¬Έμ„œλ„ μ œκ³΅ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

EC2 μΈμŠ€ν„΄μŠ€λŠ” μƒνƒœκ°€ 정상적이지 μ•ŠμŒμ΄ ν™•μΈλ˜λ©΄ μΈμŠ€ν„΄μŠ€ 볡ꡬ κΈ°λŠ₯으둜 μ•„λ§ˆμ‘΄ μ›Ή μ„œλΉ„μŠ€μ—μ„œ μžλ™μœΌλ‘œ μΈμŠ€ν„΄μŠ€ μƒνƒœλ₯Ό 볡원할 수 μžˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μ–Έμ œλ“ μ§€ EC2 μΈμŠ€ν„΄μŠ€κ°€ μž¬λΆ€νŒ…λ˜μ–΄ 싀행쀑인 ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ  수 μžˆμŠ΅λ‹ˆλ‹€. μ„œλ²„ μΈμŠ€ν„΄μŠ€κ°€ μž¬λΆ€νŒ…λ˜μ–΄λ„ μžλ™μœΌλ‘œ ν”„λ‘œμ„ΈμŠ€κ°€ μ‹€ν–‰λ˜λ„λ‘ μœ μ§€ν•˜κΈ° μœ„ν•΄μ„œ Systemd와 같은 μ„œλΉ„μŠ€λ₯Ό λ“±λ‘ν•˜λ„λ‘ κ΅¬μ„±ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

EC2 μΈμŠ€ν„΄μŠ€ μ•„ν‚€ν…μ²˜

μ•„λ§ˆμ‘΄ μ›Ή μ„œλΉ„μŠ€μ—μ„œλŠ” 일반적으둜 μ‚¬μš©λ˜λŠ” amd64 기반의 μ•„ν‚€ν…μ²˜ 뿐만 μ•„λ‹ˆλΌ Arm 기반의 AWS Graviton ν”„λ‘œμ„Έμ„œλ‘œ μ œκ³΅λ˜λŠ” μΈμŠ€ν„΄μŠ€λ₯Ό μ œκ³΅ν•˜κ³  μ΅œκ·Όμ—λŠ” Arm 기반의 μΈμŠ€ν„΄μŠ€λ₯Ό 톡해 더 μ €λ ΄ν•œ κ°€κ²©μœΌλ‘œ μ„œλ²„ μΈμŠ€ν„΄μŠ€λ₯Ό μ‹€ν–‰ν•˜λ―€λ‘œ EC2 μΈμŠ€ν„΄μŠ€μ˜ μ•„ν‚€ν…μ²˜λ₯Ό ν™•μΈν•˜κ³  μ‚¬μš©ν•  수 μžˆλŠ” μ˜¬λ°”λ₯΄κ²Œ λΉŒλ“œλœ νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œ λ°›μ•„μ„œ μ„€μΉ˜ν•΄μ•Όν•©λ‹ˆλ‹€.

$ uname -rmpo
4.14.256-197.484.amzn2.aarch64 aarch64 aarch64 GNU/Linux

릴리즈 파일 λ‹€μš΄λ‘œλ“œ 및 μ„€μΉ˜

EC2 μΈμŠ€ν„΄μŠ€μ˜ μ•„ν‚€ν…μ²˜ μœ ν˜•μ„ ν™•μΈν–ˆλ‹€λ©΄ 릴리즈 νŒŒμΌμ—μ„œ μœ„ μ•„ν‚€ν…μ²˜μ— λ§žλŠ” arm64κ°€ ν¬ν•¨λœ 릴리즈 νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œν•©λ‹ˆλ‹€. λŒ€λΆ€λΆ„μ˜ μ˜ˆμ œλŠ” 일반적으둜 μ‚¬μš©ν•˜λŠ” x86_64 μ•„ν‚€ν…μ²˜λ₯Ό κΈ°μ€€μœΌλ‘œ ν•˜κΈ° λ•Œλ¬Έμ— amd64λ₯Ό λ‹€μš΄λ‘œλ“œ ν•©λ‹ˆλ‹€.

wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-arm64.tar.gz

tar zxvf node_exporter-1.3.1.linux-arm64.tar.gz
sudo cp node_exporter-1.3.1.linux-arm64/node_exporter /usr/local/bin/

sudo useradd -M -r -s /bin/false node_exporter
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter

Node Exporter 용 μ‚¬μš©μž μΆ”κ°€

인프라 μ—”μ§€λ‹ˆμ–΄κ°€ μ•„λ‹ˆκΈ°μ— μ‚¬μš©μžλ₯Ό 직접 좔가해본적이 μ—†μ–΄μ„œ μ‚¬μš©μžλ₯Ό μΆ”κ°€ν•˜λŠ” λͺ…령어에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μ•„μ•Όν–ˆμŠ΅λ‹ˆλ‹€. λ§Žμ€ μ˜ˆμ œλ“€μ—μ„œ μ‚¬μš©μž μΆ”κ°€ μ‹œ μ μš©ν•˜λŠ” μ˜΅μ…˜μ΄ μ œκ°κ°μ΄λΌμ„œ 더 ν˜Όλž€μ΄ μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

# sudo useradd --no-create-home --system --shell /bin/false node_exporter
sudo useradd -M -r -s /bin/false node_exporter

μ‹œμŠ€ν…œ 계정을 μƒμ„±ν•˜λ˜ 둜그인이 λΆˆκ°€λŠ₯ν•˜λ„λ‘ ν•˜λ©΄ λ˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

Systemd μ„œλΉ„μŠ€ 등둝

μ„€μΉ˜ν•œ λ°”μ΄λ„ˆλ¦¬λ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•΄μ„œ Systemd μ„œλΉ„μŠ€λ₯Ό λ“±λ‘ν•˜κ³  Systemctl λͺ…λ Ήμ–΄λ₯Ό 톡해 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹€ν–‰ν•˜κ³  μ„œλ²„κ°€ λΆ€νŒ…λ  λ•Œ μžλ™μœΌλ‘œ μ‹œμž‘λ˜λ„λ‘ ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

sudo tee /etc/systemd/system/node_exporter.service <<"EOF"
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=node_exporter
Group=node_exporter
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl status node_exporter
sudo systemctl enable node_exporter

맀트릭 확인

Node Exporter μ„œλΉ„μŠ€κ°€ μ •μƒμ μœΌλ‘œ 싀행됬닀면 curl λͺ…λ Ήμ–΄λ₯Ό ν†΅ν•΄μ„œ μ§€ν‘œλ₯Ό κ°€μ Έμ˜¬ 수 μžˆλŠ”μ§€ ν™•μΈν•˜κ³  μ’…λ£Œν•©λ‹ˆλ‹€.

curl -s localhost:9100/metrics

μ°Έκ³