├── packaging
├── preinst
├── conffiles
├── prerm
├── postrm
├── control
└── postinst
├── telegraf-edgeos.png
├── grafana
├── grafana_edgerouter_banner.png
├── grafana_edgerouter_fullscreen.png
└── grafana_edgerouter.json
├── configs
├── 99telegraf
├── telegraf.service
└── telegraf.conf
├── .github
└── workflows
│ ├── shellcheck.yml
│ ├── cicd.yml
│ ├── release.yml
│ └── build.yml
├── LICENSE
├── plugins
└── edgeos.sh
└── README.md
/packaging/preinst:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | exit 0
4 |
--------------------------------------------------------------------------------
/packaging/conffiles:
--------------------------------------------------------------------------------
1 | /etc/default/telegraf
2 | /etc/telegraf/telegraf.conf
3 |
--------------------------------------------------------------------------------
/telegraf-edgeos.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/x70b1/telegraf-edgeos/HEAD/telegraf-edgeos.png
--------------------------------------------------------------------------------
/grafana/grafana_edgerouter_banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/x70b1/telegraf-edgeos/HEAD/grafana/grafana_edgerouter_banner.png
--------------------------------------------------------------------------------
/grafana/grafana_edgerouter_fullscreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/x70b1/telegraf-edgeos/HEAD/grafana/grafana_edgerouter_fullscreen.png
--------------------------------------------------------------------------------
/configs/99telegraf:
--------------------------------------------------------------------------------
1 | telegraf ALL = NOPASSWD: /usr/sbin/ubnt-hal show-version
2 | telegraf ALL = NOPASSWD: /usr/sbin/ubnt-hal getPowerStatus
3 | telegraf ALL = NOPASSWD: /usr/sbin/ubnt-hal getTemp
4 |
--------------------------------------------------------------------------------
/packaging/prerm:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | if [ "$1" = remove ]; then
4 | systemctl stop telegraf.service > /dev/null || true
5 | systemctl disable telegraf.service > /dev/null || true
6 | fi
7 |
8 | exit 0
9 |
--------------------------------------------------------------------------------
/packaging/postrm:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | if [ "$1" = "remove" ] ; then
4 | systemctl daemon-reload > /dev/null || true
5 | fi
6 |
7 | if [ "$1" = "purge" ] ; then
8 | deluser --quiet telegraf > /dev/null || true
9 | fi
10 |
11 | exit 0
12 |
--------------------------------------------------------------------------------
/packaging/control:
--------------------------------------------------------------------------------
1 | Maintainer: x70b1
2 | Package: telegraf
3 | Architecture: #ARCH
4 | Depends: adduser, curl, jq
5 | Version: #VERSION
6 | Description: A lightweight Telegraf distribution customized for Ubiquiti's EdgeOS.
7 | Installed-Size: #SIZE
8 | Homepage: https://github.com/x70b1/telegraf-edgeos
9 |
--------------------------------------------------------------------------------
/packaging/postinst:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | if [ "$1" = "configure" ]; then
4 | if ! getent passwd telegraf > /dev/null; then
5 | adduser --quiet --system --group --no-create-home --home /etc/telegraf --shell /bin/false telegraf
6 | fi
7 | fi
8 |
9 | systemctl daemon-reload > /dev/null || true
10 | systemctl enable telegraf.service > /dev/null || true
11 |
12 | exit 0
13 |
--------------------------------------------------------------------------------
/configs/telegraf.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=A lightweight Telegraf distribution customized for Ubiquiti's EdgeOS.
3 | Documentation=https://github.com/x70b1/telegraf-edgeos
4 | After=network.target
5 |
6 | [Service]
7 | EnvironmentFile=-/etc/default/telegraf
8 | User=telegraf
9 | ExecStart=/usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d $TELEGRAF_OPTS
10 | ExecReload=/bin/kill -HUP $MAINPID
11 | Restart=on-failure
12 | RestartForceExitStatus=SIGPIPE
13 | KillMode=control-group
14 | AmbientCapabilities=CAP_NET_RAW
15 |
16 | [Install]
17 | WantedBy=multi-user.target
18 |
--------------------------------------------------------------------------------
/.github/workflows/shellcheck.yml:
--------------------------------------------------------------------------------
1 | name: ShellCheck
2 |
3 | on:
4 | workflow_call:
5 |
6 | jobs:
7 | Analysis:
8 | runs-on: ubuntu-latest
9 | steps:
10 | - name: Install
11 | run: |
12 | wget -O /opt/shellcheck-stable.linux.x86_64.tar.xz https://github.com/koalaman/shellcheck/releases/download/stable/shellcheck-stable.linux.x86_64.tar.xz
13 | tar xf /opt/shellcheck-stable.linux.x86_64.tar.xz -C /opt
14 | - name: Version
15 | run: /opt/shellcheck-stable/shellcheck --version
16 | - name: Checkout
17 | uses: actions/checkout@v5
18 | - name: Analysis
19 | run: find . '(' -name '*.sh' ')' -exec /opt/shellcheck-stable/shellcheck {} +
20 |
--------------------------------------------------------------------------------
/configs/telegraf.conf:
--------------------------------------------------------------------------------
1 | #
2 | # [agent]
3 | # hostname = "telegraf"
4 | #
5 | # interval = "1m"
6 | #
7 | # debug = false
8 | # quiet = false
9 | # logtarget = "stderr"
10 | #
11 | # [[outputs.influxdb]]
12 | # urls = [""]
13 | # username = "telegraf"
14 | # password = ""
15 | #
16 | # [[inputs.cpu]]
17 | # percpu = false
18 | # report_active = true
19 | #
20 | # [[inputs.system]]
21 | #
22 | # [[inputs.mem]]
23 | #
24 | # [[inputs.net]]
25 | #
26 | # [[inputs.exec]]
27 | # command = "sh /usr/lib/telegraf/edgeos.sh --interfaces --power --temperature"
28 | # data_format = "influx"
29 | #
30 | # [[inputs.exec]]
31 | # command = "sh /usr/lib/telegraf/edgeos.sh --firmware"
32 | # data_format = "influx"
33 | #
34 | # interval = "24h"
35 | #
36 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 x70b1
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/.github/workflows/cicd.yml:
--------------------------------------------------------------------------------
1 | name: CI/CD
2 |
3 | on:
4 | push:
5 | branches:
6 | - '**'
7 | tags-ignore:
8 | - '**'
9 |
10 | env:
11 | VERSION_UPSTREAM: 1.36.1
12 | VERSION_BUILD: 1
13 |
14 | jobs:
15 | Variables:
16 | runs-on: ubuntu-latest
17 | outputs:
18 | version: ${{ env.VERSION_UPSTREAM }}
19 | build: ${{ env.VERSION_BUILD }}
20 | steps:
21 | - run: echo "Expose env vars"
22 |
23 | ShellCheck:
24 | uses: ./.github/workflows/shellcheck.yml
25 | flavor-influxdb:
26 | needs:
27 | - Variables
28 | - ShellCheck
29 | uses: ./.github/workflows/build.yml
30 | with:
31 | flavor: influxdb
32 | version: ${{ needs.Variables.outputs.version }}
33 | build: ${{ needs.Variables.outputs.build }}
34 | inputs: inputs.bond,inputs.cpu,inputs.disk,inputs.diskio,inputs.dns_query,inputs.ethtool,inputs.exec,inputs.http_response,inputs.internal,inputs.internet_speed,inputs.iptables,inputs.mem,inputs.net,inputs.netstat,inputs.net_response,inputs.ping,inputs.processes,inputs.snmp,inputs.snmp_legacy,inputs.snmp_trap,inputs.system
35 | outputs: outputs.influxdb,outputs.influxdb_v2
36 | parsers: parsers.influx
37 | processors:
38 | serializers:
39 | flavor-prometheus:
40 | needs:
41 | - Variables
42 | - ShellCheck
43 | uses: ./.github/workflows/build.yml
44 | with:
45 | flavor: prometheus
46 | version: ${{ needs.Variables.outputs.version }}
47 | build: ${{ needs.Variables.outputs.build }}
48 | inputs: inputs.bond,inputs.cpu,inputs.disk,inputs.diskio,inputs.dns_query,inputs.ethtool,inputs.exec,inputs.http_response,inputs.internal,inputs.internet_speed,inputs.iptables,inputs.mem,inputs.net,inputs.netstat,inputs.net_response,inputs.ping,inputs.processes,inputs.snmp,inputs.snmp_legacy,inputs.snmp_trap,inputs.system
49 | outputs: outputs.prometheus_client
50 | parsers: parsers.influx
51 | processors:
52 | serializers:
53 | flavor-prometheus-loki:
54 | needs:
55 | - Variables
56 | - ShellCheck
57 | uses: ./.github/workflows/build.yml
58 | with:
59 | flavor: prometheus+loki
60 | version: ${{ needs.Variables.outputs.version }}
61 | build: ${{ needs.Variables.outputs.build }}
62 | inputs: inputs.bond,inputs.cpu,inputs.disk,inputs.diskio,inputs.dns_query,inputs.ethtool,inputs.exec,inputs.http_response,inputs.internal,inputs.internet_speed,inputs.iptables,inputs.mem,inputs.net,inputs.netstat,inputs.net_response,inputs.ping,inputs.processes,inputs.snmp,inputs.snmp_legacy,inputs.snmp_trap,inputs.system
63 | outputs: outputs.prometheus_client,outputs.loki
64 | parsers: parsers.influx
65 | processors:
66 | serializers:
67 | flavor-splunk:
68 | needs:
69 | - Variables
70 | - ShellCheck
71 | uses: ./.github/workflows/build.yml
72 | with:
73 | flavor: splunk
74 | version: ${{ needs.Variables.outputs.version }}
75 | build: ${{ needs.Variables.outputs.build }}
76 | inputs: inputs.bond,inputs.cpu,inputs.disk,inputs.diskio,inputs.dns_query,inputs.ethtool,inputs.exec,inputs.http_response,inputs.internal,inputs.internet_speed,inputs.iptables,inputs.mem,inputs.net,inputs.netstat,inputs.net_response,inputs.ping,inputs.processes,inputs.snmp,inputs.snmp_legacy,inputs.snmp_trap,inputs.system
77 | outputs: outputs.http
78 | parsers: parsers.influx
79 | processors: processors.rename
80 | serializers: serializers.splunkmetric
81 |
--------------------------------------------------------------------------------
/plugins/edgeos.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | edgeos_firmware() {
4 | firmware_product=$(cut -d '.' -f 2 < /etc/version | cut -d '-' -f 2)
5 | firmware_parameter="filter=eq~~platform~~edgerouter&filter=eq~~channel~~release&filter=eq~~product~~$firmware_product"
6 |
7 | firmware_running=$(sudo /usr/sbin/ubnt-hal show-version | grep Version | cut -d ' ' -f 7)
8 | firmware_availiable=$(curl -sf "https://fw-update.ubnt.com/api/firmware-latest?$firmware_parameter" | jq -r ._embedded.firmware[0].version)
9 | firmware_model=$(sudo /usr/sbin/ubnt-hal show-version | grep model | cut -d ' ' -f 7-)
10 | firmware_serial=$(sudo /usr/sbin/ubnt-hal show-version | grep S/N | cut -d ' ' -f 9-)
11 |
12 | if [ -n "$firmware_availiable" ]; then
13 | if [ "$firmware_running" = "$firmware_availiable" ]; then
14 | firmware_upgrade=0
15 | else
16 | firmware_upgrade=1
17 | fi
18 | else
19 | firmware_availiable="unknown"
20 | firmware_upgrade=0
21 | fi
22 |
23 | echo "edgeos_firmware running=\"$firmware_running\",availiable=\"$firmware_availiable\",upgrade=$firmware_upgrade,model=\"$firmware_model\",serial=\"$firmware_serial\""
24 | }
25 |
26 | edgeos_interfaces() {
27 | interfaces_list=$(find /sys/class/net -maxdepth 1 -type l | cut -d '/' -f 5)
28 |
29 | interfaces_ethernet=$(/usr/sbin/ubnt-ifctl list-sys-intfs ethernet)
30 | interfaces_switch=$(/usr/sbin/ubnt-ifctl list-sys-intfs switch)
31 | interfaces_vif=$(/usr/sbin/ubnt-ifctl list-sys-intfs vif)
32 | interfaces_bridge=$(/usr/sbin/ubnt-ifctl list-sys-intfs bridge)
33 |
34 | for interface_name in $interfaces_list; do
35 | if echo "$interfaces_ethernet" | grep -q "$interface_name"; then
36 | interface_type="ethernet"
37 | elif echo "$interfaces_switch" | grep -q "$interface_name"; then
38 | interface_type="switch"
39 | elif echo "$interfaces_vif" | grep -q "$interface_name"; then
40 | interface_type="vif"
41 | elif echo "$interfaces_bridge" | grep -q "$interface_name"; then
42 | interface_type="bridge"
43 | else
44 | interface_type="other"
45 | fi
46 |
47 | if [ -f /sys/class/net/"$interface_name"/ifalias ]; then
48 | interface_alias=$(cat /sys/class/net/"$interface_name"/ifalias)
49 |
50 | if [ -n "$interface_alias" ]; then
51 | interface_alias="alias=\"$interface_alias\","
52 | else
53 | interface_alias=""
54 | fi
55 | fi
56 |
57 | if [ -f /sys/class/net/"$interface_name"/operstate ]; then
58 | interface_state=$(cat /sys/class/net/"$interface_name"/operstate)
59 |
60 | if [ "$interface_state" = "up" ]; then
61 | interface_state="state=0,"
62 | elif [ "$interface_state" = "lowerlayerdown" ]; then
63 | interface_state="state=1,"
64 | elif [ "$interface_state" = "down" ]; then
65 | interface_state="state=2,"
66 | else
67 | interface_state="state=3,"
68 | fi
69 | fi
70 |
71 | if [ -f /sys/class/net/"$interface_name"/speed ]; then
72 | interface_speed=$(cat /sys/class/net/"$interface_name"/speed 2>/dev/null)
73 |
74 | if [ -n "$interface_speed" ]; then
75 | interface_speed="speed=$interface_speed"
76 | else
77 | interface_speed="speed=0"
78 | fi
79 | fi
80 |
81 | echo "edgeos_interface,interface=$interface_name,type=$interface_type $interface_alias$interface_state$interface_speed"
82 | done
83 | }
84 |
85 | edgeos_power() {
86 | power_info=$(sudo /usr/sbin/ubnt-hal getPowerStatus)
87 |
88 | if ! echo "$power_info" | grep -q "is not supported on this platform"; then
89 | echo "$power_info" | while read -r line; do
90 | power_info_measurement=$(echo "$line" | cut -d ':' -f 1 | rev | cut -d ' ' -f 1 | rev)
91 | power_info_value=$(echo "$line" | cut -d ':' -f 2 | cut -d ' ' -f 2)
92 |
93 | echo "edgeos_power $power_info_measurement=$power_info_value"
94 | done
95 | else
96 | echo "Collecting power metrics is not supported on this hardware!"
97 | fi
98 | }
99 |
100 | edgeos_temperature() {
101 | temperature_info=$(sudo /usr/sbin/ubnt-hal getTemp | tail -n +2 | head -n -1)
102 |
103 | if [ -n "$temperature_info" ]; then
104 | echo "$temperature_info" | while read -r line; do
105 | temperature_info_sensor=$(echo "$line" | cut -d ':' -f 1 | sed 's/ /\\ /')
106 | temperature_info_value=$(echo "$line" | cut -d ':' -f 2 | cut -d ' ' -f 1)
107 |
108 | echo "edgeos_temperature,sensor=$temperature_info_sensor temperature=$temperature_info_value"
109 | done
110 | else
111 | echo "Collecting temperature metrics is not supported on this hardware!"
112 | fi
113 | }
114 |
115 | for module in "$@"; do
116 | if [ "$module" = "--firmware" ]; then
117 | edgeos_firmware
118 | elif [ "$module" = "--interfaces" ]; then
119 | edgeos_interfaces
120 | elif [ "$module" = "--power" ]; then
121 | edgeos_power
122 | elif [ "$module" = "--temperature" ]; then
123 | edgeos_temperature
124 | fi
125 | done
126 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | # telegraf-edgeos
6 |
7 | [](https://github.com/x70b1/telegraf-edgeos/actions)
8 | [](https://github.com/x70b1/telegraf-edgeos/graphs/contributors)
9 | [](https://github.com/x70b1/telegraf-edgeos/blob/master/LICENSE)
10 | [](https://github.com/x70b1/telegraf-edgeos/releases)
11 |
12 | A lightweight [Telegraf](https://github.com/influxdata/telegraf) distribution customized for Ubiquiti's EdgeOS.
13 |
14 |
15 | ## What is so cool here?
16 |
17 | This Telegraf is crosscompiled for `mips` and `mipsel`.
18 | To reduce the size only essential and basic networking related internal plugins are part of the packaged binary.
19 | The result is a ~ 18 MB binary file instead of ~ 210 MB for a full featured Telegraf.
20 | So it should fit on every EdgeRouter.
21 |
22 |
23 | ## edgeos.sh
24 |
25 | To collect metrics that are availiable on EdgeOS but not collected via an internal module the package contains an additional plugin.
26 | You find it at `/usr/lib/telegraf/edgeos.sh`.
27 | It works with different parameters:
28 |
29 | **--firmware** checks Ubnt's servers for EdgeOS updates and returns the result
30 |
31 | **--interfaces** returns more details about a network interface like description, up/down-status and negotiated speed
32 |
33 | **--power** prints power stats, like `show hardware power`
34 |
35 | **--temperature** prints temperature stats, like `show hardware temperature`
36 |
37 |
38 | Example:
39 |
40 | ```
41 | edgeos_firmware running="v2.0.9-hotfix.2",availiable="v2.0.9-hotfix.2",upgrade=0,model="EdgeRouter 12",serial="ABC123456"
42 |
43 | ...
44 |
45 | edgeos_interface,interface=eth4,type=ethernet alias="Server A",state=0,speed=1000
46 | edgeos_interface,interface=eth2,type=ethernet alias="Server B",state=1,speed=10
47 | edgeos_interface,interface=eth0,type=ethernet alias="Provider XYZ",state=0,speed=1000
48 |
49 | ...
50 |
51 | edgeos_power voltage=23.41
52 | edgeos_power current=0.37
53 | edgeos_power consumption=8.85
54 | edgeos_temperature,sensor=CPU temperature=66.75
55 | edgeos_temperature,sensor=Board\ 1 temperature=58.25
56 | edgeos_temperature,sensor=Board\ 2 temperature=49.75
57 | edgeos_temperature,sensor=PHY\ 1 temperature=68.50
58 | edgeos_temperature,sensor=PHY\ 2 temperature=57.50
59 | ```
60 |
61 |
62 | ## Supported Hardware
63 |
64 | | | Family | Package | Internal Plugins | firmware | interfaces | power | temperature |
65 | | --------------------- | --------------------- | --------------------- | :----: | :----: | :----: | :----: | :----: |
66 | | `ER-X` | E50 | mipsel | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: |
67 | | `ER-X-SFP` | E50 | mipsel | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: |
68 | | `ER-4` | E300 | mips | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: |
69 | | `ER-6P` | E300 | mips | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: |
70 | | `ER‑8` | E200 | mips | :grey_question: | :grey_question: | :grey_question: | :grey_question: | :grey_question: |
71 | | `ER-8-XG` | E1000 | mips | :grey_question: | :grey_question: | :grey_question: | :grey_question: | :grey_question: |
72 | | `ER-10X` | E50 | mipsel | :grey_question: | :grey_question: | :grey_question: | :grey_question: | :grey_question: |
73 | | `ER-12` | E300 | mips | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
74 | | `ER-12P` | E300 | mips | :grey_question: | :grey_question: | :grey_question: | :grey_question: | :grey_question: |
75 | | `ERLite-3` | E100 | mips | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: |
76 | | `ERPoe‑5` | E100 | mips | :grey_question: | :grey_question: | :grey_question: | :grey_question: | :grey_question: |
77 | | `ERPro-8` | E200 | mips | :grey_question: | :grey_question: | :grey_question: | :grey_question: | :grey_question: |
78 | | `EP-R6` | E50 | mipsel | :grey_question: | :grey_question: | :grey_question: | :grey_question: | :grey_question: |
79 | | `EP-R8` | E200 | mips | :grey_question: | :grey_question: | :grey_question: | :grey_question: | :grey_question: |
80 |
81 |
82 | :heavy_check_mark: = Works for me!
83 |
84 | :x: = No hardware support for this feature :(
85 |
86 | :grey_question: = Unknown
87 |
88 | Your device is not listed with a green check mark? Please open an issue if you have tested Telegraf on an EdgeRouter and share your findings.
89 |
90 |
91 | ## Setup
92 |
93 | To keep the binary size small, we introduced `flavors`.
94 | This means that only a specific output like `influxdb_v2` or `prometheus_client` is part of the built binary.
95 | If you need a different output, create an issue.
96 |
97 | Install the prebuild package with your needed flavor:
98 |
99 | ```sh
100 | curl -L -o telegraf.deb https://github.com/x70b1/telegraf-edgeos/releases/download/{RELEASE}/telegraf_{REALEASE}+{FLAVOR}_{ARCH}.deb
101 | dpkg -i telegraf.deb
102 | ```
103 |
104 | You can upgrade Telegraf with the same commands.
105 |
106 | As you already know from InfluxData's distribution of Telegraf, the configuration is located at `/etc/telegraf/telegraf.conf` and `/etc/telegraf/telegraf.d`.
107 | The [sample config](https://github.com/x70b1/telegraf-edgeos/blob/master/configs/telegraf.conf) is pre-installed. This needs to be modified for your own use case.
108 |
109 |
110 | ## Dashboard
111 |
112 | [](#)
113 |
114 | I added a sample Grafana dashboard.
115 |
116 | It comes without warranty.
117 | You will have to customize it.
118 |
119 | * [grafana_edgerouter.json](grafana/grafana_edgerouter.json)
120 | * [grafana_edgerouter_fullscreen.png](grafana/grafana_edgerouter_fullscreen.png)
121 |
--------------------------------------------------------------------------------
/.github/workflows/release.yml:
--------------------------------------------------------------------------------
1 | name: Release
2 |
3 | on:
4 | push:
5 | tags:
6 | - '**'
7 |
8 | env:
9 | VERSION_UPSTREAM: 1.36.1
10 | VERSION_BUILD: 1
11 |
12 | jobs:
13 | Variables:
14 | runs-on: ubuntu-latest
15 | outputs:
16 | version: ${{ env.VERSION_UPSTREAM }}
17 | build: ${{ env.VERSION_BUILD }}
18 | steps:
19 | - run: echo "Expose env vars"
20 |
21 | ShellCheck:
22 | uses: ./.github/workflows/shellcheck.yml
23 | flavor-influxdb:
24 | needs:
25 | - Variables
26 | - ShellCheck
27 | uses: ./.github/workflows/build.yml
28 | with:
29 | flavor: influxdb
30 | version: ${{ needs.Variables.outputs.version }}
31 | build: ${{ needs.Variables.outputs.build }}
32 | inputs: inputs.bond,inputs.cpu,inputs.disk,inputs.diskio,inputs.dns_query,inputs.ethtool,inputs.exec,inputs.http_response,inputs.internal,inputs.internet_speed,inputs.iptables,inputs.mem,inputs.net,inputs.netstat,inputs.net_response,inputs.ping,inputs.processes,inputs.snmp,inputs.snmp_legacy,inputs.snmp_trap,inputs.system
33 | outputs: outputs.influxdb,outputs.influxdb_v2
34 | parsers: parsers.influx
35 | processors:
36 | serializers:
37 | flavor-prometheus:
38 | needs:
39 | - Variables
40 | - ShellCheck
41 | uses: ./.github/workflows/build.yml
42 | with:
43 | flavor: prometheus
44 | version: ${{ needs.Variables.outputs.version }}
45 | build: ${{ needs.Variables.outputs.build }}
46 | inputs: inputs.bond,inputs.cpu,inputs.disk,inputs.diskio,inputs.dns_query,inputs.ethtool,inputs.exec,inputs.http_response,inputs.internal,inputs.internet_speed,inputs.iptables,inputs.mem,inputs.net,inputs.netstat,inputs.net_response,inputs.ping,inputs.processes,inputs.snmp,inputs.snmp_legacy,inputs.snmp_trap,inputs.system
47 | outputs: outputs.prometheus_client
48 | parsers: parsers.influx
49 | processors:
50 | serializers:
51 | flavor-prometheus-loki:
52 | needs:
53 | - Variables
54 | - ShellCheck
55 | uses: ./.github/workflows/build.yml
56 | with:
57 | flavor: prometheus+loki
58 | version: ${{ needs.Variables.outputs.version }}
59 | build: ${{ needs.Variables.outputs.build }}
60 | inputs: inputs.bond,inputs.cpu,inputs.disk,inputs.diskio,inputs.dns_query,inputs.ethtool,inputs.exec,inputs.http_response,inputs.internal,inputs.internet_speed,inputs.iptables,inputs.mem,inputs.net,inputs.netstat,inputs.net_response,inputs.ping,inputs.processes,inputs.snmp,inputs.snmp_legacy,inputs.snmp_trap,inputs.system
61 | outputs: outputs.prometheus_client,outputs.loki
62 | parsers: parsers.influx
63 | processors:
64 | serializers:
65 | flavor-splunk:
66 | needs:
67 | - Variables
68 | - ShellCheck
69 | uses: ./.github/workflows/build.yml
70 | with:
71 | flavor: splunk
72 | version: ${{ needs.Variables.outputs.version }}
73 | build: ${{ needs.Variables.outputs.build }}
74 | inputs: inputs.bond,inputs.cpu,inputs.disk,inputs.diskio,inputs.dns_query,inputs.ethtool,inputs.exec,inputs.http_response,inputs.internal,inputs.internet_speed,inputs.iptables,inputs.mem,inputs.net,inputs.netstat,inputs.net_response,inputs.ping,inputs.processes,inputs.snmp,inputs.snmp_legacy,inputs.snmp_trap,inputs.system
75 | outputs: outputs.http
76 | parsers: parsers.influx
77 | processors: processors.rename
78 | serializers: serializers.splunkmetric
79 | Release:
80 | needs:
81 | - flavor-influxdb
82 | - flavor-prometheus
83 | - flavor-prometheus-loki
84 | - flavor-splunk
85 | runs-on: ubuntu-latest
86 | steps:
87 | - name: Draft
88 | uses: actions/create-release@v1
89 | id: draft
90 | env:
91 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
92 | with:
93 | tag_name: ${{ github.ref }}
94 | release_name: ${{ github.ref }}
95 | draft: true
96 | prerelease: false
97 | - name: Download
98 | uses: actions/download-artifact@v5
99 | with:
100 | name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+influxdb_mips.deb
101 | path: ./
102 | - name: Download
103 | uses: actions/download-artifact@v5
104 | with:
105 | name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+influxdb_mipsel.deb
106 | path: ./
107 | - name: Download
108 | uses: actions/download-artifact@v5
109 | with:
110 | name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+prometheus_mips.deb
111 | path: ./
112 | - name: Download
113 | uses: actions/download-artifact@v5
114 | with:
115 | name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+prometheus_mipsel.deb
116 | path: ./
117 | - name: Download
118 | uses: actions/download-artifact@v5
119 | with:
120 | name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+prometheus+loki_mips.deb
121 | path: ./
122 | - name: Download
123 | uses: actions/download-artifact@v5
124 | with:
125 | name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+prometheus+loki_mipsel.deb
126 | path: ./
127 | - name: Download
128 | uses: actions/download-artifact@v5
129 | with:
130 | name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+splunk_mips.deb
131 | path: ./
132 | - name: Download
133 | uses: actions/download-artifact@v5
134 | with:
135 | name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+splunk_mipsel.deb
136 | path: ./
137 | - name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+influxdb_mips.deb
138 | uses: actions/upload-release-asset@v1
139 | env:
140 | GITHUB_TOKEN: ${{ github.token }}
141 | with:
142 | upload_url: ${{ steps.draft.outputs.upload_url }}
143 | asset_path: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+influxdb_mips.deb
144 | asset_name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+influxdb_mips.deb
145 | asset_content_type: application/vnd.debian.binary-package
146 | - name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+influxdb_mipsel.deb
147 | uses: actions/upload-release-asset@v1
148 | env:
149 | GITHUB_TOKEN: ${{ github.token }}
150 | with:
151 | upload_url: ${{ steps.draft.outputs.upload_url }}
152 | asset_path: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+influxdb_mipsel.deb
153 | asset_name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+influxdb_mipsel.deb
154 | asset_content_type: application/vnd.debian.binary-package
155 | - name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+prometheus_mips.deb
156 | uses: actions/upload-release-asset@v1
157 | env:
158 | GITHUB_TOKEN: ${{ github.token }}
159 | with:
160 | upload_url: ${{ steps.draft.outputs.upload_url }}
161 | asset_path: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+prometheus_mips.deb
162 | asset_name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+prometheus_mips.deb
163 | asset_content_type: application/vnd.debian.binary-package
164 | - name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+prometheus_mipsel.deb
165 | uses: actions/upload-release-asset@v1
166 | env:
167 | GITHUB_TOKEN: ${{ github.token }}
168 | with:
169 | upload_url: ${{ steps.draft.outputs.upload_url }}
170 | asset_path: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+prometheus_mipsel.deb
171 | asset_name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+prometheus_mipsel.deb
172 | asset_content_type: application/vnd.debian.binary-package
173 | - name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+prometheus+loki_mips.deb
174 | uses: actions/upload-release-asset@v1
175 | env:
176 | GITHUB_TOKEN: ${{ github.token }}
177 | with:
178 | upload_url: ${{ steps.draft.outputs.upload_url }}
179 | asset_path: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+prometheus+loki_mips.deb
180 | asset_name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+prometheus+loki_mips.deb
181 | asset_content_type: application/vnd.debian.binary-package
182 | - name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+prometheus+loki_mipsel.deb
183 | uses: actions/upload-release-asset@v1
184 | env:
185 | GITHUB_TOKEN: ${{ github.token }}
186 | with:
187 | upload_url: ${{ steps.draft.outputs.upload_url }}
188 | asset_path: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+prometheus+loki_mipsel.deb
189 | asset_name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+prometheus+loki_mipsel.deb
190 | asset_content_type: application/vnd.debian.binary-package
191 | - name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+splunk_mips.deb
192 | uses: actions/upload-release-asset@v1
193 | env:
194 | GITHUB_TOKEN: ${{ github.token }}
195 | with:
196 | upload_url: ${{ steps.draft.outputs.upload_url }}
197 | asset_path: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+splunk_mips.deb
198 | asset_name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+splunk_mips.deb
199 | asset_content_type: application/vnd.debian.binary-package
200 | - name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+splunk_mipsel.deb
201 | uses: actions/upload-release-asset@v1
202 | env:
203 | GITHUB_TOKEN: ${{ github.token }}
204 | with:
205 | upload_url: ${{ steps.draft.outputs.upload_url }}
206 | asset_path: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+splunk_mipsel.deb
207 | asset_name: telegraf_${{ env.VERSION_UPSTREAM }}-${{ env.VERSION_BUILD }}+splunk_mipsel.deb
208 | asset_content_type: application/vnd.debian.binary-package
209 |
--------------------------------------------------------------------------------
/.github/workflows/build.yml:
--------------------------------------------------------------------------------
1 | name: Build
2 |
3 | on:
4 | workflow_call:
5 | inputs:
6 | flavor:
7 | required: true
8 | type: string
9 | version:
10 | required: true
11 | type: string
12 | build:
13 | required: true
14 | type: string
15 | inputs:
16 | required: true
17 | type: string
18 | outputs:
19 | required: true
20 | type: string
21 | parsers:
22 | required: false
23 | type: string
24 | processors:
25 | required: false
26 | type: string
27 | serializers:
28 | required: false
29 | type: string
30 |
31 | jobs:
32 | mips:
33 | runs-on: ubuntu-latest
34 | steps:
35 | - name: Golang
36 | uses: actions/setup-go@v6
37 | with:
38 | cache: false
39 | go-version: "1.25"
40 | - name: Checkout
41 | uses: actions/checkout@v5
42 | with:
43 | path: telegraf-edgeos
44 | - name: Checkout
45 | uses: actions/checkout@v5
46 | with:
47 | path: telegraf
48 | repository: influxdb/telegraf
49 | ref: v${{ inputs.version }}
50 | - name: Build
51 | run: |
52 | cd telegraf
53 | CGO_ENABLED=0 \
54 | GOOS=linux GOARCH=mips \
55 | go build \
56 | -ldflags "-w -s -X github.com/influxdata/telegraf/internal.Version=${{ inputs.version }} -X github.com/influxdata/telegraf/internal.Branch=$(git rev-parse --abbrev-ref HEAD) -X github.com/influxdata/telegraf/internal.Commit=$(git rev-parse --short=8 HEAD)" \
57 | -tags "custom,${{ inputs.inputs }},${{ inputs.outputs }},${{ inputs.parsers }},${{ inputs.processors }},${{ inputs.serializers }}" \
58 | ./cmd/telegraf
59 | - name: sha256sum
60 | run: sha256sum telegraf/telegraf
61 | - name: Filesize
62 | run: du -h telegraf/telegraf
63 | - name: Packaging
64 | run: |
65 | mkdir -p telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/DEBIAN
66 | mkdir -p telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/usr/bin
67 | mkdir -p telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/etc/default
68 | mkdir -p telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/etc/telegraf/telegraf.d
69 | mkdir -p telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/lib/systemd/system
70 | mkdir -p telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/etc/sudoers.d/
71 | mkdir -p telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/usr/lib/telegraf
72 | touch telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/etc/default/telegraf
73 | cp telegraf-edgeos/configs/telegraf.conf telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/etc/telegraf/telegraf.conf
74 | cp telegraf-edgeos/configs/telegraf.service telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/lib//systemd/system/telegraf.service
75 | cp telegraf-edgeos/configs/99telegraf telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/etc/sudoers.d/99telegraf
76 | cp telegraf/telegraf telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/usr/bin/telegraf
77 | cp -r telegraf-edgeos/plugins/* telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/usr/lib/telegraf/
78 | cp -r telegraf-edgeos/packaging/* telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/DEBIAN
79 | chmod 0755 telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/DEBIAN/preinst
80 | chmod 0755 telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/DEBIAN/postinst
81 | chmod 0755 telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/DEBIAN/prerm
82 | chmod 0755 telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/DEBIAN/postrm
83 | sed -i 's/#VERSION/${{ inputs.version }}-${{ inputs.build }}/' telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/DEBIAN/control
84 | sed -i 's/#ARCH/mips/' telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/DEBIAN/control
85 | sed -i "s/#SIZE/$(echo $(du -sk --exclude=./telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/DEBIAN telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips | awk '{{ print $1 }}'))/" telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips/DEBIAN/control
86 | cd telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips && md5sum $(find * -type f -not -path 'DEBIAN/*') > DEBIAN/md5sums && cd ..
87 | dpkg-deb --build --root-owner-group -Z gzip telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips
88 | dpkg-deb --info telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips.deb
89 | - name: Upload
90 | uses: actions/upload-artifact@v4
91 | with:
92 | name: telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips.deb
93 | path: telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mips.deb
94 | mipsel:
95 | runs-on: ubuntu-latest
96 | steps:
97 | - name: Golang
98 | uses: actions/setup-go@v6
99 | with:
100 | cache: false
101 | go-version: "1.25"
102 | - name: Checkout
103 | uses: actions/checkout@v5
104 | with:
105 | path: telegraf-edgeos
106 | - name: Checkout
107 | uses: actions/checkout@v5
108 | with:
109 | path: telegraf
110 | repository: influxdb/telegraf
111 | ref: v${{ inputs.version }}
112 | - name: Build
113 | run: |
114 | cd telegraf
115 | CGO_ENABLED=0 \
116 | GOOS=linux GOARCH=mipsle \
117 | go build \
118 | -ldflags "-w -s -X github.com/influxdata/telegraf/internal.Version=${{ inputs.version }} -X github.com/influxdata/telegraf/internal.Branch=$(git rev-parse --abbrev-ref HEAD) -X github.com/influxdata/telegraf/internal.Commit=$(git rev-parse --short=8 HEAD)" \
119 | -tags "custom,${{ inputs.inputs }},${{ inputs.outputs }},${{ inputs.parsers }},${{ inputs.processors }},${{ inputs.serializers }}" \
120 | ./cmd/telegraf
121 | - name: sha256sum
122 | run: sha256sum telegraf/telegraf
123 | - name: Filesize
124 | run: du -h telegraf/telegraf
125 | - name: Packaging
126 | run: |
127 | mkdir -p telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/DEBIAN
128 | mkdir -p telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/usr/bin
129 | mkdir -p telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/etc/default
130 | mkdir -p telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/etc/telegraf/telegraf.d
131 | mkdir -p telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/lib/systemd/system
132 | mkdir -p telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/etc/sudoers.d/
133 | mkdir -p telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/usr/lib/telegraf
134 | touch telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/etc/default/telegraf
135 | cp telegraf-edgeos/configs/telegraf.conf telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/etc/telegraf/telegraf.conf
136 | cp telegraf-edgeos/configs/telegraf.service telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/lib//systemd/system/telegraf.service
137 | cp telegraf-edgeos/configs/99telegraf telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/etc/sudoers.d/99telegraf
138 | cp telegraf/telegraf telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/usr/bin/telegraf
139 | cp -r telegraf-edgeos/plugins/* telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/usr/lib/telegraf/
140 | cp -r telegraf-edgeos/packaging/* telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/DEBIAN
141 | chmod 0755 telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/DEBIAN/preinst
142 | chmod 0755 telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/DEBIAN/postinst
143 | chmod 0755 telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/DEBIAN/prerm
144 | chmod 0755 telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/DEBIAN/postrm
145 | sed -i 's/#VERSION/${{ inputs.version }}-${{ inputs.build }}/' telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/DEBIAN/control
146 | sed -i 's/#ARCH/mipsel/' telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/DEBIAN/control
147 | sed -i "s/#SIZE/$(echo $(du -sk --exclude=./telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/DEBIAN telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel | awk '{{ print $1 }}'))/" telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel/DEBIAN/control
148 | cd telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel && md5sum $(find * -type f -not -path 'DEBIAN/*') > DEBIAN/md5sums && cd ..
149 | dpkg-deb --build --root-owner-group -Z gzip telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel
150 | dpkg-deb --info telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel.deb
151 | - name: Upload
152 | uses: actions/upload-artifact@v4
153 | with:
154 | name: telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel.deb
155 | path: telegraf_${{ inputs.version }}-${{ inputs.build }}+${{ inputs.flavor }}_mipsel.deb
156 |
--------------------------------------------------------------------------------
/grafana/grafana_edgerouter.json:
--------------------------------------------------------------------------------
1 | {
2 | "annotations": {
3 | "list": [
4 | {
5 | "builtIn": 1,
6 | "datasource": "-- Grafana --",
7 | "enable": true,
8 | "hide": true,
9 | "iconColor": "rgba(0, 211, 255, 1)",
10 | "name": "Annotations & Alerts",
11 | "target": {
12 | "limit": 100,
13 | "matchAny": false,
14 | "tags": [],
15 | "type": "dashboard"
16 | },
17 | "type": "dashboard"
18 | }
19 | ]
20 | },
21 | "editable": true,
22 | "fiscalYearStartMonth": 0,
23 | "graphTooltip": 1,
24 | "id": 44,
25 | "links": [],
26 | "liveNow": false,
27 | "panels": [
28 | {
29 | "datasource": {
30 | "type": "influxdb",
31 | "uid": "P12F67F8539C46701"
32 | },
33 | "fieldConfig": {
34 | "defaults": {
35 | "displayName": "Availability",
36 | "mappings": [
37 | {
38 | "options": {
39 | "0": {
40 | "index": 1,
41 | "text": "Up!"
42 | }
43 | },
44 | "type": "value"
45 | },
46 | {
47 | "options": {
48 | "from": 1,
49 | "result": {
50 | "index": 0,
51 | "text": "Down!"
52 | },
53 | "to": 2
54 | },
55 | "type": "range"
56 | }
57 | ],
58 | "noValue": "?",
59 | "thresholds": {
60 | "mode": "absolute",
61 | "steps": [
62 | {
63 | "color": "rgb(13, 99, 0)",
64 | "value": null
65 | },
66 | {
67 | "color": "rgb(158, 12, 12)",
68 | "value": 1
69 | }
70 | ]
71 | },
72 | "unit": "none"
73 | },
74 | "overrides": []
75 | },
76 | "gridPos": {
77 | "h": 3,
78 | "w": 3,
79 | "x": 0,
80 | "y": 0
81 | },
82 | "id": 41,
83 | "options": {
84 | "colorMode": "background",
85 | "graphMode": "none",
86 | "justifyMode": "auto",
87 | "orientation": "auto",
88 | "reduceOptions": {
89 | "calcs": [
90 | "lastNotNull"
91 | ],
92 | "fields": "",
93 | "values": false
94 | },
95 | "text": {},
96 | "textMode": "value_and_name"
97 | },
98 | "pluginVersion": "8.3.6",
99 | "targets": [
100 | {
101 | "datasource": {
102 | "type": "influxdb",
103 | "uid": "P12F67F8539C46701"
104 | },
105 | "groupBy": [],
106 | "measurement": "ping",
107 | "orderByTime": "ASC",
108 | "policy": "default",
109 | "query": "SELECT last(\"result_code\") + last(\"http_response_code\") as \"result\" FROM \"http_response\" WHERE (\"server\" = 'https://grafana.uptimelabs.com/login') AND $timeFilter GROUP BY time($interval) fill(null)",
110 | "rawQuery": false,
111 | "refId": "A",
112 | "resultFormat": "time_series",
113 | "select": [
114 | [
115 | {
116 | "params": [
117 | "result_code"
118 | ],
119 | "type": "field"
120 | },
121 | {
122 | "params": [],
123 | "type": "last"
124 | }
125 | ]
126 | ],
127 | "tags": [
128 | {
129 | "key": "url",
130 | "operator": "=",
131 | "value": "edgerouter.example.com"
132 | }
133 | ]
134 | }
135 | ],
136 | "transparent": true,
137 | "type": "stat"
138 | },
139 | {
140 | "datasource": {
141 | "type": "influxdb",
142 | "uid": "P12F67F8539C46701"
143 | },
144 | "fieldConfig": {
145 | "defaults": {
146 | "decimals": 2,
147 | "displayName": "Uptime",
148 | "mappings": [
149 | {
150 | "options": {
151 | "from": 99.995,
152 | "result": {
153 | "color": "#0d6300",
154 | "index": 0,
155 | "text": "100%"
156 | },
157 | "to": 100
158 | },
159 | "type": "range"
160 | }
161 | ],
162 | "max": 100,
163 | "min": 0,
164 | "noValue": "?",
165 | "thresholds": {
166 | "mode": "absolute",
167 | "steps": [
168 | {
169 | "color": "rgb(13, 99, 0)",
170 | "value": null
171 | },
172 | {
173 | "color": "rgb(158, 12, 12)",
174 | "value": 0
175 | },
176 | {
177 | "color": "rgb(212, 158, 0)",
178 | "value": 90
179 | },
180 | {
181 | "color": "rgb(13, 99, 0)",
182 | "value": 95
183 | }
184 | ]
185 | },
186 | "unit": "percent"
187 | },
188 | "overrides": []
189 | },
190 | "gridPos": {
191 | "h": 3,
192 | "w": 3,
193 | "x": 3,
194 | "y": 0
195 | },
196 | "id": 58,
197 | "interval": "",
198 | "options": {
199 | "colorMode": "background",
200 | "graphMode": "none",
201 | "justifyMode": "auto",
202 | "orientation": "auto",
203 | "reduceOptions": {
204 | "calcs": [
205 | "lastNotNull"
206 | ],
207 | "fields": "",
208 | "values": false
209 | },
210 | "text": {},
211 | "textMode": "value_and_name"
212 | },
213 | "pluginVersion": "8.3.6",
214 | "targets": [
215 | {
216 | "alias": "",
217 | "datasource": {
218 | "type": "influxdb",
219 | "uid": "P12F67F8539C46701"
220 | },
221 | "groupBy": [
222 | {
223 | "params": [
224 | "$__interval"
225 | ],
226 | "type": "time"
227 | },
228 | {
229 | "params": [
230 | "null"
231 | ],
232 | "type": "fill"
233 | }
234 | ],
235 | "orderByTime": "ASC",
236 | "policy": "default",
237 | "query": "SELECT (sum(\"up\") / sum(\"all\")) * 100 AS \"uptime\" FROM (\nSELECT \"up\", \"all\" FROM (\nSELECT count(\"result_code\") AS \"all\" FROM \"ping\" WHERE (\"url\" = 'edgerouter.example.com') AND $timeFilter GROUP BY \"url\"), (\nSELECT count(\"result_code\") AS \"up\" FROM \"ping\" WHERE (\"url\" = 'edgerouter.example.com') AND \"result_code\" = 0 AND $timeFilter GROUP BY \"url\"\n)\n)\n",
238 | "rawQuery": true,
239 | "refId": "A",
240 | "resultFormat": "time_series",
241 | "select": [
242 | [
243 | {
244 | "params": [
245 | "value"
246 | ],
247 | "type": "field"
248 | },
249 | {
250 | "params": [],
251 | "type": "mean"
252 | }
253 | ]
254 | ],
255 | "tags": []
256 | }
257 | ],
258 | "transformations": [],
259 | "transparent": true,
260 | "type": "stat"
261 | },
262 | {
263 | "datasource": {
264 | "type": "influxdb",
265 | "uid": "P12F67F8539C46701"
266 | },
267 | "fieldConfig": {
268 | "defaults": {
269 | "displayName": "Upstream",
270 | "mappings": [],
271 | "noValue": "?",
272 | "thresholds": {
273 | "mode": "absolute",
274 | "steps": [
275 | {
276 | "color": "rgb(13, 99, 0)",
277 | "value": null
278 | },
279 | {
280 | "color": "rgb(212, 158, 0)",
281 | "value": 50
282 | },
283 | {
284 | "color": "rgb(158, 12, 12)",
285 | "value": 100
286 | }
287 | ]
288 | },
289 | "unit": "ms"
290 | },
291 | "overrides": []
292 | },
293 | "gridPos": {
294 | "h": 3,
295 | "w": 3,
296 | "x": 6,
297 | "y": 0
298 | },
299 | "id": 35,
300 | "options": {
301 | "colorMode": "background",
302 | "graphMode": "none",
303 | "justifyMode": "auto",
304 | "orientation": "auto",
305 | "reduceOptions": {
306 | "calcs": [
307 | "lastNotNull"
308 | ],
309 | "fields": "",
310 | "values": false
311 | },
312 | "text": {},
313 | "textMode": "value_and_name"
314 | },
315 | "pluginVersion": "8.3.6",
316 | "targets": [
317 | {
318 | "alias": "",
319 | "datasource": {
320 | "type": "influxdb",
321 | "uid": "P12F67F8539C46701"
322 | },
323 | "groupBy": [],
324 | "measurement": "ping",
325 | "orderByTime": "ASC",
326 | "policy": "default",
327 | "query": "SELECT mean(\"response_time\") FROM \"http_response\" WHERE (\"server\" = 'https://network-operations.center/login') AND $timeFilter GROUP BY time($__interval) fill(null)",
328 | "rawQuery": false,
329 | "refId": "A",
330 | "resultFormat": "time_series",
331 | "select": [
332 | [
333 | {
334 | "params": [
335 | "average_response_ms"
336 | ],
337 | "type": "field"
338 | },
339 | {
340 | "params": [],
341 | "type": "last"
342 | }
343 | ]
344 | ],
345 | "tags": [
346 | {
347 | "key": "host",
348 | "operator": "=",
349 | "value": "edgerouter"
350 | },
351 | {
352 | "condition": "AND",
353 | "key": "url",
354 | "operator": "=",
355 | "value": "1.1.1.1"
356 | }
357 | ]
358 | }
359 | ],
360 | "transparent": true,
361 | "type": "stat"
362 | },
363 | {
364 | "datasource": {
365 | "type": "influxdb",
366 | "uid": "PBB990B61CE1B21F8"
367 | },
368 | "fieldConfig": {
369 | "defaults": {
370 | "decimals": 2,
371 | "displayName": "Power Consumption",
372 | "mappings": [],
373 | "noValue": "?",
374 | "thresholds": {
375 | "mode": "absolute",
376 | "steps": [
377 | {
378 | "color": "rgb(212, 158, 0)",
379 | "value": null
380 | },
381 | {
382 | "color": "#1f71ab",
383 | "value": 1
384 | }
385 | ]
386 | },
387 | "unit": "watt"
388 | },
389 | "overrides": []
390 | },
391 | "gridPos": {
392 | "h": 3,
393 | "w": 3,
394 | "x": 9,
395 | "y": 0
396 | },
397 | "id": 14,
398 | "maxDataPoints": 100,
399 | "options": {
400 | "colorMode": "background",
401 | "graphMode": "area",
402 | "justifyMode": "auto",
403 | "orientation": "auto",
404 | "reduceOptions": {
405 | "calcs": [
406 | "lastNotNull"
407 | ],
408 | "fields": "",
409 | "values": false
410 | },
411 | "text": {},
412 | "textMode": "auto"
413 | },
414 | "pluginVersion": "8.3.6",
415 | "targets": [
416 | {
417 | "datasource": {
418 | "type": "influxdb",
419 | "uid": "PBB990B61CE1B21F8"
420 | },
421 | "groupBy": [
422 | {
423 | "params": [
424 | "$interval"
425 | ],
426 | "type": "time"
427 | },
428 | {
429 | "params": [
430 | "null"
431 | ],
432 | "type": "fill"
433 | }
434 | ],
435 | "measurement": "edgeos_power",
436 | "orderByTime": "ASC",
437 | "policy": "default",
438 | "query": "SELECT sum(\"numSeries\") FROM ( SELECT last(\"numSeries\") AS numSeries FROM \"database\" GROUP BY \"database\")",
439 | "rawQuery": false,
440 | "refId": "A",
441 | "resultFormat": "time_series",
442 | "select": [
443 | [
444 | {
445 | "params": [
446 | "consumption"
447 | ],
448 | "type": "field"
449 | },
450 | {
451 | "params": [],
452 | "type": "mean"
453 | }
454 | ]
455 | ],
456 | "tags": [
457 | {
458 | "key": "host",
459 | "operator": "=",
460 | "value": "edgerouter"
461 | }
462 | ]
463 | }
464 | ],
465 | "transparent": true,
466 | "type": "stat"
467 | },
468 | {
469 | "datasource": {
470 | "type": "influxdb",
471 | "uid": "PBB990B61CE1B21F8"
472 | },
473 | "fieldConfig": {
474 | "defaults": {
475 | "displayName": "CPU Temperature",
476 | "mappings": [],
477 | "noValue": "?",
478 | "thresholds": {
479 | "mode": "absolute",
480 | "steps": [
481 | {
482 | "color": "rgb(212, 158, 0)",
483 | "value": null
484 | },
485 | {
486 | "color": "#1f71ab",
487 | "value": 1
488 | }
489 | ]
490 | },
491 | "unit": "celsius"
492 | },
493 | "overrides": []
494 | },
495 | "gridPos": {
496 | "h": 3,
497 | "w": 3,
498 | "x": 12,
499 | "y": 0
500 | },
501 | "id": 43,
502 | "maxDataPoints": 100,
503 | "options": {
504 | "colorMode": "background",
505 | "graphMode": "area",
506 | "justifyMode": "auto",
507 | "orientation": "auto",
508 | "reduceOptions": {
509 | "calcs": [
510 | "lastNotNull"
511 | ],
512 | "fields": "",
513 | "values": false
514 | },
515 | "text": {},
516 | "textMode": "auto"
517 | },
518 | "pluginVersion": "8.3.6",
519 | "targets": [
520 | {
521 | "datasource": {
522 | "type": "influxdb",
523 | "uid": "PBB990B61CE1B21F8"
524 | },
525 | "groupBy": [
526 | {
527 | "params": [
528 | "$interval"
529 | ],
530 | "type": "time"
531 | },
532 | {
533 | "params": [
534 | "null"
535 | ],
536 | "type": "fill"
537 | }
538 | ],
539 | "measurement": "edgeos_temperature",
540 | "orderByTime": "ASC",
541 | "policy": "default",
542 | "query": "SELECT sum(\"numSeries\") FROM ( SELECT last(\"numSeries\") AS numSeries FROM \"database\" GROUP BY \"database\")",
543 | "rawQuery": false,
544 | "refId": "A",
545 | "resultFormat": "time_series",
546 | "select": [
547 | [
548 | {
549 | "params": [
550 | "temperature"
551 | ],
552 | "type": "field"
553 | },
554 | {
555 | "params": [],
556 | "type": "mean"
557 | }
558 | ]
559 | ],
560 | "tags": [
561 | {
562 | "key": "host",
563 | "operator": "=",
564 | "value": "edgerouter"
565 | },
566 | {
567 | "condition": "AND",
568 | "key": "sensor",
569 | "operator": "=",
570 | "value": "CPU"
571 | }
572 | ]
573 | }
574 | ],
575 | "transparent": true,
576 | "type": "stat"
577 | },
578 | {
579 | "datasource": {
580 | "type": "influxdb",
581 | "uid": "PBB990B61CE1B21F8"
582 | },
583 | "fieldConfig": {
584 | "defaults": {
585 | "color": {
586 | "mode": "palette-classic",
587 | "seriesBy": "last"
588 | },
589 | "custom": {
590 | "axisLabel": "",
591 | "axisPlacement": "auto",
592 | "barAlignment": 0,
593 | "drawStyle": "line",
594 | "fillOpacity": 25,
595 | "gradientMode": "hue",
596 | "hideFrom": {
597 | "legend": false,
598 | "tooltip": false,
599 | "viz": false
600 | },
601 | "lineInterpolation": "linear",
602 | "lineWidth": 1,
603 | "pointSize": 5,
604 | "scaleDistribution": {
605 | "type": "linear"
606 | },
607 | "showPoints": "never",
608 | "spanNulls": true,
609 | "stacking": {
610 | "group": "A",
611 | "mode": "none"
612 | },
613 | "thresholdsStyle": {
614 | "mode": "off"
615 | }
616 | },
617 | "mappings": [],
618 | "max": 2000000,
619 | "min": -2000000,
620 | "thresholds": {
621 | "mode": "absolute",
622 | "steps": [
623 | {
624 | "color": "green",
625 | "value": null
626 | }
627 | ]
628 | },
629 | "unit": "bps"
630 | },
631 | "overrides": [
632 | {
633 | "matcher": {
634 | "id": "byName",
635 | "options": "RX"
636 | },
637 | "properties": [
638 | {
639 | "id": "color",
640 | "value": {
641 | "fixedColor": "#d60000",
642 | "mode": "fixed"
643 | }
644 | }
645 | ]
646 | },
647 | {
648 | "matcher": {
649 | "id": "byName",
650 | "options": "TX"
651 | },
652 | "properties": [
653 | {
654 | "id": "color",
655 | "value": {
656 | "fixedColor": "#044fbf",
657 | "mode": "fixed"
658 | }
659 | }
660 | ]
661 | },
662 | {
663 | "matcher": {
664 | "id": "byType",
665 | "options": "number"
666 | },
667 | "properties": [
668 | {
669 | "id": "custom.axisLabel",
670 | "value": "eth0"
671 | }
672 | ]
673 | }
674 | ]
675 | },
676 | "gridPos": {
677 | "h": 7,
678 | "w": 5,
679 | "x": 0,
680 | "y": 3
681 | },
682 | "id": 44,
683 | "options": {
684 | "legend": {
685 | "calcs": [
686 | "last"
687 | ],
688 | "displayMode": "list",
689 | "placement": "bottom"
690 | },
691 | "tooltip": {
692 | "mode": "multi"
693 | }
694 | },
695 | "targets": [
696 | {
697 | "alias": "$col",
698 | "datasource": {
699 | "type": "influxdb",
700 | "uid": "PBB990B61CE1B21F8"
701 | },
702 | "groupBy": [
703 | {
704 | "params": [
705 | "$__interval"
706 | ],
707 | "type": "time"
708 | },
709 | {
710 | "params": [
711 | "null"
712 | ],
713 | "type": "fill"
714 | }
715 | ],
716 | "hide": false,
717 | "measurement": "net",
718 | "orderByTime": "ASC",
719 | "policy": "default",
720 | "query": "SELECT non_negative_difference(mean(\"bytes_sent\")) * 8 / 60 FROM \"net\" WHERE (\"host\" = 'edgerouter' AND \"interface\" = 'eth0') AND $timeFilter GROUP BY time($__interval), \"interface\" fill(null)",
721 | "rawQuery": false,
722 | "refId": "A",
723 | "resultFormat": "time_series",
724 | "select": [
725 | [
726 | {
727 | "params": [
728 | "bytes_recv"
729 | ],
730 | "type": "field"
731 | },
732 | {
733 | "params": [],
734 | "type": "last"
735 | },
736 | {
737 | "params": [
738 | "1s"
739 | ],
740 | "type": "non_negative_derivative"
741 | },
742 | {
743 | "params": [
744 | "* 8"
745 | ],
746 | "type": "math"
747 | },
748 | {
749 | "params": [
750 | "RX"
751 | ],
752 | "type": "alias"
753 | }
754 | ],
755 | [
756 | {
757 | "params": [
758 | "bytes_sent"
759 | ],
760 | "type": "field"
761 | },
762 | {
763 | "params": [],
764 | "type": "last"
765 | },
766 | {
767 | "params": [
768 | "1s"
769 | ],
770 | "type": "non_negative_derivative"
771 | },
772 | {
773 | "params": [
774 | "* 8 * -1"
775 | ],
776 | "type": "math"
777 | },
778 | {
779 | "params": [
780 | "TX"
781 | ],
782 | "type": "alias"
783 | }
784 | ]
785 | ],
786 | "tags": [
787 | {
788 | "key": "host",
789 | "operator": "=",
790 | "value": "edgerouter"
791 | },
792 | {
793 | "condition": "AND",
794 | "key": "interface",
795 | "operator": "=",
796 | "value": "eth0"
797 | }
798 | ]
799 | }
800 | ],
801 | "transformations": [],
802 | "type": "timeseries"
803 | },
804 | {
805 | "datasource": {
806 | "type": "influxdb",
807 | "uid": "PBB990B61CE1B21F8"
808 | },
809 | "fieldConfig": {
810 | "defaults": {
811 | "color": {
812 | "mode": "palette-classic",
813 | "seriesBy": "last"
814 | },
815 | "custom": {
816 | "axisLabel": "",
817 | "axisPlacement": "auto",
818 | "barAlignment": 0,
819 | "drawStyle": "line",
820 | "fillOpacity": 25,
821 | "gradientMode": "hue",
822 | "hideFrom": {
823 | "legend": false,
824 | "tooltip": false,
825 | "viz": false
826 | },
827 | "lineInterpolation": "linear",
828 | "lineWidth": 1,
829 | "pointSize": 5,
830 | "scaleDistribution": {
831 | "type": "linear"
832 | },
833 | "showPoints": "never",
834 | "spanNulls": true,
835 | "stacking": {
836 | "group": "A",
837 | "mode": "none"
838 | },
839 | "thresholdsStyle": {
840 | "mode": "off"
841 | }
842 | },
843 | "mappings": [],
844 | "max": 2000000,
845 | "min": -2000000,
846 | "thresholds": {
847 | "mode": "absolute",
848 | "steps": [
849 | {
850 | "color": "green",
851 | "value": null
852 | }
853 | ]
854 | },
855 | "unit": "bps"
856 | },
857 | "overrides": [
858 | {
859 | "matcher": {
860 | "id": "byName",
861 | "options": "RX"
862 | },
863 | "properties": [
864 | {
865 | "id": "color",
866 | "value": {
867 | "fixedColor": "#01874d",
868 | "mode": "fixed"
869 | }
870 | }
871 | ]
872 | },
873 | {
874 | "matcher": {
875 | "id": "byName",
876 | "options": "TX"
877 | },
878 | "properties": [
879 | {
880 | "id": "color",
881 | "value": {
882 | "fixedColor": "#ffa400",
883 | "mode": "fixed"
884 | }
885 | }
886 | ]
887 | },
888 | {
889 | "matcher": {
890 | "id": "byType",
891 | "options": "number"
892 | },
893 | "properties": [
894 | {
895 | "id": "custom.axisLabel",
896 | "value": "eth1"
897 | }
898 | ]
899 | }
900 | ]
901 | },
902 | "gridPos": {
903 | "h": 7,
904 | "w": 5,
905 | "x": 5,
906 | "y": 3
907 | },
908 | "id": 59,
909 | "options": {
910 | "legend": {
911 | "calcs": [
912 | "last"
913 | ],
914 | "displayMode": "list",
915 | "placement": "bottom"
916 | },
917 | "tooltip": {
918 | "mode": "multi"
919 | }
920 | },
921 | "targets": [
922 | {
923 | "alias": "$col",
924 | "datasource": {
925 | "type": "influxdb",
926 | "uid": "PBB990B61CE1B21F8"
927 | },
928 | "groupBy": [
929 | {
930 | "params": [
931 | "$__interval"
932 | ],
933 | "type": "time"
934 | },
935 | {
936 | "params": [
937 | "null"
938 | ],
939 | "type": "fill"
940 | }
941 | ],
942 | "hide": false,
943 | "measurement": "net",
944 | "orderByTime": "ASC",
945 | "policy": "default",
946 | "query": "SELECT non_negative_difference(mean(\"bytes_sent\")) * 8 / 60 FROM \"net\" WHERE (\"host\" = 'edgerouter' AND \"interface\" = 'eth0') AND $timeFilter GROUP BY time($__interval), \"interface\" fill(null)",
947 | "rawQuery": false,
948 | "refId": "A",
949 | "resultFormat": "time_series",
950 | "select": [
951 | [
952 | {
953 | "params": [
954 | "bytes_recv"
955 | ],
956 | "type": "field"
957 | },
958 | {
959 | "params": [],
960 | "type": "last"
961 | },
962 | {
963 | "params": [
964 | "1s"
965 | ],
966 | "type": "non_negative_derivative"
967 | },
968 | {
969 | "params": [
970 | "* 8"
971 | ],
972 | "type": "math"
973 | },
974 | {
975 | "params": [
976 | "RX"
977 | ],
978 | "type": "alias"
979 | }
980 | ],
981 | [
982 | {
983 | "params": [
984 | "bytes_sent"
985 | ],
986 | "type": "field"
987 | },
988 | {
989 | "params": [],
990 | "type": "last"
991 | },
992 | {
993 | "params": [
994 | "1s"
995 | ],
996 | "type": "non_negative_derivative"
997 | },
998 | {
999 | "params": [
1000 | "* 8 * -1"
1001 | ],
1002 | "type": "math"
1003 | },
1004 | {
1005 | "params": [
1006 | "TX"
1007 | ],
1008 | "type": "alias"
1009 | }
1010 | ]
1011 | ],
1012 | "tags": [
1013 | {
1014 | "key": "host",
1015 | "operator": "=",
1016 | "value": "edgerouter"
1017 | },
1018 | {
1019 | "condition": "AND",
1020 | "key": "interface",
1021 | "operator": "=",
1022 | "value": "eth1"
1023 | }
1024 | ]
1025 | }
1026 | ],
1027 | "transformations": [],
1028 | "type": "timeseries"
1029 | },
1030 | {
1031 | "datasource": {
1032 | "type": "influxdb",
1033 | "uid": "PBB990B61CE1B21F8"
1034 | },
1035 | "fieldConfig": {
1036 | "defaults": {
1037 | "color": {
1038 | "mode": "palette-classic",
1039 | "seriesBy": "last"
1040 | },
1041 | "custom": {
1042 | "axisLabel": "",
1043 | "axisPlacement": "auto",
1044 | "barAlignment": 0,
1045 | "drawStyle": "line",
1046 | "fillOpacity": 25,
1047 | "gradientMode": "hue",
1048 | "hideFrom": {
1049 | "legend": false,
1050 | "tooltip": false,
1051 | "viz": false
1052 | },
1053 | "lineInterpolation": "linear",
1054 | "lineWidth": 1,
1055 | "pointSize": 5,
1056 | "scaleDistribution": {
1057 | "type": "linear"
1058 | },
1059 | "showPoints": "never",
1060 | "spanNulls": true,
1061 | "stacking": {
1062 | "group": "A",
1063 | "mode": "none"
1064 | },
1065 | "thresholdsStyle": {
1066 | "mode": "off"
1067 | }
1068 | },
1069 | "mappings": [],
1070 | "max": 2000000,
1071 | "min": -2000000,
1072 | "thresholds": {
1073 | "mode": "absolute",
1074 | "steps": [
1075 | {
1076 | "color": "green",
1077 | "value": null
1078 | }
1079 | ]
1080 | },
1081 | "unit": "bps"
1082 | },
1083 | "overrides": [
1084 | {
1085 | "matcher": {
1086 | "id": "byName",
1087 | "options": "RX"
1088 | },
1089 | "properties": [
1090 | {
1091 | "id": "color",
1092 | "value": {
1093 | "fixedColor": "#950088",
1094 | "mode": "fixed"
1095 | }
1096 | }
1097 | ]
1098 | },
1099 | {
1100 | "matcher": {
1101 | "id": "byName",
1102 | "options": "TX"
1103 | },
1104 | "properties": [
1105 | {
1106 | "id": "color",
1107 | "value": {
1108 | "fixedColor": "#00b5a6",
1109 | "mode": "fixed"
1110 | }
1111 | }
1112 | ]
1113 | },
1114 | {
1115 | "matcher": {
1116 | "id": "byType",
1117 | "options": "number"
1118 | },
1119 | "properties": [
1120 | {
1121 | "id": "custom.axisLabel",
1122 | "value": "eth5"
1123 | }
1124 | ]
1125 | }
1126 | ]
1127 | },
1128 | "gridPos": {
1129 | "h": 7,
1130 | "w": 5,
1131 | "x": 10,
1132 | "y": 3
1133 | },
1134 | "id": 60,
1135 | "options": {
1136 | "legend": {
1137 | "calcs": [
1138 | "last"
1139 | ],
1140 | "displayMode": "list",
1141 | "placement": "bottom"
1142 | },
1143 | "tooltip": {
1144 | "mode": "multi"
1145 | }
1146 | },
1147 | "targets": [
1148 | {
1149 | "alias": "$col",
1150 | "datasource": {
1151 | "type": "influxdb",
1152 | "uid": "PBB990B61CE1B21F8"
1153 | },
1154 | "groupBy": [
1155 | {
1156 | "params": [
1157 | "$__interval"
1158 | ],
1159 | "type": "time"
1160 | },
1161 | {
1162 | "params": [
1163 | "null"
1164 | ],
1165 | "type": "fill"
1166 | }
1167 | ],
1168 | "hide": false,
1169 | "measurement": "net",
1170 | "orderByTime": "ASC",
1171 | "policy": "default",
1172 | "query": "SELECT non_negative_difference(mean(\"bytes_sent\")) * 8 / 60 FROM \"net\" WHERE (\"host\" = 'edgerouter' AND \"interface\" = 'eth0') AND $timeFilter GROUP BY time($__interval), \"interface\" fill(null)",
1173 | "rawQuery": false,
1174 | "refId": "A",
1175 | "resultFormat": "time_series",
1176 | "select": [
1177 | [
1178 | {
1179 | "params": [
1180 | "bytes_recv"
1181 | ],
1182 | "type": "field"
1183 | },
1184 | {
1185 | "params": [],
1186 | "type": "last"
1187 | },
1188 | {
1189 | "params": [
1190 | "1s"
1191 | ],
1192 | "type": "non_negative_derivative"
1193 | },
1194 | {
1195 | "params": [
1196 | "* 8"
1197 | ],
1198 | "type": "math"
1199 | },
1200 | {
1201 | "params": [
1202 | "RX"
1203 | ],
1204 | "type": "alias"
1205 | }
1206 | ],
1207 | [
1208 | {
1209 | "params": [
1210 | "bytes_sent"
1211 | ],
1212 | "type": "field"
1213 | },
1214 | {
1215 | "params": [],
1216 | "type": "last"
1217 | },
1218 | {
1219 | "params": [
1220 | "1s"
1221 | ],
1222 | "type": "non_negative_derivative"
1223 | },
1224 | {
1225 | "params": [
1226 | "* 8 * -1"
1227 | ],
1228 | "type": "math"
1229 | },
1230 | {
1231 | "params": [
1232 | "TX"
1233 | ],
1234 | "type": "alias"
1235 | }
1236 | ]
1237 | ],
1238 | "tags": [
1239 | {
1240 | "key": "host",
1241 | "operator": "=",
1242 | "value": "edgerouter"
1243 | },
1244 | {
1245 | "condition": "AND",
1246 | "key": "interface",
1247 | "operator": "=",
1248 | "value": "eth5"
1249 | }
1250 | ]
1251 | }
1252 | ],
1253 | "transformations": [],
1254 | "type": "timeseries"
1255 | },
1256 | {
1257 | "datasource": {
1258 | "type": "influxdb",
1259 | "uid": "PBB990B61CE1B21F8"
1260 | },
1261 | "fieldConfig": {
1262 | "defaults": {
1263 | "color": {
1264 | "mode": "thresholds"
1265 | },
1266 | "decimals": 0,
1267 | "displayName": "CPU",
1268 | "mappings": [],
1269 | "max": 100,
1270 | "min": 0,
1271 | "thresholds": {
1272 | "mode": "absolute",
1273 | "steps": [
1274 | {
1275 | "color": "#0d6300",
1276 | "value": null
1277 | },
1278 | {
1279 | "color": "#ffad00",
1280 | "value": 75
1281 | },
1282 | {
1283 | "color": "#9e0c0c",
1284 | "value": 90
1285 | }
1286 | ]
1287 | },
1288 | "unit": "percent"
1289 | },
1290 | "overrides": []
1291 | },
1292 | "gridPos": {
1293 | "h": 4,
1294 | "w": 3,
1295 | "x": 15,
1296 | "y": 8
1297 | },
1298 | "id": 52,
1299 | "links": [],
1300 | "maxDataPoints": 100,
1301 | "options": {
1302 | "orientation": "vertical",
1303 | "reduceOptions": {
1304 | "calcs": [
1305 | "lastNotNull"
1306 | ],
1307 | "fields": "",
1308 | "values": false
1309 | },
1310 | "showThresholdLabels": false,
1311 | "showThresholdMarkers": true,
1312 | "text": {
1313 | "titleSize": 15,
1314 | "valueSize": 26
1315 | }
1316 | },
1317 | "pluginVersion": "8.3.6",
1318 | "targets": [
1319 | {
1320 | "datasource": {
1321 | "type": "influxdb",
1322 | "uid": "PBB990B61CE1B21F8"
1323 | },
1324 | "groupBy": [],
1325 | "measurement": "cpu",
1326 | "orderByTime": "ASC",
1327 | "policy": "default",
1328 | "query": "SELECT non_negative_derivative(last(\"metrics_gathered\"), 1s) FROM \"internal_gather\" WHERE (\"host\" =~ /^$host$/ AND \"input\" =~ /^$input$/) AND $timeFilter GROUP BY time($__interval) fill(null)",
1329 | "rawQuery": false,
1330 | "refId": "A",
1331 | "resultFormat": "time_series",
1332 | "select": [
1333 | [
1334 | {
1335 | "params": [
1336 | "usage_active"
1337 | ],
1338 | "type": "field"
1339 | },
1340 | {
1341 | "params": [],
1342 | "type": "last"
1343 | }
1344 | ]
1345 | ],
1346 | "tags": [
1347 | {
1348 | "key": "cpu",
1349 | "operator": "=",
1350 | "value": "cpu-total"
1351 | },
1352 | {
1353 | "condition": "AND",
1354 | "key": "host",
1355 | "operator": "=",
1356 | "value": "edgerouter"
1357 | }
1358 | ]
1359 | }
1360 | ],
1361 | "transparent": true,
1362 | "type": "gauge"
1363 | },
1364 | {
1365 | "datasource": {
1366 | "type": "influxdb",
1367 | "uid": "PBB990B61CE1B21F8"
1368 | },
1369 | "fieldConfig": {
1370 | "defaults": {
1371 | "color": {
1372 | "mode": "thresholds"
1373 | },
1374 | "decimals": 0,
1375 | "displayName": "Memory",
1376 | "mappings": [],
1377 | "max": 100,
1378 | "min": 0,
1379 | "thresholds": {
1380 | "mode": "absolute",
1381 | "steps": [
1382 | {
1383 | "color": "#0d6300",
1384 | "value": null
1385 | },
1386 | {
1387 | "color": "#ffad00",
1388 | "value": 75
1389 | },
1390 | {
1391 | "color": "#9e0c0c",
1392 | "value": 90
1393 | }
1394 | ]
1395 | },
1396 | "unit": "percent"
1397 | },
1398 | "overrides": []
1399 | },
1400 | "gridPos": {
1401 | "h": 4,
1402 | "w": 3,
1403 | "x": 18,
1404 | "y": 8
1405 | },
1406 | "id": 53,
1407 | "links": [],
1408 | "maxDataPoints": 100,
1409 | "options": {
1410 | "orientation": "vertical",
1411 | "reduceOptions": {
1412 | "calcs": [
1413 | "lastNotNull"
1414 | ],
1415 | "fields": "",
1416 | "values": false
1417 | },
1418 | "showThresholdLabels": false,
1419 | "showThresholdMarkers": true,
1420 | "text": {
1421 | "titleSize": 15,
1422 | "valueSize": 26
1423 | }
1424 | },
1425 | "pluginVersion": "8.3.6",
1426 | "targets": [
1427 | {
1428 | "datasource": {
1429 | "type": "influxdb",
1430 | "uid": "PBB990B61CE1B21F8"
1431 | },
1432 | "groupBy": [],
1433 | "hide": false,
1434 | "measurement": "mem",
1435 | "orderByTime": "ASC",
1436 | "policy": "default",
1437 | "query": "SELECT non_negative_derivative(last(\"metrics_gathered\"), 1s) FROM \"internal_gather\" WHERE (\"host\" =~ /^$host$/ AND \"input\" =~ /^$input$/) AND $timeFilter GROUP BY time($__interval) fill(null)",
1438 | "rawQuery": false,
1439 | "refId": "B",
1440 | "resultFormat": "time_series",
1441 | "select": [
1442 | [
1443 | {
1444 | "params": [
1445 | "used_percent"
1446 | ],
1447 | "type": "field"
1448 | },
1449 | {
1450 | "params": [],
1451 | "type": "last"
1452 | }
1453 | ]
1454 | ],
1455 | "tags": [
1456 | {
1457 | "condition": "AND",
1458 | "key": "host",
1459 | "operator": "=",
1460 | "value": "edgerouter"
1461 | }
1462 | ]
1463 | }
1464 | ],
1465 | "transparent": true,
1466 | "type": "gauge"
1467 | },
1468 | {
1469 | "datasource": {
1470 | "type": "influxdb",
1471 | "uid": "PBB990B61CE1B21F8"
1472 | },
1473 | "fieldConfig": {
1474 | "defaults": {
1475 | "color": {
1476 | "mode": "thresholds"
1477 | },
1478 | "decimals": 0,
1479 | "displayName": "Diskusage",
1480 | "mappings": [],
1481 | "max": 100,
1482 | "min": 0,
1483 | "thresholds": {
1484 | "mode": "absolute",
1485 | "steps": [
1486 | {
1487 | "color": "#0d6300",
1488 | "value": null
1489 | },
1490 | {
1491 | "color": "#ffad00",
1492 | "value": 75
1493 | },
1494 | {
1495 | "color": "#9e0c0c",
1496 | "value": 90
1497 | }
1498 | ]
1499 | },
1500 | "unit": "percent"
1501 | },
1502 | "overrides": []
1503 | },
1504 | "gridPos": {
1505 | "h": 4,
1506 | "w": 3,
1507 | "x": 21,
1508 | "y": 8
1509 | },
1510 | "id": 54,
1511 | "links": [],
1512 | "maxDataPoints": 100,
1513 | "options": {
1514 | "orientation": "vertical",
1515 | "reduceOptions": {
1516 | "calcs": [
1517 | "lastNotNull"
1518 | ],
1519 | "fields": "",
1520 | "values": false
1521 | },
1522 | "showThresholdLabels": false,
1523 | "showThresholdMarkers": true,
1524 | "text": {
1525 | "titleSize": 15,
1526 | "valueSize": 26
1527 | }
1528 | },
1529 | "pluginVersion": "8.3.6",
1530 | "targets": [
1531 | {
1532 | "alias": "Diskspace",
1533 | "datasource": {
1534 | "type": "influxdb",
1535 | "uid": "PBB990B61CE1B21F8"
1536 | },
1537 | "groupBy": [],
1538 | "hide": false,
1539 | "measurement": "disk",
1540 | "orderByTime": "ASC",
1541 | "policy": "default",
1542 | "query": "SELECT non_negative_derivative(last(\"metrics_gathered\"), 1s) FROM \"internal_gather\" WHERE (\"host\" =~ /^$host$/ AND \"input\" =~ /^$input$/) AND $timeFilter GROUP BY time($__interval) fill(null)",
1543 | "rawQuery": false,
1544 | "refId": "C",
1545 | "resultFormat": "time_series",
1546 | "select": [
1547 | [
1548 | {
1549 | "params": [
1550 | "used_percent"
1551 | ],
1552 | "type": "field"
1553 | },
1554 | {
1555 | "params": [],
1556 | "type": "last"
1557 | }
1558 | ]
1559 | ],
1560 | "tags": [
1561 | {
1562 | "condition": "AND",
1563 | "key": "host",
1564 | "operator": "=",
1565 | "value": "edgerouter"
1566 | },
1567 | {
1568 | "condition": "AND",
1569 | "key": "path",
1570 | "operator": "=",
1571 | "value": "/root.dev"
1572 | }
1573 | ]
1574 | }
1575 | ],
1576 | "transparent": true,
1577 | "type": "gauge"
1578 | },
1579 | {
1580 | "datasource": {
1581 | "type": "influxdb",
1582 | "uid": "PBB990B61CE1B21F8"
1583 | },
1584 | "fieldConfig": {
1585 | "defaults": {
1586 | "color": {
1587 | "mode": "thresholds"
1588 | },
1589 | "custom": {
1590 | "align": "auto",
1591 | "displayMode": "auto",
1592 | "filterable": false
1593 | },
1594 | "mappings": [],
1595 | "thresholds": {
1596 | "mode": "absolute",
1597 | "steps": [
1598 | {
1599 | "color": "green",
1600 | "value": null
1601 | }
1602 | ]
1603 | },
1604 | "unit": "none"
1605 | },
1606 | "overrides": [
1607 | {
1608 | "matcher": {
1609 | "id": "byName",
1610 | "options": "Interface"
1611 | },
1612 | "properties": [
1613 | {
1614 | "id": "custom.align",
1615 | "value": "left"
1616 | },
1617 | {
1618 | "id": "custom.width",
1619 | "value": 100
1620 | },
1621 | {
1622 | "id": "mappings",
1623 | "value": [
1624 | {
1625 | "options": {
1626 | "pattern": "/^switch0\\./",
1627 | "result": {
1628 | "index": 0,
1629 | "text": "VLAN "
1630 | }
1631 | },
1632 | "type": "regex"
1633 | }
1634 | ]
1635 | }
1636 | ]
1637 | },
1638 | {
1639 | "matcher": {
1640 | "id": "byName",
1641 | "options": "RX"
1642 | },
1643 | "properties": [
1644 | {
1645 | "id": "custom.width",
1646 | "value": 100
1647 | },
1648 | {
1649 | "id": "unit",
1650 | "value": "bps"
1651 | },
1652 | {
1653 | "id": "noValue",
1654 | "value": "0 b/s"
1655 | }
1656 | ]
1657 | },
1658 | {
1659 | "matcher": {
1660 | "id": "byName",
1661 | "options": "TX"
1662 | },
1663 | "properties": [
1664 | {
1665 | "id": "unit",
1666 | "value": "bps"
1667 | },
1668 | {
1669 | "id": "custom.width",
1670 | "value": 100
1671 | },
1672 | {
1673 | "id": "noValue",
1674 | "value": "0 b/s"
1675 | }
1676 | ]
1677 | },
1678 | {
1679 | "matcher": {
1680 | "id": "byName",
1681 | "options": "Speed"
1682 | },
1683 | "properties": [
1684 | {
1685 | "id": "custom.width",
1686 | "value": 100
1687 | },
1688 | {
1689 | "id": "unit",
1690 | "value": "Mbits"
1691 | },
1692 | {
1693 | "id": "mappings",
1694 | "value": [
1695 | {
1696 | "options": {
1697 | "0": {
1698 | "index": 0,
1699 | "text": "-"
1700 | },
1701 | "10": {
1702 | "index": 1,
1703 | "text": "-"
1704 | },
1705 | "100": {
1706 | "color": "#1f71ab",
1707 | "index": 2
1708 | }
1709 | },
1710 | "type": "value"
1711 | },
1712 | {
1713 | "options": {
1714 | "from": 1000,
1715 | "result": {
1716 | "color": "#0d6300",
1717 | "index": 3
1718 | },
1719 | "to": 10000
1720 | },
1721 | "type": "range"
1722 | }
1723 | ]
1724 | },
1725 | {
1726 | "id": "custom.displayMode",
1727 | "value": "color-text"
1728 | },
1729 | {
1730 | "id": "custom.align",
1731 | "value": "center"
1732 | }
1733 | ]
1734 | },
1735 | {
1736 | "matcher": {
1737 | "id": "byName",
1738 | "options": "Status"
1739 | },
1740 | "properties": [
1741 | {
1742 | "id": "mappings",
1743 | "value": [
1744 | {
1745 | "options": {
1746 | "0ethernet0": {
1747 | "index": 0,
1748 | "text": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgdmlld0JveD0iMCAwIDQ0OCA1MTIiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzE4ODUiCiAgIHNvZGlwb2RpOmRvY25hbWU9InVwLnN2ZyIKICAgd2lkdGg9IjQ0OCIKICAgaGVpZ2h0PSI1MTIiCiAgIGlua3NjYXBlOnZlcnNpb249IjEuMS4xICgzYmY1YWUwZDI1LCAyMDIxLTA5LTIwLCBjdXN0b20pIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnMxODg5IiAvPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0ibmFtZWR2aWV3MTg4NyIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlY2hlY2tlcmJvYXJkPSJ0cnVlIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBpbmtzY2FwZTpzaG93cGFnZXNoYWRvdz0iZmFsc2UiCiAgICAgaW5rc2NhcGU6em9vbT0iMS4yODcxMDk0IgogICAgIGlua3NjYXBlOmN4PSIyNDIuNzkyMTEiCiAgICAgaW5rc2NhcGU6Y3k9IjI1NS42MTE1MyIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTAzOCIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iNDIiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMSIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJzdmcxODg1IiAvPgogIDwhLS0gRm9udCBBd2Vzb21lIEZyZWUgNS4xNS40IGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgKEljb25zOiBDQyBCWSA0LjAsIEZvbnRzOiBTSUwgT0ZMIDEuMSwgQ29kZTogTUlUIExpY2Vuc2UpIC0tPgogIDxwYXRoCiAgICAgZD0iTSAwLDI1NiBDIDAsMTMyLjI1ODA2IDEwMC4yNTgwNiwzMiAyMjQsMzIgMzQ3Ljc0MTk0LDMyIDQ0OCwxMzIuMjU4MDYgNDQ4LDI1NiA0NDgsMzc5Ljc0MTk0IDM0Ny43NDE5NCw0ODAgMjI0LDQ4MCAxMDAuMjU4MDYsNDgwIDAsMzc5Ljc0MTk0IDAsMjU2IFogTSAyNjMuNzQxOTQsMzYwLjc3NDE5IFYgMjU2IGggNjQuMDM4NzEgYyA5LjY2NDUxLDAgMTQuNTQxOTMsLTExLjc0MTk0IDcuNjc3NDEsLTE4LjUxNjEzIEwgMjMxLjY3NzQyLDEzNC4yNDUxNiBDIDIyNy40MzIyNiwxMzAgMjIwLjY1ODA2LDEzMCAyMTYuNDEyOSwxMzQuMjQ1MTYgTCAxMTIuNTQxOTQsMjM3LjQ4Mzg3IEMgMTA1LjY3NzQyLDI0NC4zNDgzOSAxMTAuNTU0ODQsMjU2IDEyMC4yMTkzNSwyNTYgaCA2NC4wMzg3MSB2IDEwNC43NzQxOSBjIDAsNS45NjEyOSA0Ljg3NzQyLDEwLjgzODcxIDEwLjgzODcxLDEwLjgzODcxIGggNTcuODA2NDYgYyA1Ljk2MTI5LDAgMTAuODM4NzEsLTQuODc3NDIgMTAuODM4NzEsLTEwLjgzODcxIHoiCiAgICAgaWQ9InBhdGgxODgzIgogICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC45MDMyMjY7ZmlsbDojMGQ2MzAwO2ZpbGwtb3BhY2l0eToxIiAvPgo8L3N2Zz4K"
1749 | },
1750 | "0ethernet1": {
1751 | "index": 1,
1752 | "text": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgdmlld0JveD0iMCAwIDQ0OCA1MTEuOTk5OTgiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzIyMzgiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImRvd24uc3ZnIgogICB3aWR0aD0iNDQ4IgogICBoZWlnaHQ9IjUxMiIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4xLjEgKDNiZjVhZTBkMjUsIDIwMjEtMDktMjAsIGN1c3RvbSkiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczIyNDIiIC8+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJuYW1lZHZpZXcyMjQwIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9InRydWUiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnNob3dwYWdlc2hhZG93PSJmYWxzZSIKICAgICB1bml0cz0icHgiCiAgICAgd2lkdGg9IjQ0OG1tIgogICAgIGlua3NjYXBlOnpvb209IjEuMjg3MTA5NCIKICAgICBpbmtzY2FwZTpjeD0iMjQyLjc5MjExIgogICAgIGlua3NjYXBlOmN5PSIyNTUuNjExNTMiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMzgiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjQyIgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ic3ZnMjIzOCIgLz4KICA8IS0tIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuNCBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKSAtLT4KICA8cGF0aAogICAgIGQ9Ik0gNDQ4LDI1NiBDIDQ0OCwzNzkuNzQxOTQgMzQ3Ljc0MTk0LDQ4MCAyMjQsNDgwIDEwMC4yNTgwNiw0ODAgMCwzNzkuNzQxOTQgMCwyNTYgMCwxMzIuMjU4MDYgMTAwLjI1ODA2LDMyIDIyNCwzMiAzNDcuNzQxOTQsMzIgNDQ4LDEzMi4yNTgwNiA0NDgsMjU2IFogTSAxODQuMjU4MDYsMTUxLjIyNTgxIFYgMjU2IGggLTY0LjAzODcxIGMgLTkuNjY0NTEsMCAtMTQuNTQxOTMsMTEuNzQxOTQgLTcuNjc3NDEsMTguNTE2MTMgbCAxMDMuNzgwNjQsMTAzLjIzODcxIGMgNC4yNDUxNiw0LjI0NTE2IDExLjAxOTM2LDQuMjQ1MTYgMTUuMjY0NTIsMCBMIDMzNS4zNjc3NCwyNzQuNTE2MTMgQyAzNDIuMjMyMjYsMjY3LjY1MTYxIDMzNy4zNTQ4NCwyNTYgMzI3LjY5MDMyLDI1NiBIIDI2My43NDE5NCBWIDE1MS4yMjU4MSBjIDAsLTUuOTYxMjkgLTQuODc3NDIsLTEwLjgzODcxIC0xMC44Mzg3MSwtMTAuODM4NzEgaCAtNTcuODA2NDYgYyAtNS45NjEyOSwwIC0xMC44Mzg3MSw0Ljg3NzQyIC0xMC44Mzg3MSwxMC44Mzg3MSB6IgogICAgIGlkPSJwYXRoMjIzNiIKICAgICBzdHlsZT0iZmlsbDojOWUwYzBjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZS13aWR0aDowLjkwMzIyNiIgLz4KPC9zdmc+Cg=="
1753 | },
1754 | "0ethernet2": {
1755 | "index": 2,
1756 | "text": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgdmlld0JveD0iMCAwIDQ0OCA1MTIiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzQwNjgiCiAgIHNvZGlwb2RpOmRvY25hbWU9Im9mZi5zdmciCiAgIHdpZHRoPSI0NDgiCiAgIGhlaWdodD0iNTEyIgogICBpbmtzY2FwZTp2ZXJzaW9uPSIxLjEuMSAoM2JmNWFlMGQyNSwgMjAyMS0wOS0yMCwgY3VzdG9tKSIKICAgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFjZXMvaW5rc2NhcGUiCiAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzNDA3MiIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9Im5hbWVkdmlldzQwNzAiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZWNoZWNrZXJib2FyZD0idHJ1ZSIKICAgICBzaG93Z3JpZD0iZmFsc2UiCiAgICAgaW5rc2NhcGU6c2hvd3BhZ2VzaGFkb3c9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuOTEwMTIzNzciCiAgICAgaW5rc2NhcGU6Y3g9IjM3NC4xMjQ5NCIKICAgICBpbmtzY2FwZTpjeT0iMTg3Ljg4NjUzIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkyMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMDM4IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSI0MiIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzQwNjgiIC8+CiAgPCEtLSBGb250IEF3ZXNvbWUgRnJlZSA1LjE1LjQgYnkgQGZvbnRhd2Vzb21lIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20gTGljZW5zZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL2xpY2Vuc2UvZnJlZSAoSWNvbnM6IENDIEJZIDQuMCwgRm9udHM6IFNJTCBPRkwgMS4xLCBDb2RlOiBNSVQgTGljZW5zZSkgLS0+CiAgPHBhdGgKICAgICBkPSJtIDI1Mi45MDM0Miw1NC4wMjk5NTYgdiAxNS4yNjI1NzMgYyAwLDkuODk4MzYzIDYuNTc2MzgsMTguNDY5MTg4IDE1Ljk3NDQ0LDIxLjEzMjUxMSA3MC4wMTYxOSwxOS44Mzc5NSAxMjEuMzE1NzUsODQuOTYzMzkgMTIxLjMxNTc1LDE2Mi4zNjM3NSAwLDkzLjE2NSAtNzQuMzMwODksMTY4LjU3NjM1IC0xNjYuMTkzMzgsMTY4LjU3NjM1IC05MS44NDgwNCwwIC0xNjYuMTkzMzkzLC03NS4zOTY2OSAtMTY2LjE5MzM5MywtMTY4LjU3NjM1IDAsLTc3LjM4OTM2IDUxLjI5MDUzMywtMTQyLjUyMzk3IDEyMS4zMTM5NTMsLTE2Mi4zNjM3NSA5LjM5OTg2LC0yLjY2MzMyMyAxNS45NzYyNCwtMTEuMjM1OTgxIDE1Ljk3NjI0LC0yMS4xMzUyNTkgViA1NC4wMzcyODUgYyAwLC0xNC4zOTIyMDUgLTEzLjM5ODQ0LC0yNC44NzY5MjEgLTI3LjEzODMsLTIxLjI4NjQyOCBDIDcwLjk5NjYyOSw1OC4wODQ5NSAtMC41NDY5MTE4NywxNDcuNjE3MzEgMC4wMDMxNTExMywyNTQuMDA5MTQgMC42NTM0NzMxMywzNzkuNTcyODYgMTAwLjY5MTk2LDQ4MC4yNjQyMyAyMjQuNDgyNTUsNDc5Ljk5OTQ4IDM0Ny45NzIzNiw0NzkuNzM1NjEgNDQ4LDM3OC4xMTA2NSA0NDgsMjUyLjc4ODc5IDQ0OCwxNDYuODQ4NjQgMzc2LjUxODc5LDU3Ljg0NTgyOSAyNzkuODA5NTksMzIuNjkwMzg5IGMgLTEzLjY0ODYzLC0zLjU1MDE4IC0yNi45MDYxNyw3LjA0NzIyNSAtMjYuOTA2MTcsMjEuMzM5NTY3IHoiCiAgICAgaWQ9InBhdGg0MDY2IgogICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC45MDk2NzY7ZmlsbDojNTk1OTU5O2ZpbGwtb3BhY2l0eToxIiAvPgo8L3N2Zz4K"
1757 | },
1758 | "0vif0": {
1759 | "index": 3,
1760 | "text": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgdmlld0JveD0iMCAwIDQ0OCA1MTIiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzEwMzkiCiAgIHNvZGlwb2RpOmRvY25hbWU9IndrLnN2ZyIKICAgd2lkdGg9IjQ0OCIKICAgaGVpZ2h0PSI1MTIiCiAgIGlua3NjYXBlOnZlcnNpb249IjEuMS4xICgzYmY1YWUwZDI1LCAyMDIxLTA5LTIwLCBjdXN0b20pIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnMxMDQzIiAvPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0ibmFtZWR2aWV3MTA0MSIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlY2hlY2tlcmJvYXJkPSJ0cnVlIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBzaG93Ym9yZGVyPSJ0cnVlIgogICAgIGlua3NjYXBlOnNob3dwYWdlc2hhZG93PSJmYWxzZSIKICAgICBpbmtzY2FwZTp6b29tPSIwLjgwNjY0MDYzIgogICAgIGlua3NjYXBlOmN4PSIzODkuODg4NjIiCiAgICAgaW5rc2NhcGU6Y3k9IjMwMC4wMDk2OSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTAzOCIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iNDIiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMSIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJzdmcxMDM5IiAvPgogIDwhLS0gRm9udCBBd2Vzb21lIEZyZWUgNS4xNS40IGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgKEljb25zOiBDQyBCWSA0LjAsIEZvbnRzOiBTSUwgT0ZMIDEuMSwgQ29kZTogTUlUIExpY2Vuc2UpIC0tPgogIDxwYXRoCiAgICAgZD0ibSA0NDgsMjYxLjYgdiAtMTEuMiBjIDAsLTYuMTg4IC01LjAxMiwtMTEuMiAtMTEuMiwtMTEuMiBoIC0xOTYgdiAtMjggaCA1MC40IGMgMTIuMzY5LDAgMjIuNCwtMTAuMDMxIDIyLjQsLTIyLjQgViA5OS4yIGMgMCwtMTIuMzY5IC0xMC4wMzEsLTIyLjQgLTIyLjQsLTIyLjQgSCAxNTYuOCBjIC0xMi4zNjksMCAtMjIuNCwxMC4wMzEgLTIyLjQsMjIuNCB2IDg5LjYgYyAwLDEyLjM2OSAxMC4wMzEsMjIuNCAyMi40LDIyLjQgaCA1MC40IHYgMjggSCAxMS4yIEMgNS4wMTIsMjM5LjIgMCwyNDQuMjEyIDAsMjUwLjQgdiAxMS4yIGMgMCw2LjE4OCA1LjAxMiwxMS4yIDExLjIsMTEuMiBIIDg0IHYgMjggSCA0NC44IGMgLTEyLjM2OSwwIC0yMi40LDEwLjAzMSAtMjIuNCwyMi40IHYgODkuNiBjIDAsMTIuMzY5IDEwLjAzMSwyMi40IDIyLjQsMjIuNCBoIDExMiBjIDEyLjM2OSwwIDIyLjQsLTEwLjAzMSAyMi40LC0yMi40IHYgLTg5LjYgYyAwLC0xMi4zNjkgLTEwLjAzMSwtMjIuNCAtMjIuNCwtMjIuNCBoIC0zOS4yIHYgLTI4IGggMjEyLjggdiAyOCBoIC0zOS4yIGMgLTEyLjM2OSwwIC0yMi40LDEwLjAzMSAtMjIuNCwyMi40IHYgODkuNiBjIDAsMTIuMzY5IDEwLjAzMSwyMi40IDIyLjQsMjIuNCBoIDExMiBjIDEyLjM2OSwwIDIyLjQsLTEwLjAzMSAyMi40LC0yMi40IHYgLTg5LjYgYyAwLC0xMi4zNjkgLTEwLjAzMSwtMjIuNCAtMjIuNCwtMjIuNCBIIDM2NCB2IC0yOCBoIDcyLjggYyA2LjE4OCwwIDExLjIsLTUuMDEyIDExLjIsLTExLjIgeiBNIDE3OS4yLDE2Ni40IHYgLTQ0LjggaCA4OS42IHYgNDQuOCB6IG0gLTQ0LjgsMjI0IEggNjcuMiB2IC00NC44IGggNjcuMiB6IG0gMjQ2LjQsMCBoIC02Ny4yIHYgLTQ0LjggaCA2Ny4yIHoiCiAgICAgaWQ9InBhdGgxMDM3IgogICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC43O2ZpbGw6IzFmMWYxZjtmaWxsLW9wYWNpdHk6MSIgLz4KPC9zdmc+Cg=="
1761 | }
1762 | },
1763 | "type": "value"
1764 | }
1765 | ]
1766 | },
1767 | {
1768 | "id": "custom.displayMode",
1769 | "value": "image"
1770 | },
1771 | {
1772 | "id": "custom.align",
1773 | "value": "center"
1774 | },
1775 | {
1776 | "id": "custom.width",
1777 | "value": 100
1778 | }
1779 | ]
1780 | },
1781 | {
1782 | "matcher": {
1783 | "id": "byName",
1784 | "options": "Received"
1785 | },
1786 | "properties": [
1787 | {
1788 | "id": "unit",
1789 | "value": "decbytes"
1790 | },
1791 | {
1792 | "id": "custom.width",
1793 | "value": 100
1794 | },
1795 | {
1796 | "id": "noValue",
1797 | "value": "0 B"
1798 | }
1799 | ]
1800 | },
1801 | {
1802 | "matcher": {
1803 | "id": "byName",
1804 | "options": "Sent"
1805 | },
1806 | "properties": [
1807 | {
1808 | "id": "unit",
1809 | "value": "decbytes"
1810 | },
1811 | {
1812 | "id": "custom.width",
1813 | "value": 100
1814 | },
1815 | {
1816 | "id": "noValue",
1817 | "value": "0 B"
1818 | }
1819 | ]
1820 | }
1821 | ]
1822 | },
1823 | "gridPos": {
1824 | "h": 13,
1825 | "w": 15,
1826 | "x": 0,
1827 | "y": 10
1828 | },
1829 | "id": 24,
1830 | "options": {
1831 | "footer": {
1832 | "fields": "",
1833 | "reducer": [
1834 | "sum"
1835 | ],
1836 | "show": false
1837 | },
1838 | "frameIndex": 1,
1839 | "showHeader": true,
1840 | "sortBy": [
1841 | {
1842 | "desc": false,
1843 | "displayName": "Interface"
1844 | }
1845 | ]
1846 | },
1847 | "pluginVersion": "8.3.6",
1848 | "targets": [
1849 | {
1850 | "datasource": {
1851 | "type": "influxdb",
1852 | "uid": "PBB990B61CE1B21F8"
1853 | },
1854 | "groupBy": [
1855 | {
1856 | "params": [
1857 | "$__interval"
1858 | ],
1859 | "type": "time"
1860 | },
1861 | {
1862 | "params": [
1863 | "interface"
1864 | ],
1865 | "type": "tag"
1866 | },
1867 | {
1868 | "params": [
1869 | "null"
1870 | ],
1871 | "type": "fill"
1872 | }
1873 | ],
1874 | "hide": false,
1875 | "measurement": "net",
1876 | "orderByTime": "ASC",
1877 | "policy": "default",
1878 | "query": "SELECT non_negative_difference(last(\"bytes_recv\")) FROM \"net\" WHERE (\"host\" = 'edgerouter') AND $timeFilter GROUP BY time($__interval), \"interface\" fill(null) LIMIT 1",
1879 | "rawQuery": false,
1880 | "refId": "A",
1881 | "resultFormat": "table",
1882 | "select": [
1883 | [
1884 | {
1885 | "params": [
1886 | "bytes_recv"
1887 | ],
1888 | "type": "field"
1889 | },
1890 | {
1891 | "params": [],
1892 | "type": "last"
1893 | },
1894 | {
1895 | "params": [
1896 | "1s"
1897 | ],
1898 | "type": "non_negative_derivative"
1899 | },
1900 | {
1901 | "params": [
1902 | "* 8"
1903 | ],
1904 | "type": "math"
1905 | },
1906 | {
1907 | "params": [
1908 | "rx"
1909 | ],
1910 | "type": "alias"
1911 | }
1912 | ],
1913 | [
1914 | {
1915 | "params": [
1916 | "bytes_sent"
1917 | ],
1918 | "type": "field"
1919 | },
1920 | {
1921 | "params": [],
1922 | "type": "last"
1923 | },
1924 | {
1925 | "params": [
1926 | "1s"
1927 | ],
1928 | "type": "non_negative_derivative"
1929 | },
1930 | {
1931 | "params": [
1932 | "* 8"
1933 | ],
1934 | "type": "math"
1935 | },
1936 | {
1937 | "params": [
1938 | "tx"
1939 | ],
1940 | "type": "alias"
1941 | }
1942 | ]
1943 | ],
1944 | "tags": [
1945 | {
1946 | "key": "host",
1947 | "operator": "=",
1948 | "value": "edgerouter"
1949 | },
1950 | {
1951 | "condition": "AND",
1952 | "key": "interface",
1953 | "operator": "=~",
1954 | "value": "/^eth[0-9]$|^switch[0-9]\\.[0-9]{1,}$/"
1955 | }
1956 | ]
1957 | },
1958 | {
1959 | "datasource": {
1960 | "type": "influxdb",
1961 | "uid": "PBB990B61CE1B21F8"
1962 | },
1963 | "groupBy": [
1964 | {
1965 | "params": [
1966 | "interface"
1967 | ],
1968 | "type": "tag"
1969 | },
1970 | {
1971 | "params": [
1972 | "type"
1973 | ],
1974 | "type": "tag"
1975 | }
1976 | ],
1977 | "hide": false,
1978 | "measurement": "edgeos_interface",
1979 | "orderByTime": "ASC",
1980 | "policy": "default",
1981 | "query": "SELECT last(\"alias\") AS \"description\", last(\"speed\") AS \"speed\", last(\"state\") AS \"state\" FROM \"edgeos_interface\" WHERE (\"host\" = 'edgerouter' AND \"interface\" !~ /switch* | loop* | npi* | itf*/) AND $timeFilter GROUP BY \"interface\", \"type\"",
1982 | "rawQuery": false,
1983 | "refId": "B",
1984 | "resultFormat": "table",
1985 | "select": [
1986 | [
1987 | {
1988 | "params": [
1989 | "alias"
1990 | ],
1991 | "type": "field"
1992 | },
1993 | {
1994 | "params": [],
1995 | "type": "last"
1996 | },
1997 | {
1998 | "params": [
1999 | "description"
2000 | ],
2001 | "type": "alias"
2002 | }
2003 | ],
2004 | [
2005 | {
2006 | "params": [
2007 | "speed"
2008 | ],
2009 | "type": "field"
2010 | },
2011 | {
2012 | "params": [],
2013 | "type": "last"
2014 | },
2015 | {
2016 | "params": [
2017 | "speed"
2018 | ],
2019 | "type": "alias"
2020 | }
2021 | ],
2022 | [
2023 | {
2024 | "params": [
2025 | "state"
2026 | ],
2027 | "type": "field"
2028 | },
2029 | {
2030 | "params": [],
2031 | "type": "last"
2032 | },
2033 | {
2034 | "params": [
2035 | "state"
2036 | ],
2037 | "type": "alias"
2038 | }
2039 | ]
2040 | ],
2041 | "tags": [
2042 | {
2043 | "key": "host",
2044 | "operator": "=",
2045 | "value": "edgerouter"
2046 | },
2047 | {
2048 | "condition": "AND",
2049 | "key": "interface",
2050 | "operator": "=~",
2051 | "value": "/^eth[0-9]$|^switch[0-9]\\.[0-9]{1,}$/"
2052 | }
2053 | ]
2054 | },
2055 | {
2056 | "alias": "",
2057 | "datasource": {
2058 | "type": "influxdb",
2059 | "uid": "PBB990B61CE1B21F8"
2060 | },
2061 | "hide": false,
2062 | "query": "SELECT sum(\"bytes_recv\") AS data_in FROM\n(SELECT non_negative_difference(\"bytes_recv\") AS \"bytes_recv\" FROM \"net\" WHERE (\"host\" = 'edgerouter' AND \"interface\" =~ /^eth[0-9]$|^switch[0-9]\\.[0-9]{1,}$/) AND $timeFilter GROUP BY \"interface\")\nGROUP BY \"interface\"",
2063 | "rawQuery": true,
2064 | "refId": "C",
2065 | "resultFormat": "table"
2066 | },
2067 | {
2068 | "alias": "",
2069 | "datasource": {
2070 | "type": "influxdb",
2071 | "uid": "PBB990B61CE1B21F8"
2072 | },
2073 | "hide": false,
2074 | "query": "SELECT sum(\"bytes_sent\") AS data_out FROM\n(SELECT non_negative_difference(\"bytes_sent\") AS \"bytes_sent\" FROM \"net\" WHERE (\"host\" = 'edgerouter' AND \"interface\" =~ /^eth[0-9]$|^switch[0-9]\\.[0-9]{1,}$/) AND $timeFilter GROUP BY \"interface\")\nGROUP BY \"interface\"",
2075 | "rawQuery": true,
2076 | "refId": "D",
2077 | "resultFormat": "table"
2078 | }
2079 | ],
2080 | "transformations": [
2081 | {
2082 | "id": "seriesToColumns",
2083 | "options": {
2084 | "byField": "interface"
2085 | }
2086 | },
2087 | {
2088 | "id": "calculateField",
2089 | "options": {
2090 | "alias": "status",
2091 | "mode": "reduceRow",
2092 | "reduce": {
2093 | "include": [
2094 | "type",
2095 | "state"
2096 | ],
2097 | "reducer": "sum"
2098 | },
2099 | "replaceFields": false
2100 | }
2101 | },
2102 | {
2103 | "id": "organize",
2104 | "options": {
2105 | "excludeByName": {
2106 | "Time 1": true,
2107 | "Time 2": true,
2108 | "Time 3": true,
2109 | "Time 4": true,
2110 | "bytes_sent": false,
2111 | "state": true,
2112 | "type": true
2113 | },
2114 | "indexByName": {
2115 | "Time 1": 5,
2116 | "Time 2": 6,
2117 | "Time 3": 9,
2118 | "Time 4": 11,
2119 | "data_in": 10,
2120 | "data_out": 12,
2121 | "description": 13,
2122 | "interface": 0,
2123 | "rx": 7,
2124 | "speed": 4,
2125 | "state": 2,
2126 | "status": 1,
2127 | "tx": 8,
2128 | "type": 3
2129 | },
2130 | "renameByName": {
2131 | "bytes_recv": "RX",
2132 | "bytes_sent": "TX",
2133 | "data_in": "Received",
2134 | "data_out": "Sent",
2135 | "description": "Description",
2136 | "icon": "Status",
2137 | "in": "In",
2138 | "interface": "Interface",
2139 | "out": "Out",
2140 | "packets_recv": "In",
2141 | "packets_sent": "Out",
2142 | "rx": "RX",
2143 | "speed": "Speed",
2144 | "state": "",
2145 | "status": "Status",
2146 | "tx": "TX",
2147 | "type": ""
2148 | }
2149 | }
2150 | }
2151 | ],
2152 | "type": "table"
2153 | },
2154 | {
2155 | "datasource": {
2156 | "type": "influxdb",
2157 | "uid": "PBB990B61CE1B21F8"
2158 | },
2159 | "fieldConfig": {
2160 | "defaults": {
2161 | "color": {
2162 | "mode": "thresholds",
2163 | "seriesBy": "last"
2164 | },
2165 | "custom": {
2166 | "axisLabel": "",
2167 | "axisPlacement": "auto",
2168 | "barAlignment": 0,
2169 | "drawStyle": "line",
2170 | "fillOpacity": 15,
2171 | "gradientMode": "scheme",
2172 | "hideFrom": {
2173 | "legend": false,
2174 | "tooltip": false,
2175 | "viz": false
2176 | },
2177 | "lineInterpolation": "stepBefore",
2178 | "lineStyle": {
2179 | "fill": "solid"
2180 | },
2181 | "lineWidth": 1,
2182 | "pointSize": 5,
2183 | "scaleDistribution": {
2184 | "type": "linear"
2185 | },
2186 | "showPoints": "never",
2187 | "spanNulls": true,
2188 | "stacking": {
2189 | "group": "A",
2190 | "mode": "none"
2191 | },
2192 | "thresholdsStyle": {
2193 | "mode": "off"
2194 | }
2195 | },
2196 | "mappings": [],
2197 | "thresholds": {
2198 | "mode": "absolute",
2199 | "steps": [
2200 | {
2201 | "color": "#01874d",
2202 | "value": null
2203 | },
2204 | {
2205 | "color": "#348d3e",
2206 | "value": -100
2207 | },
2208 | {
2209 | "color": "#68942e",
2210 | "value": -75
2211 | },
2212 | {
2213 | "color": "#cc9e0f",
2214 | "value": -50
2215 | },
2216 | {
2217 | "color": "#ffa400",
2218 | "value": -25
2219 | },
2220 | {
2221 | "color": "#044fbf",
2222 | "value": 0
2223 | },
2224 | {
2225 | "color": "#363f99",
2226 | "value": 25
2227 | },
2228 | {
2229 | "color": "#822860",
2230 | "value": 50
2231 | },
2232 | {
2233 | "color": "#cd1026",
2234 | "value": 75
2235 | },
2236 | {
2237 | "color": "#d60000",
2238 | "value": 100
2239 | }
2240 | ]
2241 | },
2242 | "unit": "pps"
2243 | },
2244 | "overrides": []
2245 | },
2246 | "gridPos": {
2247 | "h": 11,
2248 | "w": 9,
2249 | "x": 15,
2250 | "y": 12
2251 | },
2252 | "id": 47,
2253 | "maxDataPoints": 150,
2254 | "options": {
2255 | "legend": {
2256 | "calcs": [
2257 | "last"
2258 | ],
2259 | "displayMode": "hidden",
2260 | "placement": "bottom"
2261 | },
2262 | "tooltip": {
2263 | "mode": "multi"
2264 | }
2265 | },
2266 | "targets": [
2267 | {
2268 | "alias": "$tag_interface",
2269 | "datasource": {
2270 | "type": "influxdb",
2271 | "uid": "PBB990B61CE1B21F8"
2272 | },
2273 | "groupBy": [
2274 | {
2275 | "params": [
2276 | "$__interval"
2277 | ],
2278 | "type": "time"
2279 | },
2280 | {
2281 | "params": [
2282 | "interface"
2283 | ],
2284 | "type": "tag"
2285 | },
2286 | {
2287 | "params": [
2288 | "null"
2289 | ],
2290 | "type": "fill"
2291 | }
2292 | ],
2293 | "hide": false,
2294 | "measurement": "net",
2295 | "orderByTime": "ASC",
2296 | "policy": "default",
2297 | "query": "SELECT non_negative_derivative(last(\"packets_recv\"), 1s) FROM \"net\" WHERE (\"host\" = 'edgerouter' AND \"interface\" =~ /^eth[0-9]{1,}$|^switch[0-9]\\.[0-9]{1,}$/ AND \"packets_recv\" > 0) AND $timeFilter GROUP BY time($__interval), \"interface\" fill(null)",
2298 | "rawQuery": true,
2299 | "refId": "A",
2300 | "resultFormat": "time_series",
2301 | "select": [
2302 | [
2303 | {
2304 | "params": [
2305 | "packets_recv"
2306 | ],
2307 | "type": "field"
2308 | },
2309 | {
2310 | "params": [],
2311 | "type": "last"
2312 | },
2313 | {
2314 | "params": [
2315 | "1s"
2316 | ],
2317 | "type": "non_negative_derivative"
2318 | }
2319 | ]
2320 | ],
2321 | "tags": [
2322 | {
2323 | "key": "host",
2324 | "operator": "=",
2325 | "value": "edgerouter"
2326 | },
2327 | {
2328 | "condition": "AND",
2329 | "key": "interface",
2330 | "operator": "=~",
2331 | "value": "/^eth[0-9]{1,}$|^switch[0-9]\\.[0-9]{1,}$/"
2332 | }
2333 | ]
2334 | },
2335 | {
2336 | "alias": "$tag_interface",
2337 | "datasource": {
2338 | "type": "influxdb",
2339 | "uid": "PBB990B61CE1B21F8"
2340 | },
2341 | "groupBy": [
2342 | {
2343 | "params": [
2344 | "$__interval"
2345 | ],
2346 | "type": "time"
2347 | },
2348 | {
2349 | "params": [
2350 | "interface"
2351 | ],
2352 | "type": "tag"
2353 | },
2354 | {
2355 | "params": [
2356 | "null"
2357 | ],
2358 | "type": "fill"
2359 | }
2360 | ],
2361 | "hide": false,
2362 | "measurement": "net",
2363 | "orderByTime": "ASC",
2364 | "policy": "default",
2365 | "query": "SELECT non_negative_derivative(last(\"packets_sent\"), 1s) * -1 FROM \"net\" WHERE (\"host\" = 'edgerouter' AND \"interface\" =~ /^eth[0-9]{1,}$|^switch[0-9]\\.[0-9]{1,}$/ AND \"packets_sent\" > 0) AND $timeFilter GROUP BY time($__interval), \"interface\" fill(null)",
2366 | "rawQuery": true,
2367 | "refId": "B",
2368 | "resultFormat": "time_series",
2369 | "select": [
2370 | [
2371 | {
2372 | "params": [
2373 | "packets_sent"
2374 | ],
2375 | "type": "field"
2376 | },
2377 | {
2378 | "params": [],
2379 | "type": "last"
2380 | },
2381 | {
2382 | "params": [
2383 | "1s"
2384 | ],
2385 | "type": "non_negative_derivative"
2386 | },
2387 | {
2388 | "params": [
2389 | "* -1"
2390 | ],
2391 | "type": "math"
2392 | }
2393 | ]
2394 | ],
2395 | "tags": [
2396 | {
2397 | "key": "host",
2398 | "operator": "=",
2399 | "value": "edgerouter"
2400 | },
2401 | {
2402 | "condition": "AND",
2403 | "key": "interface",
2404 | "operator": "=~",
2405 | "value": "/^eth[0-9]{1,}$|^switch[0-9]\\.[0-9]{1,}$/"
2406 | }
2407 | ]
2408 | }
2409 | ],
2410 | "title": "Packets",
2411 | "transformations": [],
2412 | "transparent": true,
2413 | "type": "timeseries"
2414 | }
2415 | ],
2416 | "refresh": "5s",
2417 | "schemaVersion": 34,
2418 | "style": "dark",
2419 | "tags": [],
2420 | "templating": {
2421 | "list": []
2422 | },
2423 | "time": {
2424 | "from": "now-2d",
2425 | "to": "now"
2426 | },
2427 | "timepicker": {
2428 | "refresh_intervals": [
2429 | "5s"
2430 | ]
2431 | },
2432 | "timezone": "utc",
2433 | "title": "EdgeRouter",
2434 | "uid": "bnYaTifnk",
2435 | "version": 1,
2436 | "weekStart": ""
2437 | }
2438 |
--------------------------------------------------------------------------------