From 65a6e4bd0b61cb3ee7ec4027dc857761230e3db9 Mon Sep 17 00:00:00 2001 From: Yong Zhao Date: Tue, 13 Apr 2021 22:59:04 +0000 Subject: [PATCH 1/3] [Monit] Monitor `radv` container by Monit. Signed-off-by: Yong Zhao --- .../base_image_files/monit_radv.j2 | 30 +++++++++++++++++++ .../build_templates/sonic_debian_extension.j2 | 5 +++- .../image_config/monit/generate_monit_config | 6 ++++ .../monit/generate_monit_config.service | 12 ++++++++ rules/docker-router-advertiser.mk | 1 + 5 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 dockers/docker-router-advertiser/base_image_files/monit_radv.j2 create mode 100755 files/image_config/monit/generate_monit_config create mode 100644 files/image_config/monit/generate_monit_config.service diff --git a/dockers/docker-router-advertiser/base_image_files/monit_radv.j2 b/dockers/docker-router-advertiser/base_image_files/monit_radv.j2 new file mode 100644 index 00000000000..0dc82cbc9dd --- /dev/null +++ b/dockers/docker-router-advertiser/base_image_files/monit_radv.j2 @@ -0,0 +1,30 @@ +{# Router advertiser should only run on ToR (T0) devices which have #} +{# at least one VLAN interface which has an IPv6 address asigned #} +{# But not for specific deployment_id #} +{%- set vlan_v6 = namespace(count=0) -%} +{%- if DEVICE_METADATA is defined and DEVICE_METADATA.localhost is defined -%} + {%- if DEVICE_METADATA.localhost.deployment_id is defined and DEVICE_METADATA.localhost.type is defined -%} + {%- if DEVICE_METADATA.localhost.deployment_id != "8" -%} + {%- if "ToRRouter" in DEVICE_METADATA.localhost.type and DEVICE_METADATA.localhost.type != "MgmtToRRouter" -%} + {%- if VLAN_INTERFACE -%} + {%- for (name, prefix) in VLAN_INTERFACE|pfx_filter -%} + {# If this VLAN has an IPv6 address... #} + {%- if prefix | ipv6 -%} + {%- set vlan_v6.count = vlan_v6.count + 1 -%} + {%- endif -%} + {%- endfor -%} + {%- endif -%} + {%- endif -%} + {%- endif -%} + {%- endif -%} +{%- endif -%} + +{%- if vlan_v6.count > 0 %} +############################################################################### +## Monit configuration for radv container +## process list: +## radvd +############################################################################### +check program radv|radvd with path "/usr/bin/process_checker radv /usr/sbin/radvd -n" + if status != 0 for 5 times within 5 cycles then alert repeat every 1 cycles +{% endif -%} diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index d472fe774ee..32c38a9cf5d 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -316,7 +316,10 @@ sudo cp $IMAGE_CONFIGS/monit/process_checker $FILESYSTEM_ROOT/usr/bin/ sudo chmod 755 $FILESYSTEM_ROOT/usr/bin/process_checker sudo cp $IMAGE_CONFIGS/monit/container_checker $FILESYSTEM_ROOT/usr/bin/ sudo chmod 755 $FILESYSTEM_ROOT/usr/bin/container_checker - +sudo cp $IMAGE_CONFIGS/monit/generate_monit_config.service $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM +sudo cp $IMAGE_CONFIGS/monit/generate_monit_config $FILESYSTEM_ROOT/usr/bin/ +sudo chmod 755 $FILESYSTEM_ROOT/usr/bin/generate_monit_config +s # Install custom-built openssh sshd sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/openssh-server_*.deb diff --git a/files/image_config/monit/generate_monit_config b/files/image_config/monit/generate_monit_config new file mode 100755 index 00000000000..b491c321be7 --- /dev/null +++ b/files/image_config/monit/generate_monit_config @@ -0,0 +1,6 @@ +#!/bin/bash + +CFGGEN_PARAMS=" \ + -d -t /usr/share/sonic/templates/monit_radv.j2,/etc/monit/conf.d/monit_radv \ +" +sonic-cfggen $CFGGEN_PARAMS diff --git a/files/image_config/monit/generate_monit_config.service b/files/image_config/monit/generate_monit_config.service new file mode 100644 index 00000000000..c7994211b26 --- /dev/null +++ b/files/image_config/monit/generate_monit_config.service @@ -0,0 +1,12 @@ +[Unit] +Description=Generate Monit configuration file from template +Requires=updategraph.service +After=updategraph.service +Before=monit.service + +[Service] +Type=oneshot +ExecStart=/usr/bin/generate_monit_config.sh + +[Install] +WantedBy=multi-user.target diff --git a/rules/docker-router-advertiser.mk b/rules/docker-router-advertiser.mk index 38bd9590567..c8ca4e40ba9 100644 --- a/rules/docker-router-advertiser.mk +++ b/rules/docker-router-advertiser.mk @@ -24,3 +24,4 @@ $(DOCKER_ROUTER_ADVERTISER)_RUN_OPT += --privileged -t $(DOCKER_ROUTER_ADVERTISER)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_ROUTER_ADVERTISER)_RUN_OPT += -v /usr/share/sonic/scripts:/usr/share/sonic/scripts:ro $(DOCKER_ROUTER_ADVERTISER)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) +$(DOCKER_ROUTER_ADVERTISER)_BASE_IMAGE_FILES += monit_radv.j2:/usr/share/sonic/tempaltes From 26d35ecc261876f67f2a0a316fee06104edc2b73 Mon Sep 17 00:00:00 2001 From: Yong Zhao Date: Tue, 13 Apr 2021 23:28:30 +0000 Subject: [PATCH 2/3] [Monit] Update the service and template file. Signed-off-by: Yong Zhao --- .../docker-router-advertiser/base_image_files/monit_radv.j2 | 2 ++ files/image_config/monit/generate_monit_config.service | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/dockers/docker-router-advertiser/base_image_files/monit_radv.j2 b/dockers/docker-router-advertiser/base_image_files/monit_radv.j2 index 0dc82cbc9dd..78908d2b205 100644 --- a/dockers/docker-router-advertiser/base_image_files/monit_radv.j2 +++ b/dockers/docker-router-advertiser/base_image_files/monit_radv.j2 @@ -1,3 +1,5 @@ +{# This template file is used to generate Monit configuration file of router advertiser container. -#} + {# Router advertiser should only run on ToR (T0) devices which have #} {# at least one VLAN interface which has an IPv6 address asigned #} {# But not for specific deployment_id #} diff --git a/files/image_config/monit/generate_monit_config.service b/files/image_config/monit/generate_monit_config.service index c7994211b26..1425667f570 100644 --- a/files/image_config/monit/generate_monit_config.service +++ b/files/image_config/monit/generate_monit_config.service @@ -6,7 +6,8 @@ Before=monit.service [Service] Type=oneshot -ExecStart=/usr/bin/generate_monit_config.sh +RemainAfterExit=yes +ExecStart=/usr/bin/generate_monit_config [Install] WantedBy=multi-user.target From 1fc6d1bb550af1386a4a4d1379b1b948b3d0e7f5 Mon Sep 17 00:00:00 2001 From: Yong Zhao Date: Wed, 14 Apr 2021 00:30:23 +0000 Subject: [PATCH 3/3] [Monit] Remove the extra line. Signed-off-by: Yong Zhao --- files/build_templates/sonic_debian_extension.j2 | 1 - 1 file changed, 1 deletion(-) diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index 32c38a9cf5d..bbc79caf868 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -319,7 +319,6 @@ sudo chmod 755 $FILESYSTEM_ROOT/usr/bin/container_checker sudo cp $IMAGE_CONFIGS/monit/generate_monit_config.service $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM sudo cp $IMAGE_CONFIGS/monit/generate_monit_config $FILESYSTEM_ROOT/usr/bin/ sudo chmod 755 $FILESYSTEM_ROOT/usr/bin/generate_monit_config -s # Install custom-built openssh sshd sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/openssh-server_*.deb