Skip to content

Commit

Permalink
[ITDEVESP-594] - metrics tab more grafana-independent
Browse files Browse the repository at this point in the history
Change-Id: I8feb5053c27b61a93d38ab335083c6ac8f5d0337
  • Loading branch information
mproch committed Jul 25, 2018
1 parent 3de7830 commit 97e6bc8
Show file tree
Hide file tree
Showing 11 changed files with 66 additions and 44 deletions.
1 change: 0 additions & 1 deletion demo/docker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,4 @@ Running
You can set it in .env file.
* Sample file (.env) is provided. It assumes that jar with model is located in /tmp/code-assembly.jar
* getSampleAssembly.sh (./downloadSampleAssembly.sh ([version]) script is also provided. It can build sample model or downloaded released version.
* app/conf/application.conf has to have entry class configured, e.g. processConfigCreatorClass: "pl.touk.nussknacker.engine.example.ExampleProcessConfigCreator"
* docker-compose up :)
16 changes: 16 additions & 0 deletions demo/docker/app/conf/application.conf
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ flinkConfig {
classpath: ["code-assembly.jar"]
}

#TODO: remove after next release
grafanaSettings {
url: "/grafana/"
defaultDashboard: "flink-esp"
Expand All @@ -53,6 +54,21 @@ grafanaSettings {
password: "admin"
}

metricsSettings {
url: "/grafana/d/dashboard/db/$dashboard?theme=dark&var-processName=$process&var-env=demo"
defaultDashboard: "flink-esp"
processingTypeToDashboard: {
"request-response": "standalone",
"streaming": "flink-esp"
}
}

countsSettings {
influxUrl: "http://grafana:3000/api/datasources/proxy/1/query"
user: "admin"
password: "admin"
}

kibanaSettings {
url: "/kibana/"
}
Expand Down
2 changes: 1 addition & 1 deletion demo/docker/docker-compose-lite.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ services:
expose:
- "2003/udp"
grafana:
image: grafana/grafana:4.4.1
image: grafana/grafana:5.1.5
entrypoint: ["/runWithFlinkEspBoard.sh"]
volumes:
- ./grafana/runWithFlinkEspBoard.sh:/runWithFlinkEspBoard.sh
Expand Down
2 changes: 1 addition & 1 deletion demo/docker/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ services:
expose:
- "2003/udp"
grafana:
image: grafana/grafana:4.4.1
image: grafana/grafana:5.1.5
entrypoint: ["/runWithFlinkEspBoard.sh"]
volumes:
- ./grafana/runWithFlinkEspBoard.sh:/runWithFlinkEspBoard.sh
Expand Down
35 changes: 18 additions & 17 deletions docs/Configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,19 @@ flinkConfig {
jarPath: "./code-assembly.jar"
}
grafanaSettings {
url: "/grafana/"
dashboard: "flink-esp"
env: "demo"
metricsSettings {
url: "http://localhost:3000/dashboard/db/$dashboard?theme=dark&var-processName=$process&var-env=demo"
defaultDashboard: "flink-esp"
processingTypeToDashboard: {
"request-response": "standalone",
"streaming": "flink-esp"
}
}
kibanaSettings {
url: "/kibana/"
countsSettings {
influxUrl: "http://localhost:3000/api/datasources/proxy/1/query"
user: "admin"
password: "admin"
}
processConfig {
Expand Down Expand Up @@ -87,10 +92,13 @@ categoriesConfig: {

###Monitoring config
```
grafanaSettings {
url: "/grafana/"
dashboard: "flink-esp"
env: "demo"
metricsSettings {
url: "http://localhost:3000/dashboard/db/$dashboard?theme=dark&var-processName=$process&var-env=demo"
defaultDashboard: "flink-esp"
processingTypeToDashboard: {
"request-response": "standalone",
"streaming": "flink-esp"
}
}
```

Expand Down Expand Up @@ -126,11 +134,6 @@ flinkConfig {
parallelism: 4
}
configLocation: "/opt/flink/conf"
jobManagerTimeout: 1m
processConfig: "demo"
jarPath: "./code-assembly.jar"
classpath: ["./code-assembly.jar", "http://url.additional.code/link.jar"]
}
```
Expand All @@ -144,8 +147,6 @@ They can be defined in two ways:
In addition you can specify following values:

* jobManagerTimeout (e.g. 1m) - timeout used in communication with Flink cluster
* processConfig - name of config part that describes configuration of model (see below)
* jarPath - location of jar with model for processes *Deprecated - please use classpath*
* classpath - list of files/URLs with jars with model for processes

##Process {#model}
Expand Down
8 changes: 5 additions & 3 deletions nussknacker-dist/src/universal/conf/application.conf
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,17 @@ flinkConfig {
classpath: ["model/genericModel.jar"]
}

grafanaSettings {
url: "http://localhost:3000"
metricsSettings {
url: "http://localhost:3000/dashboard/db/$dashboard?theme=dark&var-processName=$process&var-env=demo"
#this assumes that dashboard flink-esp was created
defaultDashboard: "flink-esp"
processingTypeToDashboard: {
"request-response": "standalone",
"streaming": "flink-esp"
}
env: "demo"
}

countsSettings {
influxUrl: "http://localhost:3000/api/datasources/proxy/1/query"
user: "admin"
password: "admin"
Expand Down
19 changes: 9 additions & 10 deletions ui/client/containers/Metrics.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,17 @@ class Metrics extends React.Component {
return (<div/>)
}

var options = {
grafanaUrl: this.props.settings.url,
dashboard: this.getDashboardName(),
processName: this.props.params.processId || "All",
theme: 'dark',
env: this.props.settings.env
};
var iframeUrl = options.grafanaUrl + "/dashboard/db/" + options.dashboard + "?var-processName=" + options.processName
+ "&theme=" + options.theme + "&var-env=" + options.env
const url = this.props.settings.url;
//TODO: this is still a bit grafana specific...
const dashboard = this.getDashboardName();
const processName = this.props.params.processId || "All";

const finalIframeUrl = url
.replace("$dashboard", dashboard)
.replace("$process", processName)
return (
<div className="Page">
<iframe ref="metricsFrame" src={iframeUrl} width="100%" height={window.innerHeight} frameBorder="0"></iframe>
<iframe ref="metricsFrame" src={finalIframeUrl} width="100%" height={window.innerHeight} frameBorder="0"></iframe>
</div>
)
}
Expand Down
10 changes: 6 additions & 4 deletions ui/server/develConf/application.conf
Original file line number Diff line number Diff line change
Expand Up @@ -41,17 +41,19 @@ developmentMode: true
environment: "test"
attachmentsPath: "/tmp/attachments"

grafanaSettings {
url: "http://poc-esp1/grafana"
metricsSettings {
url: "http://localhost:8082/grafana/dashboard/db/$dashboard?theme=dark&var-processName=$process&var-env=test"
defaultDashboard: "flink-esp"
processingTypeToDashboard: {
"request-response": "standalone",
"streaming": "flink-esp"
}
env: "touk"
}

countsSettings {
user: ""
password: ""
influxUrl: "http://poc-esp2:8083"
influxUrl: "http://localhost:8083"
}

kibanaSettings {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class SettingsResources(config: FeatureTogglesConfig, nodesConfig: Map[String, S
}
}

case class GrafanaSettings(url: String, defaultDashboard: String, processingTypeToDashboard: Option[Map[String,String]], env: String)
case class MetricsSettings(url: String, defaultDashboard: String, processingTypeToDashboard: Option[Map[String,String]])
case class KibanaSettings(url: String)
case class RemoteEnvironmentConfig(targetEnvironmentId: String)
case class EnvironmentAlert(content: String, cssClass: String)
Expand All @@ -43,7 +43,7 @@ case class DeploySettings(requireComment: Boolean)

case class ToggleFeaturesOptions(counts: Boolean,
search: Option[KibanaSettings],
metrics: Option[GrafanaSettings],
metrics: Option[MetricsSettings],
remoteEnvironment: Option[RemoteEnvironmentConfig],
environmentAlert: Option[EnvironmentAlert],
commentSettings: Option[CommentSettings],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import pl.touk.nussknacker.engine.graph.expression.Expression
import pl.touk.nussknacker.engine.definition.TestingCapabilities
import pl.touk.nussknacker.engine.graph.node
import pl.touk.nussknacker.engine.marshall.ProcessMarshaller
import pl.touk.nussknacker.ui.api.{DisplayableUser, GrafanaSettings, ProcessObjects}
import pl.touk.nussknacker.ui.api.{DisplayableUser, MetricsSettings, ProcessObjects}
import pl.touk.nussknacker.ui.db.entity.ProcessEntity.{ProcessType, ProcessingType}
import pl.touk.nussknacker.ui.process.displayedgraph.displayablenode.{EdgeType, NodeAdditionalFields, ProcessAdditionalFields}
import pl.touk.nussknacker.ui.process.displayedgraph._
Expand Down Expand Up @@ -106,7 +106,7 @@ trait UiCodecs extends Codecs with Argonauts with SingletonInstances with Derive

implicit def processListEncode = EncodeJson.of[List[ProcessDetails]]

implicit def grafanaEncode = EncodeJson.of[GrafanaSettings]
implicit def grafanaEncode = EncodeJson.of[MetricsSettings]

implicit def userEncodeEncode = EncodeJson.of[DisplayableUser]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import pl.touk.process.report.influxdb.InfluxReporterConfig
case class FeatureTogglesConfig(development: Boolean,
standaloneMode: Boolean,
search: Option[KibanaSettings],
metrics: Option[GrafanaSettings],
metrics: Option[MetricsSettings],
remoteEnvironment: Option[HttpRemoteEnvironmentConfig],
counts: Option[InfluxReporterConfig],
environmentAlert:Option[EnvironmentAlert],
Expand All @@ -29,8 +29,11 @@ object FeatureTogglesConfig extends LazyLogging{
val environmentAlert = parseOptionalConfig[EnvironmentAlert](config, "environmentAlert")
val isDevelopmentMode = config.hasPath("developmentMode") && config.getBoolean("developmentMode")
val standaloneModeEnabled = config.hasPath("standaloneModeEnabled") && config.getBoolean("standaloneModeEnabled")
val metrics = parseOptionalConfig[GrafanaSettings](config, "grafanaSettings")
val counts = parseOptionalConfig[InfluxReporterConfig](config, "grafanaSettings")
val metrics = parseOptionalConfig[MetricsSettings](config, "metricsSettings")
.orElse(parseOptionalConfig[MetricsSettings](config, "grafanaSettings"))
val counts = parseOptionalConfig[InfluxReporterConfig](config, "countsSettings")
.orElse(parseOptionalConfig[InfluxReporterConfig](config, "grafanaSettings"))

val remoteEnvironment = parseOptionalConfig[HttpRemoteEnvironmentConfig](config, "secondaryEnvironment")
val search = parseOptionalConfig[KibanaSettings](config, "kibanaSettings")
val commentSettings = parseOptionalConfig[CommentSettings](config, "commentSettings")
Expand Down

0 comments on commit 97e6bc8

Please sign in to comment.