Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
nexpie-grafana-theme
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Registry
Registry
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kornkitt Poolsup
nexpie-grafana-theme
Commits
2e669042
Commit
2e669042
authored
Dec 06, 2018
by
Torkel Ödegaard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixed logs to time series calculation issue, increased bucket size, fixes #14248
parent
8bac55ca
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
42 additions
and
14 deletions
+42
-14
public/app/core/logs_model.ts
+12
-3
public/app/core/utils/explore.ts
+9
-11
public/app/features/explore/Logs.tsx
+1
-0
public/app/types/index.ts
+2
-0
public/app/types/series.ts
+18
-0
No files found.
public/app/core/logs_model.ts
View file @
2e669042
...
...
@@ -170,16 +170,25 @@ export function filterLogLevels(logs: LogsModel, hiddenLogLevels: Set<LogLevel>)
}
export
function
makeSeriesForLogs
(
rows
:
LogRow
[],
intervalMs
:
number
):
TimeSeries
[]
{
// currently interval is rangeMs / resolution, which is too low for showing series as bars.
// need at least 10px per bucket, so we multiply interval by 10. Should be solved higher up the chain
// when executing queries & interval calculated and not here but this is a temporary fix.
// intervalMs = intervalMs * 10;
// Graph time series by log level
const
seriesByLevel
=
{};
rows
.
forEach
(
row
=>
{
const
bucketSize
=
intervalMs
*
10
;
for
(
const
row
of
rows
)
{
if
(
!
seriesByLevel
[
row
.
logLevel
])
{
seriesByLevel
[
row
.
logLevel
]
=
{
lastTs
:
null
,
datapoints
:
[],
alias
:
row
.
logLevel
};
}
const
levelSeries
=
seriesByLevel
[
row
.
logLevel
];
// Bucket to nearest minute
const
time
=
Math
.
round
(
row
.
timeEpochMs
/
intervalMs
/
10
)
*
intervalMs
*
10
;
const
time
=
Math
.
round
(
row
.
timeEpochMs
/
bucketSize
)
*
bucketSize
;
// Entry for time
if
(
time
===
levelSeries
.
lastTs
)
{
levelSeries
.
datapoints
[
levelSeries
.
datapoints
.
length
-
1
][
0
]
++
;
...
...
@@ -187,7 +196,7 @@ export function makeSeriesForLogs(rows: LogRow[], intervalMs: number): TimeSerie
levelSeries
.
datapoints
.
push
([
1
,
time
]);
levelSeries
.
lastTs
=
time
;
}
}
);
}
return
Object
.
keys
(
seriesByLevel
).
reduce
((
acc
,
level
)
=>
{
if
(
seriesByLevel
[
level
])
{
...
...
public/app/core/utils/explore.ts
View file @
2e669042
import
_
from
'lodash'
;
import
{
renderUrl
}
from
'app/core/utils/url'
;
import
{
ExploreState
,
ExploreUrlState
,
HistoryItem
,
QueryTransaction
}
from
'app/types/explore'
;
import
{
DataQuery
,
RawTimeRange
}
from
'app/types/series'
;
import
TableModel
,
{
mergeTablesIntoModel
}
from
'app/core/table_model'
;
import
kbn
from
'app/core/utils/kbn'
;
import
store
from
'app/core/store'
;
import
colors
from
'app/core/utils/colors'
;
import
TimeSeries
from
'app/core/time_series2'
;
import
{
parse
as
parseDate
}
from
'app/core/utils/datemath'
;
import
store
from
'app/core/store'
;
import
TimeSeries
from
'app/core/time_series2'
;
import
TableModel
,
{
mergeTablesIntoModel
}
from
'app/core/table_model'
;
import
{
ExploreState
,
ExploreUrlState
,
HistoryItem
,
QueryTransaction
}
from
'app/types/explore'
;
import
{
DataQuery
,
RawTimeRange
,
IntervalValues
,
DataSourceApi
}
from
'app/types/series'
;
export
const
DEFAULT_RANGE
=
{
from
:
'now-6h'
,
...
...
@@ -170,18 +170,16 @@ export function calculateResultsFromQueryTransactions(
};
}
export
function
getIntervals
(
range
:
RawTimeRange
,
datasource
,
resolution
:
number
):
{
interval
:
string
;
intervalMs
:
number
}
{
export
function
getIntervals
(
range
:
RawTimeRange
,
datasource
:
DataSourceApi
,
resolution
:
number
):
IntervalValues
{
if
(
!
datasource
||
!
resolution
)
{
return
{
interval
:
'1s'
,
intervalMs
:
1000
};
}
const
absoluteRange
:
RawTimeRange
=
{
from
:
parseDate
(
range
.
from
,
false
),
to
:
parseDate
(
range
.
to
,
true
),
};
return
kbn
.
calculateInterval
(
absoluteRange
,
resolution
,
datasource
.
interval
);
}
...
...
public/app/features/explore/Logs.tsx
View file @
2e669042
...
...
@@ -24,6 +24,7 @@ const PREVIEW_LIMIT = 100;
const
graphOptions
=
{
series
:
{
stack
:
true
,
bars
:
{
show
:
true
,
lineWidth
:
5
,
...
...
public/app/types/index.ts
View file @
2e669042
...
...
@@ -19,6 +19,7 @@ import {
DataQuery
,
DataQueryResponse
,
DataQueryOptions
,
IntervalValues
,
}
from
'./series'
;
import
{
PanelProps
,
PanelOptionsProps
}
from
'./panel'
;
import
{
PluginDashboard
,
PluginMeta
,
Plugin
,
PluginsState
}
from
'./plugins'
;
...
...
@@ -87,6 +88,7 @@ export {
AppNotificationTimeout
,
DashboardSearchHit
,
UserState
,
IntervalValues
,
};
export
interface
StoreState
{
...
...
public/app/types/series.ts
View file @
2e669042
...
...
@@ -19,6 +19,11 @@ export interface TimeRange {
raw
:
RawTimeRange
;
}
export
interface
IntervalValues
{
interval
:
string
;
// 10s,5m
intervalMs
:
number
;
}
export
type
TimeSeriesValue
=
string
|
number
|
null
;
export
type
TimeSeriesPoints
=
TimeSeriesValue
[][];
...
...
@@ -90,6 +95,11 @@ export interface DataQueryOptions {
export
interface
DataSourceApi
{
/**
* min interval range
*/
interval
?:
string
;
/**
* Imports queries from a different datasource
*/
importQueries
?(
queries
:
DataQuery
[],
originMeta
:
PluginMeta
):
Promise
<
DataQuery
[]
>
;
...
...
@@ -97,6 +107,14 @@ export interface DataSourceApi {
* Initializes a datasource after instantiation
*/
init
?:
()
=>
void
;
/**
* Main data query method
*/
query
(
options
:
DataQueryOptions
):
Promise
<
DataQueryResponse
>
;
/**
* test data source
*/
testDatasource
?:
()
=>
Promise
<
any
>
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment