Catch HTTP errors.
This commit is contained in:
parent
2d2b9ff70f
commit
bf0131c5c0
2
pom.xml
2
pom.xml
@ -6,7 +6,7 @@
|
||||
|
||||
<groupId>moe.yo3explorer</groupId>
|
||||
<artifactId>octonet-exporter</artifactId>
|
||||
<version>1.1</version>
|
||||
<version>1.2</version>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>11</maven.compiler.source>
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package moe.yo3explorer.octonet_exporter;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import io.prometheus.metrics.core.metrics.Counter;
|
||||
import io.prometheus.metrics.core.metrics.Gauge;
|
||||
import io.prometheus.metrics.exporter.httpserver.HTTPServer;
|
||||
import moe.yo3explorer.octonet_exporter.entities.*;
|
||||
@ -10,6 +11,8 @@ import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
Catch errorsCaimport org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
@ -30,6 +33,21 @@ public class Main {
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static String doHttpRequest(@NotNull OkHttpClient client, String url)
|
||||
{
|
||||
try {
|
||||
Request request = new Request.Builder()
|
||||
.url(url)
|
||||
.build();
|
||||
Response response = client.newCall(request).execute();
|
||||
return response.body().string();
|
||||
} catch (IOException e) {
|
||||
log.error("Error while doing HTTP request to " + url, e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
Logger logger = LogManager.getLogger(Main.class);
|
||||
logger.info("Hello! This is octonet_exporter!");
|
||||
@ -63,6 +81,7 @@ public class Main {
|
||||
Gauge level = Gauge.builder().name("octonetExporter_level").help("Signal level").labelNames("input").register();
|
||||
Gauge packets = Gauge.builder().name("octonetExporter_packets").help("Packets").labelNames("input").register();
|
||||
Gauge bytes = Gauge.builder().name("octonetExporter_bytes").help("Bytes").labelNames("input").register();
|
||||
Counter errors = Counter.builder().name("octonetExporter_errors").help("HTTP Requests to the OctopusNET that failed").register();
|
||||
|
||||
OkHttpClient client = new OkHttpClient.Builder().build();
|
||||
int state = 1;
|
||||
@ -73,64 +92,64 @@ public class Main {
|
||||
logger.info("Starting scraping loop...");
|
||||
state++;
|
||||
}
|
||||
Request request = new Request.Builder().url(String.format(fanspeedUrl,octonetIp,System.currentTimeMillis())).build();
|
||||
Call call = client.newCall(request);
|
||||
Response execute = call.execute();
|
||||
String string = execute.body().string();
|
||||
FanspeedResponse fanspeedResponse = objectMapper.readValue(string, FanspeedResponse.class);
|
||||
fanspeed.set(fanspeedResponse.speed);
|
||||
if (!safeSleep())
|
||||
break;
|
||||
|
||||
request = new Request.Builder().url(String.format(temperaturUrl,octonetIp,System.currentTimeMillis())).build();
|
||||
call = client.newCall(request);
|
||||
execute = call.execute();
|
||||
string = execute.body().string();
|
||||
StringReader stringReader = new StringReader(string);
|
||||
BufferedReader bufferedReader = new BufferedReader(stringReader);
|
||||
String headLine = bufferedReader.readLine();
|
||||
String temperatureString = bufferedReader.readLine();
|
||||
bufferedReader.close();
|
||||
stringReader.close();
|
||||
temperature.set(Double.parseDouble(temperatureString));
|
||||
if (!safeSleep())
|
||||
break;
|
||||
|
||||
request = new Request.Builder().url(String.format(tunerstatusUrl,octonetIp)).build();
|
||||
call = client.newCall(request);
|
||||
execute = call.execute();
|
||||
string = execute.body().string();
|
||||
TunerResponse tunerResponse = objectMapper.readValue(string, TunerResponse.class);
|
||||
for (Tuner tuner : tunerResponse.getTunerList())
|
||||
{
|
||||
locked.labelValues(tuner.getInput()).set(tuner.isLock() ? 1 : 0);
|
||||
strength.labelValues(tuner.getInput()).set(tuner.isLock() ? ((double)(tuner.getStrength() + 108750) / 1000.0) : 0.0);
|
||||
snr.labelValues(tuner.getInput()).set((double)tuner.getSnr() / 1000.0);
|
||||
quality.labelValues(tuner.getInput()).set(tuner.getQuality());
|
||||
level.labelValues(tuner.getInput()).set(tuner.getLevel());
|
||||
String string = doHttpRequest(client, String.format(fanspeedUrl,octonetIp,System.currentTimeMillis()));
|
||||
if (string != null) {
|
||||
FanspeedResponse fanspeedResponse = objectMapper.readValue(string, FanspeedResponse.class);
|
||||
fanspeed.set(fanspeedResponse.speed);
|
||||
}
|
||||
else
|
||||
errors.inc();
|
||||
if (!safeSleep())
|
||||
break;
|
||||
|
||||
request = new Request.Builder().url(String.format(streamStatusUrl,octonetIp)).build();
|
||||
call = client.newCall(request);
|
||||
execute = call.execute();
|
||||
string = execute.body().string();
|
||||
StreamStatusResponse streamStatusResponse = objectMapper.readValue(string, StreamStatusResponse.class);
|
||||
HashSet<String> inputNames = new HashSet<>();
|
||||
for (StreamStatus streamStatus : streamStatusResponse.streamList)
|
||||
{
|
||||
if (inputNames.add(Integer.toString(streamStatus.input)))
|
||||
{
|
||||
if (streamStatus.status.equalsIgnoreCase("Inactive"))
|
||||
{
|
||||
streamStatus.packets = 0;
|
||||
streamStatus.bytes = 0;
|
||||
}
|
||||
packets.labelValues(Integer.toString(streamStatus.input)).set(streamStatus.packets);
|
||||
bytes.labelValues(Integer.toString(streamStatus.input)).set(streamStatus.bytes);
|
||||
string = doHttpRequest(client, String.format(temperaturUrl,octonetIp,System.currentTimeMillis()));
|
||||
if (string != null) {
|
||||
StringReader stringReader = new StringReader(string);
|
||||
BufferedReader bufferedReader = new BufferedReader(stringReader);
|
||||
String headLine = bufferedReader.readLine();
|
||||
String temperatureString = bufferedReader.readLine();
|
||||
bufferedReader.close();
|
||||
stringReader.close();
|
||||
temperature.set(Double.parseDouble(temperatureString));
|
||||
}
|
||||
else
|
||||
errors.inc();
|
||||
if (!safeSleep())
|
||||
break;
|
||||
|
||||
string = doHttpRequest(client,String.format(tunerstatusUrl,octonetIp));
|
||||
if (string != null) {
|
||||
TunerResponse tunerResponse = objectMapper.readValue(string, TunerResponse.class);
|
||||
for (Tuner tuner : tunerResponse.getTunerList()) {
|
||||
locked.labelValues(tuner.getInput()).set(tuner.isLock() ? 1 : 0);
|
||||
strength.labelValues(tuner.getInput()).set(tuner.isLock() ? ((double) (tuner.getStrength() + 108750) / 1000.0) : 0.0);
|
||||
snr.labelValues(tuner.getInput()).set((double) tuner.getSnr() / 1000.0);
|
||||
quality.labelValues(tuner.getInput()).set(tuner.getQuality());
|
||||
level.labelValues(tuner.getInput()).set(tuner.getLevel());
|
||||
}
|
||||
}
|
||||
else
|
||||
errors.inc();
|
||||
if (!safeSleep())
|
||||
break;
|
||||
|
||||
string = doHttpRequest(client,String.format(streamStatusUrl,octonetIp));
|
||||
if (string != null) {
|
||||
StreamStatusResponse streamStatusResponse = objectMapper.readValue(string, StreamStatusResponse.class);
|
||||
HashSet<String> inputNames = new HashSet<>();
|
||||
for (StreamStatus streamStatus : streamStatusResponse.streamList) {
|
||||
if (inputNames.add(Integer.toString(streamStatus.input))) {
|
||||
if (streamStatus.status.equalsIgnoreCase("Inactive")) {
|
||||
streamStatus.packets = 0;
|
||||
streamStatus.bytes = 0;
|
||||
}
|
||||
packets.labelValues(Integer.toString(streamStatus.input)).set(streamStatus.packets);
|
||||
bytes.labelValues(Integer.toString(streamStatus.input)).set(streamStatus.bytes);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
errors.inc();
|
||||
if (!safeSleep())
|
||||
break;
|
||||
|
||||
@ -141,7 +160,7 @@ public class Main {
|
||||
}
|
||||
}
|
||||
|
||||
logger.warn("Scraping loop stopped.");
|
||||
|
||||
logger.warn("Scraping loop stopped for some reason.");
|
||||
server.stop();
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user