From ff98a9857e1a4273e580a26e55a476627eca73ac Mon Sep 17 00:00:00 2001
From: Aleksandr Razdolski
Date: Wed, 14 May 2025 13:41:30 +0300
Subject: [PATCH 1/4] Update regex to support tinyproxy v 1.11.x
---
.github/workflows/docker-publish.yml | 27 +++++++--------------------
tinyproxy_exporter | 7 ++-----
2 files changed, 9 insertions(+), 25 deletions(-)
diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml
index 59ab970..e2d2de0 100644
--- a/.github/workflows/docker-publish.yml
+++ b/.github/workflows/docker-publish.yml
@@ -1,28 +1,21 @@
+---
name: Docker
-
-# This workflow uses actions that are not certified by GitHub.
-# They are provided by a third-party and are governed by
-# separate terms of service, privacy policy, and support
-# documentation.
-
on:
push:
- branches: [ master ]
- # Publish semver tags as releases.
- tags: [ 'v*.*.*' ]
+ branches:
+ - main
+ tags:
+ - 'v*.*.*'
pull_request:
- branches: [ master ]
+ branches:
+ - main
env:
- # Use docker.io for Docker Hub if empty
REGISTRY: ghcr.io
- # github.repository as /
IMAGE_NAME: ${{ github.repository }}
-
jobs:
build:
-
runs-on: ubuntu-latest
permissions:
contents: read
@@ -32,8 +25,6 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v2
- # Login against a Docker registry except on PR
- # https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c
@@ -42,16 +33,12 @@ jobs:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- # Extract metadata (tags, labels) for Docker
- # https://github.com/docker/metadata-action
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
- # Build and push Docker image with Buildx (don't push on PR)
- # https://github.com/docker/build-push-action
- name: Build and push Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
diff --git a/tinyproxy_exporter b/tinyproxy_exporter
index 5016553..0f28843 100755
--- a/tinyproxy_exporter
+++ b/tinyproxy_exporter
@@ -19,11 +19,8 @@ class TinyproxyCollector(object):
handler = urllib.request.ProxyHandler({'http': self.tinyproxy})
opener = urllib.request.build_opener(handler)
urllib.request.install_opener(opener)
- response = urllib.request.urlopen('http://{0}'.format(self.stathost))
- values = [
- float(x) for x in re.findall(
- b'(?:| |: )(\d+)(?: | |
|\n
)', response.read())
- ]
+ response = urllib.request.urlopen('http://tinyproxy.stats').read().decode('utf-8')
+ values = re.findall(r']*>\s*(\d+)\s* | ', response)
yield GaugeMetricFamily('tinyproxy_connections_open',
'Number of open connections', values[0])
yield CounterMetricFamily('tinyproxy_requests_total',
From 98a4a9b570db7e4d9430b2fa6e9a087b8c0a6126 Mon Sep 17 00:00:00 2001
From: Aleksandr Razdolski
Date: Wed, 14 May 2025 13:43:48 +0300
Subject: [PATCH 2/4] Revert gh action
---
.github/workflows/docker-publish.yml | 27 ++++++++++++++++++++-------
1 file changed, 20 insertions(+), 7 deletions(-)
diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml
index e2d2de0..59ab970 100644
--- a/.github/workflows/docker-publish.yml
+++ b/.github/workflows/docker-publish.yml
@@ -1,21 +1,28 @@
----
name: Docker
+
+# This workflow uses actions that are not certified by GitHub.
+# They are provided by a third-party and are governed by
+# separate terms of service, privacy policy, and support
+# documentation.
+
on:
push:
- branches:
- - main
- tags:
- - 'v*.*.*'
+ branches: [ master ]
+ # Publish semver tags as releases.
+ tags: [ 'v*.*.*' ]
pull_request:
- branches:
- - main
+ branches: [ master ]
env:
+ # Use docker.io for Docker Hub if empty
REGISTRY: ghcr.io
+ # github.repository as /
IMAGE_NAME: ${{ github.repository }}
+
jobs:
build:
+
runs-on: ubuntu-latest
permissions:
contents: read
@@ -25,6 +32,8 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v2
+ # Login against a Docker registry except on PR
+ # https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c
@@ -33,12 +42,16 @@ jobs:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
+ # Extract metadata (tags, labels) for Docker
+ # https://github.com/docker/metadata-action
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
+ # Build and push Docker image with Buildx (don't push on PR)
+ # https://github.com/docker/build-push-action
- name: Build and push Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
From 9a7ede2680fd875b75c45746fcdbe7f2a9af1e49 Mon Sep 17 00:00:00 2001
From: Aleksandr Razdolski
Date: Wed, 14 May 2025 15:18:26 +0300
Subject: [PATCH 3/4] Update start_http_server, remove addr
---
tinyproxy_exporter | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/tinyproxy_exporter b/tinyproxy_exporter
index 0f28843..2466379 100755
--- a/tinyproxy_exporter
+++ b/tinyproxy_exporter
@@ -40,7 +40,7 @@ def parse_args():
parser.add_argument(
'-l',
metavar='LISTEN',
- default=':9240',
+ default='9240',
help='address on which to expose metrics (default ":9240")')
parser.add_argument(
'-s',
@@ -57,9 +57,8 @@ def parse_args():
def main():
try:
args = parse_args()
- addr, port = args.l.split(':')
REGISTRY.register(TinyproxyCollector(args.s, args.t))
- start_http_server(int(port), addr)
+ start_http_server(int(args.l))
while True:
time.sleep(1)
except KeyboardInterrupt:
From 70b45a5e71ada210f24907692970554e382e05f3 Mon Sep 17 00:00:00 2001
From: Aleksandr Razdolski
Date: Thu, 15 May 2025 10:16:50 +0300
Subject: [PATCH 4/4] Update order of stats
---
tinyproxy_exporter | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/tinyproxy_exporter b/tinyproxy_exporter
index 2466379..68a8a80 100755
--- a/tinyproxy_exporter
+++ b/tinyproxy_exporter
@@ -23,15 +23,15 @@ class TinyproxyCollector(object):
values = re.findall(r']*>\s*(\d+)\s* | ', response)
yield GaugeMetricFamily('tinyproxy_connections_open',
'Number of open connections', values[0])
- yield CounterMetricFamily('tinyproxy_requests_total',
- 'Number of requests', values[1])
yield CounterMetricFamily('tinyproxy_connections_bad_total',
- 'Number of bad connections', values[2])
+ 'Number of bad connections', values[1])
yield CounterMetricFamily('tinyproxy_connections_denied_total',
- 'Number of denied connections', values[3])
+ 'Number of denied connections', values[2])
yield CounterMetricFamily(
'tinyproxy_connections_refused_total',
- 'Number of refused connections due to high load', values[4])
+ 'Number of refused connections due to high load', values[3])
+ yield CounterMetricFamily('tinyproxy_requests_total',
+ 'Number of requests', values[4])
def parse_args():