Promtail 활용한 syslog 수집
1. 구성
1) 로깅 아키텍쳐
직접 그린 Docker-monitoring 아키텍쳐 구성
- Rsyslog:
- Cent OS 7의 default logger
- file 형태로
/var/log 에 log 출력
- promtail에 log 전달 (via tcp)
- Promtail
- Loki
- Promtail 이 수집한 log 저장 및 indexing
- Grafana
2) 구성 결과 - 정상 수집됨.
/var/log/messages 의 출력 결과물
- Grafana에서 탐색한 화면
3) 기타
- rsyslog 사용하지 않는 OS의 경우, 현재와는 다른 설정이 필요함.
2. 후속 업무
1) syslog 수집 고도화
2) syslog 열람에 필요한 Grafana dashboard 생성
- Application Log와는 별도의 dashboard를 사용하는 편이 적절해 보임.
3. 상세 구성
1) rsyslog의 port 구성 확인
sudo semanage port -l | grep syslog
- 20514 포트로 Promtail 과 rsyslog 연결하기로 함.
1-2) (필요시) 방화벽 설정
- 서버 담당자 문의하여 tcp port 열기.
- ex) 1514 포트 사용할 경우
sudo semanage port -a -t syslogd_port_t -p tcp 1514 # TCP 1514 포트 열기 sudo semanage port -l | grep syslog # 포트 목록 확인.
2) rsyslog.conf 설정
vi /etc/rsyslog.conf
- 설정 하단부
fowarding rule 부분에 아래 내용 추가.
# foward everything to promtail
*.* action(type="omfwd" protocol="tcp" target="localhost" port="20514" Template="RSYSLOG_SyslogProtocol23Format" TCP_Framing="octet-counted" KeepAlive="on")
- 설정 적용(rsyslog 재시작)
- rsyslog 정상 작동 확인
sudo systemctl restart rsyslog # rsyslog 재시작
sudo system status rsyslog # 상태 확인
3) promtail: docker-compose 설정
vi /home/docker/XCAP_CLOUD/monitoring/extend-compose.yml
4) promtail: config 설정
vi /home/docker/monitoring/promtail-config.yml
- Scrape configs 항목에 아래 내용 추가
- job_name: syslog
syslog:
listen_address: 0.0.0.0:20514
idle_timeout: 60s
label_structured_data: yes
labels:
job: "syslog"
test: "true"
relabel_configs:
- source_labels: ['__syslog_message_hostname']
target_label: 'host'
5) promtail 재시작
cd /home/docker/XCAP_CLOUD/
compose down promtail
compose ups promtail
6) 정상 작동 여부 확인
- Grafana > Exploer 접속
- Datasource 를
loki 로 설정
label browser 클릭
job 에 syslog 가 정상적으로 표시되는지 확인
- 검색 결과 확인