mirror of https://github.com/ceph/ceph
755 lines
22 KiB
Plaintext
755 lines
22 KiB
Plaintext
local g = import 'grafonnet/grafana.libsonnet';
|
|
local pieChartPanel = import 'piechart_panel.libsonnet';
|
|
local timeSeries = import 'timeseries_panel.libsonnet';
|
|
|
|
{
|
|
_config:: error 'must provide _config',
|
|
|
|
dashboardSchema(title,
|
|
description,
|
|
uid,
|
|
time_from,
|
|
refresh,
|
|
schemaVersion,
|
|
tags,
|
|
timezone)::
|
|
g.dashboard.new(title=title,
|
|
description=description,
|
|
uid=uid,
|
|
time_from=time_from,
|
|
refresh=refresh,
|
|
schemaVersion=schemaVersion,
|
|
tags=tags,
|
|
timezone=timezone),
|
|
|
|
graphPanelSchema(aliasColors,
|
|
title,
|
|
description,
|
|
nullPointMode,
|
|
stack,
|
|
formatY1,
|
|
formatY2,
|
|
labelY1,
|
|
labelY2,
|
|
min,
|
|
fill,
|
|
datasource,
|
|
legend_alignAsTable=false,
|
|
legend_avg=false,
|
|
legend_min=false,
|
|
legend_max=false,
|
|
legend_current=false,
|
|
legend_values=false)::
|
|
g.graphPanel.new(aliasColors=aliasColors,
|
|
title=title,
|
|
description=description,
|
|
nullPointMode=nullPointMode,
|
|
stack=stack,
|
|
formatY1=formatY1,
|
|
formatY2=formatY2,
|
|
labelY1=labelY1,
|
|
labelY2=labelY2,
|
|
min=min,
|
|
fill=fill,
|
|
datasource=datasource,
|
|
legend_alignAsTable=legend_alignAsTable,
|
|
legend_avg=legend_avg,
|
|
legend_min=legend_min,
|
|
legend_max=legend_max,
|
|
legend_current=legend_current,
|
|
legend_values=legend_values),
|
|
|
|
|
|
addTargetSchema(
|
|
expr,
|
|
legendFormat='',
|
|
format='time_series',
|
|
intervalFactor=1,
|
|
instant=null,
|
|
datasource=null,
|
|
step=null,
|
|
interval=null,
|
|
range=null,
|
|
hide=null,
|
|
metric=null,
|
|
aggregation=null,
|
|
alias=null,
|
|
decimals=null,
|
|
displayAliasType=null,
|
|
displayType=null,
|
|
displayValueWithAlias=null,
|
|
units=null,
|
|
valueHandler=null,
|
|
warn=null,
|
|
crit=null,
|
|
exemplar=null,
|
|
)::
|
|
g.prometheus.target(expr=expr,
|
|
legendFormat=legendFormat,
|
|
format=format,
|
|
intervalFactor=intervalFactor,
|
|
instant=instant,
|
|
datasource=datasource) + {
|
|
[if step != null then 'step']: step,
|
|
[if interval != null then 'interval']: interval,
|
|
[if range != null then 'range']: range,
|
|
[if hide != null then 'hide']: hide,
|
|
[if metric != null then 'metric']: metric,
|
|
[if aggregation != null then 'aggregation']: aggregation,
|
|
[if alias != null then 'alias']: alias,
|
|
[if decimals != null then 'decimals']: decimals,
|
|
[if displayAliasType != null then 'displayAliasType']: displayAliasType,
|
|
[if displayType != null then 'displayType']: displayType,
|
|
[if displayValueWithAlias != null then 'displayValueWithAlias']: displayValueWithAlias,
|
|
[if units != null then 'units']: units,
|
|
[if valueHandler != null then 'valueHandler']: valueHandler,
|
|
[if warn != null then 'warn']: warn,
|
|
[if crit != null then 'crit']: crit,
|
|
[if exemplar != null then 'exemplar']: exemplar,
|
|
},
|
|
|
|
addTemplateSchema(name,
|
|
datasource,
|
|
query,
|
|
refresh,
|
|
includeAll,
|
|
sort,
|
|
label,
|
|
regex,
|
|
hide='',
|
|
multi=false,
|
|
allValues=null,
|
|
current=null)::
|
|
g.template.new(name=name,
|
|
datasource=datasource,
|
|
query=query,
|
|
refresh=refresh,
|
|
includeAll=includeAll,
|
|
sort=sort,
|
|
label=label,
|
|
regex=regex,
|
|
hide=hide,
|
|
multi=multi,
|
|
allValues=allValues,
|
|
current=current),
|
|
|
|
addAnnotationSchema(builtIn,
|
|
datasource,
|
|
enable,
|
|
hide,
|
|
iconColor,
|
|
name,
|
|
type)::
|
|
g.annotation.datasource(builtIn=builtIn,
|
|
datasource=datasource,
|
|
enable=enable,
|
|
hide=hide,
|
|
iconColor=iconColor,
|
|
name=name,
|
|
type=type),
|
|
|
|
addRowSchema(
|
|
collapse,
|
|
showTitle,
|
|
title,
|
|
collapsed=null
|
|
)::
|
|
g.row.new(collapse=collapse, showTitle=showTitle, title=title) + {
|
|
[if collapsed != null then 'collapsed']: collapsed,
|
|
},
|
|
|
|
addSingleStatSchema(colors,
|
|
datasource,
|
|
format,
|
|
title,
|
|
description,
|
|
valueName,
|
|
colorValue,
|
|
gaugeMaxValue,
|
|
gaugeShow,
|
|
sparklineShow,
|
|
thresholds)::
|
|
g.singlestat.new(colors=colors,
|
|
datasource=datasource,
|
|
format=format,
|
|
title=title,
|
|
description=description,
|
|
valueName=valueName,
|
|
colorValue=colorValue,
|
|
gaugeMaxValue=gaugeMaxValue,
|
|
gaugeShow=gaugeShow,
|
|
sparklineShow=sparklineShow,
|
|
thresholds=thresholds),
|
|
|
|
addPieChartSchema(aliasColors,
|
|
datasource,
|
|
description,
|
|
legendType,
|
|
pieType,
|
|
title,
|
|
valueName)::
|
|
g.pieChartPanel.new(aliasColors=aliasColors,
|
|
datasource=datasource,
|
|
description=description,
|
|
legendType=legendType,
|
|
pieType=pieType,
|
|
title=title,
|
|
valueName=valueName),
|
|
|
|
addStyle(alias,
|
|
colorMode,
|
|
colors,
|
|
dateFormat,
|
|
decimals,
|
|
mappingType,
|
|
pattern,
|
|
thresholds,
|
|
type,
|
|
unit,
|
|
valueMaps)::
|
|
{
|
|
alias: alias,
|
|
colorMode: colorMode,
|
|
colors: colors,
|
|
dateFormat: dateFormat,
|
|
decimals: decimals,
|
|
mappingType: mappingType,
|
|
pattern: pattern,
|
|
thresholds: thresholds,
|
|
type: type,
|
|
unit: unit,
|
|
valueMaps: valueMaps,
|
|
},
|
|
|
|
matchers()::
|
|
local clusterMatcher = '%s=~"$cluster"' % $._config.clusterLabel;
|
|
{
|
|
// Common labels
|
|
matchers: (if $._config.showMultiCluster then clusterMatcher + ', ' else ''),
|
|
},
|
|
|
|
|
|
addClusterTemplate()::
|
|
$.addTemplateSchema(
|
|
'cluster',
|
|
'$datasource',
|
|
'label_values(ceph_health_status, %s)' % $._config.clusterLabel,
|
|
1,
|
|
false,
|
|
1,
|
|
'cluster',
|
|
'(.*)',
|
|
if !$._config.showMultiCluster then 'variable' else '',
|
|
multi=false,
|
|
allValues=null,
|
|
),
|
|
|
|
overviewStyle(alias,
|
|
pattern,
|
|
type,
|
|
unit,
|
|
colorMode=null,
|
|
thresholds=[],
|
|
valueMaps=[])::
|
|
$.addStyle(alias,
|
|
colorMode,
|
|
[
|
|
'rgba(245, 54, 54, 0.9)',
|
|
'rgba(237, 129, 40, 0.89)',
|
|
'rgba(50, 172, 45, 0.97)',
|
|
],
|
|
'YYYY-MM-DD HH:mm:ss',
|
|
2,
|
|
1,
|
|
pattern,
|
|
thresholds,
|
|
type,
|
|
unit,
|
|
valueMaps),
|
|
|
|
simpleGraphPanel(alias,
|
|
title,
|
|
description,
|
|
formatY1,
|
|
labelY1,
|
|
min,
|
|
expr,
|
|
legendFormat,
|
|
x,
|
|
y,
|
|
w,
|
|
h)::
|
|
$.graphPanelSchema(alias,
|
|
title,
|
|
description,
|
|
'null',
|
|
false,
|
|
formatY1,
|
|
'short',
|
|
labelY1,
|
|
null,
|
|
min,
|
|
1,
|
|
'$datasource')
|
|
.addTargets(
|
|
[$.addTargetSchema(expr, legendFormat)]
|
|
) + { type: 'timeseries' } + { fieldConfig: { defaults: { unit: formatY1, custom: { fillOpacity: 8, showPoints: 'never' } } } } + { gridPos: { x: x, y: y, w: w, h: h } },
|
|
|
|
simpleSingleStatPanel(format,
|
|
title,
|
|
description,
|
|
valueName,
|
|
expr,
|
|
instant,
|
|
targetFormat,
|
|
x,
|
|
y,
|
|
w,
|
|
h)::
|
|
$.addSingleStatSchema(['#299c46', 'rgba(237, 129, 40, 0.89)', '#d44a3a'],
|
|
'$datasource',
|
|
format,
|
|
title,
|
|
description,
|
|
valueName,
|
|
false,
|
|
100,
|
|
false,
|
|
false,
|
|
'')
|
|
.addTarget($.addTargetSchema(expr, '', targetFormat, 1, instant)) + {
|
|
gridPos: { x: x, y: y, w: w, h: h },
|
|
},
|
|
gaugeSingleStatPanel(format,
|
|
title,
|
|
description,
|
|
valueName,
|
|
colorValue,
|
|
gaugeMaxValue,
|
|
gaugeShow,
|
|
sparkLineShow,
|
|
thresholds,
|
|
expr,
|
|
targetFormat,
|
|
x,
|
|
y,
|
|
w,
|
|
h)::
|
|
$.addSingleStatSchema(['#299c46', 'rgba(237, 129, 40, 0.89)', '#d44a3a'],
|
|
'$datasource',
|
|
format,
|
|
title,
|
|
description,
|
|
valueName,
|
|
colorValue,
|
|
gaugeMaxValue,
|
|
gaugeShow,
|
|
sparkLineShow,
|
|
thresholds)
|
|
.addTarget($.addTargetSchema(expr, '', targetFormat)) + { gridPos: { x:
|
|
x, y: y, w: w, h: h } },
|
|
|
|
simplePieChart(alias, description, title)::
|
|
$.addPieChartSchema(alias,
|
|
'$datasource',
|
|
description,
|
|
'Under graph',
|
|
'pie',
|
|
title,
|
|
'current'),
|
|
|
|
addStatPanel(
|
|
title,
|
|
description='',
|
|
transparent=false,
|
|
datasource=null,
|
|
color={},
|
|
unit='none',
|
|
overrides=[],
|
|
gridPosition={},
|
|
colorMode='none',
|
|
graphMode='none',
|
|
justifyMode='auto',
|
|
orientation='horizontal',
|
|
textMode='auto',
|
|
reducerFunction='lastNotNull',
|
|
pluginVersion='9.1.3',
|
|
decimals=0,
|
|
interval=null,
|
|
maxDataPoints=null,
|
|
thresholdsMode='absolute',
|
|
rootColorMode=null,
|
|
rootColors=null,
|
|
cornerRadius=null,
|
|
flipCard=null,
|
|
flipTime=null,
|
|
fontFormat=null,
|
|
displayName=null,
|
|
isAutoScrollOnOverflow=null,
|
|
isGrayOnNoData=null,
|
|
isHideAlertsOnDisable=null,
|
|
isIgnoreOKColors=null,
|
|
)::
|
|
g.statPanel.new(
|
|
title=title,
|
|
description=description,
|
|
transparent=transparent,
|
|
datasource=datasource,
|
|
unit=unit,
|
|
colorMode=colorMode,
|
|
graphMode=graphMode,
|
|
justifyMode=justifyMode,
|
|
orientation=orientation,
|
|
textMode=textMode,
|
|
reducerFunction=reducerFunction,
|
|
pluginVersion=pluginVersion,
|
|
decimals=decimals,
|
|
thresholdsMode=thresholdsMode,
|
|
) + {
|
|
[if interval != null then 'interval']: interval,
|
|
[if maxDataPoints != null then 'maxDataPoints']: maxDataPoints,
|
|
[if gridPosition != {} then 'gridPos']: gridPosition,
|
|
[if rootColorMode != null then 'colorMode']: rootColorMode,
|
|
[if rootColors != {} then 'colors']: rootColors,
|
|
[if cornerRadius != null then 'cornerRadius']: cornerRadius,
|
|
[if flipCard != null then 'flipCard']: flipCard,
|
|
[if flipTime != null then 'flipTime']: flipTime,
|
|
[if fontFormat != null then 'fontFormat']: fontFormat,
|
|
[if displayName != null then 'displayName']: displayName,
|
|
[if isAutoScrollOnOverflow != null then 'isAutoScrollOnOverflow']: isAutoScrollOnOverflow,
|
|
[if isGrayOnNoData != null then 'isGrayOnNoData']: isGrayOnNoData,
|
|
[if isHideAlertsOnDisable != null then 'isHideAlertsOnDisable']: isHideAlertsOnDisable,
|
|
[if isIgnoreOKColors != null then 'isIgnoreOKColors']: isIgnoreOKColors,
|
|
},
|
|
|
|
addAlertListPanel(
|
|
title,
|
|
datasource=null,
|
|
gridPosition={},
|
|
alertInstanceLabelFilter=null,
|
|
alertName=null,
|
|
dashboardAlerts=null,
|
|
groupBy=null,
|
|
groupMode=null,
|
|
maxItems=null,
|
|
sortOrder=null,
|
|
stateFilter=null,
|
|
viewMode='list'
|
|
)::
|
|
g.alertlist.new(
|
|
title=title,
|
|
datasource=datasource,
|
|
) + {
|
|
gridPos: gridPosition,
|
|
options: {
|
|
[if alertInstanceLabelFilter != null then 'alertInstanceLabelFilter']: alertInstanceLabelFilter,
|
|
[if alertName != null then 'alertName']: alertName,
|
|
[if dashboardAlerts != null then 'dashboardAlerts']: dashboardAlerts,
|
|
[if groupBy != null then 'groupBy']: groupBy,
|
|
[if groupMode != null then 'groupMode']: groupMode,
|
|
[if maxItems != null then 'maxItems']: maxItems,
|
|
[if sortOrder != null then 'sortOrder']: sortOrder,
|
|
[if stateFilter != null then 'stateFilter']: stateFilter,
|
|
viewMode: viewMode,
|
|
},
|
|
},
|
|
|
|
addCustomTemplate(name='',
|
|
query='',
|
|
current='',
|
|
valuelabels={},
|
|
refresh=0,
|
|
label='Interval',
|
|
auto_count=10,
|
|
auto_min='2m',
|
|
options=[],
|
|
auto=null)::
|
|
g.template.interval(name=name,
|
|
query=query,
|
|
current=current,
|
|
label=label,
|
|
auto_count=auto_count,
|
|
auto_min=auto_min,) + {
|
|
options: options,
|
|
refresh: refresh,
|
|
valuelabels: valuelabels,
|
|
[if auto != null then 'auto']: auto,
|
|
},
|
|
|
|
addGaugePanel(title='',
|
|
description='',
|
|
transparent=false,
|
|
datasource='$datasource',
|
|
gridPosition={},
|
|
pluginVersion='9.1.3',
|
|
unit='percentunit',
|
|
instant=false,
|
|
reducerFunction='lastNotNull',
|
|
steps=[],
|
|
max=1,
|
|
min=0,
|
|
maxDataPoints=100,
|
|
interval='1m')::
|
|
g.gaugePanel.new(title=title,
|
|
description=description,
|
|
transparent=transparent,
|
|
datasource=datasource,
|
|
pluginVersion=pluginVersion,
|
|
unit=unit,
|
|
reducerFunction=reducerFunction,
|
|
max=max,
|
|
min=min) + {
|
|
gridPos: gridPosition,
|
|
maxDataPoints: maxDataPoints,
|
|
interval: interval,
|
|
},
|
|
|
|
addBarGaugePanel(title='',
|
|
description='',
|
|
datasource='${DS_PROMETHEUS}',
|
|
gridPosition={},
|
|
unit='percentunit',
|
|
thresholds={})::
|
|
g.barGaugePanel.new(title, description, datasource, unit, thresholds) + {
|
|
gridPos: gridPosition,
|
|
},
|
|
addTableExtended(
|
|
title='',
|
|
datasource=null,
|
|
description=null,
|
|
sort=null,
|
|
styles='',
|
|
transform=null,
|
|
pluginVersion='9.1.3',
|
|
options=null,
|
|
gridPosition={},
|
|
custom=null,
|
|
decimals=null,
|
|
thresholds=null,
|
|
unit=null,
|
|
overrides=[],
|
|
color=null
|
|
)::
|
|
g.tablePanel.new(datasource=datasource,
|
|
description=description,
|
|
sort=sort,
|
|
styles=styles,
|
|
title=title,
|
|
transform=transform) + {
|
|
pluginVersion: pluginVersion,
|
|
gridPos: gridPosition,
|
|
[if options != null then 'options']: options,
|
|
fieldConfig+: {
|
|
defaults+: {
|
|
[if custom != null then 'custom']: custom,
|
|
[if decimals != null then 'decimals']: decimals,
|
|
[if thresholds != null then 'thresholds']: thresholds,
|
|
[if unit != null then 'unit']: unit,
|
|
[if color != null then 'color']: color,
|
|
|
|
},
|
|
overrides: overrides,
|
|
},
|
|
},
|
|
timeSeriesPanel(
|
|
title='',
|
|
datasource=null,
|
|
gridPosition={},
|
|
colorMode='palette-classic',
|
|
axisCenteredZero=false,
|
|
axisColorMode='text',
|
|
axisLabel='',
|
|
axisPlacement='auto',
|
|
barAlignment=0,
|
|
drawStyle='line',
|
|
fillOpacity=0,
|
|
gradientMode='none',
|
|
lineInterpolation='linear',
|
|
lineWidth=0,
|
|
pointSize=0,
|
|
scaleDistributionType='linear',
|
|
showPoints='',
|
|
spanNulls=false,
|
|
stackingGroup='A',
|
|
stackingMode='none',
|
|
thresholdsStyleMode='off',
|
|
decimals=null,
|
|
thresholdsMode='absolute',
|
|
unit='none',
|
|
tooltip={ mode: 'multi', sort: 'none' },
|
|
pluginVersion='9.1.3',
|
|
displayMode='list',
|
|
placement='bottom',
|
|
showLegend=true,
|
|
interval=null,
|
|
min=null,
|
|
scaleDistributionLog=null,
|
|
sortBy=null,
|
|
sortDesc=null,
|
|
)::
|
|
timeSeries.new(
|
|
title=title,
|
|
gridPos=gridPosition,
|
|
datasource=datasource,
|
|
colorMode=colorMode,
|
|
axisCenteredZero=axisCenteredZero,
|
|
axisColorMode=axisColorMode,
|
|
axisLabel=axisLabel,
|
|
axisPlacement=axisPlacement,
|
|
barAlignment=barAlignment,
|
|
drawStyle=drawStyle,
|
|
fillOpacity=fillOpacity,
|
|
gradientMode=gradientMode,
|
|
lineInterpolation=lineInterpolation,
|
|
lineWidth=lineWidth,
|
|
pointSize=pointSize,
|
|
scaleDistributionType=scaleDistributionType,
|
|
showPoints=showPoints,
|
|
spanNulls=spanNulls,
|
|
stackingGroup=stackingGroup,
|
|
stackingMode=stackingMode,
|
|
thresholdsStyleMode=thresholdsStyleMode,
|
|
decimals=decimals,
|
|
thresholdsMode=thresholdsMode,
|
|
unit=unit,
|
|
displayMode=displayMode,
|
|
placement=placement,
|
|
showLegend=showLegend,
|
|
tooltip=tooltip,
|
|
min=min,
|
|
scaleDistributionLog=scaleDistributionLog,
|
|
sortBy=sortBy,
|
|
sortDesc=sortDesc,
|
|
) + {
|
|
pluginVersion: pluginVersion,
|
|
[if interval != null then 'interval']: interval,
|
|
},
|
|
|
|
pieChartPanel(
|
|
title,
|
|
description='',
|
|
datasource=null,
|
|
gridPos={},
|
|
displayMode='table',
|
|
placement='bottom',
|
|
showLegend=true,
|
|
displayLabels=[],
|
|
tooltip={},
|
|
pieType='pie',
|
|
values=[],
|
|
colorMode='auto',
|
|
overrides=[],
|
|
reduceOptions={},
|
|
)::
|
|
pieChartPanel.new(
|
|
title,
|
|
description=description,
|
|
datasource=datasource,
|
|
gridPos=gridPos,
|
|
displayMode=displayMode,
|
|
placement=placement,
|
|
showLegend=showLegend,
|
|
displayLabels=displayLabels,
|
|
tooltip=tooltip,
|
|
pieType=pieType,
|
|
values=values,
|
|
colorMode=colorMode,
|
|
overrides=overrides,
|
|
reduceOptions=reduceOptions,
|
|
),
|
|
|
|
heatMapPanel(
|
|
title='',
|
|
datasource=null,
|
|
gridPosition={},
|
|
colorMode='spectrum',
|
|
cardColor='#b4ff00',
|
|
colorScale='sqrt',
|
|
colorScheme='interpolateOranges',
|
|
colorExponent=0.5,
|
|
pluginVersion='9.1.3',
|
|
dataFormat='timeseries',
|
|
hideFrom={ legend: false, tooltip: false, viz: false },
|
|
scaleDistributionType='linear',
|
|
legendShow=false,
|
|
optionsCalculate=false,
|
|
optionsCalculation={
|
|
yBuckets: {
|
|
mode: 'count',
|
|
scale: { log: 2, type: 'log' },
|
|
value: '1',
|
|
},
|
|
},
|
|
optionsCellGap=2,
|
|
optionsCellValues={},
|
|
optionsColor={},
|
|
optionsExemplars={},
|
|
optionsFilterValues={},
|
|
optionsLegend={},
|
|
optionsRowFrame={},
|
|
optionsShowValue='never',
|
|
optionsToolTip={},
|
|
optionsYAxis={},
|
|
xBucketSize=null,
|
|
yAxisDecimals=null,
|
|
yAxisFormat='short',
|
|
yAxisLogBase=1,
|
|
yAxisMin=null,
|
|
yAxisMax=null,
|
|
yAxisShow=true,
|
|
yAxisSplitFactor=1,
|
|
yBucketSize=null,
|
|
yBucketBound='auto'
|
|
)
|
|
:: g.heatmapPanel.new(
|
|
title=title,
|
|
datasource=datasource,
|
|
color_mode=colorMode,
|
|
color_cardColor=cardColor,
|
|
color_colorScale=colorScale,
|
|
color_colorScheme=colorScheme,
|
|
color_exponent=colorExponent,
|
|
legend_show=legendShow,
|
|
xBucketSize=xBucketSize,
|
|
yAxis_decimals=yAxisDecimals,
|
|
yAxis_format=yAxisFormat,
|
|
yAxis_logBase=yAxisLogBase,
|
|
yAxis_min=yAxisMin,
|
|
yAxis_max=yAxisMax,
|
|
yAxis_show=yAxisShow,
|
|
yAxis_splitFactor=yAxisSplitFactor,
|
|
yBucketSize=yBucketSize,
|
|
yBucketBound=yBucketBound
|
|
) + {
|
|
gridPos: gridPosition,
|
|
pluginVersion: pluginVersion,
|
|
color+: {
|
|
colorScheme: colorScheme,
|
|
},
|
|
fieldConfig: {
|
|
defaults: {
|
|
custom: {
|
|
hideFrom: hideFrom,
|
|
scaleDistribution: {
|
|
type: scaleDistributionType,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
options: {
|
|
calculate: optionsCalculate,
|
|
calculation: optionsCalculation,
|
|
cellGap: optionsCellGap,
|
|
cellValues: optionsCellValues,
|
|
color: optionsColor,
|
|
exemplars: optionsExemplars,
|
|
filterValues: optionsFilterValues,
|
|
legend: optionsLegend,
|
|
rowsFrame: optionsRowFrame,
|
|
showValue: optionsShowValue,
|
|
tooltip: optionsToolTip,
|
|
yAxis: optionsYAxis,
|
|
},
|
|
},
|
|
}
|