mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 01:13:23 -04:00
Merge remote-tracking branch 'upstream/master' into feature/issue-147
This commit is contained in:
commit
6ebf94bb62
7 changed files with 76 additions and 18 deletions
|
@ -124,6 +124,7 @@ public class AgentService extends AbstractLifecycleComponent<AgentService> imple
|
|||
nodeSettingsService.addListener(this);
|
||||
dynamicSettings.addDynamicSetting(SETTINGS_INTERVAL);
|
||||
dynamicSettings.addDynamicSetting(SETTINGS_INDICES + ".*"); // array settings
|
||||
dynamicSettings.addDynamicSetting(SETTINGS_SHARD_STATS_ENABLED);
|
||||
}
|
||||
|
||||
protected void applyIntervalSettings() {
|
||||
|
@ -202,6 +203,12 @@ public class AgentService extends AbstractLifecycleComponent<AgentService> imple
|
|||
logger.info("sampling indices updated to [{}]", Strings.arrayToCommaDelimitedString(indices));
|
||||
indicesToExport = indices;
|
||||
}
|
||||
|
||||
Boolean shardsExport = settings.getAsBoolean(SETTINGS_SHARD_STATS_ENABLED, null);
|
||||
if (shardsExport != null) {
|
||||
logger.info("updating " + SETTINGS_SHARD_STATS_ENABLED + " to [" + shardsExport + "]");
|
||||
exportShardStats = shardsExport;
|
||||
}
|
||||
}
|
||||
|
||||
class ExportingWorker implements Runnable {
|
||||
|
|
|
@ -48,10 +48,7 @@ import org.elasticsearch.marvel.agent.Utils;
|
|||
import org.elasticsearch.marvel.agent.event.Event;
|
||||
import org.elasticsearch.node.settings.NodeSettingsService;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.io.*;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.net.URLEncoder;
|
||||
|
@ -398,7 +395,11 @@ public class ESExporter extends AbstractLifecycleComponent<ESExporter> implement
|
|||
private boolean checkAndUploadIndexTemplate() {
|
||||
byte[] template;
|
||||
try {
|
||||
template = Streams.copyToBytesFromClasspath("/marvel_index_template.json");
|
||||
InputStream is = ESExporter.class.getResourceAsStream("/marvel_index_template.json");
|
||||
if (is == null) {
|
||||
throw new FileNotFoundException("Resource [/marvel_index_template.json] not found in classpath");
|
||||
}
|
||||
template = Streams.copyToByteArray(is);
|
||||
} catch (IOException e) {
|
||||
// throwing an exception to stop exporting process - we don't want to send data unless
|
||||
// we put in the template for it.
|
||||
|
|
|
@ -1,6 +1,29 @@
|
|||
[[change_list]]
|
||||
== Change list
|
||||
|
||||
=== 1.1.0
|
||||
- Improved Sense's autocomplete suggestions:
|
||||
* Added Snapshot & Restore
|
||||
* Added Aggregations
|
||||
* Added support for url query string parameters
|
||||
* Updated for breaking changes in Elasticsearch 1.0
|
||||
- Updated welcome splash screen.
|
||||
- Sense now uses the last used server when opened (previously used the hostname used to access it).
|
||||
- The agent's keep-alive thread is now stopped upon errors to reduce log noise. It will be restarted
|
||||
upon successful connection.
|
||||
- Improved error reporting for failures of items in the agent's bulk requests.
|
||||
- Index Statistics Dashboard: Indexing Rate Primaries chart was based on the wrong field.
|
||||
- Introduced `marvel.agent.shard_stats.enabled` to control exporting of shard level statistics. Defaults to `false`.
|
||||
- Changed agent's default sampling rate to 10s (was 5s)
|
||||
- Added a visual indication for the master node at the Nodes section of the Overview Dashboard
|
||||
- Node and Indices tables visually indicate stale data
|
||||
- Added error reporting to nodes and indices tables
|
||||
- Made the following agent settings changeable via the Cluster Update Settings API:
|
||||
* marvel.agent.interval (also supports setting to -1 to disable exporting)
|
||||
* marvel.agent.exporter.es.hosts
|
||||
* marvel.agent.exporter.es.timeout
|
||||
* marvel.agent.shard_stats.enabled
|
||||
|
||||
=== 1.0.2
|
||||
- Kibana uses `window.location.protocol` (http or https) to make ES calls.
|
||||
- Added support for basic authentication when sending data from agent. See <<configuration>>.
|
||||
|
|
|
@ -10,6 +10,8 @@ A list of hosts in `hostname:port` format to which statistics and events will
|
|||
be sent. Data will be sent to the first host, but will failover to the next
|
||||
host(s) if the first is not reachable. Defaults to `["localhost:9200"]`.
|
||||
+
|
||||
This setting is update-able via the Cluster Update Settings API.
|
||||
+
|
||||
added[1.0.2] - HTTP Basic authentication credentials can be specified as part of the host name,
|
||||
i.e., ["user:pwd@host:9200"]
|
||||
|
||||
|
@ -26,11 +28,15 @@ to avoid collecting data from the monitoring cluster itself.
|
|||
Controls which indices to export data for. Uses simple `test1,test2,test3`
|
||||
notation (or `_all` for all indices). It also supports wildcards, for
|
||||
example: `test*`, and the ability to "add" (`+`) and "remove" (`-`), for
|
||||
example: `+test*,-test3`. Defaults to `*`
|
||||
example: `+test*,-test3`. Defaults to `*`.
|
||||
+
|
||||
This setting is update-able via the Cluster Update Settings API.
|
||||
|
||||
`marvel.agent.interval`::
|
||||
|
||||
Controls the interval between data samples. Defaults to `5s`.
|
||||
Controls the interval between data samples. Defaults to `5s`. Set to `-1` to temporarily disable exporting.
|
||||
+
|
||||
This setting is update-able via the Cluster Update Settings API.
|
||||
|
||||
`marvel.agent.exporter.es.index.timeformat`::
|
||||
|
||||
|
@ -42,6 +48,14 @@ http://joda-time.sourceforge.net/api-release/org/joda/time/format/DateTimeFormat
|
|||
`marvel.agent.exporter.es.timeout`::
|
||||
|
||||
Sets the connection timeout for sending data. Defaults to `6s`.
|
||||
+
|
||||
This setting is update-able via the Cluster Update Settings API.
|
||||
|
||||
`marvel.agent.shard_stats.enabled`::
|
||||
|
||||
Enables or disable exporting of shard level statistics. Defaults to `false`.
|
||||
+
|
||||
This setting is update-able via the Cluster Update Settings API.
|
||||
|
||||
|
||||
[[marvel-indices]]
|
||||
|
|
|
@ -16,7 +16,7 @@ include::dashboards.asciidoc[]
|
|||
[horizontal]
|
||||
Elasticsearch:: 0.90.9 or above
|
||||
Browser:: The latest version of Chrome, Firefox or Safari is
|
||||
recommended. Internet Explorer 9 and above is also supported.
|
||||
recommended. Internet Explorer 10 and above is also supported.
|
||||
|
||||
|
||||
include::install.asciidoc[]
|
||||
|
|
|
@ -109,8 +109,18 @@ allocation] before you restart your nodes to avoid unnecessary shard
|
|||
reallocation during the install process.
|
||||
|
||||
|
||||
[[previous_versions]]
|
||||
=== Installing previous versions
|
||||
|
||||
Previously released versions of Marvel are available by specifying an exact version. For example:
|
||||
|
||||
[source,sh]
|
||||
----------------
|
||||
bin/plugin -i elasticsearch/marvel/1.0.2
|
||||
----------------
|
||||
|
||||
[[manual_download]]
|
||||
==== Manual download
|
||||
=== Manual download
|
||||
|
||||
Elasticsearch's `bin/plugin` script requires direct internet access for downloading
|
||||
and installing Marvel. If your server doesn't have internet access, you can download
|
||||
|
|
|
@ -32,6 +32,9 @@
|
|||
height: 10px;
|
||||
width: 50px;
|
||||
}
|
||||
.marvel-stats-sparkline.compact {
|
||||
margin-left: 5px;
|
||||
}
|
||||
.marvel-muted .mutable {
|
||||
opacity: 0.3;
|
||||
}
|
||||
|
@ -52,14 +55,14 @@
|
|||
<!-- full view -->
|
||||
<table bindonce class="table table-bordered" ng-if="!panel.compact">
|
||||
<thead>
|
||||
<th class="pointer" ng-click="set_sort('__name__')">
|
||||
{{panel.mode}}
|
||||
<th class="pointer">
|
||||
<span ng-click="set_sort('__name__')">{{panel.mode}}</span>
|
||||
<i ng-show="'__name__' == panel.sort[0]" class="pointer link" ng-class="{'icon-chevron-up': panel.sort[1] == 'asc','icon-chevron-down': panel.sort[1] == 'desc'}"></i>
|
||||
<a ng-disabled="!hasSelected()" id="detail_view_link" ng-href="{{detailViewLink()}}" class="btn btn-mini btn-info pull-right" bs-tooltip="detailViewTip()" data-placement="right">Dashboard</a>
|
||||
</th>
|
||||
|
||||
<th ng-repeat="metric in panel.metrics" ng-class="alertClass(warnLevels[metric.field])" class="pointer" ng-click="set_sort(metric.field)">
|
||||
{{metric.name}}
|
||||
<th ng-repeat="metric in panel.metrics" ng-class="alertClass(warnLevels[metric.field])" class="pointer">
|
||||
<span ng-click="set_sort(metric.field)">{{metric.name}}</span>
|
||||
<i ng-show='metric.field == panel.sort[0]' class="pointer link" ng-class="{'icon-chevron-up': panel.sort[1] == 'asc','icon-chevron-down': panel.sort[1] == 'desc'}"></i>
|
||||
</th>
|
||||
</thead>
|
||||
|
@ -95,14 +98,14 @@
|
|||
<!-- compact view -->
|
||||
<table bindonce class="table table-bordered table-condensed marvel-table" ng-if="panel.compact">
|
||||
<thead>
|
||||
<th class="pointer" ng-click="set_sort('__name__')">
|
||||
{{panel.mode}}
|
||||
<th class="pointer">
|
||||
<span ng-click="set_sort('__name__')">{{panel.mode}}</span>
|
||||
<i ng-show="'__name__' == panel.sort[0]" class="pointer link" ng-class="{'icon-chevron-up': panel.sort[1] == 'asc','icon-chevron-down': panel.sort[1] == 'desc'}"></i>
|
||||
<a ng-disabled="!hasSelected()" id="detail_view_link" ng-href="{{detailViewLink()}}" class="btn btn-mini btn-info pull-right" bs-tooltip="detailViewTip()" data-placement="right">Dashboard</a>
|
||||
</th>
|
||||
|
||||
<th ng-repeat="metric in panel.metrics" ng-class="alertClass(warnLevels[metric.field])" class="pointer" ng-click="set_sort(metric.field)">
|
||||
{{metric.name}}
|
||||
<th ng-repeat="metric in panel.metrics" ng-class="alertClass(warnLevels[metric.field])" class="pointer">
|
||||
<span ng-click="set_sort(metric.field)">{{metric.name}}</span>
|
||||
<i ng-show='metric.field == panel.sort[0]' class="pointer link" ng-class="{'icon-chevron-up': panel.sort[1] == 'asc','icon-chevron-down': panel.sort[1] == 'desc'}"></i>
|
||||
</th>
|
||||
</thead>
|
||||
|
@ -121,7 +124,7 @@
|
|||
<div class="pointer" ng-click="rowClick(row,metric)">
|
||||
<span bo-text="(_.isNull(row[metric.field].value)?'n/a':row[metric.field].value) | metric_format:metric"></span>
|
||||
|
||||
<div ng-if="sparkLines" class="marvel-stats-sparkline pointer" ng-click="rowClick(row,metric)" panel='panel' field="metric.field" series="row[metric.field].series"></div>
|
||||
<div ng-if="sparkLines" class="marvel-stats-sparkline compact pointer" ng-click="rowClick(row,metric)" panel='panel' field="metric.field" series="row[metric.field].series"></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue