diff --git a/agent.yml b/agent.yml index a5e3349..0a0a97b 100644 --- a/agent.yml +++ b/agent.yml @@ -11,4 +11,5 @@ #RECEIVER_CONTAINER_PORT: 9009 # port 설정이 필요할 경우 위 주석을 해제하고 설정 # RECEIVER_PORT 와 RECEIVER_CONTAINER_PORT 같은 경우 변수를 설정하지 않을 경우 default 값으로 각각 9010 , 9009 으로 설정 됨 - agent_list: ['host-agent', 'container-agent'] \ No newline at end of file + #agent_list: ['host-agent', 'container-agent'] + agent_list: ['ndm-agent'] \ No newline at end of file diff --git a/inventory b/inventory index 2655f87..3d67fa6 100644 --- a/inventory +++ b/inventory @@ -3,8 +3,8 @@ host_agent container_agent [host_agent] -10.10.54.150 -10.10.54.105 [container_agent] -10.10.54.105 \ No newline at end of file + +[ndm_agent] +10.10.54.151 \ No newline at end of file diff --git a/roles/one_agent/files/ndm/bin/exem-ndm-agent b/roles/one_agent/files/ndm/bin/exem-ndm-agent new file mode 100755 index 0000000..9a14dc3 Binary files /dev/null and b/roles/one_agent/files/ndm/bin/exem-ndm-agent differ diff --git a/roles/one_agent/files/ndm/bin/procperf.sh b/roles/one_agent/files/ndm/bin/procperf.sh new file mode 100755 index 0000000..b1da17e --- /dev/null +++ b/roles/one_agent/files/ndm/bin/procperf.sh @@ -0,0 +1,53 @@ +#!/bin/sh + + +INTERVAL=3 + +if [ -n "$1" ];then + INTERVAL="$1" +fi + + +PROCESS_NAME="exem-ndm-agent" + + +HEAD=`ps -eo user,pid,pcpu,pmem,rss,sz,size,vsize,cmd | sed -n '1p'` +echo " ${HEAD}" + +PEAK=0 + +while : +do + CUR_DATE=`date +%d' '%H:%M:%S` + + PROCESS_PID=`ps -ef | grep -v grep | grep -v vi | grep -v tail | grep -v ctl | grep -v svc | grep ${PROCESS_NAME} | awk -F' ' '{print $2}'` + if [ -n "${PROCESS_PID}" ];then + + RESULT=`ps -p ${PROCESS_PID} -o user,pid,pcpu,pmem,rss,sz,size,vsize,cmd --no-heading` + + RSS=`echo ${RESULT} | awk -F' ' '{print $5}'` + if [ ${RSS} -gt ${PEAK} ];then + OUT_PEAK=" PEAK:${PEAK}/${RSS}" + PEAK=${RSS} + PEAK_STAT="peak" + else + OUT_PEAK=" PEAK:${PEAK}" + PEAK_STAT="" + fi + + echo "${CUR_DATE} ${RESULT}${OUT_PEAK}" + + if [ -n "${PEAK_STAT}" ];then + echo "${CUR_DATE} ${RESULT}${OUT_PEAK}" >> peak.log + fi + + else + echo "${CUR_DATE} ${PROCESS_NAME} is not running." + PEAK=0 + fi + + sleep ${INTERVAL} + +done + + diff --git a/roles/one_agent/files/ndm/conf/log.conf b/roles/one_agent/files/ndm/conf/log.conf new file mode 100644 index 0000000..018e29b --- /dev/null +++ b/roles/one_agent/files/ndm/conf/log.conf @@ -0,0 +1,69 @@ +[ndm-agent] +directory = ${EXEM_NDM_HOME}/log +filename = ndm-agent.log +output_type = stdout,file +#file_permission = +#xmlogger_ip = +#xmlogger_port = +level = info +include_us_in_time = true +header_flag = time,pid,thread_id,level +#limit_file_size = +#backup_directory = +backup_file_count = 10 + +[syslog] +directory = ${EXEM_NDM_HOME}/log +filename = ndm-syslog.log +output_type = file +#file_permission = +#xmlogger_ip = +#xmlogger_port = +level = info +include_us_in_time = true +header_flag = time +#limit_file_size = +#backup_directory = +#backup_file_count = + +[syslog-dump] +directory = ${EXEM_NDM_HOME}/log/dump +filename = syslog.dump +output_type = file +#file_permission = +#xmlogger_ip = +#xmlogger_port = +level = trace +include_us_in_time = true +header_flag = time +#limit_file_size = +#backup_directory = +#backup_file_count = + +[snmp_trap] +directory = ${EXEM_NDM_HOME}/log +filename = ndm-snmptrap.log +output_type = file +#file_permission = +#xmlogger_ip = +#xmlogger_port = +level = trace +include_us_in_time = true +header_flag = time +#limit_file_size = +#backup_directory = +#backup_file_count = + +[snmp_trap-dump] +directory = ${EXEM_NDM_HOME}/log/dump +filename = snmptrap.dump +output_type = file +#file_permission = +#xmlogger_ip = +#xmlogger_port = +level = trace +include_us_in_time = true +#header_flag = time,pid,level +#limit_file_size = 10 +#backup_directory = +#backup_file_count = diff --git a/roles/one_agent/files/ndm/ext_lib/lib64/libcrypto.so.1.0.2k b/roles/one_agent/files/ndm/ext_lib/lib64/libcrypto.so.1.0.2k new file mode 100755 index 0000000..670a981 Binary files /dev/null and b/roles/one_agent/files/ndm/ext_lib/lib64/libcrypto.so.1.0.2k differ diff --git a/roles/one_agent/files/ndm/ext_lib/lib64/libcrypto.so.10 b/roles/one_agent/files/ndm/ext_lib/lib64/libcrypto.so.10 new file mode 100755 index 0000000..670a981 Binary files /dev/null and b/roles/one_agent/files/ndm/ext_lib/lib64/libcrypto.so.10 differ diff --git a/roles/one_agent/files/ndm/ext_lib/lib64/libssl.so.1.0.2k b/roles/one_agent/files/ndm/ext_lib/lib64/libssl.so.1.0.2k new file mode 100755 index 0000000..85ce2df Binary files /dev/null and b/roles/one_agent/files/ndm/ext_lib/lib64/libssl.so.1.0.2k differ diff --git a/roles/one_agent/files/ndm/ext_lib/lib64/libssl.so.10 b/roles/one_agent/files/ndm/ext_lib/lib64/libssl.so.10 new file mode 100755 index 0000000..85ce2df Binary files /dev/null and b/roles/one_agent/files/ndm/ext_lib/lib64/libssl.so.10 differ diff --git a/roles/one_agent/files/ndm/ext_lib/lib64/link.sh b/roles/one_agent/files/ndm/ext_lib/lib64/link.sh new file mode 100755 index 0000000..68df78c --- /dev/null +++ b/roles/one_agent/files/ndm/ext_lib/lib64/link.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +# /lib64/libcrypto.so.10 -> libcrypto.so.1.0.2k +ln -s libcrypto.so.1.0.2k libcrypto.so.10 +# /lib64/libssl.so.10 -> libssl.so.1.0.2k +ln -s libssl.so.1.0.2k libssl.so.10 + diff --git a/roles/one_agent/files/ndm/lib64/libcrypto.so.1.0.2k b/roles/one_agent/files/ndm/lib64/libcrypto.so.1.0.2k new file mode 100755 index 0000000..670a981 Binary files /dev/null and b/roles/one_agent/files/ndm/lib64/libcrypto.so.1.0.2k differ diff --git a/roles/one_agent/files/ndm/lib64/libcrypto.so.10 b/roles/one_agent/files/ndm/lib64/libcrypto.so.10 new file mode 100755 index 0000000..670a981 Binary files /dev/null and b/roles/one_agent/files/ndm/lib64/libcrypto.so.10 differ diff --git a/roles/one_agent/files/ndm/lib64/libssl.so.1.0.2k b/roles/one_agent/files/ndm/lib64/libssl.so.1.0.2k new file mode 100755 index 0000000..85ce2df Binary files /dev/null and b/roles/one_agent/files/ndm/lib64/libssl.so.1.0.2k differ diff --git a/roles/one_agent/files/ndm/lib64/libssl.so.10 b/roles/one_agent/files/ndm/lib64/libssl.so.10 new file mode 100755 index 0000000..85ce2df Binary files /dev/null and b/roles/one_agent/files/ndm/lib64/libssl.so.10 differ diff --git a/roles/one_agent/files/ndm/lib64/link.sh b/roles/one_agent/files/ndm/lib64/link.sh new file mode 100755 index 0000000..68df78c --- /dev/null +++ b/roles/one_agent/files/ndm/lib64/link.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +# /lib64/libcrypto.so.10 -> libcrypto.so.1.0.2k +ln -s libcrypto.so.1.0.2k libcrypto.so.10 +# /lib64/libssl.so.10 -> libssl.so.1.0.2k +ln -s libssl.so.1.0.2k libssl.so.10 + diff --git a/roles/one_agent/tasks/main.yml b/roles/one_agent/tasks/main.yml index 626ac65..292307a 100644 --- a/roles/one_agent/tasks/main.yml +++ b/roles/one_agent/tasks/main.yml @@ -11,3 +11,7 @@ - agent_list | select('search', 'container-agent') | list | count > 0 - "'container_agent' in group_names" + - include_tasks: ndm-agent.yml + when: + - agent_list | select('search', 'ndm-agent') | list | count > 0 + - "'ndm_agent' in group_names" \ No newline at end of file diff --git a/roles/one_agent/tasks/ndm-agent.yml b/roles/one_agent/tasks/ndm-agent.yml new file mode 100644 index 0000000..13af8d4 --- /dev/null +++ b/roles/one_agent/tasks/ndm-agent.yml @@ -0,0 +1,37 @@ +--- + - name: Create exemONE Agent Directory + ansible.builtin.file: + path: "{{ EXEM_HOME }}" + state: directory + mode: '0755' + + - name: Copy exemONE NDM-Agent File + ansible.posix.synchronize: + src: "{{ role_path }}/files/ndm" + dest: "{{ EXEM_HOME }}" + + - name: Create Agent Script + ansible.builtin.template: + src: "{{ item }}.j2" + dest: "{{ EXEM_HOME }}/ndm/bin/{{ item }}" + mode: '0740' + with_items: + - ndm-ctl + - ndm-svc + - reg.env + - start + - stop + + - name: Create Agent Conf + ansible.builtin.template: + src: "{{ item }}.j2" + dest: "{{ EXEM_HOME }}/ndm/conf/{{ item }}" + mode: '0755' + with_items: + - ndm.conf + + - name: chmod change + ansible.builtin.shell: "chmod -R 740 {{ EXEM_HOME }}/ndm" + + - name: exem-ndm-agent start + ansible.builtin.shell: "nohup {{ EXEM_HOME }}/ndm/bin/start" \ No newline at end of file diff --git a/roles/one_agent/tasks/rsync.yml b/roles/one_agent/tasks/rsync.yml index 23ef790..9a7abb4 100644 --- a/roles/one_agent/tasks/rsync.yml +++ b/roles/one_agent/tasks/rsync.yml @@ -13,9 +13,7 @@ when: ansible_distribution_major_version == '7' - name: install rsync os version 7 - ansible.builtin.yum: - name: "{{ EXEM_HOME }}/rhel7.rpm" - state: present + ansible.builtin.shell: "yum localinstall -y {{ EXEM_HOME }}/rhel7.rpm" when: ansible_distribution_major_version == '7' - name: Copy rsync install rpm OS - 8 @@ -26,9 +24,7 @@ when: ansible_distribution_major_version == '8' - name: install rsync os version 8 - ansible.builtin.yum: - name: "{{ EXEM_HOME }}/rhel8.rpm" - state: present + ansible.builtin.shell: "yum localinstall -y {{ EXEM_HOME }}/rhel8.rpm" when: ansible_distribution_major_version == '8' - name: Copy rsync install rpm OS - 9 @@ -39,7 +35,5 @@ when: ansible_distribution_major_version == '9' - name: install rsync os version 9 - ansible.builtin.yum: - name: "{{ role_path }}/files/rpm/rhel9.rpm" - state: present + ansible.builtin.shell: "yum localinstall -y {{ EXEM_HOME }}/rhel9.rpm" when: ansible_distribution_major_version == '9' \ No newline at end of file diff --git a/roles/one_agent/templates/ndm-ctl.j2 b/roles/one_agent/templates/ndm-ctl.j2 new file mode 100644 index 0000000..30a5299 --- /dev/null +++ b/roles/one_agent/templates/ndm-ctl.j2 @@ -0,0 +1,198 @@ +#!/bin/sh + +#EXEM_NDM_HOME="/{{ EXEM_HOME }}/ndm" + +source /{{ EXEM_HOME }}/ndm/bin/reg.env + + +NDM_STOP_TIMEOUT=10 + +Usage() +{ + echo "Usage : ndm-ctl [version|start|restart|stop]" + echo "" + exit $1 +} + + +CMD_ARGUMENT=$@ + +BASE_NAME=`basename $0` + +case "${BASE_NAME}" in + start) + CMD_ARGUMENT="start" + ;; + stop) + CMD_ARGUMENT="stop" + ;; + restart) + CMD_ARGUMENT="restart" + ;; + version) + CMD_ARGUMENT="version" + ;; + mongomonctl) + ;; + *) + echo "unknown link. please check link name[$0]." + Usage 1 + ;; +esac + + +# option process +if [ -n "${CMD_ARGUMENT}" ]; +then + + for i in ${CMD_ARGUMENT} + do + +# echo "$i" + + case "$i" in + start) + ENV_RUN_MODE="start" + RUN_LIST="start" + ;; + restart) + ENV_RUN_MODE="restart" + RUN_LIST="stop start" + ;; + stop) + ENV_RUN_MODE="stop" + RUN_LIST="stop" + ;; + version) + ENV_RUN_MODE="version" + RUN_LIST="version" + ;; + help) + Usage 0 + ;; + *) + Usage 1 + ;; + + esac + + done + +fi + + + +if [ ! -d "${EXEM_NDM_HOME}" ];then + echo "agent home directory is not exist.[${EXEM_NDM_HOME}]" + exit 1 +fi + + +cd ${EXEM_NDM_HOME} || exit 1 + + +PROCESS_NAME="exem-ndm-agent" +SVC_FILE="ndm-svc" +SVC_PID_FILE="data/svc.pid" +AGENT_PID_FILE="data/ndm-agent.pid" + + +echo "${PROCESS_NAME} ${ENV_RUN_MODE} --- " + + +for MODE in ${RUN_LIST}; do + + case "${MODE}" in + version) + bin/exem-ndm-agent -v + ;; + start) + + if [ -f "${SVC_PID_FILE}" ];then + + SVC_PID=`cat ${SVC_PID_FILE}` + + PROC_COMM=`cat /proc/${SVC_PID}/comm` + if [ $? -ne 0 ];then + PROC_COMM="none" + fi + + if [ "${PROC_COMM}" = "${SVC_FILE}" ];then + echo "${PROCESS_NAME} is running." + exit 1 + fi + + rm -rf ${SVC_PID_FILE} + + fi + + if [ ! -f "bin/${SVC_FILE}" ];then + echo "bin/${SVC_FILE} is not exist." + exit 2 + fi + + bin/${SVC_FILE} >> ${EXEM_NDM_HOME}/log/svc.log 2>&1 & + # bin/${SVC_FILE} > /dev/null 2>&1 & + SVC_PID="$!" + echo "SVC_PID[${SVC_PID}]" + echo "${SVC_PID}" > ${SVC_PID_FILE} + ;; + stop) + + SVC_PID=`cat ${SVC_PID_FILE}` + if [ $? -ne 0 ] || [ "${SVC_PID}" = "" ];then + echo "${PROCESS_NAME} Service is not running." + exit 1 + fi + + PS_SVC_PID=`ps -ef | grep -v grep | grep ${SVC_PID} | grep ${SVC_FILE}` + if [ ! "${PS_SVC_PID}" = "" ];then + kill -9 ${SVC_PID} + echo "${PROCESS_NAME} Service terminate." + else + echo "${PROCESS_NAME} Service pid is not match[${PS_SVC_PID}/${SVC_PID}]" + fi + + rm -rf ${SVC_PID_FILE} + + + if [ -f "${AGENT_PID_FILE}" ];then + + RUN_NDM_PID=`cat ${AGENT_PID_FILE} | tr '\0' '\n'` + + rm -rf ${AGENT_PID_FILE} + + echo -n "Waiting for ${PROCESS_NAME} process(${RUN_NDM_PID}) exit." + + NUM="0" + while [ ${NUM} -lt ${NDM_STOP_TIMEOUT} ] + do + PS_NDM_PID=`ps -ef | grep -v grep | grep ${RUN_NDM_PID} | grep mongomon` + if [ "${PS_NDM_PID}" = "" ];then + break + fi + + NUM=`expr ${NUM} + 1` + sleep 1 + echo -n "." + done + + echo "" + + if [ ${NUM} -eq ${NDM_STOP_TIMEOUT} ];then + echo "${PROCESS_NAME} process shutdown wait timed out." + else + echo "${PROCESS_NAME} process terminated." + fi + + else + echo "${PROCESS_NAME} process is not running." + fi + + ;; + *) + Usage 2 + ;; + esac +done + diff --git a/roles/one_agent/templates/ndm-svc.j2 b/roles/one_agent/templates/ndm-svc.j2 new file mode 100644 index 0000000..52f8be8 --- /dev/null +++ b/roles/one_agent/templates/ndm-svc.j2 @@ -0,0 +1,125 @@ +#!/bin/sh + +source /{{ EXEM_HOME }}/ndm/bin/reg.env +#source /root/test2/bin/reg.env + + + +func_check_log_file() +{ + LOG_CHK_SIZE=1048576 + if [ -n "$2" ];then + LOG_CHK_SIZE=$2 + fi + + if [ -f "$1" ];then + + LOG_SIZE=`ls -la $1 | awk -F' ' '{print $5}'` + if [ $? -eq 0 ]; then + + if [ ${LOG_SIZE} -gt ${LOG_CHK_SIZE} ]; then + rm -rf $1 +# echo "log size is over. remove log file.[size:${LOG_SIZE},file:$1]" + fi + + fi + + fi + +} + +PROCESS_NAME="exem-ndm-agent" +PROCESS_PATH="${PROCESS_NAME}" +PID_FILE="ndm-agent.pid" + +if [ ! -d "${EXEM_NDM_HOME}" ];then + echo "exem ndm home directory is not exist.[${EXEM_NDM_HOME}]" + exit 1 +fi + + +# working directory is ${EXEM_NDM_HOME}/bin +cd ${EXEM_NDM_HOME} || exit 1 + + +if [ -f "${EXEM_NDM_HOME}/data/${PID_FILE}" ]; then + RUN_PID=`cat ${EXEM_NDM_HOME}/data/${PID_FILE} | tr '\0' '\n' || echo "none"` +else + RUN_PID="none" +fi + +PEAK=0 + +while : +do + + # log manage + func_check_log_file "${EXEM_NDM_HOME}/log/svc.log" 1048576 + + if [ "${RUN_PID}" = "none" ];then + PATH=${EXEM_NDM_HOME}/bin:$PATH ${PROCESS_PATH} > /dev/null 2>&1 & + RUN_PID="$!" + echo "execute ${PROCESS_PATH} process.[${RUN_PID}]" + sleep 3 + fi + + if [ ! "${RUN_PID}" = "none" ] && [ -f "/proc/${RUN_PID}/cmdline" ];then + # PROC_COMM=`cat /proc/${RUN_PID}/comm || echo "none"` + PROC_COMM=`cat /proc/${RUN_PID}/cmdline | tr '\0' ' ' | awk -F' ' '{print $1}' || echo "none"` +# echo "PROC_COMM[${PROC_COMM}]" + else + PROC_COMM="none" + fi + + + if [ ! "${PROC_COMM}" = "${PROCESS_PATH}" ];then + echo "${PROCESS_NAME} process is not running.[pid:${RUN_PID}],comm[${PROC_COMM}]" + RUN_PID="none" + fi + + ########################################## + # check memory peak + CUR_DATE=`date +%d' '%H:%M:%S` + +# MONGOMON_PID=`ps -ef | grep -v grep | grep -v vi | grep -v tail | grep -v ctl | grep -v svc | grep ${PROCESS_NAME} | awk -F' ' '{print $2}'` +# if [ -n "${MONGOMON_PID}" ];then + + + + if [ ! "${RUN_PID}" = "none" ];then + +# RESULT=`ps -p ${RUN_PID} -o user,pid,pcpu,pmem,rss,sz,size,vsize,cmd --no-heading` + RESULT=`ps -p ${RUN_PID} -o user,pid,pcpu,pmem,rss,sz,size,vsize,cmd --no-heading` + if [ -z "${RESULT}" ];then + echo "${CUR_DATE} get process stat has failed.[${RUN_PID}]" + PEAK=0 + fi + + RSS=`echo ${RESULT} | awk -F' ' '{print $5}'` + if [ ${RSS} -gt ${PEAK} ];then + OUT_PEAK=" PEAK:${PEAK}/${RSS}" + PEAK=${RSS} + PEAK_STAT="peak" + else + OUT_PEAK=" PEAK:${PEAK}" + PEAK_STAT="" + fi + +# echo "${CUR_DATE} ${RESULT}${OUT_PEAK}" + + if [ -n "${PEAK_STAT}" ];then + func_check_log_file "peak.log" 1024 + echo "${CUR_DATE} ${RESULT}${OUT_PEAK}" >> peak.log + fi + + else + echo "${CUR_DATE} ${PROCESS_NAME} is not running." + PEAK=0 + fi + + + sleep 3 +done + + + diff --git a/roles/one_agent/templates/ndm.conf.j2 b/roles/one_agent/templates/ndm.conf.j2 new file mode 100644 index 0000000..20c9d7c --- /dev/null +++ b/roles/one_agent/templates/ndm.conf.j2 @@ -0,0 +1,13 @@ +#app_name="exem-ndm-agent" + +receiver_ip={{ RECEIVER_ADDR }} +receiver_port={{ RECEIVER_PORT | default('9010') }} +#disconnect_exit=no + +#syslog_port=514 +#snmptrap_port=162 + + +[Debug] +#write_recv_packet=no +#write_send_packet=no \ No newline at end of file diff --git a/roles/one_agent/templates/reg.env.j2 b/roles/one_agent/templates/reg.env.j2 new file mode 100644 index 0000000..6042d9e --- /dev/null +++ b/roles/one_agent/templates/reg.env.j2 @@ -0,0 +1,9 @@ + +export EXEM_NDM_HOME=/{{ EXEM_HOME }}/ndm + +if [ -z ${LD_LIBRARY_PATH} ];then + LD_LIBRARY_PATH=${EXEM_NDM_HOME}/lib64 +else + LD_LIBRARY_PATH=${EXEM_NDM_HOME}/lib64:${LD_LIBRARY_PATH} +fi +export LD_LIBRARY_PATH \ No newline at end of file diff --git a/roles/one_agent/templates/start.j2 b/roles/one_agent/templates/start.j2 new file mode 100644 index 0000000..30a5299 --- /dev/null +++ b/roles/one_agent/templates/start.j2 @@ -0,0 +1,198 @@ +#!/bin/sh + +#EXEM_NDM_HOME="/{{ EXEM_HOME }}/ndm" + +source /{{ EXEM_HOME }}/ndm/bin/reg.env + + +NDM_STOP_TIMEOUT=10 + +Usage() +{ + echo "Usage : ndm-ctl [version|start|restart|stop]" + echo "" + exit $1 +} + + +CMD_ARGUMENT=$@ + +BASE_NAME=`basename $0` + +case "${BASE_NAME}" in + start) + CMD_ARGUMENT="start" + ;; + stop) + CMD_ARGUMENT="stop" + ;; + restart) + CMD_ARGUMENT="restart" + ;; + version) + CMD_ARGUMENT="version" + ;; + mongomonctl) + ;; + *) + echo "unknown link. please check link name[$0]." + Usage 1 + ;; +esac + + +# option process +if [ -n "${CMD_ARGUMENT}" ]; +then + + for i in ${CMD_ARGUMENT} + do + +# echo "$i" + + case "$i" in + start) + ENV_RUN_MODE="start" + RUN_LIST="start" + ;; + restart) + ENV_RUN_MODE="restart" + RUN_LIST="stop start" + ;; + stop) + ENV_RUN_MODE="stop" + RUN_LIST="stop" + ;; + version) + ENV_RUN_MODE="version" + RUN_LIST="version" + ;; + help) + Usage 0 + ;; + *) + Usage 1 + ;; + + esac + + done + +fi + + + +if [ ! -d "${EXEM_NDM_HOME}" ];then + echo "agent home directory is not exist.[${EXEM_NDM_HOME}]" + exit 1 +fi + + +cd ${EXEM_NDM_HOME} || exit 1 + + +PROCESS_NAME="exem-ndm-agent" +SVC_FILE="ndm-svc" +SVC_PID_FILE="data/svc.pid" +AGENT_PID_FILE="data/ndm-agent.pid" + + +echo "${PROCESS_NAME} ${ENV_RUN_MODE} --- " + + +for MODE in ${RUN_LIST}; do + + case "${MODE}" in + version) + bin/exem-ndm-agent -v + ;; + start) + + if [ -f "${SVC_PID_FILE}" ];then + + SVC_PID=`cat ${SVC_PID_FILE}` + + PROC_COMM=`cat /proc/${SVC_PID}/comm` + if [ $? -ne 0 ];then + PROC_COMM="none" + fi + + if [ "${PROC_COMM}" = "${SVC_FILE}" ];then + echo "${PROCESS_NAME} is running." + exit 1 + fi + + rm -rf ${SVC_PID_FILE} + + fi + + if [ ! -f "bin/${SVC_FILE}" ];then + echo "bin/${SVC_FILE} is not exist." + exit 2 + fi + + bin/${SVC_FILE} >> ${EXEM_NDM_HOME}/log/svc.log 2>&1 & + # bin/${SVC_FILE} > /dev/null 2>&1 & + SVC_PID="$!" + echo "SVC_PID[${SVC_PID}]" + echo "${SVC_PID}" > ${SVC_PID_FILE} + ;; + stop) + + SVC_PID=`cat ${SVC_PID_FILE}` + if [ $? -ne 0 ] || [ "${SVC_PID}" = "" ];then + echo "${PROCESS_NAME} Service is not running." + exit 1 + fi + + PS_SVC_PID=`ps -ef | grep -v grep | grep ${SVC_PID} | grep ${SVC_FILE}` + if [ ! "${PS_SVC_PID}" = "" ];then + kill -9 ${SVC_PID} + echo "${PROCESS_NAME} Service terminate." + else + echo "${PROCESS_NAME} Service pid is not match[${PS_SVC_PID}/${SVC_PID}]" + fi + + rm -rf ${SVC_PID_FILE} + + + if [ -f "${AGENT_PID_FILE}" ];then + + RUN_NDM_PID=`cat ${AGENT_PID_FILE} | tr '\0' '\n'` + + rm -rf ${AGENT_PID_FILE} + + echo -n "Waiting for ${PROCESS_NAME} process(${RUN_NDM_PID}) exit." + + NUM="0" + while [ ${NUM} -lt ${NDM_STOP_TIMEOUT} ] + do + PS_NDM_PID=`ps -ef | grep -v grep | grep ${RUN_NDM_PID} | grep mongomon` + if [ "${PS_NDM_PID}" = "" ];then + break + fi + + NUM=`expr ${NUM} + 1` + sleep 1 + echo -n "." + done + + echo "" + + if [ ${NUM} -eq ${NDM_STOP_TIMEOUT} ];then + echo "${PROCESS_NAME} process shutdown wait timed out." + else + echo "${PROCESS_NAME} process terminated." + fi + + else + echo "${PROCESS_NAME} process is not running." + fi + + ;; + *) + Usage 2 + ;; + esac +done + diff --git a/roles/one_agent/templates/stop.j2 b/roles/one_agent/templates/stop.j2 new file mode 100644 index 0000000..30a5299 --- /dev/null +++ b/roles/one_agent/templates/stop.j2 @@ -0,0 +1,198 @@ +#!/bin/sh + +#EXEM_NDM_HOME="/{{ EXEM_HOME }}/ndm" + +source /{{ EXEM_HOME }}/ndm/bin/reg.env + + +NDM_STOP_TIMEOUT=10 + +Usage() +{ + echo "Usage : ndm-ctl [version|start|restart|stop]" + echo "" + exit $1 +} + + +CMD_ARGUMENT=$@ + +BASE_NAME=`basename $0` + +case "${BASE_NAME}" in + start) + CMD_ARGUMENT="start" + ;; + stop) + CMD_ARGUMENT="stop" + ;; + restart) + CMD_ARGUMENT="restart" + ;; + version) + CMD_ARGUMENT="version" + ;; + mongomonctl) + ;; + *) + echo "unknown link. please check link name[$0]." + Usage 1 + ;; +esac + + +# option process +if [ -n "${CMD_ARGUMENT}" ]; +then + + for i in ${CMD_ARGUMENT} + do + +# echo "$i" + + case "$i" in + start) + ENV_RUN_MODE="start" + RUN_LIST="start" + ;; + restart) + ENV_RUN_MODE="restart" + RUN_LIST="stop start" + ;; + stop) + ENV_RUN_MODE="stop" + RUN_LIST="stop" + ;; + version) + ENV_RUN_MODE="version" + RUN_LIST="version" + ;; + help) + Usage 0 + ;; + *) + Usage 1 + ;; + + esac + + done + +fi + + + +if [ ! -d "${EXEM_NDM_HOME}" ];then + echo "agent home directory is not exist.[${EXEM_NDM_HOME}]" + exit 1 +fi + + +cd ${EXEM_NDM_HOME} || exit 1 + + +PROCESS_NAME="exem-ndm-agent" +SVC_FILE="ndm-svc" +SVC_PID_FILE="data/svc.pid" +AGENT_PID_FILE="data/ndm-agent.pid" + + +echo "${PROCESS_NAME} ${ENV_RUN_MODE} --- " + + +for MODE in ${RUN_LIST}; do + + case "${MODE}" in + version) + bin/exem-ndm-agent -v + ;; + start) + + if [ -f "${SVC_PID_FILE}" ];then + + SVC_PID=`cat ${SVC_PID_FILE}` + + PROC_COMM=`cat /proc/${SVC_PID}/comm` + if [ $? -ne 0 ];then + PROC_COMM="none" + fi + + if [ "${PROC_COMM}" = "${SVC_FILE}" ];then + echo "${PROCESS_NAME} is running." + exit 1 + fi + + rm -rf ${SVC_PID_FILE} + + fi + + if [ ! -f "bin/${SVC_FILE}" ];then + echo "bin/${SVC_FILE} is not exist." + exit 2 + fi + + bin/${SVC_FILE} >> ${EXEM_NDM_HOME}/log/svc.log 2>&1 & + # bin/${SVC_FILE} > /dev/null 2>&1 & + SVC_PID="$!" + echo "SVC_PID[${SVC_PID}]" + echo "${SVC_PID}" > ${SVC_PID_FILE} + ;; + stop) + + SVC_PID=`cat ${SVC_PID_FILE}` + if [ $? -ne 0 ] || [ "${SVC_PID}" = "" ];then + echo "${PROCESS_NAME} Service is not running." + exit 1 + fi + + PS_SVC_PID=`ps -ef | grep -v grep | grep ${SVC_PID} | grep ${SVC_FILE}` + if [ ! "${PS_SVC_PID}" = "" ];then + kill -9 ${SVC_PID} + echo "${PROCESS_NAME} Service terminate." + else + echo "${PROCESS_NAME} Service pid is not match[${PS_SVC_PID}/${SVC_PID}]" + fi + + rm -rf ${SVC_PID_FILE} + + + if [ -f "${AGENT_PID_FILE}" ];then + + RUN_NDM_PID=`cat ${AGENT_PID_FILE} | tr '\0' '\n'` + + rm -rf ${AGENT_PID_FILE} + + echo -n "Waiting for ${PROCESS_NAME} process(${RUN_NDM_PID}) exit." + + NUM="0" + while [ ${NUM} -lt ${NDM_STOP_TIMEOUT} ] + do + PS_NDM_PID=`ps -ef | grep -v grep | grep ${RUN_NDM_PID} | grep mongomon` + if [ "${PS_NDM_PID}" = "" ];then + break + fi + + NUM=`expr ${NUM} + 1` + sleep 1 + echo -n "." + done + + echo "" + + if [ ${NUM} -eq ${NDM_STOP_TIMEOUT} ];then + echo "${PROCESS_NAME} process shutdown wait timed out." + else + echo "${PROCESS_NAME} process terminated." + fi + + else + echo "${PROCESS_NAME} process is not running." + fi + + ;; + *) + Usage 2 + ;; + esac +done +