Remove duplicated templates

tags/zabbix-agent-addons-0.2.150-1
Daniel Berteaud 3 years ago
parent 9eb1706e7d
commit 1f7b7e86d8
  1. 1168
      zabbix_templates/Template_OS_Linux_server.xml
  2. 806
      zabbix_templates/Template_OS_Windows_minimal.xml
  3. 76
      zabbix_templates/Template_OS_Windows_server.xml

File diff suppressed because it is too large Load Diff

@ -1,806 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>4.4</version>
<date>2020-06-08T07:30:56Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template_OS_Windows_Minimal</template>
<name>Template_OS_Windows_Minimal</name>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>Applications</name>
</application>
<application>
<name>Disks</name>
</application>
<application>
<name>Memory</name>
</application>
<application>
<name>Network</name>
</application>
<application>
<name>Processor</name>
</application>
<application>
<name>Various</name>
</application>
</applications>
<items>
<item>
<name>TCP Ping of the agent</name>
<key>agent.ping</key>
<delay>5m</delay>
<trends>1825d</trends>
<applications>
<application>
<name>Network</name>
</application>
</applications>
<valuemap>
<name>Service state</name>
</valuemap>
<request_method>POST</request_method>
</item>
<item>
<name>Zabbix agent version</name>
<key>agent.version</key>
<delay>30m</delay>
<trends>0</trends>
<value_type>CHAR</value_type>
<applications>
<application>
<name>Applications</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>CPU Usage: Userspace</name>
<key>perf_counter[&quot;\238(_Total)\142&quot;,30]</key>
<delay>45s</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<applications>
<application>
<name>Processor</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>CPU Usage: System</name>
<key>perf_counter[&quot;\238(_Total)\144&quot;,30]</key>
<delay>45s</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<applications>
<application>
<name>Processor</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Number of processes</name>
<key>proc.num[]</key>
<delay>5m</delay>
<trends>1825d</trends>
<applications>
<application>
<name>Applications</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>CPU Load</name>
<key>system.cpu.load[,avg1]</key>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<applications>
<application>
<name>Processor</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>CPU Load (5min)</name>
<key>system.cpu.load[,avg5]</key>
<delay>5m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<applications>
<application>
<name>Processor</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>CPU Load (15min)</name>
<key>system.cpu.load[,avg15]</key>
<delay>15m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<applications>
<application>
<name>Processor</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Number of CPU</name>
<key>system.cpu.num[]</key>
<delay>1d</delay>
<trends>1825d</trends>
<units>cpu</units>
<applications>
<application>
<name>Processor</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Swap: used (%)</name>
<type>CALCULATED</type>
<key>system.swap.size.pused</key>
<delay>5m</delay>
<trends>1825d</trends>
<units>%</units>
<params>100*last(system.swap.size.used)/last(&quot;system.swap.size[,total]&quot;)</params>
<applications>
<application>
<name>Memory</name>
</application>
</applications>
<request_method>POST</request_method>
<triggers>
<trigger>
<expression>{last(0)}&gt;{$SWAP_CRITICAL}</expression>
<name>High swap usage</name>
<status>DISABLED</status>
<priority>HIGH</priority>
</trigger>
</triggers>
</item>
<item>
<name>Swap: used</name>
<type>CALCULATED</type>
<key>system.swap.size.used</key>
<delay>5m</delay>
<trends>1825d</trends>
<units>B</units>
<params>last(&quot;system.swap.size[,total]&quot;)-last(&quot;system.swap.size[,free]&quot;)</params>
<applications>
<application>
<name>Memory</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Swap: $2</name>
<key>system.swap.size[,free]</key>
<delay>5m</delay>
<trends>1825d</trends>
<units>B</units>
<applications>
<application>
<name>Memory</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Swap: $2</name>
<key>system.swap.size[,total]</key>
<delay>15m</delay>
<trends>1825d</trends>
<units>B</units>
<applications>
<application>
<name>Memory</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Uptime</name>
<key>system.uptime</key>
<delay>5m</delay>
<trends>1825d</trends>
<units>s</units>
<applications>
<application>
<name>Various</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Memory: used (%)</name>
<type>CALCULATED</type>
<key>vm.memory.size.pused</key>
<trends>1825d</trends>
<units>%</units>
<params>100*last(vm.memory.size.used)/last(vm.memory.size[total])</params>
<applications>
<application>
<name>Memory</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Memory: used</name>
<type>CALCULATED</type>
<key>vm.memory.size.used</key>
<trends>1825d</trends>
<units>B</units>
<params>last(vm.memory.size[total])-last(vm.memory.size[free])</params>
<applications>
<application>
<name>Memory</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Memory: $1</name>
<key>vm.memory.size[cached]</key>
<trends>1825d</trends>
<units>B</units>
<applications>
<application>
<name>Memory</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Mémory: $1</name>
<key>vm.memory.size[free]</key>
<trends>1825d</trends>
<units>B</units>
<applications>
<application>
<name>Memory</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
<item>
<name>Memory: $1</name>
<key>vm.memory.size[total]</key>
<delay>15m</delay>
<trends>1825d</trends>
<units>B</units>
<applications>
<application>
<name>Memory</name>
</application>
</applications>
<request_method>POST</request_method>
</item>
</items>
<discovery_rules>
<discovery_rule>
<name>Network interface discovery</name>
<key>net.if.discovery</key>
<delay>1h</delay>
<filter>
<conditions>
<condition>
<macro>{#IFNAME}</macro>
<value>@decouverte_interfaces_rzo</value>
<formulaid>A</formulaid>
</condition>
</conditions>
</filter>
<description>Découverte des interfaces réseau</description>
<item_prototypes>
<item_prototype>
<name>Inbound trafic for{#IFNAME}</name>
<key>net.if.in[&quot;{#IFNAME}&quot;]</key>
<delay>45s</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>b</units>
<applications>
<application>
<name>Network</name>
</application>
</applications>
<preprocessing>
<step>
<type>CHANGE_PER_SECOND</type>
<params/>
</step>
<step>
<type>MULTIPLIER</type>
<params>8</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item_prototype>
<item_prototype>
<name>Outbound trafic for {#IFNAME}</name>
<key>net.if.out[&quot;{#IFNAME}&quot;]</key>
<delay>45s</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>b</units>
<applications>
<application>
<name>Network</name>
</application>
</applications>
<preprocessing>
<step>
<type>CHANGE_PER_SECOND</type>
<params/>
</step>
<step>
<type>MULTIPLIER</type>
<params>-8</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item_prototype>
</item_prototypes>
<graph_prototypes>
<graph_prototype>
<name>Network: trafic: {#IFNAME}</name>
<graph_items>
<graph_item>
<drawtype>FILLED_REGION</drawtype>
<color>009900</color>
<item>
<host>Template_OS_Windows_Minimal</host>
<key>net.if.in[&quot;{#IFNAME}&quot;]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>FILLED_REGION</drawtype>
<color>FF6666</color>
<item>
<host>Template_OS_Windows_Minimal</host>
<key>net.if.out[&quot;{#IFNAME}&quot;]</key>
</item>
</graph_item>
</graph_items>
</graph_prototype>
</graph_prototypes>
<request_method>POST</request_method>
</discovery_rule>
<discovery_rule>
<name>Filesystem discovery</name>
<key>vfs.fs.discovery</key>
<delay>1h;50s/1-7,00:00-24:00</delay>
<filter>
<conditions>
<condition>
<macro>{#FSTYPE}</macro>
<value>@decouverte_fs</value>
<formulaid>A</formulaid>
</condition>
</conditions>
</filter>
<lifetime>2d</lifetime>
<description>Découverte des FS et points de montage</description>
<item_prototypes>
<item_prototype>
<name>Average read delay on {#FSNAME}</name>
<key>perf_counter[&quot;\236({#FSNAME})\208&quot;,300]</key>
<delay>5m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>s</units>
<applications>
<application>
<name>Disks</name>
</application>
</applications>
<request_method>POST</request_method>
</item_prototype>
<item_prototype>
<name>Average write delay on {#FSNAME}</name>
<key>perf_counter[&quot;\236({#FSNAME})\210&quot;,300]</key>
<delay>5m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>s</units>
<applications>
<application>
<name>Disks</name>
</application>
</applications>
<request_method>POST</request_method>
</item_prototype>
<item_prototype>
<name>Read operations on {#FSNAME}</name>
<key>perf_counter[&quot;\236({#FSNAME})\214&quot;,180]</key>
<delay>3m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>iops</units>
<applications>
<application>
<name>Disks</name>
</application>
</applications>
<request_method>POST</request_method>
</item_prototype>
<item_prototype>
<name>Write operations on {#FSNAME}</name>
<key>perf_counter[&quot;\236({#FSNAME})\216&quot;,180]</key>
<delay>3m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>iops</units>
<applications>
<application>
<name>Disks</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>-1</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item_prototype>
<item_prototype>
<name>Reads on {#FSNAME}</name>
<key>perf_counter[&quot;\236({#FSNAME})\220&quot;,180]</key>
<delay>3m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>B/s</units>
<applications>
<application>
<name>Disks</name>
</application>
</applications>
<request_method>POST</request_method>
</item_prototype>
<item_prototype>
<name>Writes on {#FSNAME}</name>
<key>perf_counter[&quot;\236({#FSNAME})\222&quot;,180]</key>
<delay>3m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>B/s</units>
<applications>
<application>
<name>Disks</name>
</application>
</applications>
<preprocessing>
<step>
<type>MULTIPLIER</type>
<params>-1</params>
</step>
</preprocessing>
<request_method>POST</request_method>
</item_prototype>
<item_prototype>
<name>Cumulated queue length on {#FSNAME}</name>
<key>perf_counter[&quot;\236({#FSNAME})\1400&quot;,300]</key>
<delay>5m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<applications>
<application>
<name>Disks</name>
</application>
</applications>
<request_method>POST</request_method>
</item_prototype>
<item_prototype>
<name>Read queue length {#FSNAME}</name>
<key>perf_counter[&quot;\236({#FSNAME})\1402&quot;,300]</key>
<delay>5m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<applications>
<application>
<name>Disks</name>
</application>
</applications>
<request_method>POST</request_method>
</item_prototype>
<item_prototype>
<name>Write queue length on {#FSNAME}</name>
<key>perf_counter[&quot;\236({#FSNAME})\1404&quot;,300]</key>
<delay>5m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<applications>
<application>
<name>Disks</name>
</application>
</applications>
<request_method>POST</request_method>
</item_prototype>
<item_prototype>
<name>Used space on {#FSNAME} (%)</name>
<key>vfs.fs.size[{#FSNAME},pused]</key>
<delay>5m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>%</units>
<applications>
<application>
<name>Disks</name>
</application>
</applications>
<request_method>POST</request_method>
<trigger_prototypes>
<trigger_prototype>
<expression>{last(0)}&gt;{$DF_CRITICAL}</expression>
<recovery_mode>RECOVERY_EXPRESSION</recovery_mode>
<recovery_expression>{last(0)}&lt;({$DF_CRITICAL}-2)</recovery_expression>
<name>{#FSNAME} is {ITEM.LASTVALUE1} full</name>
<priority>AVERAGE</priority>
</trigger_prototype>
<trigger_prototype>
<expression>{last(0)}&gt;{$DF_WARN}</expression>
<recovery_mode>RECOVERY_EXPRESSION</recovery_mode>
<recovery_expression>{last(0)}&lt;({$DF_WARN}-2)</recovery_expression>
<name>{#FSNAME} is {ITEM.LASTVALUE1} full</name>
<priority>WARNING</priority>
<dependencies>
<dependency>
<name>{#FSNAME} is {ITEM.LASTVALUE1} full</name>
<expression>{Template_OS_Windows_Minimal:vfs.fs.size[{#FSNAME},pused].last(0)}&gt;{$DF_CRITICAL}</expression>
<recovery_expression>{Template_OS_Windows_Minimal:vfs.fs.size[{#FSNAME},pused].last(0)}&lt;({$DF_CRITICAL}-2)</recovery_expression>
</dependency>
</dependencies>
</trigger_prototype>
</trigger_prototypes>
</item_prototype>
<item_prototype>
<name>Used space on {#FSNAME}</name>
<key>vfs.fs.size[{#FSNAME},used]</key>
<delay>5m</delay>
<trends>1825d</trends>
<value_type>FLOAT</value_type>
<units>o</units>
<applications>
<application>
<name>Disks</name>
</application>
</applications>
<request_method>POST</request_method>
</item_prototype>
</item_prototypes>
<graph_prototypes>
<graph_prototype>
<name>System: delay on {#FSNAME}</name>
<type>STACKED</type>
<graph_items>
<graph_item>
<color>00CC00</color>
<item>
<host>Template_OS_Windows_Minimal</host>
<key>perf_counter[&quot;\236({#FSNAME})\208&quot;,300]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<color>CC0000</color>
<item>
<host>Template_OS_Windows_Minimal</host>
<key>perf_counter[&quot;\236({#FSNAME})\210&quot;,300]</key>
</item>
</graph_item>
</graph_items>
</graph_prototype>
<graph_prototype>
<name>System: queue length on {#FSNAME}</name>
<type>STACKED</type>
<graph_items>
<graph_item>
<color>00CC00</color>
<item>
<host>Template_OS_Windows_Minimal</host>
<key>perf_counter[&quot;\236({#FSNAME})\1402&quot;,300]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<color>DD0000</color>
<item>
<host>Template_OS_Windows_Minimal</host>
<key>perf_counter[&quot;\236({#FSNAME})\1404&quot;,300]</key>
</item>
</graph_item>
</graph_items>
</graph_prototype>
</graph_prototypes>
<request_method>POST</request_method>
</discovery_rule>
</discovery_rules>
<macros>
<macro>
<macro>{$DF_CRITICAL}</macro>
<value>95</value>
</macro>
<macro>
<macro>{$DF_WARN}</macro>
<value>90</value>
</macro>
<macro>
<macro>{$SWAP_CRITICAL}</macro>
<value>75</value>
</macro>
</macros>
</template>
</templates>
<graphs>
<graph>
<name>System: CPU: Load</name>
<graph_items>
<graph_item>
<color>FF0000</color>
<item>
<host>Template_OS_Windows_Minimal</host>
<key>system.cpu.load[,avg15]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<color>FFFF33</color>
<item>
<host>Template_OS_Windows_Minimal</host>
<key>system.cpu.load[,avg5]</key>
</item>
</graph_item>
<graph_item>
<sortorder>2</sortorder>
<color>009900</color>
<item>
<host>Template_OS_Windows_Minimal</host>
<key>system.cpu.load[,avg1]</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>System: CPU: Usage</name>
<type>STACKED</type>
<ymin_type_1>FIXED</ymin_type_1>
<ymax_type_1>FIXED</ymax_type_1>
<graph_items>
<graph_item>
<color>FF0000</color>
<item>
<host>Template_OS_Windows_Minimal</host>
<key>perf_counter[&quot;\238(_Total)\144&quot;,30]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<color>FFFF00</color>
<item>
<host>Template_OS_Windows_Minimal</host>
<key>perf_counter[&quot;\238(_Total)\142&quot;,30]</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>System: Memory</name>
<type>STACKED</type>
<ymin_type_1>FIXED</ymin_type_1>
<ymax_type_1>ITEM</ymax_type_1>
<ymax_item_1>
<host>Template_OS_Windows_Minimal</host>
<key>vm.memory.size[total]</key>
</ymax_item_1>
<graph_items>
<graph_item>
<color>0000CC</color>
<item>
<host>Template_OS_Windows_Minimal</host>
<key>vm.memory.size.used</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<color>CCFFFF</color>
<item>
<host>Template_OS_Windows_Minimal</host>
<key>vm.memory.size[free]</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>System: Processes</name>
<ymin_type_1>FIXED</ymin_type_1>
<graph_items>
<graph_item>
<drawtype>FILLED_REGION</drawtype>
<color>FFFF33</color>
<item>
<host>Template_OS_Windows_Minimal</host>
<key>proc.num[]</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>System: Swap</name>
<type>STACKED</type>
<ymin_type_1>FIXED</ymin_type_1>
<ymax_type_1>ITEM</ymax_type_1>
<ymax_item_1>
<host>Template_OS_Windows_Minimal</host>
<key>system.swap.size[,total]</key>
</ymax_item_1>
<graph_items>
<graph_item>
<color>FF0000</color>
<item>
<host>Template_OS_Windows_Minimal</host>
<key>system.swap.size.used</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<color>FFFFCC</color>
<item>
<host>Template_OS_Windows_Minimal</host>
<key>system.swap.size[,free]</key>
</item>
</graph_item>
</graph_items>
</graph>
<graph>
<name>System: Uptime</name>
<graph_items>
<graph_item>
<drawtype>FILLED_REGION</drawtype>
<color>FF0000</color>
<item>
<host>Template_OS_Windows_Minimal</host>
<key>system.uptime</key>
</item>
</graph_item>
</graph_items>
</graph>
</graphs>
<value_maps>
<value_map>
<name>Service state</name>
<mappings>
<mapping>
<value>0</value>
<newvalue>Down</newvalue>
</mapping>
<mapping>
<value>1</value>
<newvalue>Up</newvalue>
</mapping>
</mappings>
</value_map>
</value_maps>
</zabbix_export>

@ -1,76 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>4.4</version>
<date>2020-06-08T07:31:25Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template_OS_Windows_Serveur</template>
<name>Template_OS_Windows_Serveur</name>
<templates>
<template>
<name>Template_OS_Windows_Minimal</name>
</template>
<template>
<name>Template_Ping</name>
</template>
</templates>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<macros>
<macro>
<macro>{$LOAD_COEF}</macro>
<value>1</value>
</macro>
<macro>
<macro>{$MAX_PROCESSES}</macro>
<value>200</value>
</macro>
<macro>
<macro>{$REBOOT_WARN}</macro>
<value>21600</value>
</macro>
<macro>
<macro>{$ZBX_UNREACHABLE_TIMEOUT}</macro>
<value>900</value>
</macro>
</macros>
</template>
</templates>
<triggers>
<trigger>
<expression>({Template_OS_Windows_Serveur:system.cpu.load[,avg1].avg(900)}&gt;({Template_OS_Windows_Serveur:system.cpu.num[].last(0)}*3*{$LOAD_COEF})) or ({Template_OS_Windows_Serveur:system.cpu.load[,avg1].avg(1800)}&gt;({Template_OS_Windows_Serveur:system.cpu.num[].last(0)}*2.5*{$LOAD_COEF})) or ({Template_OS_Windows_Serveur:system.cpu.load[,avg1].avg(7200)}&gt;({Template_OS_Windows_Serveur:system.cpu.num[].last(0)}*1.2*{$LOAD_COEF}))</expression>
<name>High CPU load</name>
<priority>INFO</priority>
</trigger>
<trigger>
<expression>{Template_OS_Windows_Serveur:proc.num[].last(0)}&gt;{$MAX_PROCESSES}</expression>
<name>Too many processes</name>
<priority>AVERAGE</priority>
</trigger>
<trigger>
<expression>{Template_OS_Windows_Serveur:agent.ping.nodata({$ZBX_UNREACHABLE_TIMEOUT})}=1</expression>
<name>Zabbix agent unavailable</name>
<priority>DISASTER</priority>
<dependencies>
<dependency>
<name>No ping response from {HOST.IP1}</name>
<expression>{Template_OS_Windows_Serveur:icmpping[,2,,,2000].sum({$DOWN_CRITICAL})}=0 and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].dayofweek(0)}&gt;={$PING_ALERT_FROM_DAY} and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].dayofweek(0)}&lt;={$PING_ALERT_TO_DAY} and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].time(0)}&gt;={$PING_ALERT_FROM_HOUR} and {Template_OS_Windows_Serveur:icmpping[,2,,,2000].time(0)}&lt;={$PING_ALERT_TO_HOUR}</expression>
<recovery_expression>{Template_OS_Windows_Serveur:icmpping[,2,,,2000].sum(180)}&gt;3</recovery_expression>
</dependency>
</dependencies>
</trigger>
<trigger>
<expression>{Template_OS_Windows_Serveur:system.uptime.last(0)}&lt;{$REBOOT_WARN}</expression>
<name>{HOSTNAME} rebooted {ITEM.LASTVALUE1} ago</name>
<priority>INFO</priority>
</trigger>
</triggers>
</zabbix_export>
Loading…
Cancel
Save