fix(monitoring): drop ethtool exporter (#572)

diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
deleted file mode 100644
index db5094d..0000000
--- a/.github/workflows/test.yml
+++ /dev/null
@@ -1,39 +0,0 @@
-name: test
-on:
-  pull_request: {}
-
-jobs:
-  build-prometheus-ethtool-exporter:
-    runs-on: ubuntu-latest
-    steps:
-      - uses: actions/checkout@v4
-        with:
-          fetch-depth: 0
-      - uses: tj-actions/changed-files@v36
-        id: changed-files
-        with:
-          files: images/prometheus-ethtool-exporter/*
-      - uses: docker/setup-qemu-action@v2
-        if: steps.changed-files.outputs.any_changed == 'true'
-      - uses: docker/setup-buildx-action@v2
-        if: steps.changed-files.outputs.any_changed == 'true'
-      - run: echo PROJECT_REF=$(cat images/prometheus-ethtool-exporter/ref) >> $GITHUB_ENV
-        if: steps.changed-files.outputs.any_changed == 'true'
-      - uses: docker/login-action@v2
-        if: steps.changed-files.outputs.any_changed == 'true'
-        with:
-          registry: quay.io
-          username: ${{ secrets.QUAY_USERNAME }}
-          password: ${{ secrets.QUAY_ROBOT_TOKEN }}
-      - uses: docker/build-push-action@v4
-        if: steps.changed-files.outputs.any_changed == 'true'
-        with:
-          context: images/prometheus-ethtool-exporter
-          cache-from: type=gha,scope=prometheus-ethtool-exporter
-          cache-to: type=gha,mode=max,scope=prometheus-ethtool-exporter
-          platforms: linux/amd64,linux/arm64
-          push: true
-          build-args: |
-            PROJECT_REF=${{ env.PROJECT_REF }}
-          tags: |
-            quay.io/vexxhost/ethtool-exporter:${{ env.PROJECT_REF }}
diff --git a/images/prometheus-ethtool-exporter/.dockerignore b/images/prometheus-ethtool-exporter/.dockerignore
deleted file mode 100644
index 72e8ffc..0000000
--- a/images/prometheus-ethtool-exporter/.dockerignore
+++ /dev/null
@@ -1 +0,0 @@
-*
diff --git a/images/prometheus-ethtool-exporter/Dockerfile b/images/prometheus-ethtool-exporter/Dockerfile
deleted file mode 100644
index b413b93..0000000
--- a/images/prometheus-ethtool-exporter/Dockerfile
+++ /dev/null
@@ -1,26 +0,0 @@
-# syntax=docker/dockerfile:1.4
-
-FROM python:3
-
-# Install binary dependencies
-RUN <<EOF
-  apt-get update
-  apt-get install -y --no-install-recommends \
-    ethtool
-  apt-get clean
-  rm -rfv /var/lib/apt/lists/*
-EOF
-
-# Install Python dependencies
-RUN --mount=type=cache,target=/root/.cache <<EOF
-  pip install prometheus-client==0.14.1
-EOF
-
-# Install exporter
-ARG PROJECT_REF
-ADD --chmod=755 \
-  https://raw.githubusercontent.com/Showmax/prometheus-ethtool-exporter/${PROJECT_REF}/ethtool-exporter.py \
-  /usr/local/bin/ethtool-exporter
-
-# Set annotations
-ENTRYPOINT ["/usr/local/bin/ethtool-exporter"]
diff --git a/images/prometheus-ethtool-exporter/ref b/images/prometheus-ethtool-exporter/ref
deleted file mode 100644
index 59f3562..0000000
--- a/images/prometheus-ethtool-exporter/ref
+++ /dev/null
@@ -1 +0,0 @@
-5f05120a743a71adcbceb9f8ee1d43ecc7c4183a
diff --git a/molecule/ceph/molecule.yml b/molecule/ceph/molecule.yml
index 76277c2..90c6a83 100644
--- a/molecule/ceph/molecule.yml
+++ b/molecule/ceph/molecule.yml
@@ -62,7 +62,6 @@
         kube-prometheus-stack,
         loki,
         vector,
-        prometheus-ethtool-exporter,
         ipmi-exporter,
         prometheus-pushgateway,
         multipathd,
diff --git a/playbooks/openstack.yml b/playbooks/openstack.yml
index 45e1d45..2a8e93a 100644
--- a/playbooks/openstack.yml
+++ b/playbooks/openstack.yml
@@ -59,10 +59,6 @@
       tags:
         - vector
 
-    - role: prometheus_ethtool_exporter
-      tags:
-        - prometheus-ethtool-exporter
-
     - role: ipmi_exporter
       tags:
         - ipmi-exporter
diff --git a/roles/defaults/vars/main.yml b/roles/defaults/vars/main.yml
index 22d7fff..b168dca 100644
--- a/roles/defaults/vars/main.yml
+++ b/roles/defaults/vars/main.yml
@@ -164,7 +164,6 @@
   placement_db_sync: quay.io/vexxhost/placement@sha256:ef2f95bdc3c88504b3a2297bf314728788126008f9bafba337e53d48a7dd19c3 # image-source: quay.io/vexxhost/placement:zed
   placement: quay.io/vexxhost/placement@sha256:ef2f95bdc3c88504b3a2297bf314728788126008f9bafba337e53d48a7dd19c3 # image-source: quay.io/vexxhost/placement:zed
   prometheus_config_reloader: quay.io/prometheus-operator/prometheus-config-reloader:v0.67.1
-  prometheus_ethtool_exporter: quay.io/vexxhost/ethtool-exporter:5f05120a743a71adcbceb9f8ee1d43ecc7c4183a
   prometheus_ipmi_exporter: us-docker.pkg.dev/vexxhost-infra/openstack/ipmi-exporter:1.4.0
   prometheus_memcached_exporter: quay.io/prometheus/memcached-exporter:v0.10.0
   prometheus_mysqld_exporter: quay.io/prometheus/mysqld-exporter:v0.14.0
diff --git a/roles/kube_prometheus_stack/files/jsonnet/legacy.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/legacy.libsonnet
index 649c95e..50ea305 100644
--- a/roles/kube_prometheus_stack/files/jsonnet/legacy.libsonnet
+++ b/roles/kube_prometheus_stack/files/jsonnet/legacy.libsonnet
@@ -1,22 +1,4 @@
 {
-  'ethtool-exporter': {
-    prometheusAlerts+:: {
-      groups: [
-        {
-          name: 'rules',
-          rules: [
-            {
-              alert: 'EthernetReceiveDiscards',
-              expr: 'rate(node_net_ethtool{type="rx_discards"}[1m]) > 0',
-              labels: {
-                severity: 'warning',
-              },
-            },
-          ],
-        },
-      ],
-    },
-  },
   'ipmi-exporter': {
     prometheusAlerts+:: {
       groups: [
diff --git a/roles/kube_prometheus_stack/tasks/main.yml b/roles/kube_prometheus_stack/tasks/main.yml
index 5bdc548..57fb1ad 100644
--- a/roles/kube_prometheus_stack/tasks/main.yml
+++ b/roles/kube_prometheus_stack/tasks/main.yml
@@ -103,6 +103,14 @@
     src: /etc/kubernetes/pki/etcd/healthcheck-client.key
   register: _etcd_healthcheck_client_key
 
+- name: Uninstall the legacy "ethtool-exporter"
+  kubernetes.core.k8s:
+    state: absent
+    api_version: v1
+    kind: DaemonSet
+    name: ethtool-exporter
+    namespace: "{{ kube_prometheus_stack_helm_release_namespace }}"
+
 - name: Uninstall the legacy HelmRelease
   run_once: true
   block:
diff --git a/roles/kube_prometheus_stack/vars/main.yml b/roles/kube_prometheus_stack/vars/main.yml
index d68a7a1..472504c 100644
--- a/roles/kube_prometheus_stack/vars/main.yml
+++ b/roles/kube_prometheus_stack/vars/main.yml
@@ -314,14 +314,6 @@
                 targetLabel: instance
             scrapeTimeout: 30s
     additionalPodMonitors:
-      - name: ethtool-exporter
-        jobLabel: job
-        selector:
-          matchLabels:
-            application: ethtool-exporter
-        podMetricsEndpoints:
-          - port: metrics
-            relabelings: *relabelings_instance_to_node_name
       - name: ipmi-exporter
         jobLabel: job
         selector:
diff --git a/roles/prometheus_ethtool_exporter/README.md b/roles/prometheus_ethtool_exporter/README.md
deleted file mode 100644
index 94b5a06..0000000
--- a/roles/prometheus_ethtool_exporter/README.md
+++ /dev/null
@@ -1 +0,0 @@
-# `prometheus_ethtool_exporter`
diff --git a/roles/prometheus_ethtool_exporter/defaults/main.yml b/roles/prometheus_ethtool_exporter/defaults/main.yml
deleted file mode 100644
index c4b6723..0000000
--- a/roles/prometheus_ethtool_exporter/defaults/main.yml
+++ /dev/null
@@ -1 +0,0 @@
-prometheus_ethtool_exporter_image_tag: 5f05120a743a71adcbceb9f8ee1d43ecc7c4183a
diff --git a/roles/prometheus_ethtool_exporter/meta/main.yml b/roles/prometheus_ethtool_exporter/meta/main.yml
deleted file mode 100644
index f58a81e..0000000
--- a/roles/prometheus_ethtool_exporter/meta/main.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright (c) 2022 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-galaxy_info:
-  author: VEXXHOST, Inc.
-  description: Ansible role for Prometheus "ethtool" exporter
-  license: Apache-2.0
-  min_ansible_version: 5.5.0
-  standalone: false
-  platforms:
-    - name: Ubuntu
-      versions:
-        - focal
-
-dependencies:
-  - role: defaults
diff --git a/roles/prometheus_ethtool_exporter/tasks/main.yml b/roles/prometheus_ethtool_exporter/tasks/main.yml
deleted file mode 100644
index 5381e9c..0000000
--- a/roles/prometheus_ethtool_exporter/tasks/main.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-- name: Deploy exporter
-  kubernetes.core.k8s:
-    state: present
-    definition:
-      - apiVersion: apps/v1
-        kind: DaemonSet
-        metadata:
-          name: ethtool-exporter
-          namespace: monitoring
-          labels:
-            application: ethtool-exporter
-        spec:
-          updateStrategy:
-            rollingUpdate:
-              maxUnavailable: 100%
-          selector:
-            matchLabels:
-              application: ethtool-exporter
-          template:
-            metadata:
-              labels:
-                application: ethtool-exporter
-                job: ethtool
-            spec:
-              hostNetwork: true
-              terminationGracePeriodSeconds: 0
-              containers:
-                - name: ethtool-exporter
-                  env:
-                    - name: IP
-                      valueFrom:
-                        fieldRef:
-                          fieldPath: status.podIP
-                  image: "{{ atmosphere_images['prometheus_ethtool_exporter'] | vexxhost.kubernetes.docker_image('ref') }}"
-                  args:
-                    - "-L"
-                    - "$(IP)"
-                    - "-p"
-                    - "9417"
-                    - "-I"
-                    - "(eth|em|eno|ens|enp)[0-9s]+"
-                  ports:
-                    - name: metrics
-                      containerPort: 9417