filebeat通常要在後臺啓動,但是有時會有進程莫名掛掉的請況,由於機器採集的又不是線上服務,所以也無法添加監控,就想到用systemctl來啓動filebeat。
如果你是rpm安裝的filebeat,那麼後面可以忽略了,如果是源碼解壓的,可以參考一下。
我去查了一下filebeat的源碼,其中有關於filebeat的systemctl配置生成的模板。模板如下:
[Unit] Description={{.Description}} Documentation={{.URL}} Wants=network-online.target After=network-online.target [Service] {{ if ne .BeatUser "root" -}} User={{ .BeatUser }} Group={{ .BeatUser }} {{- end }} Environment="BEAT_LOG_OPTS=-e" Environment="BEAT_CONFIG_OPTS=-c /etc/{{.BeatName}}/{{.BeatName}}.yml" Environment="BEAT_PATH_OPTS=-path.home /usr/share/{{.BeatName}} -path.config /etc/{{.BeatName}} -path.data /var/lib/{{.BeatName}} -path.logs /var/log/{{.BeatName}}" ExecStart=/usr/share/{{.BeatName}}/bin/{{.BeatName}} $BEAT_LOG_OPTS $BEAT_CONFIG_OPTS $BEAT_PATH_OPTS Restart=always [Install] WantedBy=multi-user.target
根據模板,配置如下:
[Unit] Description=filebeat server daemon Documentation=/opt/local/filebeat/filebeat -help Wants=network-online.target After=network-online.target [Service] User=root Group=root Environment="BEAT_CONFIG_OPTS=-c /opt/local/filebeat/filebeat.yml" ExecStart=/opt/local/filebeat/filebeat $BEAT_CONFIG_OPTS Restart=always [Install] WantedBy=multi-user.target