Skip to content
This repository was archived by the owner on Feb 13, 2025. It is now read-only.

Commit ed103f5

Browse files
authored
👷 Update packages versions + clean up
* Update packages versions + clean up * Use Oracle image to retrieve binaries * Use FQN for docker image
1 parent 7b936b7 commit ed103f5

File tree

7 files changed

+58
-67
lines changed

7 files changed

+58
-67
lines changed

Dockerfile

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
FROM golang:1.19 AS build
1+
FROM docker.io/library/golang:1.19 AS build
22

33
ARG ORACLE_VERSION
44
ENV ORACLE_VERSION=${ORACLE_VERSION}
55
ARG MAJOR_VERSION
66
ENV MAJOR_VERSION=${MAJOR_VERSION}
77
ENV LD_LIBRARY_PATH "/usr/lib/oracle/${MAJOR_VERSION}/client64/lib"
88

9-
RUN apt-get -qq update && apt-get install -y --no-install-recommends -qq libaio1 alien && rm -rf /var/lib/apt/lists/*
10-
COPY oracle*${ORACLE_VERSION}*.rpm /
11-
RUN alien -i --scripts /oracle*.rpm && rm /*.rpm
9+
# Can't use a variable to refer to external image. So using image name
10+
COPY --from=ghcr.io/oracle/oraclelinux8-instantclient:21 /usr/lib/oracle /usr/lib/oracle
11+
COPY --from=ghcr.io/oracle/oraclelinux8-instantclient:21 /usr/share/oracle /usr/share/oracle
12+
COPY --from=ghcr.io/oracle/oraclelinux8-instantclient:21 /usr/include/oracle /usr/include/oracle
1213

1314
COPY oci8.pc.template /usr/share/pkgconfig/oci8.pc
1415
RUN sed -i "s/@ORACLE_VERSION@/$ORACLE_VERSION/g" /usr/share/pkgconfig/oci8.pc && \
@@ -27,26 +28,27 @@ ENV PKG_CONFIG_PATH /go/src/oracledb_exporter
2728

2829
RUN GOOS=linux GOARCH=amd64 go build -v -ldflags "-X main.Version=${VERSION} -s -w"
2930

30-
FROM ubuntu:22.10
31+
FROM docker.io/library/ubuntu:22.10
3132
LABEL org.opencontainers.image.authors="Seth Miller,Yannig Perré <[email protected]>"
3233
LABEL org.opencontainers.image.description="Oracle DB Exporter"
3334

3435
ENV VERSION ${VERSION:-0.1.0}
3536
ENV DEBIAN_FRONTEND=noninteractive
3637

37-
COPY oracle-instantclient*${ORACLE_VERSION}*basic*.rpm /
38-
38+
# We only need lib directory
39+
COPY --from=build /usr/lib/oracle /usr/lib/oracle
3940
RUN apt-get -qq update && \
40-
apt-get -qq install -y --no-install-recommends tzdata libaio1 alien && \
41-
alien -i --scripts /oracle*.rpm && \
42-
rm -f /oracle*.rpm && rm -rf /var/lib/apt/lists/*
41+
apt-get -qq install -y --no-install-recommends tzdata libaio1 && \
42+
rm -rf /var/lib/apt/lists/*
4343

4444
RUN adduser --system --uid 1000 --group appuser \
4545
&& usermod -a -G 0,appuser appuser
4646

4747
ARG ORACLE_VERSION
4848
ENV ORACLE_VERSION=${ORACLE_VERSION}
49-
ENV LD_LIBRARY_PATH "/usr/lib/oracle/${ORACLE_VERSION}/client64/lib"
49+
ARG MAJOR_VERSION
50+
ENV MAJOR_VERSION=${MAJOR_VERSION}
51+
ENV LD_LIBRARY_PATH "/usr/lib/oracle/${MAJOR_VERSION}/client64/lib"
5052
RUN echo $LD_LIBRARY_PATH >> /etc/ld.so.conf.d/oracle.conf && ldconfig
5153

5254
ARG LEGACY_TABLESPACE

Makefile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ OS_TYPE ?= $(shell uname -s | tr '[:upper:]' '[:lower:]')
33
ARCH_TYPE ?= $(subst x86_64,amd64,$(patsubst i%86,386,$(ARCH)))
44
GOOS ?= $(shell go env GOOS)
55
GOARCH ?= $(shell go env GOARCH)
6-
VERSION ?= 0.4.3
6+
VERSION ?= 0.4.4
77
MAJOR_VERSION ?= 21
88
MINOR_VERSION ?= 8
99
ORACLE_VERSION ?= $(MAJOR_VERSION).$(MINOR_VERSION)
10+
ORACLE_IMAGE ?= ghcr.io/oracle/oraclelinux8-instantclient:$(MAJOR_VERSION)
1011
PKG_VERSION ?= $(ORACLE_VERSION).0.0.0-1.el8.$(ARCH)
1112
GLIBC_VERSION ?= 2.35-r0
1213
LDFLAGS := -X main.Version=$(VERSION)
@@ -15,7 +16,7 @@ RPM_VERSION ?= $(ORACLE_VERSION).0.0.0-1
1516
ORA_RPM = oracle-instantclient-basic-$(PKG_VERSION).rpm oracle-instantclient-devel-$(PKG_VERSION).rpm
1617
LD_LIBRARY_PATH = /usr/lib/oracle/$(ORACLE_VERSION)/client64/lib
1718
BUILD_ARGS = --build-arg VERSION=$(VERSION) --build-arg ORACLE_VERSION=$(ORACLE_VERSION) \
18-
--build-arg MAJOR_VERSION=$(MAJOR_VERSION)
19+
--build-arg MAJOR_VERSION=$(MAJOR_VERSION) --build-arg ORACLE_IMAGE=$(ORACLE_IMAGE)
1920
LEGACY_TABLESPACE = --build-arg LEGACY_TABLESPACE=.legacy-tablespace
2021
DIST_DIR = oracledb_exporter-$(VERSION)-ora$(ORACLE_VERSION).$(OS_TYPE)-$(ARCH_TYPE)
2122
ARCHIVE = oracledb_exporter-$(VERSION)-ora$(ORACLE_VERSION).$(OS_TYPE)-$(ARCH_TYPE).tar.gz

alpine/Dockerfile

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
FROM golang:1.19 AS build
1+
FROM docker.io/library/golang:1.19 AS build
22

33
ARG ORACLE_VERSION
44
ENV ORACLE_VERSION=${ORACLE_VERSION}
55
ARG MAJOR_VERSION
66
ENV MAJOR_VERSION=${MAJOR_VERSION}
77
ENV LD_LIBRARY_PATH "/usr/lib/oracle/${MAJOR_VERSION}/client64/lib"
88

9-
RUN apt-get -qq update && apt-get install -y --no-install-recommends -qq libaio1 rpm && rm -rf /var/lib/apt/lists/*
10-
COPY oracle*${ORACLE_VERSION}*.rpm /
11-
RUN rpm -Uh --nodeps /oracle-instantclient*.x86_64.rpm && rm /*.rpm
9+
# Can't use a variable to refer to external image. So using image name
10+
COPY --from=ghcr.io/oracle/oraclelinux8-instantclient:21 /usr/lib/oracle /usr/lib/oracle
11+
COPY --from=ghcr.io/oracle/oraclelinux8-instantclient:21 /usr/share/oracle /usr/share/oracle
12+
COPY --from=ghcr.io/oracle/oraclelinux8-instantclient:21 /usr/include/oracle /usr/include/oracle
1213

1314
COPY oci8.pc.template /usr/share/pkgconfig/oci8.pc
1415
RUN sed -i "s/@ORACLE_VERSION@/$ORACLE_VERSION/g" /usr/share/pkgconfig/oci8.pc && \
@@ -27,7 +28,7 @@ ENV PKG_CONFIG_PATH /go/src/oracledb_exporter
2728

2829
RUN GOOS=linux GOARCH=amd64 go build -v -ldflags "-X main.Version=${VERSION} -s -w"
2930

30-
FROM frolvlad/alpine-glibc:glibc-2.35
31+
FROM docker.io/frolvlad/alpine-glibc:glibc-2.35
3132
LABEL authors="Seth Miller,Yannig Perré"
3233
LABEL maintainer="Yannig Perré <[email protected]>"
3334

@@ -37,6 +38,7 @@ RUN apk add libaio --no-cache
3738

3839
ARG LEGACY_TABLESPACE
3940
ENV LEGACY_TABLESPACE=${LEGACY_TABLESPACE}
41+
# We only need lib directory
4042
COPY --from=build /usr/lib/oracle /usr/lib/oracle
4143
COPY --from=build /go/src/oracledb_exporter/oracledb_exporter /oracledb_exporter
4244
ADD ./default-metrics${LEGACY_TABLESPACE}.toml /default-metrics.toml

go.mod

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,25 @@
11
module github.com/iamseth/oracledb_exporter
22

3-
go 1.18
3+
go 1.19
44

55
require (
66
github.com/BurntSushi/toml v1.2.1
7+
github.com/alecthomas/kingpin/v2 v2.3.2
78
github.com/go-kit/kit v0.12.0
89
github.com/go-kit/log v0.2.1
910
github.com/mattn/go-oci8 v0.1.1
1011
github.com/prometheus/client_golang v1.14.0
1112
github.com/prometheus/common v0.42.0
1213
github.com/prometheus/exporter-toolkit v0.9.1
13-
gopkg.in/alecthomas/kingpin.v2 v2.2.6
1414
)
1515

1616
require (
17-
github.com/alecthomas/kingpin/v2 v2.3.2 // indirect
18-
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect
1917
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect
2018
github.com/beorn7/perks v1.0.1 // indirect
21-
github.com/cespare/xxhash/v2 v2.1.2 // indirect
19+
github.com/cespare/xxhash/v2 v2.2.0 // indirect
2220
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
23-
github.com/go-logfmt/logfmt v0.5.1 // indirect
24-
github.com/golang/protobuf v1.5.2 // indirect
21+
github.com/go-logfmt/logfmt v0.6.0 // indirect
22+
github.com/golang/protobuf v1.5.3 // indirect
2523
github.com/jpillora/backoff v1.0.0 // indirect
2624
github.com/kr/text v0.2.0 // indirect
2725
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
@@ -37,6 +35,6 @@ require (
3735
golang.org/x/sys v0.6.0 // indirect
3836
golang.org/x/text v0.8.0 // indirect
3937
google.golang.org/appengine v1.6.7 // indirect
40-
google.golang.org/protobuf v1.28.1 // indirect
38+
google.golang.org/protobuf v1.30.0 // indirect
4139
gopkg.in/yaml.v2 v2.4.0 // indirect
4240
)

go.sum

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,12 @@ github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak
22
github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
33
github.com/alecthomas/kingpin/v2 v2.3.2 h1:H0aULhgmSzN8xQ3nX1uxtdlTHYoPLu5AhHxWrKI6ocU=
44
github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
5-
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM=
6-
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
75
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc=
86
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
97
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
108
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
11-
github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=
12-
github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
9+
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
10+
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
1311
github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=
1412
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
1513
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
@@ -19,15 +17,15 @@ github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4=
1917
github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs=
2018
github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU=
2119
github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0=
22-
github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA=
23-
github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
20+
github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
21+
github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
2422
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
2523
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
2624
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
2725
github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
2826
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
29-
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
30-
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
27+
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
28+
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
3129
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
3230
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
3331
github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=
@@ -84,10 +82,8 @@ google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6
8482
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
8583
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
8684
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
87-
google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
88-
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
89-
gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=
90-
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
85+
google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
86+
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
9187
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
9288
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
9389
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

main.go

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import (
66
"crypto/sha256"
77
"database/sql"
88
"errors"
9+
"github.com/prometheus/exporter-toolkit/web"
10+
webflag "github.com/prometheus/exporter-toolkit/web/kingpinflag"
911
"hash"
1012
"io"
1113
"net/http"
@@ -25,11 +27,9 @@ import (
2527
"github.com/prometheus/client_golang/prometheus"
2628
"github.com/prometheus/client_golang/prometheus/promhttp"
2729

30+
"github.com/alecthomas/kingpin/v2"
2831
"github.com/prometheus/common/promlog"
2932
"github.com/prometheus/common/promlog/flag"
30-
"github.com/prometheus/exporter-toolkit/web"
31-
webflag "github.com/prometheus/exporter-toolkit/web/kingpinflag"
32-
"gopkg.in/alecthomas/kingpin.v2"
3333
//Required for debugging
3434
//_ "net/http/pprof"
3535
)
@@ -44,6 +44,7 @@ var (
4444
maxIdleConns = kingpin.Flag("database.maxIdleConns", "Number of maximum idle connections in the connection pool. (env: DATABASE_MAXIDLECONNS)").Default(getEnv("DATABASE_MAXIDLECONNS", "0")).Int()
4545
maxOpenConns = kingpin.Flag("database.maxOpenConns", "Number of maximum open connections in the connection pool. (env: DATABASE_MAXOPENCONNS)").Default(getEnv("DATABASE_MAXOPENCONNS", "10")).Int()
4646
scrapeInterval = kingpin.Flag("scrape.interval", "Interval between each scrape. Default is to scrape on collect requests").Default("0s").Duration()
47+
toolkitFlags = webflag.AddFlags(kingpin.CommandLine, ":9161")
4748
)
4849

4950
// Metric name parts.
@@ -52,7 +53,7 @@ const (
5253
exporter = "exporter"
5354
)
5455

55-
// Metrics object description
56+
// Metric object description
5657
type Metric struct {
5758
Context string
5859
Labels []string
@@ -64,7 +65,7 @@ type Metric struct {
6465
IgnoreZeroResult bool
6566
}
6667

67-
// Used to load multiple metrics from file
68+
// Metrics Used to load multiple metrics from file
6869
type Metrics struct {
6970
Metric []Metric
7071
}
@@ -96,15 +97,6 @@ func getEnv(key, fallback string) string {
9697
return fallback
9798
}
9899

99-
func atoi(stringValue string, logger log.Logger) int {
100-
intValue, err := strconv.Atoi(stringValue)
101-
if err != nil {
102-
level.Error(logger).Log("msg", "error while converting to int", "err", err)
103-
panic(err)
104-
}
105-
return intValue
106-
}
107-
108100
func maskDsn(dsn string) string {
109101
parts := strings.Split(dsn, "@")
110102
if len(parts) > 1 {
@@ -341,7 +333,7 @@ func GetMetricType(metricType string, metricsType map[string]string) prometheus.
341333
return valueType
342334
}
343335

344-
// interface method to call ScrapeGenericValues using Metric struct values
336+
// ScrapeMetric interface method to call ScrapeGenericValues using Metric struct values
345337
func ScrapeMetric(db *sql.DB, ch chan<- prometheus.Metric, metricDefinition Metric, logger log.Logger) error {
346338
level.Debug(logger).Log("msg", "Calling function ScrapeGenericValues()")
347339
return ScrapeGenericValues(db, ch, metricDefinition.Context, metricDefinition.Labels,
@@ -350,13 +342,13 @@ func ScrapeMetric(db *sql.DB, ch chan<- prometheus.Metric, metricDefinition Metr
350342
metricDefinition.Request, logger)
351343
}
352344

353-
// generic method for retrieving metrics.
345+
// ScrapeGenericValues generic method for retrieving metrics.
354346
func ScrapeGenericValues(db *sql.DB, ch chan<- prometheus.Metric, context string, labels []string,
355347
metricsDesc map[string]string, metricsType map[string]string, metricsBuckets map[string]map[string]string, fieldToAppend string, ignoreZeroResult bool, request string, logger log.Logger) error {
356348
metricsCount := 0
357349
genericParser := func(row map[string]string) error {
358350
// Construct labels value
359-
labelsValues := []string{}
351+
var labelsValues []string
360352
for _, label := range labels {
361353
labelsValues = append(labelsValues, row[label])
362354
}
@@ -380,7 +372,7 @@ func ScrapeGenericValues(db *sql.DB, ch chan<- prometheus.Metric, context string
380372
if metricsType[strings.ToLower(metric)] == "histogram" {
381373
count, err := strconv.ParseUint(strings.TrimSpace(row["count"]), 10, 64)
382374
if err != nil {
383-
level.Error(logger).Log("msg", "Unable to convert count value to int", "metric", metric,
375+
level.Error(logger).Log("msg", "Unable to convert count value to int", "metric", metric,
384376
"metricHelp", metricHelp, "value", row["count"])
385377
continue
386378
}
@@ -455,7 +447,7 @@ func ScrapeGenericValues(db *sql.DB, ch chan<- prometheus.Metric, context string
455447
return err
456448
}
457449

458-
// inspired by https://kylewbanks.com/blog/query-result-to-map-in-golang
450+
// GeneratePrometheusMetrics inspired by https://kylewbanks.com/blog/query-result-to-map-in-golang
459451
// Parse SQL result and call parsing function to each row
460452
func GeneratePrometheusMetrics(db *sql.DB, parse func(row map[string]string) error, query string, logger log.Logger) error {
461453

@@ -584,9 +576,8 @@ func reloadMetrics(logger log.Logger) {
584576

585577
func main() {
586578

587-
promlogConfig := &promlog.Config{}
579+
var promlogConfig = &promlog.Config{}
588580
flag.AddFlags(kingpin.CommandLine, promlogConfig)
589-
var toolkitFlags = webflag.AddFlags(kingpin.CommandLine, ":9161")
590581

591582
kingpin.Version("oracledb_exporter " + Version)
592583
kingpin.HelpFlag.Short('h')

oraclelinux/Dockerfile

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
FROM golang:1.19 AS build
1+
FROM docker.io/library/golang:1.19 AS build
22

33
ARG ORACLE_VERSION
44
ENV ORACLE_VERSION=${ORACLE_VERSION}
55
ARG MAJOR_VERSION
66
ENV MAJOR_VERSION=${MAJOR_VERSION}
77
ENV LD_LIBRARY_PATH "/usr/lib/oracle/${MAJOR_VERSION}/client64/lib"
88

9-
RUN apt-get -qq update && apt-get install -y --no-install-recommends -qq libaio1 rpm && rm -rf /var/lib/apt/lists/*
10-
COPY oracle*${ORACLE_VERSION}*.rpm /
11-
RUN rpm -Uh --nodeps /oracle-instantclient*.x86_64.rpm && rm /*.rpm
9+
ARG ORACLE_IMAGE
10+
COPY --from=${ORACLE_IMAGE} /usr/lib/oracle /usr/lib/oracle
11+
COPY --from=${ORACLE_IMAGE} /usr/share/oracle /usr/share/oracle
12+
COPY --from=${ORACLE_IMAGE} /usr/include/oracle /usr/include/oracle
1213

1314
COPY oci8.pc.template /usr/share/pkgconfig/oci8.pc
1415
RUN sed -i "s/@ORACLE_VERSION@/$ORACLE_VERSION/g" /usr/share/pkgconfig/oci8.pc && \
@@ -27,16 +28,16 @@ ENV PKG_CONFIG_PATH /go/src/oracledb_exporter
2728

2829
RUN GOOS=linux GOARCH=amd64 go build -v -ldflags "-X main.Version=${VERSION} -s -w"
2930

30-
FROM oraclelinux:8-slim
31+
FROM docker.io/library/oraclelinux:8-slim
3132

3233
ARG ORACLE_VERSION
3334
ENV ORACLE_VERSION=${ORACLE_VERSION}
3435
ARG MAJOR_VERSION
3536
ENV MAJOR_VERSION=${MAJOR_VERSION}
3637

37-
RUN microdnf -y install oracle-release-el8 && \
38-
microdnf -y install oracle-instantclient-release-el8 && \
39-
microdnf -y install oracle-instantclient-basic && \
38+
# We only need lib directory
39+
COPY --from=build /usr/lib/oracle /usr/lib/oracle
40+
RUN microdnf -y install libaio && \
4041
microdnf clean all
4142

4243
ARG LEGACY_TABLESPACE

0 commit comments

Comments
 (0)