로그 분할 문제 감각
어떤 프로그램의 로 그 량 은 매우 빠르게 증가 할 것 이다. 예 를 들 어 Nginx 는 로그 파일 이 수백 MB, 심지어 GB 까지 클 때 이 파일 에서 우리 가 원 하 는 정 보 를 찾 으 려 면 기본적으로 바다 에서 바늘 찾기 와 같 기 때문에 이 럴 때 로 그 를 관리 하 는 것 이 특히 중요 하 다.
로 그 량 이 많은 플랫폼 은 ELK 에 올 라 갈 수 있 습 니 다. ES 의 검색 장점 을 이용 하여 로그 데이터 의 양 이 많은 문 제 를 걱정 하지 않 습 니 다. 그러나 본 고 는 이 방면 의 내용 과 관련 되 지 않 을 계획 입 니 다. 다음은 로그 파일 을 정확하게 구분 하 는 방법 에 대해 이야기 하 겠 습 니 다.
Linxu 의 로 그 는 두 가지 형식 으로 나 뉘 는데 하 나 는 Linux 의 logrotate 도 구 를 사용 하 는 것 이 고 다른 하 나 는 추가 로 작 성 된 스 크 립 트 를 사용 하 는 것 입 니 다. 이런 형식 은 로그 라 이브 러 리 와 함께 사용 합 니 다.
업무 관계 로 인해 우 리 는 처음에 logrotate 를 사용 하 는 방안 을 포기 했다. 왜냐하면 우 리 는 이것 이 실시 자 에 게 시스템 의 유지 부담 을 증가 시 킬 것 이 라 고 생각 했 기 때문이다. (나중에 우리 가 logrotate 에 대해 잘 모 르 는 것 을 발견 했다) 그래서 우 리 는 두 번 째 방안 을 사용 하여 로그 의 절 체 를 우리 의 로그 라 이브 러 리 에서 실현 했다. 우 리 는 logrus 와 lfshook 을 봉인 했다.logrus 의 hook 메커니즘 을 이용 하여 절 분 된 논 리 를 로그 라 이브 러 리 에 삽입 합 니 다. 코드 가 호출 될 때 자동 으로 절 분 된 동작 이 실 행 됩 니 다. 이렇게 하 는 것 도 beego 프레임 워 크 의 영향 을 받 아 로그 라 이브 러 리 는 기본적으로 절 분 된 기능 을 가지 고 있 습 니 다.
Openresty 를 사용 할 때 까지 모든 것 이 순조롭게 작 동 되 었 습 니 다. Nginx 로 그 는 구분 되 지 않 았 습 니 다. 이전에 Nginx 를 사 용 했 을 때 기본 설치 가 완료 되면 로 그 는 자동 으로 하늘 로 나 뉘 기 때문에 Nginx 설정 항목 을 찾 아 일부 설정 이 빠 졌 는 지 확인 하기 시 작 했 습 니 다. 하지만 찾 지 않 아 도 괜 찮 습 니 다.알 고 보 니 Nginx 는 로그 분할 기능 을 제공 하지 않 습 니 다. What?그 전의 절 분 기능 은 어떻게 생 겼 습 니까?
다음 에 문 제 를 해결 하 는 과정 에서 / etc / logrotate. d / 아래 에 nginx 설정 이 있 고 Mysql 과 다른 기본 구성 요소 도 있 는 것 을 발 견 했 습 니 다. 이때 우 리 는 RPM 패키지 (우리 시스템 은 Centos) 가 설치 되 었 을 때 자동 으로 logrotate 설정 문 서 를 생 성 했 을 수도 있다 는 것 을 생각 했 습 니 다. 나중에 알 아 보 니 역시 (명령:
rpm -qpl xxx.rpm
입 니 다. 우리 의 Openresty 패 키 지 는 이 설정 파일 을 생 성하 지 않 았 습 니 다.그래서 Nginx 로그 파일 이 분리 되 지 않 았 습 니 다.실제로 많은 소프트웨어 들 이 로그 의 기록 만 하고 절 점 을 도와 주지 않 는 다 는 것 은 합 리 적 인 일이 다. 로그 러 스 가 로그 절 점 기능 을 제공 하지 않 고 제3자 라 이브 러 리 에서 해 야 하 는 이 유 를 떠 올 리 게 한다. 우 리 는 로그 절 점 의 논 리 를 코드 에 결합 시 켰 다. 지금 돌 이 켜 보면 합 리 적 이지 않 고 정확 한 방법 은 RPM 가방 을 칠 때 해 야 한다.logrotate 설정 파일 을 만 들 면 실시 자 들 의 부담 을 증가 시 키 지 않 고 절 분 된 기능 을 한 곳 으로 통일 시 킬 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.