Log
Log 카테고리의 모든 포스트 - 한국어
2개의 포스트
Logs Monitoring 정리 (실무 중심)
✅ 1. 전체 아키텍처 흐름
[App/Infra Logs]
↓
Filebeat / Logstash
↓
[Elasticsearch]
↓
Kibana (대시보드)
- Filebeat: 로그 파일 수집기 (Lightweight)
- Logstash: 데이터 처리, 변환, 파싱
- Elasticsearch: 로그 저장/검색/분석
- Kibana: 시각화 및 모니터링 대시보드
✅ 2. Filebeat (로그 수집기)
🔹 역할
- 로그 파일 tailing
- Multiline (스택트레이스 등) 지원
- 시스템 로그, Docker 로그, Nginx, Java 로그 등 수집 가능
🔹 설정 예시
filebeat.inputs:
- type: log
paths:
- /var/log/myapp/*.log
multiline.pattern: '^\['
multiline.negate: true
multiline.match: after
output.elasticsearch:
hosts: ["http://localhost:9200"]
index: "myapp-logs-%{+yyyy.MM.dd}"
💡 실무 팁
multiline
설정 필수 (Java stack trace)fields
옵션으로 서비스명, 환경 태깅- JSON 로그 구조화 추천
✅ 3. Logstash (필요 시 중간 가공)
🔹 역할
- 로그 파싱 및 정제
- Grok 패턴, mutate, date 필터 등
- Kafka → Logstash → ES 구성 가능
🔹 Grok 예시
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} \[%{LOGLEVEL:level}\] %{GREEDYDATA:msg}" }
}
date {
match => [ "timestamp", "ISO8601" ]
}
}
💡 실무 팁
- Filebeat에서 JSON 구조면 Logstash 생략 가능
- Kafka 중계/복잡한 parsing 시 유용
✅ 4. Kibana (시각화 및 알림)
🔹 주요 기능
- Discover: 실시간 로그 조회
- Dashboard: 시각화
- Alerting: 이상 탐지 알림
- Lens/TSVB: 시간 기반 분석
💡 실무 팁
timestamp
,level
,logger
,service_name
필드 표준화- Error 로그 대시보드 구성
- 복합 필터링 예시:
log.level: ERROR AND NOT message:"Connection reset"
✅ 5. 성능/보안 로그 모니터링
유형 | 설명 |
---|---|
JVM GC 로그 | 메모리 문제 추적 |
Nginx / Apache | API 응답 시간, 요청 수 분석 |
Kafka / Redis | Broker 상태, throughput 추적 |
Spring Boot | actuator 로그 + slf4j 로그 |
시스템 로그 | CPU, 메모리 사용량 추적 |
인증 로그 | 로그인 시도, 실패 분석 |
✅ 6. 인덱스 전략 및 유지 관리
index.lifecycle
정책 (ILM): 오래된 로그 자동 삭제- 일별 인덱스:
myapp-logs-2025.07.11
- 템플릿 매핑 필수:
@timestamp
,log.level
등 - hot-warm-cold 아키텍처 고려
✅ 7. 실무 구성 예시 (Docker Compose)
services:
elasticsearch:
image: elasticsearch:8.17.6
environment:
- discovery.type=single-node
ports:
- 9200:9200
kibana:
image: kibana:8.17.6
ports:
- 5601:5601
depends_on:
- elasticsearch
filebeat:
image: docker.elastic.co/beats/filebeat:8.17.6
volumes:
- ./filebeat.yml:/usr/share/filebeat/filebeat.yml
- /var/log:/var/log:ro
✅ 정리 요약
구성 요소 | 역할 | 비고 |
---|---|---|
Filebeat | 로그 수집 | Multiline 지원, 간단 |
Logstash | 로그 정제 | Grok 필터, Kafka 중계 |
Elasticsearch | 저장/검색 | 인덱스 설계 중요 |
Kibana | 시각화/모니터링 | Discover, Alert 활용 |
systemlog 에 관해서
리눅스 /var/log/syslog
와 /var/log/messages
완전 정리 (K8s 운영 관점 포함)
1. 개요
- Debian/Ubuntu 계열:
/var/log/syslog
→ 주요 시스템 로그 파일. - RHEL/CentOS/Rocky 계열:
/var/log/messages
→ 동일한 역할. - 공통점: 커널, 시스템 서비스, 사용자 애플리케이션의 일반 로그가 모임.
로그 흐름
- 커널/애플리케이션 → syslog API 호출 또는 표준 출력.
- systemd-journald 수집 → 메모리/디스크 저널에 저장.
- rsyslog/syslog-ng가 journald에서 읽어 파일(
/var/log/...
)로 기록.
2. 로그에 담기는 내용
- 커널 이벤트: 네트워크 링크 업/다운, 디스크 I/O 에러, OOM Killer.
- 시스템 서비스: kubelet, containerd, NetworkManager, CRI 플러그인.
- 사용자 공간 데몬: sshd, cron, rsyslog.
- 애플리케이션: syslog로 출력한 메시지.
예시
Aug 12 13:54:01 master-node-1 CRON[2345]: (root) CMD (/usr/local/bin/backup.sh)
Aug 12 13:54:03 worker-node-2 kernel: [12345.678901] eth0: link up
Aug 12 13:54:10 master-node-1 kubelet[1123]: Failed to pull image "nginx:latest": rpc error: ...
3. 로그 보는 방법
파일 기반
# 최신 100줄
sudo tail -n 100 /var/log/syslog
sudo tail -n 100 /var/log/messages
# 실시간 모니터링
sudo tail -f /var/log/syslog
# 특정 키워드 검색
sudo grep -i "kubelet" /var/log/syslog
journald 기반
# 현재 부팅 로그
sudo journalctl -b
# 서비스별
sudo journalctl -u kubelet
sudo journalctl -u containerd
# 심각도 필터
sudo journalctl -p err -b
# 시간 범위
sudo journalctl --since "2025-08-12 09:00" --until "2025-08-12 12:00" -u kubelet
# 커널만
sudo journalctl -k -b
4. 심각도 & 시설
- Severity: 0(emerg) ~ 7(debug)
- Facility: kern, auth, daemon, syslog, local0~local7
예시: