Compare commits
1 Commits
developmen
...
leak_test
Author | SHA1 | Date |
---|---|---|
Taylor McKinnon | 9c76001b44 |
|
@ -1,19 +1,19 @@
|
||||||
FROM golang:1.14-alpine as builder
|
# FROM golang:1.14-alpine as builder
|
||||||
|
|
||||||
ENV WARP10_EXPORTER_VERSION 2.7.5
|
# ENV WARP10_EXPORTER_VERSION 2.7.5
|
||||||
|
|
||||||
RUN apk add zip unzip build-base \
|
# RUN apk add zip unzip build-base \
|
||||||
&& wget -q -O exporter.zip https://github.com/centreon/warp10-sensision-exporter/archive/refs/heads/master.zip \
|
# && wget -q -O exporter.zip https://github.com/centreon/warp10-sensision-exporter/archive/refs/heads/master.zip \
|
||||||
&& unzip exporter.zip \
|
# && unzip exporter.zip \
|
||||||
&& cd warp10-sensision-exporter-master \
|
# && cd warp10-sensision-exporter-master \
|
||||||
&& go mod download \
|
# && go mod download \
|
||||||
&& cd tools \
|
# && cd tools \
|
||||||
&& go run generate_sensision_metrics.go ${WARP10_EXPORTER_VERSION} \
|
# && go run generate_sensision_metrics.go ${WARP10_EXPORTER_VERSION} \
|
||||||
&& cp sensision.go ../collector/ \
|
# && cp sensision.go ../collector/ \
|
||||||
&& cd .. \
|
# && cd .. \
|
||||||
&& go build -a -o /usr/local/go/warp10_sensision_exporter
|
# && go build -a -o /usr/local/go/warp10_sensision_exporter
|
||||||
|
|
||||||
FROM warp10io/warp10:2.7.5
|
FROM warp10io/warp10:master
|
||||||
|
|
||||||
ENV S6_VERSION 2.0.0.1
|
ENV S6_VERSION 2.0.0.1
|
||||||
ENV S6_BEHAVIOUR_IF_STAGE2_FAILS 2
|
ENV S6_BEHAVIOUR_IF_STAGE2_FAILS 2
|
||||||
|
@ -40,11 +40,15 @@ RUN wget https://github.com/just-containers/s6-overlay/releases/download/v${S6_V
|
||||||
ADD ./images/warp10/warp10-ext-protobuf-1.2.2-uberjar.jar /opt/warp10/lib/
|
ADD ./images/warp10/warp10-ext-protobuf-1.2.2-uberjar.jar /opt/warp10/lib/
|
||||||
|
|
||||||
# Install Sensision exporter
|
# Install Sensision exporter
|
||||||
COPY --from=builder /usr/local/go/warp10_sensision_exporter /usr/local/bin/warp10_sensision_exporter
|
# COPY --from=builder /usr/local/go/warp10_sensision_exporter /usr/local/bin/warp10_sensision_exporter
|
||||||
|
|
||||||
|
ADD https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.16.1/jmx_prometheus_javaagent-0.16.1.jar /opt/jmx_prom_agent.jar
|
||||||
|
RUN printf '---\nstartDelaySeconds: 0' > /opt/jmx_prom_agent.yaml
|
||||||
ADD ./images/warp10/s6 /etc
|
ADD ./images/warp10/s6 /etc
|
||||||
ADD ./warpscript /usr/local/share/warpscript
|
ADD ./warpscript /usr/local/share/warpscript
|
||||||
ADD ./images/warp10/static.tokens /
|
ADD ./images/warp10/static.tokens /
|
||||||
|
|
||||||
|
ENV WARP10_VERSION 2.8.1-95-g73e7de80
|
||||||
|
|
||||||
CMD /init
|
CMD /init
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#!/usr/bin/with-contenv sh
|
#!/usr/bin/with-contenv sh
|
||||||
|
|
||||||
echo 'Starting sensision exporter'
|
echo 'Starting sensision exporter'
|
||||||
exec warp10_sensision_exporter --warp10.url=http://localhost:${SENSISION_PORT}/metrics
|
exec tail -f /dev/null
|
||||||
|
# exec warp10_sensision_exporter --warp10.url=http://localhost:${SENSISION_PORT}/metrics
|
||||||
|
|
|
@ -19,7 +19,7 @@ if [ -z "$WARP10_HEAP_MAX" ]; then
|
||||||
WARP10_HEAP_MAX=4g
|
WARP10_HEAP_MAX=4g
|
||||||
fi
|
fi
|
||||||
|
|
||||||
JAVA_OPTS="-Djava.awt.headless=true -Xms${WARP10_HEAP} -Xmx${WARP10_HEAP_MAX} -XX:+UseG1GC ${JAVA_OPTS}"
|
JAVA_OPTS="-javaagent:/opt/jmx_prom_agent.jar=4803:/opt/jmx_prom_agent.yaml -Djava.awt.headless=true -Xms${WARP10_HEAP} -Xmx${WARP10_HEAP_MAX} -XX:+UseG1GC ${JAVA_OPTS}"
|
||||||
|
|
||||||
SENSISION_OPTS=
|
SENSISION_OPTS=
|
||||||
if [ -n "$ENABLE_SENSISION" ]; then
|
if [ -n "$ENABLE_SENSISION" ]; then
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
/* eslint-disable no-console */
|
||||||
|
const { clients } = require('./libV2/warp10');
|
||||||
|
|
||||||
|
const client = clients[0];
|
||||||
|
|
||||||
|
const secUSecs = 1000 * 1000;
|
||||||
|
const twoHourUSecs = secUSecs * 60 * 60 * 2;
|
||||||
|
|
||||||
|
async function getOldest() {
|
||||||
|
const resp = await client.exec({
|
||||||
|
macro: 'utapi/findOldestRecord',
|
||||||
|
params: {
|
||||||
|
class: '~.*',
|
||||||
|
labels: {},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!resp.result || resp.result.length !== 1) {
|
||||||
|
console.log('failed to fetch oldest record timestamp. expiration failed');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const oldestTimestamp = resp.result[0];
|
||||||
|
if (oldestTimestamp === -1) {
|
||||||
|
console.log('No records found, nothing to delete.');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return oldestTimestamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function doDelete(start) {
|
||||||
|
const end = start + secUSecs - 1;
|
||||||
|
const params = {
|
||||||
|
className: '~.*',
|
||||||
|
labels: {},
|
||||||
|
start,
|
||||||
|
end,
|
||||||
|
};
|
||||||
|
|
||||||
|
console.log(`delete ${start} - ${end} at ${(new Date()).toISOString()}`);
|
||||||
|
try {
|
||||||
|
const deleted = await client.delete(params);
|
||||||
|
console.log(`deleted from gts ${JSON.stringify(deleted)}`);
|
||||||
|
console.log('done, sleeping');
|
||||||
|
// sleep for 5 secs
|
||||||
|
setTimeout(() => doDelete(start + secUSecs), 5000);
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err);
|
||||||
|
console.log('Error during deletion retrying in 5 secs');
|
||||||
|
setTimeout(() => doDelete(start), 5000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
const start = await getOldest();
|
||||||
|
if (start === null) {
|
||||||
|
setTimeout(main, 30000);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (start >= (Date.now() * 1000) - twoHourUSecs) {
|
||||||
|
console.log('Waiting for records to reach 2 hours old');
|
||||||
|
setTimeout(main, 30000);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setImmediate(() => doDelete(start - 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
main();
|
Loading…
Reference in New Issue