forked from Graylog2/graylog2-server
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgraylogctl
executable file
·129 lines (108 loc) · 2.94 KB
/
graylogctl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/usr/bin/env bash
CMD=$1
NOHUP=${NOHUP:=$(which nohup)}
PS=${PS:=$(which ps)}
# default java
JAVA_CMD=${JAVA_CMD:=$(which java)}
get_pid() {
cat "${GRAYLOG_PID}" 2> /dev/null
}
pid_running() {
kill -0 $1 2> /dev/null
}
die() {
echo $*
exit 1
}
if [ -n "$JAVA_HOME" ]
then
# try to use $JAVA_HOME
if [ -x "$JAVA_HOME"/bin/java ]
then
JAVA_CMD="$JAVA_HOME"/bin/java
else
die "$JAVA_HOME"/bin/java is not executable
fi
fi
# resolve links - $0 may be a softlink
GRAYLOGCTL="$0"
while [ -h "$GRAYLOGCTL" ]; do
ls=$(ls -ld "$GRAYLOGCTL")
link=$(expr "$ls" : '.*-> \(.*\)$')
if expr "$link" : '/.*' > /dev/null; then
GRAYLOGCTL="$link"
else
GRAYLOGCTL=$(dirname "$GRAYLOGCTL")/"$link"
fi
done
# take variables from environment if set
GRAYLOGCTL_DIR=${GRAYLOGCTL_DIR:=$(dirname "$GRAYLOGCTL")}
GRAYLOG_SERVER_JAR=${GRAYLOG_SERVER_JAR:=graylog.jar}
GRAYLOG_CONF=${GRAYLOG_CONF:=/etc/graylog/server/server.conf}
GRAYLOG_PID=${GRAYLOG_PID:=/tmp/graylog.pid}
LOG_FILE=${LOG_FILE:=log/graylog-server.log}
LOG4J=${LOG4J:=}
DEFAULT_JAVA_OPTS="-Djava.library.path=${GRAYLOGCTL_DIR}/../lib/sigar -Xms1g -Xmx1g -XX:NewRatio=1 -server -XX:+ResizeTLAB -XX:+UseConcMarkSweepGC -XX:+CMSConcurrentMTEnabled -XX:+CMSClassUnloadingEnabled -XX:-OmitStackTraceInFastThrow"
if $JAVA_CMD -XX:+PrintFlagsFinal 2>&1 |grep -q UseParNewGC; then
DEFAULT_JAVA_OPTS="${DEFAULT_JAVA_OPTS} -XX:+UseParNewGC"
fi
JAVA_OPTS="${JAVA_OPTS:="$DEFAULT_JAVA_OPTS"}"
start() {
echo "Starting graylog-server ..."
cd "$GRAYLOGCTL_DIR/.."
"${NOHUP}" "${JAVA_CMD}" ${JAVA_OPTS} ${LOG4J} -jar "${GRAYLOG_SERVER_JAR}" server -f "${GRAYLOG_CONF}" -p "${GRAYLOG_PID}" >> "${LOG_FILE}" 2>> "${LOG_FILE}" &
}
run() {
echo "Running graylog-server ..."
cd "$GRAYLOGCTL_DIR/.."
exec "${JAVA_CMD}" ${JAVA_OPTS} ${LOG4J} -jar "${GRAYLOG_SERVER_JAR}" server -f "${GRAYLOG_CONF}" -p "${GRAYLOG_PID}"
}
stop() {
if [ ! -f "${GRAYLOG_PID}" ]; then
die "Not stopping. PID file not found: ${GRAYLOG_PID}"
fi
PID=$(get_pid)
echo "Stopping graylog-server ($PID) ..."
echo "Waiting for graylog-server to halt."
kill $PID
while "$PS" -p $PID > /dev/null; do sleep 1; done;
rm -f "${GRAYLOG_PID}"
echo "graylog-server stopped"
}
restart() {
echo "Restarting graylog-server ..."
stop
start
}
status() {
PID=$(get_pid)
if [ ! -z $PID ]; then
if pid_running $PID; then
echo "graylog-server running with PID ${PID}"
return 0
else
rm "${GRAYLOG_PID}"
die "Removed stale PID file ${GRAYLOG_PID} with ${PID}."
fi
fi
die "graylog-server not running"
}
case "$CMD" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
run)
run
;;
*)
echo "Usage $0 {start|stop|restart|status|run}"
esac