[ 리눅스 서비스 ]
리눅스는 systemd로 서비스를 사용한다. systemctl는 systemd(System Deamon)을 관리하는 도구이다. 그래서 systemctl을 사용해서 서비스를 등록해서 사용하면 된다. 서비스라고 하면 끊임없는 동작해야 한다. 그래서 리눅스는 systemd로 등록된 서비스들은 전사했을 때 다시 살아나는 기적을 보여준다.
systemctl은 레드햇(Red Hat)의 Lennart Poettering 이 개발 했지만 현재는 Linux 공식 도구로 자리매김했다. target을 통해서 모드를 정하고 모드를 통해 기능을 제한한다. multi-user.target이 기본이고 일반적인 쉘스크립트(텍스트) 모드를 제공한다. 그리고 graphical.target 을 사용하면 GUI를 제공하는 모드를 제공한다. 기타 여러개가 더 있지만 위 뒤개 이외에는 거의 사용안한다.
# default target 출력
systemctl get-default
# default 타겟 변경
systemctl set-default graphical.target
# 활성 target 출력
systemctl list-units --type target
# 현재 타겟 변경
systemctl isolate multi-user.target
[ Logstash 서비스 추가 ]
Logstash는 Filebeat가 보내주는 데이터를 받아서 전처리를 진행한 후 컬럼별로 데이터를 구성한다. 그러다 보니 입력값이 많으면 빈번하게 전사하게 된다. 전사했으면 다시 깨어나야 하므로 서비스를 추가해주는 것이 좋다. enable로 서비스를 활성화시키고 deamon-reload해서 상태값을 최신화시켜준다.
# 서비스 활성화
systemctl enable logstash.service
# 서비스 리로드
systemctl daemon-reload
하지만 이렇게 서비스를 등록하면 Logstash에 적용한 설정들이 입력되지 않으므로 아래와 같이 서비스 구동 방식을 수정해서 적용하는 것이 좋다. 서비스를 등록하면 "/etc/systemd/system/" 경로에 서비스 파일이 생성된다. 해당 파일을 열어서 수정하면 된다.
vi /etc/systemd/system/logstash.service
내용을 보면 알겠지만 Environment 부분을 통해서 설정값을 넣는 것이 중요하다. 그래서 설정을 바탕으로 Logstash가 움직일 수 있게 되는 것이다. 아래와 같이 구성하면 서비스는 문제없이 동작하게 될 것이다.
[Unit]
Description=logstash
[Service]
Type=simple
User=logstash
Group=logstash
# Load env vars from /etc/default/ and /etc/sysconfig/ if they exist.
# Prefixing the path with '-' makes it try to load, but if the file doesn't
# exist, it continues onward.
EnvironmentFile=-/etc/default/logstash
EnvironmentFile=-/etc/sysconfig/logstash
Environment="LOGSTASH_CONFIG_OPTS=-f /usr/share/logstash/bin/first-pipeline.conf"
ExecStart=/usr/share/logstash/bin/logstash $LOGSTASH_CONFIG_OPTS "--path.settings" "/etc/logstash"
Restart=always
WorkingDirectory=/
Nice=19
LimitNOFILE=16384
# When stopping, how long to wait before giving up and sending SIGKILL?
# Keep in mind that SIGKILL on a process can cause data loss.
TimeoutStopSec=infinity
[Install]
WantedBy=multi-user.target
[ Filebeat 서비스 추가 ]
Logstash와 마찬가지로 filebeat도 서비스를 먼전 활성화 시킨다. 그 후 deamon-reload를 통해서 서비스를 최신화 시켜준다.
# 서비스 활성화
systemctl enable filebeat.service
# 서비스 리로드
systemctl daemon-reload
활성화된 서비스를 "/etc/systemd/system/" 에서 찾아서 수정을 진행한다.
vi /usr/lib/systemd/system/filebeat.service
logstash에서는 Environment를 통해서 값을 넣었지만 ExecStart에 바로 설정값을 넣어서 실행해도 된다.
[Unit]
Description=Filebeat sends log files to Logstash or directly to Elasticsearch.
Documentation=https://www.elastic.co/products/beats/filebeat
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/share/filebeat/bin/filebeat -e -c /etc/filebeat/filebeat.yml
Restart=always
[Install]
WantedBy=multi-user.target
'동굴 속 정보' 카테고리의 다른 글
M1 맥으로 윈도우용 개발 환경 구축 (0) | 2021.05.24 |
---|---|
개발자라면 주식 백테스팅은 해보자 (0) | 2021.05.23 |
ELK 설치와 설정, 하나부터 열까지 (0) | 2021.05.08 |
Binary Tree Traversal, DFS, BFS (0) | 2021.04.25 |
Hash Table과 Collision (0) | 2021.04.24 |