리눅스의 로그
종류
- 거의 대부분의 로그를 /var/log/messages에 남겨놓는다.
syslog
-
위의 그림과 같이 작성되어 있다.
-
Facility는 어디에서 무슨일이 생겼나를 지정하는 것.
-
Level은 얼마나 심각한 일이 벌어졌나를 지정.
- 위쪽으로 갈 수록 심각한 문제이다.
- err 전까지는 무시해도 상관 없는 것들.
-
프로그래밍을 하다가 무언가 잘못됐다 싶으면 err정도만 보면 됨.
실습
httpd 설치
yum install httpd
- restart 한 후, 실행해보면 잘 실행된다.
- netstat -ano 명령어로 80번 포트가 Listen 중인지 확인
- Listen 중이면 클라이언트가 서버에 접속할 수 있다는 얘기.
- 이렇게 켠 후, 본체 컴퓨터에서 가상 컴퓨터의 아이피를 크롬 주소창에 쓰면 접속이 됨.
- 하지만 지금 하면 Timeout이 뜬다. 왜냐면 리눅스에도 방화벽이 있기 때문.
- 그래서 방화벽을 해제해야 한다.
방화벽 해제
- centOS에서는 방화벽이 2가지다.
- selinux와 firewalld라는 방화벽이다.
- 네트워크 접속을 위해서는 네트워크 방화벽인 firewalld를 꺼야한다.
- 그 후, 본체 주소창에서 가상 머신의 ip주소를 입력하면 접속이 된다.
- 그렇다면 본체 컴퓨터가 client가 되는 것이고 가상 머신이 server가 되는 것이다.
- 이 디렉토리 밑에 html 파일을 만들면 화면에 나오게 된다.
포트 포워딩
- 가상 네트워크의 NAT 설정을 들어간다.
- 내 사설 ip인 192.168.0.6:30006 으로 접속을 했을 때, 내 가상 머신의 사설 ip인 192.168.163.100:80 으로 되게끔 설정을 해줘야 한다.
- 그래서 공인 ip를 공유하는 컴퓨터들이 나의 사설 ip:30006 포트로 접근을 하면, 게이트웨이를 거쳐서 192.168.163.100:80 으로 접속이 된다.
로그 확인
- /var/log/httpd 로 파일 이동해서 안의 들어있는 파일을 보면 access_log 파일이 있다.
- 이것을 실시간으로 보려면???
실습 2
로그를 서버와 클라이언트로 나누어서 서버에 로그 남기기
가상 머신 2대 준비
- /etc/hostname 파일에서 이름을 server와 client로 바꾸어서 컴퓨터의 이름을 바꾸어 구분하기 쉽게 만들자.
- 그 후, 재부팅
서버 설정
- /etc/rsyslog.conf에 vi 편집기로 들어가서 19, 20번째 라인 주석 제거
-
구성 파일에서 다음 행을 찾아 주석 처리를 제거하여 514 포트를 통해 Rsyslog 서버에 UDP 전송 수신을 허용.
-
Rsyslog는 로그 전송에 표준 UDP 프로토콜을 사용한다.
-
systemctl restart rsyslog.service
-
systemctl stop firewalld
-
위의 두 명령어 실행
- systemctl status rsyslog.service 명령어를 이용해 잘 실행되었는지 확인
- active는 잘 실행되었다는 소리
- 위 명령어를 통해 514번 포트가 활성화 되었는지 확인
- udp는 listen 상태가 없음.
클라이언트 설정
- /etc/rsyslog.conf에 vi 편집기로 들어가서
- 67번 라인 뒤에 위와 같이 *.notice @서버ip 를 추가해주자.
- 그 후, 서버와 같이 rsyslog.service를 재시작과 함께 실행시켜준다.
테스트
서버
- tail -f /var/log/messages 명령어로 실시간 로그 찍히는 것을 본다.
클라이언트
- logger -p local1.notice logging hahahahahahaha 로그를 찍는 명령어인데 원래 클라이언트에 찍혀야 하지만 우리는 위에서 서버 ip로 찍히게 설정을 해주었다.