sonic-buildimage/dockers/docker-dhcp-relay/base_image_files/monit_dhcp_relay.j2
yozhao101 aeae87d1b5
[201911][Monit] Use VLAN name to differentiate each Monit service of dhcp_relay (#7378)
#### Why I did it
Since we will have multiple `dhcrelay` processes if there exists different VLANs in the table `VLAN_INTERFACE` of `CONIFG_DB`, 
we should use unique service name for each `dhcrelay` process in Monit configuration file. Otherwise, Monit service will fail to work.

#### How I did it
I append the VLAN name to the end of each service name such that they are unique.

Signed-off-by: Yong Zhao <yozhao@microsoft.com>
2021-04-22 18:04:29 -07:00

37 lines
1.8 KiB
Django/Jinja

{# This template file is used to generate Monit configuration file of dhcp_relay container -#}
################################################################################
## Monit configuration file for dhcp_relay container
## process list:
## dhcrelay
################################################################################
{# If our configuration has VLANs... #}
{%- if VLAN_INTERFACE -%}
{# Count how may VLANs require a DHCP relay agent... #}
{%- set num_relays = namespace(count=0) -%}
{%- for vlan_name in VLAN_INTERFACE -%}
{%- if VLAN and vlan_name in VLAN and 'dhcp_servers' in VLAN[vlan_name] and VLAN[vlan_name]['dhcp_servers']|length > 0 -%}
{%- set num_relays.count = num_relays.count + 1 -%}
{%- endif -%}
{%- endfor -%}
{# if one or more VLANs require DHCP relay agent #}
{%- if num_relays.count > 0 -%}
{%- set relay_for_ipv4 = namespace(flag=False) -%}
{%- for vlan_name in VLAN_INTERFACE -%}
{%- if VLAN and vlan_name in VLAN and 'dhcp_servers' in VLAN[vlan_name] and VLAN[vlan_name]['dhcp_servers']|length >0 -%}
{%- for dhcp_server in VLAN[vlan_name]['dhcp_servers'] -%}
{%- if dhcp_server | ipv4 -%}
{%- set relay_for_ipv4.flag = True -%}
{%- endif -%}
{%- endfor -%}
{%- if relay_for_ipv4.flag -%}
{%- set relay_for_ipv4 = False -%}
{# Check the running status of each DHCP relay agent instance #}
check program dhcp_relay|dhcrelay_{{ vlan_name }} with path "/usr/bin/process_checker dhcp_relay /usr/sbin/dhcrelay -d -m discard -a %h:%p %P --name-alias-map-file /tmp/port-name-alias-map.txt -id {{ vlan_name }}"
if status != 0 for 5 times within 5 cycles then alert repeat every 1 cycles
{%- endif -%}
{%- endif -%}
{%- endfor -%}
{%- endif -%}
{%- endif -%}