systemctl
자체는 서비스의 상태를 확인하는 데 사용되지만, 구체적인 CPU 및 메모리 사용량을 확인하기 위한 기능은 포함되어 있지 않습니다. 이를 확인하려면 systemctl
로 실행 중인 서비스의 PID(Process ID)를 확인한 후, 해당 프로세스의 상태를 top
, ps
, 또는 systemd-cgtop
등을 이용해 확인할 수 있습니다.
1. systemctl로 PID 확인
systemctl
을 통해 구동 중인 서비스의 PID를 확인해야 합니다.
systemctl show <서비스명> --property=MainPID
예를 들어, nginx
서비스의 PID를 확인하려면 다음과 같이 입력합니다.
systemctl show nginx --property=MainPID
2. top 명령어를 사용하여 CPU/메모리 사용량 확인
PID를 확인한 후, top
명령어를 이용해 특정 프로세스의 CPU 및 메모리 사용량을 실시간으로 모니터링할 수 있습니다.
top -p <PID>
예를 들어, PID가 1234인 프로세스의 상태를 확인하려면 다음과 같이 입력합니다.
top -p 1234
3. ps 명령어를 사용하여 CPU/메모리 사용량 확인
특정 PID에 대한 메모리 및 CPU 사용량을 한 번에 확인하려면 ps
명령어를 사용할 수 있습니다.
ps -p <PID> -o %cpu,%mem,cmd
이 명령어는 해당 PID의 CPU 사용률(%CPU), 메모리 사용률(%MEM), 명령어(CMD)를 출력합니다.
4. systemd-cgtop 명령어로 서비스별 리소스 사용량 확인
systemd-cgtop
은 systemd에서 관리되는 서비스의 CPU, 메모리, IO 사용량을 보여줍니다.
systemd-cgtop
여기서 서비스별로 CPU, 메모리 사용량을 확인할 수 있습니다. systemd-cgtop
은 실시간으로 업데이트되며, GUI를 통한 간단한 모니터링 도구로 유용합니다.
5. systemctl을 통한 리소스 사용량 확인 (CPUAccounting, MemoryAccounting)
추가로, systemd의 리소스 제어 기능을 활성화하면 각 서비스가 사용하는 CPU 및 메모리 사용량을 systemd로부터 직접 확인할 수도 있습니다. CPUAccounting
및 MemoryAccounting
옵션을 활성화한 후 다음과 같은 명령어로 확인 가능합니다.
systemctl show <서비스명> -p CPUUsageNS
systemctl show <서비스명> -p MemoryCurrent
이 명령어는 해당 서비스의 누적 CPU 시간 및 현재 메모리 사용량을 나노초 단위로 출력합니다.
서비스의 CPU 및 메모리 사용량을 모니터링하고 가시화하는 방법은 다양한 도구와 시스템을 활용할 수 있습니다. 서버의 상태를 실시간으로 수집하고, 이를 한눈에 파악할 수 있는 대시보드를 제공하는 것은 시스템 안정성과 성능을 유지하는 데 매우 중요합니다.
1. Telegraf + InfluxDB + Grafana
이 조합은 가장 널리 사용되는 시스템 모니터링 스택 중 하나로, 수집된 데이터를 가시화하는 데 매우 효과적입니다.
1-1. Telegraf 설치 및 설정
Telegraf는 다양한 입력 플러그인을 통해 시스템 메트릭을 수집하고, 이를 InfluxDB와 같은 데이터베이스로 전송합니다.
- Telegraf 설치
sudo apt-get update sudo apt-get install telegraf
- Telegraf 설정 파일 수정 (
/etc/telegraf/telegraf.conf
)
시스템 메트릭을 수집하는 기본 플러그인들을 활성화할 수 있습니다.여기에서 CPU, 메모리 사용량을 수집하는 플러그인을 활성화할 수 있습니다.[[inputs.cpu]] percpu = true totalcpu = true collect_cpu_time = false report_active = true [[inputs.mem]]
1-2. InfluxDB 설치 및 설정
수집된 데이터를 저장하는 시계열 데이터베이스로 InfluxDB를 사용합니다.
- InfluxDB 설치
sudo apt-get update sudo apt-get install influxdb sudo systemctl start influxdb
- InfluxDB에 데이터베이스 생성
Telegraf가 수집한 데이터를 저장할 데이터베이스를 생성합니다.influx CREATE DATABASE telegraf
1-3. Grafana를 이용한 데이터 시각화
Grafana는 InfluxDB에 저장된 데이터를 대시보드 형태로 시각화하는 도구입니다.
- Grafana 설치
sudo apt-get update sudo apt-get install grafana sudo systemctl start grafana-server
- InfluxDB 데이터 소스 추가
Grafana 대시보드에서 InfluxDB를 데이터 소스로 추가하고, CPU 및 메모리 사용량을 시각화할 수 있는 그래프를 생성합니다.Add data source
에서 InfluxDB를 선택하고, URL과 데이터베이스 정보를 입력합니다.
- 대시보드 생성
Grafana에서 다양한 차트를 만들어 CPU, 메모리, 네트워크 사용량 등 여러 시스템 메트릭을 실시간으로 시각화할 수 있습니다.
2. Prometheus + Node Exporter + Grafana
Prometheus는 시계열 데이터를 수집하고 분석하는 데 매우 유용한 오픈소스 도구입니다. Prometheus와 Node Exporter를 사용해 서버의 리소스 메트릭을 수집하고, 이를 Grafana를 통해 시각화할 수 있습니다.
2-1. Node Exporter 설치
Node Exporter는 Prometheus에 서버 메트릭을 제공하는 역할을 합니다.
- Node Exporter 설치
이 명령어는 Node Exporter를 설치하고 실행합니다. Node Exporter는 기본적으로 9100 포트에서 메트릭을 노출합니다.wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz tar xvfz node_exporter-1.2.2.linux-amd64.tar.gz cd node_exporter-1.2.2.linux-amd64 ./node_exporter
2-2. Prometheus 설치 및 설정
Prometheus는 Node Exporter에서 데이터를 수집하고 이를 저장합니다.
- Prometheus 설치
wget https://github.com/prometheus/prometheus/releases/download/v2.30.3/prometheus-2.30.3.linux-amd64.tar.gz tar xvfz prometheus-2.30.3.linux-amd64.tar.gz cd prometheus-2.30.3.linux-amd64 ./prometheus --config.file=prometheus.yml
- Prometheus 설정 파일 수정 (
prometheus.yml
)
Node Exporter에서 데이터를 수집하기 위해 Prometheus 설정 파일을 수정합니다.scrape_configs: - job_name: 'node_exporter' static_configs: - targets: ['localhost:9100']
2-3. Grafana에서 시각화
Grafana에서 Prometheus를 데이터 소스로 추가하고, Node Exporter에서 수집한 메트릭을 기반으로 CPU, 메모리 사용량 등을 시각화할 수 있습니다.
3. Collectd + Graphite + Grafana
Collectd는 시스템 메트릭을 수집하고 Graphite와 같은 백엔드로 전송하는 데 사용할 수 있습니다. Graphite는 시계열 데이터를 저장하고 분석하는 데 특화된 도구이며, 이를 Grafana에서 시각화할 수 있습니다.
3-1. Collectd 설치 및 설정
- Collectd 설치
sudo apt-get install collectd
- Collectd 설정 파일 수정 (
/etc/collectd/collectd.conf
)
Collectd에서 CPU와 메모리 사용량을 수집하도록 설정합니다.LoadPlugin cpu LoadPlugin memory
3-2. Graphite 설치 및 설정
Graphite는 시계열 데이터를 수집하고 저장하는 도구입니다.
- Graphite 설치
sudo apt-get install graphite-web graphite-carbon
- Collectd와 Graphite 연동
Collectd에서 수집한 데이터를 Graphite에 저장할 수 있도록 설정 파일을 수정합니다.
3-3. Grafana에서 시각화
Grafana에서 Graphite를 데이터 소스로 추가하고 Collectd에서 수집한 메트릭을 시각화할 수 있습니다.
4. Elastic Stack (ELK) + Metricbeat
Elastic Stack은 메트릭 수집과 분석을 위한 매우 강력한 도구입니다. Metricbeat를 사용하여 시스템 리소스 사용량을 수집하고, 이를 Elasticsearch에 저장한 후 Kibana에서 시각화할 수 있습니다.
4-1. Metricbeat 설치 및 설정
- Metricbeat 설치
sudo apt-get install metricbeat
- Metricbeat 설정 파일 수정 (
/etc/metricbeat/metricbeat.yml
)output.elasticsearch: hosts: ["http://localhost:9200"] setup.kibana: host: "http://localhost:5601"
4-2. Kibana에서 시각화
Kibana를 통해 수집된 시스템 메트릭을 다양한 시각화 형태로 대시보드에 구성할 수 있습니다.
이 방법들은 모두 서버의 리소스 사용량을 실시간으로 수집하고, 대시보드를 통해 쉽게 모니터링할 수 있는 강력한 툴들이며, 각자의 환경에 맞는 도구를 선택해 사용하면 됩니다.
Grafana 서비스 시작
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
Grafana에서 InfluxDB 데이터 소스 추가
- 브라우저에서
http://localhost:3000
으로 접속하여 Grafana에 로그인합니다. (기본 계정:admin
/ 비밀번호:admin
) - Configuration > Data Sources에서 Add data source를 클릭합니다.
- InfluxDB를 선택하고 다음과 같이 설정합니다:
- URL:
http://localhost:8086
- Database:
telegraf
- User/Password: InfluxDB에 설정한 사용자명과 비밀번호 (기본값으로 공란)
- URL:
Grafana 대시보드 생성
데이터 소스를 추가한 후 대시보드를 생성하여 실시간으로 수집된 CPU 및 메모리 사용량을 모니터링할 수 있습니다.
- Dashboard > New Dashboard > Add new panel을 선택합니다.
- Query에서
FROM
필드를telegraf.autogen.cpu
로 선택하여 CPU 데이터를 가져옵니다. - 측정하고 싶은 항목을 선택하여 그래프를 설정합니다. 예를 들어
usage_user
,usage_system
등의 필드를 선택할 수 있습니다.
이와 같은 방식으로 메모리, 네트워크, 디스크 사용량 등을 대시보드에 추가하여 전체적인 서버 상태를 한눈에 파악할 수 있습니다.
예시: CPU 사용량 시각화
- Metric:
telegraf.autogen.cpu
- Field:
usage_user
,usage_system
- Group by:
time($__interval)
예시: 메모리 사용량 시각화
- Metric:
telegraf.autogen.mem
- Field:
used_percent
- Group by:
time($__interval)
이로써 Telegraf + InfluxDB + Grafana 스택을 이용하여 서버의 CPU 및 메모리 사용량을 실시간으로 모니터링하고, 가시화하는 대시보드를 구성할 수 있습니다.
댓글