Contents

Introdução

Pré-requisitos

Requisitos

Componentes Utilizados

Configurar

Para init.d

Para Systemd

Verificar

Para init.d

Para Systemd

Troubleshooting

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