mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-25 18:55:28 -06:00
Remove "--docker-metrics" functionality. Update documents and scripts accordingly.
This commit is contained in:
@@ -23,7 +23,6 @@ that are not found in any other tool.
|
||||
- You can generate virtual data sets of arbitrary size, with deterministic data and statistically shaped values.
|
||||
- You can design custom workloads that emulate your application, contained in a single file, based on statement
|
||||
templates - no IDE or coding required.
|
||||
- You can immediately plot your results in a docker and grafana stack on Linux with a single command line option.
|
||||
- When needed, you can open the access panels and rewire the runtime behavior of NoSQLBench to do advanced testing,
|
||||
including a full scripting environment with Javascript.
|
||||
|
||||
@@ -84,7 +83,7 @@ available, but more work is needed to support them fully. Here is what is suppor
|
||||
|
||||
1. on Linux, all features are supported, for both `nb5.jar` as well as the appimage binary `nb`
|
||||
2. on Mac, all features are supported, with `nb5.jar`.
|
||||
3. On Windows, with `nb5.jar` all features are supported, except `--docker-metrics`.
|
||||
3. on Windows, all features are supported, with `nb5.jar`.
|
||||
|
||||
## Thanks
|
||||
|
||||
|
||||
@@ -26,7 +26,6 @@ java -jar nb5/target/nb5.jar \
|
||||
driver=kafka \
|
||||
-vv \
|
||||
--report-interval 5 \
|
||||
--docker-metrics \
|
||||
cycles=${CYCLES} \
|
||||
threads=1 \
|
||||
num_clnt=1 \
|
||||
|
||||
@@ -27,7 +27,6 @@ while [[ 1 -eq 1 ]]; do
|
||||
driver=kafka \
|
||||
-vv \
|
||||
--report-interval 5 \
|
||||
--docker-metrics \
|
||||
cycles="${CYCLES}" \
|
||||
threads=1 \
|
||||
num_clnt=1 \
|
||||
|
||||
@@ -26,7 +26,6 @@ java -jar nb5/target/nb5.jar \
|
||||
driver=pulsar \
|
||||
-vv \
|
||||
--report-interval 5 \
|
||||
--docker-metrics \
|
||||
cycles=${CYCLES} \
|
||||
yaml="${SCRIPT_DIR}/scenarios/consumer_4KB_workload.yaml" \
|
||||
config="${SCRIPT_DIR}/conf/pulsar_config.properties"
|
||||
|
||||
@@ -28,7 +28,6 @@ while [[ 1 -eq 1 ]]; do
|
||||
driver=pulsar \
|
||||
-vv \
|
||||
--report-interval 5 \
|
||||
--docker-metrics \
|
||||
cycles="${CYCLES}" \
|
||||
cyclerate="${CYCLERATE}" \
|
||||
threads=1 \
|
||||
|
||||
@@ -114,10 +114,6 @@ anywhere details would be.
|
||||
|
||||
## Annotation Implementations
|
||||
|
||||
NoSQLBench comes with two built-in annotation implementations,
|
||||
which are configured automatically. By default, the logging
|
||||
annotator is enabled.
|
||||
NoSQLBench comes with a built-in annotation implementations, the logging annotator,
|
||||
which is configured automatically.
|
||||
|
||||
If --docker-metrics is used, then the grafana annotator is enabled.
|
||||
In this case, if needed, default admin credentials will be used
|
||||
to create an API key, which will be cached on the local filesystem.
|
||||
|
||||
@@ -42,11 +42,11 @@
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.nosqlbench</groupId>
|
||||
<artifactId>engine-docker</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>io.nosqlbench</groupId>-->
|
||||
<!-- <artifactId>engine-docker</artifactId>-->
|
||||
<!-- <version>${revision}</version>-->
|
||||
<!-- </dependency>-->
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
||||
@@ -49,7 +49,6 @@ import io.nosqlbench.engine.core.lifecycle.scenario.script.MetricsMapper;
|
||||
import io.nosqlbench.engine.core.lifecycle.scenario.Scenario;
|
||||
import io.nosqlbench.engine.core.lifecycle.scenario.ScenariosExecutor;
|
||||
import io.nosqlbench.engine.core.lifecycle.scenario.script.ScriptParams;
|
||||
import io.nosqlbench.engine.docker.DockerMetricsManager;
|
||||
import io.nosqlbench.nb.annotations.Maturity;
|
||||
import io.nosqlbench.nb.annotations.Service;
|
||||
import io.nosqlbench.nb.annotations.ServiceSelector;
|
||||
@@ -210,51 +209,13 @@ public class NBCLI implements Function<String[], Integer>, NBLabeledElement {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
final boolean dockerMetrics = globalOptions.wantsDockerMetrics();
|
||||
final String dockerMetricsAt = globalOptions.wantsDockerMetricsAt();
|
||||
String reportGraphiteTo = globalOptions.wantsReportGraphiteTo();
|
||||
String annotatorsConfig = globalOptions.getAnnotatorsConfig();
|
||||
String promPushConfig = globalOptions.getPromPushConfig();
|
||||
final String reportPromPushTo = globalOptions.wantsReportPromPushTo();
|
||||
|
||||
|
||||
final int mOpts = (dockerMetrics ? 1 : 0)
|
||||
+ ((null != dockerMetricsAt) ? 1 : 0)
|
||||
+ ((null != reportGraphiteTo) ? 1 : 0);
|
||||
|
||||
if ((1 < mOpts) && ((null == reportGraphiteTo) || (null == annotatorsConfig)))
|
||||
throw new BasicError("You have multiple conflicting options which attempt to set\n" +
|
||||
" the destination for metrics and annotations. Please select only one of\n" +
|
||||
" --docker-metrics, --docker-metrics-at <addr>, or other options like \n" +
|
||||
" --report-graphite-to <addr> and --annotators <config>\n" +
|
||||
" For more details, see run 'nb help docker-metrics'");
|
||||
|
||||
String graphiteMetricsAddress = null;
|
||||
|
||||
if (dockerMetrics) {
|
||||
// Setup docker stack for local docker metrics
|
||||
NBCLI.logger.info("Docker metrics is enabled. Docker must be installed for this to work");
|
||||
final DockerMetricsManager dmh = new DockerMetricsManager();
|
||||
final Map<String, String> dashboardOptions = Map.of(
|
||||
DockerMetricsManager.GRAFANA_TAG, globalOptions.getDockerGrafanaTag(),
|
||||
DockerMetricsManager.PROM_TAG, globalOptions.getDockerPromTag(),
|
||||
DockerMetricsManager.TSDB_RETENTION, String.valueOf(globalOptions.getDockerPromRetentionDays()),
|
||||
DockerMetricsManager.GRAPHITE_SAMPLE_EXPIRY, "10m",
|
||||
DockerMetricsManager.GRAPHITE_CACHE_SIZE, "5000",
|
||||
DockerMetricsManager.GRAPHITE_LOG_LEVEL, globalOptions.getGraphiteLogLevel(),
|
||||
DockerMetricsManager.GRAPHITE_LOG_FORMAT, "logfmt"
|
||||
|
||||
);
|
||||
dmh.startMetrics(dashboardOptions);
|
||||
final String warn = "Docker Containers are started, for grafana and prometheus, hit" +
|
||||
" these urls in your browser: http://<host>:3000 and http://<host>:9090";
|
||||
NBCLI.logger.warn(warn);
|
||||
graphiteMetricsAddress = "localhost";
|
||||
} else if (null != dockerMetricsAt) {
|
||||
graphiteMetricsAddress = dockerMetricsAt;
|
||||
}
|
||||
|
||||
if (annotatorsConfig == null || annotatorsConfig.isBlank()) {
|
||||
List<Map<String, String>> annotatorsConfigs = new ArrayList<>();
|
||||
annotatorsConfigs.add(Map.of(
|
||||
|
||||
@@ -127,12 +127,6 @@ public class NBCLIOptions {
|
||||
private static final String LOG_LEVEL_OVERRIDE = "--log-level-override";
|
||||
private static final String ENABLE_CHART = "--enable-chart";
|
||||
|
||||
private static final String DOCKER_METRICS = "--docker-metrics";
|
||||
private static final String DOCKER_METRICS_AT = "--docker-metrics-at";
|
||||
private static final String DOCKER_GRAFANA_TAG = "--docker-grafana-tag";
|
||||
private static final String DOCKER_PROM_TAG = "--docker-prom-tag";
|
||||
private static final String DOCKER_PROM_RETENTION_DAYS = "--docker-prom-retention-days";
|
||||
|
||||
private static final String GRAALJS_ENGINE = "--graaljs";
|
||||
|
||||
private static final String DEFAULT_CONSOLE_PATTERN = "TERSE";
|
||||
@@ -176,7 +170,6 @@ public class NBCLIOptions {
|
||||
private NBLogLevel logsLevel = NBLogLevel.INFO;
|
||||
private Map<String, String> logLevelsOverrides = new HashMap<>();
|
||||
private boolean enableChart;
|
||||
private boolean dockerMetrics;
|
||||
private boolean wantsListScenarios;
|
||||
private boolean wantsListScripts;
|
||||
private String wantsToCopyWorkload;
|
||||
@@ -184,19 +177,15 @@ public class NBCLIOptions {
|
||||
private final List<String> wantsToIncludePaths = new ArrayList<>();
|
||||
private Engine engine = Engine.Graalvm;
|
||||
private int hdr_digits = 3;
|
||||
private String docker_grafana_tag = "7.3.4";
|
||||
private String docker_prom_tag = "latest";
|
||||
private boolean showStackTraces;
|
||||
private boolean compileScript;
|
||||
private String scriptFile;
|
||||
private String[] annotateEvents = {"ALL"};
|
||||
private String dockerMetricsHost;
|
||||
private String annotatorsConfig = "";
|
||||
private String promPushConfig = "";
|
||||
private String statedirs = NBStatePath.NB_STATEDIR_PATHS;
|
||||
private Path statepath;
|
||||
private final String hdrForChartFileName = NBCLIOptions.DEFAULT_CHART_HDR_LOG_NAME;
|
||||
private String dockerPromRetentionDays = "3650d";
|
||||
private String reportSummaryTo = NBCLIOptions.REPORT_SUMMARY_TO_DEFAULT;
|
||||
private boolean enableAnsi = (null != System.getenv("TERM")) && !System.getenv("TERM").isEmpty();
|
||||
private Maturity minMaturity = Maturity.Unspecified;
|
||||
@@ -236,10 +225,6 @@ public class NBCLIOptions {
|
||||
return this.hdrForChartFileName;
|
||||
}
|
||||
|
||||
public String getDockerPromRetentionDays() {
|
||||
return dockerPromRetentionDays;
|
||||
}
|
||||
|
||||
public String getReportSummaryTo() {
|
||||
return this.reportSummaryTo;
|
||||
}
|
||||
@@ -420,18 +405,6 @@ public class NBCLIOptions {
|
||||
arglist.removeFirst();
|
||||
this.workspacesDirectory = this.readWordOrThrow(arglist, "a workspaces directory");
|
||||
break;
|
||||
case NBCLIOptions.DOCKER_PROM_TAG:
|
||||
arglist.removeFirst();
|
||||
this.docker_prom_tag = this.readWordOrThrow(arglist, "prometheus docker tag");
|
||||
break;
|
||||
case NBCLIOptions.DOCKER_PROM_RETENTION_DAYS:
|
||||
arglist.removeFirst();
|
||||
this.dockerPromRetentionDays = this.readWordOrThrow(arglist, "prometheus retention (3650d by default)");
|
||||
break;
|
||||
case NBCLIOptions.DOCKER_GRAFANA_TAG:
|
||||
arglist.removeFirst();
|
||||
this.docker_grafana_tag = this.readWordOrThrow(arglist, "grafana docker tag");
|
||||
break;
|
||||
case NBCLIOptions.VERSION:
|
||||
arglist.removeFirst();
|
||||
this.wantsVersionShort = true;
|
||||
@@ -440,14 +413,6 @@ public class NBCLIOptions {
|
||||
arglist.removeFirst();
|
||||
this.wantsVersionCoords = true;
|
||||
break;
|
||||
case NBCLIOptions.DOCKER_METRICS_AT:
|
||||
arglist.removeFirst();
|
||||
this.dockerMetricsHost = this.readWordOrThrow(arglist, "docker metrics host");
|
||||
break;
|
||||
case NBCLIOptions.DOCKER_METRICS:
|
||||
arglist.removeFirst();
|
||||
this.dockerMetrics = true;
|
||||
break;
|
||||
case NBCLIOptions.SESSION_NAME:
|
||||
arglist.removeFirst();
|
||||
this.sessionName = this.readWordOrThrow(arglist, "a session name");
|
||||
@@ -794,14 +759,6 @@ public class NBCLIOptions {
|
||||
return this.enableChart;
|
||||
}
|
||||
|
||||
public boolean wantsDockerMetrics() {
|
||||
return this.dockerMetrics;
|
||||
}
|
||||
|
||||
public String wantsDockerMetricsAt() {
|
||||
return this.dockerMetricsHost;
|
||||
}
|
||||
|
||||
public int getReportInterval() {
|
||||
return this.reportInterval;
|
||||
}
|
||||
@@ -947,14 +904,6 @@ public class NBCLIOptions {
|
||||
return this.wantsWorkloadsList;
|
||||
}
|
||||
|
||||
public String getDockerGrafanaTag() {
|
||||
return this.docker_grafana_tag;
|
||||
}
|
||||
|
||||
public String getDockerPromTag() {
|
||||
return this.docker_prom_tag;
|
||||
}
|
||||
|
||||
public static class LoggerConfigData {
|
||||
public String file;
|
||||
public String pattern = ".*";
|
||||
|
||||
@@ -46,7 +46,6 @@ an argsfile when pinning options are used.
|
||||
|
||||
An args file simply contains an argument on each line, like this:
|
||||
|
||||
--docker-metrics
|
||||
--annotate all
|
||||
--grafana-baseurl http://localhost:3000/
|
||||
|
||||
@@ -55,7 +54,7 @@ An args file simply contains an argument on each line, like this:
|
||||
It is possible to pin an option to the default args file by use of the
|
||||
`--pin` meta-option. This option will take the following command line
|
||||
argument and add it to the currently active args file. That means, if
|
||||
you use `--pin --docker-metrics`, then `--docker-metrics` is added to
|
||||
you use `--pin --annotate all`, then `--annotate all` is added to
|
||||
the args file. If there is an exact duplicate of the same option
|
||||
and value, then it is skipped, but if the option name is the same
|
||||
with a different value, then it is added at the end. This allows
|
||||
@@ -98,7 +97,7 @@ parameter values, then you must provide the value as well, as in
|
||||
To simply set global defaults, you can run nosqlbench with a command
|
||||
line like this:
|
||||
|
||||
./nb --pin --docker-metrics-at metricsnode --pin --annotate all
|
||||
./nb --pin --annotate all
|
||||
|
||||
# Compatibility
|
||||
|
||||
|
||||
@@ -19,12 +19,6 @@
|
||||
# To provide your own contact points (comma separated), add the hosts= parameter
|
||||
./nb cql-iot hosts=host1,host2
|
||||
|
||||
# Additionally, if you have docker installed on your local system,
|
||||
# and your user has permissions to use it, you can use
|
||||
# --docker-metrics to stand up a live metrics dashboard at port 3000.
|
||||
|
||||
./nb cql-iot --docker-metrics
|
||||
|
||||
# Details on all command line options are available with
|
||||
|
||||
./nb help commandline
|
||||
|
||||
@@ -198,10 +198,6 @@ a logfile will be created for this name.
|
||||
|
||||
--session-name <name>
|
||||
|
||||
Enlist nosqlbench to stand up your metrics infrastructure using a local docker runtime:
|
||||
|
||||
--docker-metrics
|
||||
|
||||
When this option is set, nosqlbench will start graphite, prometheus, and grafana automatically on
|
||||
your local docker, configure them to work together, and point nosqlbench to send metrics the system
|
||||
automatically. It also imports a base dashboard for nosqlbench and configures grafana snapshot
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# docker-metrics
|
||||
|
||||
```
|
||||
NOTE: This feature has been removed and is no longer available.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Enlist nosqlbench to stand up your metrics infrastructure using a local
|
||||
docker runtime:
|
||||
|
||||
|
||||
@@ -76,14 +76,12 @@ public class RestHelper {
|
||||
if (resp.statusCode()==412) {
|
||||
logger.warn("Unable to configure dashboard, grafana precondition failed (status 412): " + resp.body());
|
||||
String err = "When trying to configure grafana, any errors indicate that you may be trying to RE-configure an instance." +
|
||||
" This may be a bug. If you already have a docker stack running, you can just use '--report-graphite-to localhost:9109'\n" +
|
||||
" instead of --docker-metrics.";
|
||||
" This may be a bug. If you already have a docker stack running, you can just use '--report-graphite-to localhost:9109'.";
|
||||
throw new BasicError(err);
|
||||
} else if (resp.statusCode()==401 && resp.body().contains("Invalid username")) {
|
||||
logger.warn("Unable to configure dashboard, grafana authentication failed (status " + resp.statusCode() + "): " + resp.body());
|
||||
String err = "Grafana does not have the same password as expected for a new container. We shouldn't be trying to add dashboards on an" +
|
||||
" existing container. This may be a bug. If you already have a docker stack running, you can just use '--report-graphite-to localhost:9109'" +
|
||||
" instead of --docker-metrics.";
|
||||
" existing container. This may be a bug. If you already have a docker stack running, you can just use '--report-graphite-to localhost:9109'.";
|
||||
throw new BasicError(err);
|
||||
} else if (resp.statusCode()<200 || resp.statusCode()>200) {
|
||||
logger.error("while trying to " + taskname +", received status code " + resp.statusCode() + " while trying to auto-configure grafana, with body:");
|
||||
|
||||
@@ -46,31 +46,4 @@ public class NBCliIntegrationTests {
|
||||
System.out.println(result.getStderrData());
|
||||
assertThat(result.exitStatus).isEqualTo(0);
|
||||
}
|
||||
// disabled till after release
|
||||
// This is not disabled on testbranch, only on main
|
||||
// @Test
|
||||
// public void dockerMetrics() {
|
||||
// ProcessInvoker invoker = new ProcessInvoker();
|
||||
// invoker.setLogDir("logs/test");
|
||||
//
|
||||
// // check for docker
|
||||
// ProcessResult result = invoker.run("docker-detection-test", 15,
|
||||
// "docker", "ps"
|
||||
// );
|
||||
//
|
||||
// System.out.println(result.getStdoutData());
|
||||
// System.out.println(result.getStderrData());
|
||||
//
|
||||
// if(result.exitStatus ==0) {
|
||||
// result = invoker.run("docker-metrics-test", 15,
|
||||
// "java", "-jar", JARNAME, "--logs-dir", "logs/test", "--docker-metrics"
|
||||
// );
|
||||
// System.out.println(result.getStdoutData());
|
||||
// System.out.println(result.getStderrData());
|
||||
// assertThat(result.exitStatus).isEqualTo(0);
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// logger.warn("skipped docker-metrics test because docker is not available");
|
||||
// }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user