Introdução
Este documento descreve como criar arquivos de serviço para init.d ou Systemd para EFM (Edge Fog Processing Module).
Pré-requisitos
Requisitos
A Cisco recomenda que você tenha conhecimento do Linux.
Componentes Utilizados
Este documento não se restringe a versões de software e hardware específicas.
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Configurar
O pacote de instalação do EFM não contém arquivos de serviço para init.d ou Systemd prontos para uso.
Aqui você pode encontrar um exemplo simples para criar um arquivo de serviço.
Para init.d
[root@cen7 ~]# cat /etc/init.d/efm
#!/bin/bash
# EFM init script.
EFM_HOME="/opt/cisco/kinetic/efm_server"
EFM_USER="EFM"
case "$1" in
'start')
echo "Starting EFM as $EFM_USER"
sleep 2
su -c "$EFM_HOME/bin/daemon.sh start" $EFM_USER
;;
'stop')
echo "Stopping EFM as $EFM_USER"
su -c "$EFM_HOME/bin/daemon.sh stop" $EFM_USER
;;
*)
# usage
echo "usage: $0 start|stop"
exit 1
;;
esac
Certifique-se de ajustar as variáveis de ambiente para corresponder ao seu ambiente: EFM_HOME e EFM_USER.
Depois que o arquivo for criado, verifique se ele está marcado como executável.
Para Systemd
[root@cen7 ~]# cat /etc/systemd/system/efm.service
[Unit]
Description=EFM
After=network.target
[Service]
Type=forking
User=EFM
WorkingDirectory=/opt/cisco/kinetic/efm_server/
ExecStart=/opt/cisco/kinetic/efm_server/bin/daemon.sh start
Restart=no
GuessMainPID=yes
[Install]
WantedBy=multi-user.target
Certifique-se de ajustar as variáveis de configuração para corresponder ao seu ambiente: User=.
Depois que o arquivo de serviço for criado, certifique-se de atualizar os arquivos daemon em systemd:
[root@cen7 ~]# systemctl daemon-reload
Verificar
Para verificar se o arquivo de scripts/serviço funciona como esperado, você pode tentar iniciar e parar o serviço:
Para init.d
[root@cen7 ~]# /etc/init.d/efm start
Starting EFM as EFM
DSA Version: 1.1.2
DGLux5 Build: r7914
DGLux Server Build: 1230
Verifying Environment...
Verifying Configuration...
Server Started. (pid: 3790)
...
[root@cen7 ~]# /etc/init.d/efm stop
Stopping EFM as EFM
Server Stopped.
Para Systemd
[root@cen7 ~]# systemctl start efm
[root@cen7 ~]#
[root@cen7 ~]# systemctl status efm
● efm.service - EFM
Loaded: loaded (/etc/systemd/system/efm.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2018-04-23 17:01:22 CEST; 4s ago
Process: 5725 ExecStart=/opt/cisco/kinetic/efm_server/bin/daemon.sh start (code=exited, status=0/SUCCESS)
Main PID: 5737 (dart)
CGroup: /system.slice/efm.service
├─5737 /opt/cisco/kinetic/dart-sdk/bin/dart --old_gen_heap_size=16 --new_gen_semi_max_size=2 /opt/cisco/kinetic/efm_server/bin/server_watcher.dart --log-file=logs/dglux_server.log --manager-port...
├─5746 /opt/cisco/kinetic/dart-sdk/bin/dart -Ddglux.server.watcher=true -Ddslink.runtime.manager=true -Ddglux.server.log=/opt/cisco/kinetic/efm_server/logs/dglux_server.log --old_gen_heap_size=1...
├─5785 java -classpath /opt/cisco/kinetic/efm_server/dslinks/Alarms/lib/dslink-0.18.3.jar:/opt/cisco/kinetic/efm_server/dslinks/Alarms/lib/jcommander-1.48.jar:/opt/cisco/kinetic/efm_server/dslin...
├─5788 /opt/cisco/kinetic/dart-sdk/bin/dart bin/run.dart --name DQL --log info --broker http://127.0.0.1:35294/conn --token DpKbOMophIePrJvdGpXyt1H0RpcM8g8hkPXyDqaEIVwIQLzF
├─5794 java -classpath /opt/cisco/kinetic/efm_server/dslinks/H2_DB/lib/jcommander-1.48.jar:/opt/cisco/kinetic/efm_server/dslinks/H2_DB/lib/commons-dbcp2-2.1.1.jar:/opt/cisco/kinetic/efm_server/d...
├─5801 /opt/cisco/kinetic/dart-sdk/bin/dart run.dart --name dataflow --broker http://127.0.0.1:35294/conn --token nkH3JEA12v82GthaCsb9IfAL0iMWJNaYtiuRA7ruB28T7jdf
├─5803 /opt/cisco/kinetic/dart-sdk/bin/dart bin/run.dart --name System --linux_use_free_command true --offset_memory_disk_cache true --broker http://127.0.0.1:35294/conn --token OSkQvkA3diq3OLtw...
└─5826 java -d64 -Djava.library.path=/opt/cisco/kinetic/efm_server/dslinks/parstream-dsa-link/lib/centos7 -classpath lib/bcprov-jdk15on-1.51.jar:lib/cisco-parstream-jdbc-5.0.0.jar:lib/commons-cs...
Apr 23 17:01:22 cen7 systemd[1]: Starting EFM...
Apr 23 17:01:22 cen7 daemon.sh[5725]: DSA Version: 1.1.2
Apr 23 17:01:22 cen7 daemon.sh[5725]: DGLux5 Build: r7914
Apr 23 17:01:22 cen7 daemon.sh[5725]: DGLux Server Build: 1230
Apr 23 17:01:22 cen7 daemon.sh[5725]: Verifying Environment...
Apr 23 17:01:22 cen7 daemon.sh[5725]: Verifying Configuration...
Apr 23 17:01:22 cen7 daemon.sh[5725]: Server Started. (pid: 5737)
Apr 23 17:01:22 cen7 systemd[1]: Started EFM.
[root@cen7 ~]#
[root@cen7 ~]# systemctl stop efm
Como você pode ver, os processos do EFM são iniciados sob o usuário que você definiu nos arquivos de serviço e tudo é limpo depois que é solicitado que os serviços sejam interrompidos.
Troubleshooting
Caso tenha problemas para iniciar, verifique:
- Parâmetros configuráveis no arquivo de serviço init.d ou Systemd (usuário, caminhos)
- Para SystemD: a saída de systemctl status efm
- A saída de journalctl —unit=efm