컬쥐네 다락방

리눅스 | 서비스 관리 / systemd , log 본문

클라우드/리눅스

리눅스 | 서비스 관리 / systemd , log

코딩하는 갱얼쥐 2022. 3. 2. 17:44

systemd

init 프로세스의 대체

 

특징 

부팅시 병렬화 처리 => 부팅 속도 향상

cgroup을 통해 자원관리 및 프로세스 트래킹

자동 서비스 종속성 관리 

* 종속성 : 어떠한 프로그램를 실행하기 위해서 이전에 또 다른 프로그램이 실행되어 있어야 한다.

선택적 데몬 실행

데몬은 서버 프로세스 웹 서버, 네임 서버 DB 서버 등을 지칭. 

 

systemd 메인 프로세스는 시스템을 unit 이란 개체를 통해 시스템을 관리한다.

 

state 

enabled - 부팅시에 실행된다

disabled - 부팅시에 실행되지 않는다

static - 사용자가 실행하지 않고 다른 유닛에 대해서 실행될 수 있도록 

 

unit 

systemctl sub-command *.service

 

sub-command 

status : 상태 확인

start : 시작

stop : 종료

restart : 재시작

reload : 재설정

enable : 활성화

disable : 비활성화

mask : masked

unmakse : masked 해제

list-dependencies : 종속성(의존성) 확인

 

service를 start 해주면 pid 번호와 함께 status 명령어로 상태를 확인할 수 있게 된다.

[root@localhost ~]# systemctl status iscsid.service
● iscsid.service - Open-iSCSI
   Loaded: loaded (/usr/lib/systemd/system/iscsid.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:iscsid(8)
           man:iscsiadm(8)
[root@localhost ~]# systemctl start iscsid.service
[root@localhost ~]# systemctl status iscsid.service
● iscsid.service - Open-iSCSI
   Loaded: loaded (/usr/lib/systemd/system/iscsid.service; disabled; vendor preset: disabled)
   Active: active (running) since 수 2022-03-02 14:16:47 KST; 1s ago
     Docs: man:iscsid(8)
           man:iscsiadm(8)
  Process: 29216 ExecStart=/usr/sbin/iscsid (code=exited, status=0/SUCCESS)
 Main PID: 29218 (iscsid)
    Tasks: 2
   CGroup: /system.slice/iscsid.service
           ├─29217 /usr/sbin/iscsid
           └─29218 /usr/sbin/iscsid

 3월 02 14:16:47 localhost.localdomain systemd[1]: Starting Open-iSCSI...
 3월 02 14:16:47 localhost.localdomain systemd[1]: Failed to read PID from file /var/run/iscsid.pid: Invalid argument
 3월 02 14:16:47 localhost.localdomain iscsid[29217]: iSCSI daemon with pid=29218 started!
 3월 02 14:16:47 localhost.localdomain systemd[1]: Started Open-iSCSI.

특정 서비스를 설치하고 앞으로도 계속해서 해당 서비스를 실행 설정할 때

systemctl start xxxx.service

systemctl enable xxxx.service

 

log 

시스템에 일어나는 이벤트들에 대한 기록

이슈 발생시에 해당 시간에 일어났었던 일을 파악하기 위한 첫 번째 수단이다.

 

log 관련 서비스

systemd-journald : 시스템에 발생되는 모든 로그를 수집하는 역할 (/run/)

rsyslogd : 수집된 로그들을 저장하는 역할 (/var/)

/var/log/messages : 디버그, 인증, 메일, 정기적 예약, 부트를 제외한 모든 로그가 저장되는 위치

/var/log/sevure : 인증 관련

/var/log/maillog : 메일 관련

/var/log/cron : 주기적 예약 관련

/var/log/boot.log : 부트 관련

 

rsyslog

기능과 우선순위를 조합해서 저장한다.

facility (기능)

authpriv (인증) , auth,security (로그인), cron (cron, at 등 스케쥴링), daemon(telnel,ftp등 데몬 서비스), kern (커널), mail (메일), local1-8 (부팅), lpr (프린트), mark (syslog에 의해 만들어지는 날짜 유형), user(사용자)

priority (우선순위) : 메세지에 대한 심각도. 0부터 7까지 등급을 나눠 관리한다

0 : emerg , 1: alert, 2: critical, 3: error, 4: warning, 5: notice, 6: info, 7: debug

 

rsyslog.conf 설정 변경후 반영하려면 restart를 해줘야한다.

 - systemctl restart rsyslog.service

 

rsyslog.conf에서 RULE을 검색하면 나오는 부분이다. log에 따라 저장 위치나 규칙을 설정해놓은 부분

facility.priority 형식으로 작성한다.

#### RULES ####

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog   -가 붙어있으면
																			바로 저장하지 않고
                                                                            다른 곳에 임시 저장해놨다가
                                                                            한 번에 기록한다.

 

로그 파일 저장 체계

 

로그 순환(logrocate) :

리눅스로 서버를 돌리면 로그 파일이 굉장히 많이 생성된다.

서버 용량은 한정되어 있고, 로그들은 계속해서 쌓이다보니 로그로 인해 하드 용량이 부족한 경우가 생겨 성능 저하가 발생할 수 있다. 매번 수동으로 로그파일을 이동시키는 것은 번거롭기 때문에 로그파일들을 날짜를 지정하여 주기적으로 압축, 백업, 삭제, 메일로 보내는 등의 작업을 할 수 있도록 한다.

 

rsyslog를 통해서 로그들을 저장하고 있기는 하지만 모든 로그를 확인 할 수 있는 것은 아니다.

systemd-journald 서비스에서 저장하는 로그를 볼 수 있다. 메모리 영역에서 로그들을 수집.

 

systemd-journald 서비스

 

journalctl : 확인

옵션 :

- n 숫자 : 최근 내역에서 숫자 만큼 출력

- p 우선순위 : 해당 우선순위 이상으로 출력 

                   notice ~ warning : 볼드체로 표기

                   error 이상          : 

- f : 실시간으로 모니터링

--since yyyy-mm-dd : 해당 날짜부터 현재까지 출력

--since yyyy-mm-dd --until yyyy--mm-dd : since부터 until까지 출력

 

/run/log/journal : 영구 저장 경로

영구 저장시 저장 용량 설정

전체 파일시스템의 10%를 넘어서거나 남아있는 공간의 15%를 넘어가면 저장할 수 없다.

 

Comments