호스트 관측 가능성 모범 사례 (Linux)¶
기본 개요¶
Linux(GNU/Linux)는 무료로 사용 및 배포할 수 있는 Unix 계열 운영체제로, 기업에서 가장 널리 사용되는 운영체제인 만큼 안정성이 가장 중요한 요소입니다. Guance은 수년간의 고객 경험을 바탕으로 호스트 관측 가능성을 완벽하게 지원하여, 고객이 인프라 운영 상태를 신속하게 파악하고 운영 비용을 대폭 절감할 수 있도록 돕습니다.
시나리오 개요¶
< Guance - 시나리오 - 대시보드 - 대시보드 생성 - 호스트 개요_Linux >
전제 조건¶
공식 웹사이트 Guance에서 계정을 등록하고, 등록된 계정/비밀번호로 로그인합니다.
배포 및 구현¶
원클릭 설치¶
DataKit은 Guance에서 공식적으로 배포하는 데이터 수집 애플리케이션으로, 수백 가지 데이터 수집을 지원합니다.
Guance 콘솔에 로그인하여 「통합」 - 「DataKit」을 클릭하고, 명령줄을 복사하여 서버에서 직접 실행합니다.
기본 경로¶
| 디렉터리 | 경로 |
|---|---|
| 설치 디렉터리 | /usr/local/datakit/ |
| 로그 디렉터리 | /var/log/datakit/ |
| 메인 설정 파일 | /usr/local/datakit/conf.d/datakit.conf |
| 플러그인 설정 디렉터리 | /usr/local/datakit/conf.d/ |
기본 플러그인¶
설치가 완료되면 일부 플러그인(데이터 수집)이 기본적으로 활성화됩니다. 메인 설정 파일 datakit.conf 에서 확인할 수 있습니다.
default_enabled_inputs = ["cpu", "disk", "diskio", "mem", "swap", "hostobject", "net", "host_processes", "container", "system"]
플러그인 설명:
메트릭 데이터는 [ Guance - 메트릭 ] 에서 확인할 수 있으며, 객체 데이터는 관련 페이지에서 직접 확인할 수 있습니다.
| 플러그인 이름 | 설명 | 데이터 유형 |
|---|---|---|
| cpu | 호스트의 CPU 사용률 수집 | 메트릭 |
| disk | 디스크 점유율 수집 | 메트릭 |
| diskio | 호스트의 디스크 IO 상태 수집 | 메트릭 |
| mem | 호스트의 메모리 사용률 수집 | 메트릭 |
| swap | Swap 메모리 사용률 수집 | 메트릭 |
| system | 호스트 운영체제 부하 수집 | 메트릭 |
| net | 호스트 네트워크 트래픽 상태 수집 | 메트릭 |
| host_processes | 호스트에서 상주(10분 이상 활성) 중인 프로세스 목록 수집 | 객체 |
| hostobject | 호스트 기본 정보(운영체제 정보, 하드웨어 정보 등) 수집 | 객체 |
데이터 수집¶
Guance에서 메트릭을 조회할 때 태그를 통해 빠르게 조건을 필터링할 수 있습니다.
기본 수집¶
CPU 메트릭¶
[ Guance - 메트릭 - cpu, CPU 상태 데이터 조회 ] [ Guance - 메트릭 - system, CPU 부하 및 코어 수 데이터 조회 ]
메모리 메트릭¶
[ Guance - 메트릭 - mem, 메모리 데이터 조회 ] [ Guance - 메트릭 - swap, 메모리 Swap 데이터 조회 ]
디스크 메트릭¶
[ Guance - 메트릭 - disk, 디스크 데이터 조회 ] [ Guance - 메트릭 - disk, 디스크 IO 데이터 조회 ]
네트워크 메트릭¶
[ Guance - 메트릭 - net, 네트워크 데이터 조회 ]
호스트 객체¶
[ Guance - 인프라 - 호스트, 모든 호스트 객체 목록 조회 ]
[ Guance - 인프라 - 호스트 - 호스트를 클릭하여 기본 시스템 정보 조회 ]
통합 실행 상태는 해당 서버에서 실행 중인 플러그인 목록을 나타냅니다.
프로세스 객체¶
[ Guance - 인프라 - 프로세스, 모든 프로세스 객체 목록 조회 ]
[ Guance - 인프라 - 프로세스 - 프로세스 이름을 클릭하여 해당 프로세스 관련 정보 조회 ]
고급 수집¶
DataKit은 기본 메트릭/객체 데이터 외에도 다른 플러그인을 통해 운영체제 모니터링 데이터를 보완할 수 있습니다.
프로세스 목록¶
모든 호스트의 실시간 프로세스 목록 정보를 확인하려면 프로세스 플러그인(전역 top 기능)을 활성화합니다.
1.플러그인 설정 디렉터리로 이동하여 sample 파일을 복사합니다.
cd /usr/local/datakit/conf.d/host/
cp host_processes.conf.sample host_processes.conf
vi host_processes.conf
2.프로세스 플러그인을 활성화합니다.
3.datakit을 재시작합니다.
[ Guance - 메트릭 - host_processes, 프로세스 데이터 조회 ]
네트워크 인터페이스 메트릭¶
eBPF 기술을 사용하여 호스트 네트워크 인터페이스의 TCP/UDP 연결 정보를 수집합니다.
1.eBPF 플러그인을 설치합니다.
2.플러그인 설정 디렉터리로 이동하여 sample 파일을 복사합니다.
3.eBPF 플러그인을 활성화합니다.
[[inputs.ebpf]]
daemon = true
name = 'ebpf'
cmd = "/usr/local/datakit/externals/datakit-ebpf"
args = ["--datakit-apiserver", "0.0.0.0:9529"]
enabled_plugins = ["ebpf-net"]
4.datakit을 재시작합니다.
[ Guance - 인프라 - 호스트 - eBPF 플러그인이 설치된 호스트 클릭 - 네트워크, 시스템 네트워크 인터페이스 정보 조회 ]
보안 점검¶
호스트 운영체제의 보안 취약점을 실시간으로 탐지합니다.
1.Scheck 서비스를 설치합니다.
설치 설명
| 디렉터리 | 경로 |
|---|---|
| 설치 디렉터리 | /usr/local/scheck |
| 로그 디렉터리 | /usr/local/scheck/log |
| 메인 설정 파일 | /usr/local/scheck/scheck.conf |
| 탐지 규칙 디렉터리 | /usr/local/scheck/rules.d |
2.메인 설정 파일을 수정합니다.
rule_dir='/usr/local/scheck/rules.d'
output='http://127.0.0.1:9529/v1/write/security'
log='/usr/local/scheck/log'
log_level='info'
3.서비스를 시작합니다.
[ Guance - 보안 점검 - 탐색기, 모든 보안 이벤트 조회 ]
확장 수집¶
DataKit은 자체 데이터 수집 외에도 Telegraf 수집기를 완벽하게 호환합니다.
Telegraf를 설치합니다. CentOS 기준이며, 다른 시스템은 Telegraf 공식 문서를 참조하세요.
1.yum 소스를 추가합니다.
cat <<EOF | tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF
2.Telegraf 수집기를 설치합니다.
3.메인 설정 파일 telegraf.conf를 수정합니다.
4.influxdb를 비활성화하고 outputs.http를 활성화합니다(데이터를 Datakit으로 업로드).
5.Telegraf 기본 수집을 비활성화합니다.
#[[inputs.cpu]]
# percpu = true
# totalcpu = true
# collect_cpu_time = false
# report_active = false
#[[inputs.disk]]
# ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
#[[inputs.diskio]]
#[[inputs.mem]]
#[[inputs.processes]]
#[[inputs.swap]]
#[[inputs.system]]
6.Telegraf를 시작합니다.
포트 메트릭¶
운영체제의 중요 포트를 탐지합니다.
1.메인 설정 파일 telegraf.conf를 수정합니다.
2.포트 탐지를 활성화합니다.
[[inputs.net_response]]
protocol = "tcp"
address = "localhost:9090"
timeout = "3s"
[[inputs.net_response]]
protocol = "tcp"
address = "localhost:22"
timeout = "3s"
3.Telegraf를 재시작합니다.
[ Guance - 메트릭 - net_response, 포트 데이터 조회 ]
프로세스 메트릭¶
운영체제의 중요 프로세스를 탐지합니다.
1.메인 설정 파일 telegraf.conf를 수정합니다.
2.프로세스 탐지를 활성화합니다.
3.Telegraf를 재시작합니다.
[ Guance - 메트릭 - procstat, 프로세스 데이터 조회 ]
단일 노드 테스트¶
로컬 호스트를 테스트 지점으로 사용하여 중요 인터페이스/사이트를 탐지합니다.
다중 노드 테스트는 신서틱 모니터링을 참조하세요.
1.메인 설정 파일 telegraf.conf를 수정합니다.
2.HTTP 탐지를 활성화합니다.
[[inputs.http_response]]
urls = ["https://www.baidu.com","https://guance.com","http://localhost:9090"]
3.Telegraf를 재시작합니다.
[ Guance - 메트릭 - http_response, 테스트 데이터 조회 ]
모니터링 규칙¶
알림 규칙 및 알림 대상을 설정하여 시스템 안정 상태를 실시간으로 파악하는 데 사용됩니다.
내장 템플릿¶
Guance에는 일부 탐지 라이브러리 템플릿이 내장되어 있어 바로 사용할 수 있습니다.
[ Guance - 모니터링 - 템플릿에서 생성 - 호스트 탐지 라이브러리 ] [ Guance - 모니터링 - 템플릿에서 생성 - Ping 상태 탐지 라이브러리 ] [ Guance - 모니터링 - 템플릿에서 생성 - Port 탐지 라이브러리 ]
사용자 정의 탐지 라이브러리¶
사용자 정의 방식으로 탐지 규칙을 추가할 수 있습니다. Guance은 임계값, 프로세스, 로그, 네트워크 탐지 등 다양한 탐지 유형을 지원합니다.
임계값 탐지¶
[ Guance - 모니터링 - 모니터 생성 - 임계값 탐지 ]
탐지 메트릭: 알림 규칙 표현식. 여기서
트리거 조건: 최종 임계값 범위에 도달하면 조건이 충족되어 알림이 트리거됩니다. 트리거 후 다시 탐지했을 때 임계값 미만이면 복구될 수 있습니다(정상 상태에 탐지 주기 입력 필요).
이벤트 이름/내용에서 변수를 참조할 수 있으며, 이벤트 내용은 Markdown 텍스트 형식을 사용합니다(예: 줄바꿈은 공백 두 칸).
알림 대상¶
알림 규칙의 알림 대상을 사용자 정의하여 설정합니다.
[ Guance - 관리 - 알림 대상 ]
모니터 그룹에 따라 알림 대상을 추가합니다.
[ Guance - 모니터링 - 모니터 - 그룹 - 알림 설정 ]

























