Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
],
yAxes=g.single_y_axis(format=g.MILLISECONDS_FORMAT),
),
d.simple_graph(
"etcd objects",
"sum(etcd_object_counts) by (resource, instance)",
legend="{{instance}}: {{resource}}",
),
d.simple_graph(
"etcd db size",
[
"etcd_mvcc_db_total_size_in_bytes",
"etcd_mvcc_db_total_size_in_use_in_bytes",
"etcd_server_quota_backend_bytes",
],
yAxes=g.single_y_axis(format=g.BYTES_FORMAT),
),
]
APISERVER_PANELS = [
d.simple_graph(
"goroutines",
'go_goroutines{job="master", endpoint="apiserver"}',
legend="{{instance}}",
),
d.simple_graph(
"gc rate",
'rate(go_gc_duration_seconds_count{job="master", endpoint="apiserver"}[1m])',
legend="{{instance}}",
),
d.simple_graph(
"alloc rate",
),
d.simple_graph(
"etcd wal fsync duration",
"histogram_quantile(1.0, sum(rate(etcd_disk_wal_fsync_duration_seconds_bucket[1m])) by (le, endpoint))",
yAxes=g.single_y_axis(format=g.SECONDS_FORMAT),
),
d.Graph(
title="etcd compaction max pause",
points=True,
lines=False,
targets=[
g.Target(
expr="histogram_quantile(1.0, sum(rate(etcd_debugging_mvcc_db_compaction_pause_duration_milliseconds_bucket[1m])) by (le, instance))"
)
],
yAxes=g.single_y_axis(format=g.MILLISECONDS_FORMAT),
),
d.simple_graph(
"etcd objects",
"sum(etcd_object_counts) by (resource, instance)",
legend="{{instance}}: {{resource}}",
),
d.simple_graph(
"etcd db size",
[
"etcd_mvcc_db_total_size_in_bytes",
"etcd_mvcc_db_total_size_in_use_in_bytes",
"etcd_server_quota_backend_bytes",
],
yAxes=g.single_y_axis(format=g.BYTES_FORMAT),
),
]
def stacked(graph):
"""Turn a graph into a stacked graph."""
return attr.assoc(
graph,
lineWidth=0,
nullPointMode=G.NULL_AS_ZERO,
stack=True,
fill=10,
tooltip=G.Tooltip(
sort=G.SORT_DESC,
valueType=G.INDIVIDUAL,
),
expr='sum(wormhole_signup_failure{pod=~"s4-signup.*"})',
legendFormat="Wormhole Signups Failed",
refId="C",
),
],
),
G.Graph(
title="Usage",
dataSource=PROMETHEUS,
# Stack the connection graphs on each other, revealing
# both a total and a distribution across different grid
# router instances.
stack=True,
tooltip=G.Tooltip(
valueType=G.INDIVIDUAL,
),
xAxis=X_TIME,
yAxes=[
G.YAxis(
format="none",
label="Count",
),
G.YAxis(
format="none",
label="Count",
),
],
targets=[
G.Target(
expr="grid_router_connections",
title="Memory Usage",
dataSource=datasource,
xAxis=X_TIME,
yAxes=[
G.YAxis(
# 2 ^ 30 bytes
format="gbytes",
label="Memory",
),
G.YAxis(
show=False,
),
],
targets=[
G.Target(
expr="""
sum(machine_memory_bytes) / 2 ^ 30
""",
legendFormat="Total Physical Memory",
refId="A",
),
G.Target(
expr="""
rss:container_memory:total / 2 ^ 30
""",
legendFormat="Total Container RSS",
refId="B",
),