#TIL systemd로 프로세스를 관리하고 systemd-journald로 로그를 본다
Heroku를 떠나기로 했다. Tbot-800.ex은 세심한 관리가 필요한 프로그램이 아니라서 Linux 인스턴스에서 직접 관리해도 충분하다. 두 가지가 필요하다. 프로그램이 크래시로 종료하거나 재부팅을 했을 때, 자동으로 실행해야 한다. 지난 로그도 적당히 볼 수 있으면 좋겠다. systemd
와 systemd-journald
로 할 수 있다.
/etc/systemd/system/tbot800.service
파일에 프로그램 실행 정보를 설정한다.
[Unit]
Description=Tbot-800
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=ubuntu
Environment="ACCOUNT1_INTERVAL_MINUTE=60"
Environment="ACCOUNT2_INTERVAL_MINUTE=60"
# ...
ExecStart=/home/ubuntu/app/bin/tbot800 start
[Install]
WantedBy=multi-user.target
이제 systemctl
프로그램을 실행해서 설정을 로딩하고 재부팅해도 자동으로 시작하게 활성화한다. 그리고 바로 시작한다.
$ sudo systemctl daemon-reload
$ sudo systemctl enable tbot800.service
$ sudo systemctl start tbot800.service
프로그램이 잘 실행되고 있는지 로그를 확인해 보자. journalctl
프로그램을 실행한다.
$ journalctl -u tbot800 -f
tbot800[4530]: 13:30:33.648 [info] ########################################
tbot800[4530]: 13:30:33.649 [info] tweet items url: ...
tbot800[4530]: 13:30:33.649 [info] tweet items url: ...
tbot800[4530]: 13:30:33.649 [info] ########################################
tbot800[4530]: 13:30:34.411 [info] shuffle: 535 tweets
tbot800[4530]: 13:30:35.059 [info] shuffle: 626 tweets
잘 나온다. 로그를 얼마나 저장할까?
$ cat /etc/systemd/journald.conf
[Journal]
Storage=persistent # 로그를 영구적으로 저장 (기본값: auto)
SystemMaxUse=500M # 최대 저장 용량 지정 (500MB)
SystemKeepFree=1G # 최소 남길 여유 공간 (1GB)
MaxRetentionSec=7day # 로그를 7일간 보관
/etc/systemd/journald.conf
파일로 설정할 수 있다. Linux 인스턴스 사정에 맞게 용량을 조정한다.
systemd
로 프로세스를 시작하고 systemd-journald
로 로그를 본다. 좋은 디폴트 옵션이다.