👋 Hello, I am Seung-ho Ham

🧑🏻‍💻 A Developers who create code that changes the world

Infrastructure/Linux

[Linux] Telegraf/Influxdb/Grafana를 이용한 Windows, Linux 시스템 모니터링 설정 및 문제 해결

Potato_H 2024. 9. 2. 17:55


- Telegraf
: 다양한 시스템 메트릭(CPU, 메모리, 디스크 사용량 등)을 수집하는 에이전트

- InfluxDB: 시계열 데이터베이스로, Telegraf가 수집한 데이터를 저장

- Grafana: InfluxDB에 저장된 데이터를 시각화하여 모니터링 대시보드를 구축하는 도구

 

설치 및 설정 과정 (Windows & Linux)

1) Telegraf 설치 및 설정 (Windows)

  • Telegraf 다운로드 및 설치
# PowerShell에서 Telegraf 다운로드
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.31.2_windows_amd64.zip -UseBasicParsing -OutFile telegraf-1.31.2_windows_amd64.zip

# 다운로드한 파일의 압축을 풀기
Expand-Archive .\telegraf-1.31.2_windows_amd64.zip -DestinationPath 'C:\telegraf'

 

 

Telegraf 설정 파일(telegraf.conf) 편집 Windows에서 다양한 메트릭을 수집하기 위해 아래와 같이 설정합니다:

#Telegraf.conf 파일 메모장으로 실행
notepad c:/telegraf/telegraf-1.31.2/telegraf.conf
[[inputs.win_perf_counters]]
  [[inputs.win_perf_counters.object]]
    ObjectName = "Processor"
    Instances = ["*"]
    Counters = ["% Idle Time", "% Interrupt Time", "% Privileged Time", "% User Time", "% Processor Time"]
    Measurement = "win_cpu"

  [[inputs.win_perf_counters.object]]
    ObjectName = "Memory"
    Counters = ["Available Bytes", "Committed Bytes", "Cache Faults/sec"]
    Measurement = "win_mem"

[[inputs.win_services]]
  servicenames = ["W3SVC", "BITS", "WinRM", "MSSQLSERVER"]

[[inputs.win_eventlog]]
  xpath_queries = [
    "Event[System[Provider[@Name='Microsoft-Windows-Security-Auditing']]]",
    "Event[System[Provider[@Name='Application Error']]]"
  ]
# Telegraf 테스트 모드로 실행
cd "C:\telegraf\telegraf-1.31.2"
.\telegraf.exe --config .\telegraf.conf --test

# Telegraf 서비스 시작
Start-Service telegraf

# Telegraf 서비스 재시작
Restart-Service telegraf

 

2) Telegraf 설치 및 설정 (Linux)

  • Telegraf 설치 Linux에서는 패키지 관리자를 사용하여 Telegraf를 설치합니다
# Ubuntu/Debian
sudo apt-get update && sudo apt-get install -y telegraf

# CentOS/RHEL
sudo yum install -y telegraf

 

Telegraf 설정 파일(telegraf.conf) 편집 Linux에서 다양한 메트릭을 수집하기 위해 아래와 같이 설정합니다

# 설정 파일 열기
sudo nano /etc/telegraf/telegraf.conf
# CPU 메트릭 수집
[[inputs.cpu]]
  percpu = true
  totalcpu = true
  collect_cpu_time = false
  report_active = false

# 메모리 메트릭 수집
[[inputs.mem]]

# 디스크 I/O 메트릭 수집
[[inputs.diskio]]

# 디스크 사용량 메트릭 수집
[[inputs.disk]]
  ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]

# 스왑 메모리 메트릭 수집
[[inputs.swap]]

# 시스템 부하 및 가동 시간 수집
[[inputs.system]]

# 네트워크 메트릭 수집
[[inputs.net]]
# Telegraf 테스트 모드로 실행
sudo telegraf --config /etc/telegraf/telegraf.conf --test

# Telegraf 서비스 시작
sudo systemctl start telegraf

# Telegraf 서비스 상태 확인
sudo systemctl status telegraf

# Telegraf 서비스 재시작
sudo systemctl restart telegraf

 

3) InfluxDB 설치 및 설정

  • 윈도우 - InfluxDB 다운로드 및 설치 InfluxDB 공식 사이트에서 OS에 맞는 버전을 다운로드하고 설치합니다.
  • 리눅스
# Ubuntu/Debian
wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -
source /etc/os-release
echo "deb https://repos.influxdata.com/${ID} ${VERSION_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
sudo apt-get update && sudo apt-get install -y influxdb

# CentOS/RHEL
sudo yum install -y https://repos.influxdata.com/influxdb2.x86_64.rpm
  • InfluxDB 실행 (윈도우, 리눅스 각각)
# Windows
cd "C:\Program Files\InfluxData\influxdb"
.\influxd.exe

# Linux
sudo systemctl start influxdb

 

  • InfluxDB 웹 UI를 통한 데이터베이스 설정
    • 브라우저에서 http://localhost:8086로 이동하여 초기 설정을 완료하고 Telegraf 데이터를 저장할 Bucket을 생성합니다.

4) Grafana 설치 및 설정

  • 윈도우 - Grafana 다운로드 및 설치 Grafana 공식 사이트에서 OS에 맞는 버전을 다운로드하고 설치합니다.
# Grafana 서비스 시작
Start-Service grafana
  • 리눅스
# Ubuntu/Debian
sudo apt-get install -y software-properties-common
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
sudo apt-get update && sudo apt-get install -y grafana

# CentOS/RHEL
sudo yum install -y https://packages.grafana.com/oss/rpm/grafana-release-1.0-1.noarch.rpm
sudo yum install -y grafana
# Grafana 서비스 시작
sudo systemctl start grafana-server

# Grafana 서비스 상태 확인
sudo systemctl status grafana-server

# Grafana 서비스 재시작
sudo systemctl restart grafana-server

 

Grafana 웹 UI에 접근

  • 브라우저에서 http://localhost:3000으로 이동하여 Grafana 웹 UI에 접근
  • 기본 로그인 정보는 admin/admin

데이터 소스 및 대시보드 설정

  1. Grafana에서 InfluxDB 데이터 소스 추가
    • Grafana 웹 UI에서 Configuration > Data Sources로 이동합니다.
    • Add data source를 클릭하고 InfluxDB를 선택한 후, 다음 정보를 입력합니다:
      • URL: http://localhost:8086
      • Database: telegraf (Telegraf에서 설정한 데이터베이스 이름)
      • User  Password: InfluxDB의 인증 정보
  2. Grafana 대시보드 생성
    • Grafana에서 새로운 대시보드를 생성하고, InfluxDB에서 수집된 데이터를 시각화할 패널을 추가합니다.
    • CPU, 메모리, 디스크, 네트워크 등 다양한 지표를 시각화하여 실시간 모니터링이 가능하도록 설정합니다.

 

Windows와 Linux 환경에서 Telegraf, InfluxDB, Grafana를 사용해 시스템 모니터링을 설정 중 발생한 다양한 문제

 

Windows와 Linux에서 Telegraf, InfluxDB, Grafana를 사용하여

시스템 모니터링을 설정하면서 겪은 문제들과 해결 방법

 

 

1. Telegraf Windows 서비스 설정 오류 해결

- sc.exe 명령어는 윈도우 파워쉘이 아닌 cmd창에 입력해야한다. (관리자 권한으로 명령 프롬프트 실행)

- sc.exe delete "Telegraf" 로 기존 서비스 삭제 시에 삭제 반영까지 조금 걸린다.

 

 

2. InfluxDB에서 Windows와 Linux의 데이터를 구분하여 수집하기

- Windows와 Linux에서 각각 Telegraf를 설정하여 데이터를 수집할 때, 데이터베이스 이름이 같아 혼동이 발생할 수 있다.

- Windows와 Linux에서 Telegraf의 설정 파일(telegraf.conf)이 동일한 이름을 사용하고 있어서 InfluxDB에서 두 시스템의 데이터가 혼동되었으며, 윈도우에서는 win_telegraf.conf, 리눅스에서는 telegraf.conf로 지정하였다.

 

 

3. Telegraf 설정 파일에서 win_perf_counters 및 win_services 수정

기본 설정 파일에는 수집할 성능 카운터(메모리, 디스크, cpu 등의 리소스)와 서비스가 제대로 정의되어 있지 않았습니다. 따라서 Telegraf가 원하는 데이터를 수집하지 못하여, 아래와 같이 주석을 해제하여 수정하였다.

[[inputs.win_perf_counters]]
  ## CPU 사용률 수집
  [[inputs.win_perf_counters.object]]
    ObjectName = "Processor"
    Instances = ["*"]
    Counters = ["% Idle Time", "% Interrupt Time", "% Privileged Time", "% User Time", "% Processor Time"]
    Measurement = "win_cpu"

  ## 메모리 사용률 수집
  [[inputs.win_perf_counters.object]]
    ObjectName = "Memory"
    Counters = ["Available Bytes", "Cache Faults/sec", "Page Faults/sec", "Pages/sec"]
    Measurement = "win_mem"

  ## 디스크 I/O 성능 수집
  [[inputs.win_perf_counters.object]]
    ObjectName = "PhysicalDisk"
    Instances = ["*"]
    Counters = ["Disk Read Bytes/sec", "Disk Write Bytes/sec", "Current Disk Queue Length"]
    Measurement = "win_diskio"

 

 

4. 데이터 수집 오류: Telegraf와 InfluxDB 연결 문제

Telegraf가 InfluxDB에 데이터를 전송하지 못하는 문제가 있었다.

  1) InfluxDB URL 확인: telegraf.conf에서 urls = ["http://<InfluxDB 서버 IP>:8086"]로 설정을 확인

  2) 사용자 이름과 비밀번호가 정확한지 확인

 

 

 

telegraf.conf 파일에서 잘못된 옵션을 사용하거나 누락된 설정으로 인해 오류가 발생.

notepad .\telegraf.conf 로 conf 파일의 잘못된 옵션 수정

기본적으로 사용 가능한 옵션들이 모두 작성되어있으며 사용할 것 외엔 주석 처리가 되어있었음

주석 처리 되지 않은 옵션과 중복되지 않게 추가하여 주어야 하며, 필요한 옵션을 찾아 주석을 지워줘야함

InfluxDB에 데이터가 표시되지 않음

Telegraf의 로그 파일을 확인하여 데이터 수집 및 전송 과정에서 오류가 발생했는지 확인하고, Telegraf를 테스트 모드로 실행하여 데이터가 제대로 수집되고 있는지 확인해야함

telegraf --config telegraf.conf --test

Grafana 대시보드에 데이터가 표시되지 않음

Grafana에서 InfluxDB 데이터 소스 설정을 확인하고, 올바른 URL, 데이터베이스 이름, 인증 정보를 입력했는지 확인, InfluxDB가 데이터를 제대로 저장하고 있는지, Telegraf와 InfluxDB 간의 연결 확인

 

 

 

 

<대시보드 설정하는 쉬운 방법(템플릿)>

Dashboard 탭에서 Import 클릭 후  grafana.com/dashboards에 접속 후 가져올 대시보드 ID를 가져와 입력

 

Grafana dashboards | Grafana Labs

No results found. Please clear one or more filters.

grafana.com

템플릿에 보이는 대로 대시보드 설정 완료

반응형