Skip to content

Commit a0fbeea

Browse files
yozhao101jleveque
authored andcommitted
[Services] Restart SNMP service upon unexpected critical process exit. (#3650)
Signed-off-by: Yong Zhao <[email protected]>
1 parent 206df43 commit a0fbeea

File tree

5 files changed

+16
-1
lines changed

5 files changed

+16
-1
lines changed

dockers/docker-snmp-sv2/Dockerfile.j2

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ RUN apt-get -y purge \
8484
COPY ["start.sh", "/usr/bin/"]
8585
COPY ["supervisord.conf", "/etc/supervisor/conf.d/"]
8686
COPY ["*.j2", "/usr/share/sonic/templates/"]
87+
COPY ["files/supervisor-proc-exit-listener", "/usr/bin"]
88+
COPY ["critical_processes", "/etc/supervisor"]
8789

8890
# Although exposing ports is not needed for host net mode, keep it for possible bridge mode
8991
EXPOSE 161/udp 162/udp
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
snmpd
2+
snmp-subagent

dockers/docker-snmp-sv2/supervisord.conf

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@ logfile_maxbytes=1MB
33
logfile_backups=2
44
nodaemon=true
55

6+
[eventlistener:supervisor-proc-exit-listener]
7+
command=/usr/bin/supervisor-proc-exit-listener
8+
events=PROCESS_STATE_EXITED
9+
autostart=true
10+
autorestart=unexpected
11+
612
[program:start.sh]
713
command=/usr/bin/start.sh
814
priority=1
@@ -15,7 +21,7 @@ stderr_logfile=syslog
1521
command=/usr/sbin/rsyslogd -n
1622
priority=2
1723
autostart=false
18-
autorestart=false
24+
autorestart=unexpected
1925
stdout_logfile=syslog
2026
stderr_logfile=syslog
2127

files/build_templates/snmp.service.j2

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,15 @@ Requires=updategraph.service
44
Requisite=swss.service
55
After=updategraph.service swss.service
66
Before=ntp-config.service
7+
StartLimitIntervalSec=1200
8+
StartLimitBurst=3
79

810
[Service]
911
ExecStartPre=/usr/bin/{{docker_container_name}}.sh start
1012
ExecStart=/usr/bin/{{docker_container_name}}.sh wait
1113
ExecStop=/usr/bin/{{docker_container_name}}.sh stop
14+
Restart=always
15+
RestartSec=30
1216

1317
[Install]
1418
WantedBy=multi-user.target swss.service

rules/docker-snmp-sv2.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,4 @@ $(DOCKER_SNMP_SV2)_RUN_OPT += --net=host --privileged -t
3030
$(DOCKER_SNMP_SV2)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro
3131
# mount Arista platform python libraries to support corresponding platforms SNMP power status query
3232
$(DOCKER_SNMP_SV2)_RUN_OPT += -v /usr/lib/python3/dist-packages/arista:/usr/lib/python3/dist-packages/arista:ro
33+
$(DOCKER_SNMP_SV2)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT)

0 commit comments

Comments
 (0)