서버 성능에 문제가 발생하면 가장 먼저 해야 할 일은 다음과 같습니다. Linux 로그를 확인하세요시스템 로그에서 커널이나 다양한 서비스와 같은 운영 체제의 다양한 구성 요소에서 나온 몇 가지 유용한 진단 메시지를 찾을 수 있으므로 거기에서 실패 원인을 찾을 가능성이 높습니다.
로그의 모든 메시지는 운영 체제의 특정 이벤트의 결과로 생성됩니다. 사용자, 권한 부여, 서비스 종료 또는 애플리케이션 실패. 이러한 이벤트는 중요도에 따라 우선순위가 다릅니다. Linux에는 다음과 같은 유형의 이벤트가 있습니다.
emerg- 실패, 최우선순위;alert- 긴급 경고crit- 중요 사건;err- 일반적인 오류;warn- 일반 경고;notice- 알림;info- 정보 메시지;debug- 디버깅 정보
현재 Linux의 주요 로그 수집 서비스는 다음과 같습니다. rsyslog 시스템 저널. 그들은 대부분의 현대적 유통 패키지와 함께 제공되며 독립적으로 작동합니다.
rsyslog
이 서비스의 로그는 "/ var / 로그 /” 일반 텍스트 파일 형태의 폴더. 로그 메시지는 이벤트 유형에 따라 다른 파일에 저장됩니다. 예를 들어, “/var/log/auth.log”에는 시스템에서 사용자의 권한에 대한 정보가 포함되어 있으며 “/var/log/kernel.log”에는 커널 메시지가 포함되어 있습니다. 파일 이름은 배포 패키지마다 다를 수 있으므로 config 파일을 살펴보고 어디에 있는지 알아봅시다./etc/rsyslog.d/50-default.conf".
이러한 규칙은 각 유형의 로그 메시지를 포함하는 파일을 표시합니다. 왼쪽 부분은 다음과 같은 형식으로 메시지 유형을 표시합니다.[출처].[우선순위]” 그리고 오른쪽 부분은 로그 파일의 이름을 표시합니다. 메시지 유형을 쓰는 동안 “*” 문자를 추가할 수 있습니다. 빈 값 또는 “없음” 목록에서 제거합니다. 처음 두 규칙을 자세히 살펴보겠습니다.
“auth,authpriv.* /var/log/auth.log”
“*.*;auth,authpriv.none -/var/log/syslog”
첫 번째 규칙은 권한 부여 메커니즘에서 수신된 모든 메시지가 "/var/log/auth.log” 파일. 모든 권한 부여 시도(성공적이든 실패적이든)는 이 파일에 등록됩니다. 두 번째 규칙은 권한 부여와 관련된 메시지를 제외한 모든 메시지가 “/ var / log / syslog” 파일. 이 두 파일은 일반적으로 가장 인기가 많습니다. 다음 규칙은 커널 로그를 저장할 경로를 정의합니다.장식 꼬리.*” 및 메일 서비스 로그 “우편.*"
로그 파일은 다음과 같은 텍스트 편집기를 사용하여 열 수 있습니다. 적게, 방법, 꼬리. “를 열어보자/var/log/auth.log"파일
less /var/log/auth.log
파일의 모든 줄은 애플리케이션이나 서비스에서 수신한 별도의 메시지입니다. 출처와 관계없이 모든 메시지는 하나의 형식을 가지고 있으며 5개의 부분으로 구성됩니다. 스크린샷에서 강조 표시된 메시지를 예로 들어보겠습니다.
- 메시지 타임스탬프 - “12월 06일 18:33:XNUMX”
- 메시지를 보낸 컴퓨터의 이름 - “vds”
- 메시지를 보낸 애플리케이션 또는 서비스의 이름 - “sshd”
- 프로세스 ID - [653]
- 메시지 텍스트 - “188.19.42.165 포트 2849 ssh2에서 mihail의 비밀번호가 수락되었습니다.”
이는 SSH에 성공적으로 연결된 예입니다.
로그인 시도가 실패한 경우의 결과는 다음과 같습니다.
이 파일에는 고급 권한이 있는 명령도 기록됩니다.
열어보자 / var / log / syslog 파일
스크린샷에서 강조 표시된 메시지는 네트워크 인터페이스 종료에 대한 메시지입니다.
긴 텍스트 파일에서 정보를 검색하려면 다음을 사용하세요. GREP 유틸리티. 수신된 모든 메시지를 찾을 수 있습니다. pptpd 서비스에서 “/ var / log / syslog" 파일입니다.
grep 'pptpd' /var/log/syslog
진단하는 동안 다음을 사용할 수 있습니다. 꼬리 파일의 마지막 몇 줄을 표시할 수 있는 유틸리티입니다. 명령 "tail -f / var / log / syslog”를 사용하면 실시간으로 로그 기록을 볼 수 있습니다.
서비스 rsyslog 매우 유연하고 강력합니다. 로컬 시스템뿐만 아니라 엔터프라이즈 수준에서도 로그를 수집하는 데 사용할 수 있습니다. 공식 웹사이트에서 전체 문서를 찾을 수 있습니다. https://www.rsyslog.com/
Linux에서의 로그 회전
로그 기록은 지속적으로 진행되므로 파일 크기가 지속적으로 커집니다. 회전 메커니즘은 오래된 로그의 자동 보관과 새 파일 생성을 보장합니다. 규칙에 따라 매일, 매주, 매월 또는 크기 제한에 따라 발생할 수 있습니다. 새 로그가 생성되면 오래된 로그는 삭제하거나 이메일로 보낼 수 있습니다. 로그 회전은 다음에 의해 수행됩니다. 로그 로테이트하다 유틸리티. 주요 구성은 "에서 찾을 수 있습니다./etc/logrotate.conf” 파일. 파일 콘텐츠도 “/etc/logrotate.d/" 폴더
새로운 규칙은 주 구성 파일에 기록할 수 있습니다. 그러나 "/etc/logrotate.d/”. 기본적으로 이 디렉토리에는 몇 개의 파일이 있습니다.
“파일을 살펴보자”/etc/logrotate.d/rsyslog"로그의 회전 규칙을 포함하는 rsyslog 서비스를 제공합니다.
첫째, 규칙에는 로그 파일의 경로가 포함되어야 하며 그 다음에 곡선 괄호로 묶인 모든 지침이 있어야 합니다.
- 회전 7 - 보관할 파일 수 - 7
- 매일 - 매일 새 파일을 만듭니다
- 압축 - 오래된 파일을 압축하고 보관합니다.
스크린샷에서 "/ var / 로그 /”폴더에는 메인 로그가 있습니다”syslog” 그리고 7개의 아카이브는 config 파일의 규칙과 일치합니다.
logrotate에 대한 더 자세한 설명은 매뉴얼에서 찾을 수 있습니다.남자 로그 회전명령
Linux 로그 수집 - journald
통나무 수확 서비스 시스템 저널 초기화 시스템의 일부입니다 시스템. Linux 로그 파일은 “/var/log/저널/” 특수 형식으로 제공되며 다음을 사용하여 열 수 있습니다. 저널 유틸리티. 레코드 형식은 다음과 정확히 동일합니다. rsyslog.
Command 저널 속성이 없으면 모든 레코드를 표시하지만 더 큰 로그에는 적합하지 않습니다. 이 유틸리티의 몇 가지 옵션을 살펴보겠습니다.
journalctl -b- 마지막 시작 이후의 모든 레코드 표시journalctl -S "2020-02-17 12:00" -U "2020-02-17 12:10"- 특정 기간 내의 기록을 보여줍니다journalctl -u pptpd- 특정 서비스의 기록을 보여줍니다journalctl -k- 커널 메시지 표시journalctl -p err- 특정 우선순위의 메시지를 표시합니다. 이 경우 우선순위가 더 높은 메시지(crit, alert, emerg)를 표시합니다.journalctl -f- 실시간으로 메시지 표시
더 나은 유연성을 위해 이러한 옵션을 결합할 수 있습니다. 모든 오류를 표시해 보겠습니다. pptpd 서비스
journalctl -u pptpd -p err
실행 파일 경로를 속성으로 지정하면 유틸리티는 이 파일에서 보낸 모든 메시지를 표시합니다. 파일 "/usr/빈/sudo” 04년 15월 18일 2020:XNUMX부터. 사실, 더 높은 권한으로 실행된 모든 명령이 표시됩니다.
journalctl -S "2020-02-18 04:15" /usr/bin/sudo
다음 명령을 실행하여 로그 파일이 차지하는 디스크 공간의 양을 확인하세요.
journalctl --disk-usage
로그 파일을 1Gb로 제한하려면 다음 명령을 실행하세요.
journalctl --vacuum-size=1G
바이너리 파일 열기
이제 “/ var / 로그 /” 모든 로그인 시도가 저장되는 폴더입니다. 이 파일은 바이너리이며 특수 프로그램으로만 열 수 있습니다.
/var/log/wtmp 성공적인 로그인 시도에 대한 정보가 들어 있습니다. 마지막 유틸리티를 사용하여 엽니다.
/var/로그/btmp - 모든 실패한 로그인 시도를 포함합니다. 고급 권한으로 lastb로 열 수 있습니다. 속성 -n 파일 끝에서부터 표시되는 줄의 수를 정의합니다.
/var/log/loadlog - 모든 계정 레코드에 대한 마지막 로그인 작업의 시간을 포함합니다. 다음을 사용하여 열 수 있습니다. 마지막 로그