Cách tránh / usr / bin / env bị đánh dấu trong nhật ký systemd là tệp thực thi


15

Tôi đã tạo một dịch vụ systemd để chạy ứng dụng tomcat dựa trên thông tin tìm thấy trong bài viết này . Phiên bản ngắn của bài viết khuyên bạn nên tránh các trình bao bọc kịch bản lệnh shell và thực thi java trực tiếp, với môi trường và dòng lệnh thích hợp.

Đây là toàn bộ dịch vụ systemd (với tên ứng dụng được thay thế):

[Unit]
Description=MyApp Tomcat Container

[Service]
EnvironmentFile=/opt/myapp/environment
ExecStart=/usr/bin/env ${JAVA_HOME}/bin/java $JAVA_OPTS $CATALINA_OPTS \
-classpath ${CLASSPATH} \
-Dcatalina.base=${CATALINA_BASE} \
-Dcatalina.home=${CATALINA_HOME} \
-Djava.endorsed.dirs=${JAVA_ENDORSED_DIRS} \
-Djava.io.tmpdir=${CATALINA_TMPDIR} \
-Djava.util.logging.config.file=${CATALINA_BASE}/conf/logging.properties \
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
org.apache.catalina.startup.Bootstrap start

ExecStop=/usr/bin/env $JAVA_HOME/bin/java $JAVA_OPTS \
-classpath $CLASSPATH \
-Dcatalina.base=$CATALINA_BASE \
-Dcatalina.home=$CATALINA_HOME \
-Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS \
-Djava.io.tmpdir=$CATALINA_TMPDIR \
-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties \
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
org.apache.catalina.startup.Bootstrap stop

[Install]
WantedBy=multi-user.target

Điều này hoạt động khá tốt như xa như tôi biết. Dịch vụ bắt đầu, dừng và báo cáo trạng thái chính xác. Vấn đề tôi gặp phải là với các bản ghi như được báo cáo bởi journalctl:

# journalctl -u myapp.service --since today

Sep 14 00:26:00 myserver.domain.com env[654]: MyApp:2015-09-14 00:26:00: INFO Detail irrelevant
Sep 14 00:26:00 myserver.domain.com env[654]: MyApp:2015-09-14 00:26:00: INFO Detail irrelevant
Sep 14 00:26:17 myserver.domain.com env[654]: MyApp:2015-09-14 00:26:17: INFO Detail irrelevant

Xem ở đây envđang được đăng nhập như là thực thi đang chạy. Tôi rất muốn xem javanhư là thực thi, xem xét đó là chương trình chúng tôi thực sự quan tâm. Các envlà tiếng ồn. Tôi đã nhận thấy khá nhiều tệp dịch vụ systemd khác nhau khuyên bạn nên thêm tiền tố vào lệnh start /usr/bin/env, vì vậy tôi giả sử tôi có thể tìm thấy một số thông tin về các bản ghi được tạo ra. Rõ ràng là không.

Tôi có thể báo cáo tệp thực thi javathay vì envsử dụng cùng một mẫu thực thi java trực tiếp (không phải là trình bao bọc startup.sh) không?

Để có thêm điểm, tôi rất thích một số gợi ý và mẹo về những gì tệp dịch vụ của tôi có thể bị thiếu. Đây là lần đầu tiên tôi viết một dịch vụ systemd và muốn tìm hiểu thêm về các thực tiễn tốt nhất.

Câu trả lời:


16

Lệnh SyslogIdentifier cho phép bạn đặt tên của tên thực thi trong nhật ký.

SyslogIdentifier=java
# or my app name, but not both!
SyslogIdentifier=myapp
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.