Grafana: 機能:色のしきい値のnullをゼロとして扱います

作成日 2015年07月24日  ·  24コメント  ·  ソース: grafana/grafana

特にSinglestatパネルの場合、nullをゼロとして扱うと便利です。そうしないと、パネルにnullの結果で色を付ける方法がありません。

最も参考になるコメント

OR演算子を使用してPrometheusのnullに対して0を返すことができます。メトリック式が何も返さない場合、 exression OR on() vector(0)は0を返します。 @pdf @torkelo

全てのコメント24件

Graphiteを使用する場合、transformNull関数はうまく機能します

現在、バックエンドで確認できる塗りつぶしメカニズムはありません。

どっち?

プロメテウス

プロメテウスには変換機能/機能がありますか? 私はまだそれを試していません(本当にそれをやりたがっています、公式のデータソースプラグインとしてPrometheusを追加するかもしれません)

かなりまともな選択: http

grafana 2.1では、色付けに関する限り、「null」値は0値として扱われるようです(nullが#1166のようにテキストにマップされている場合でも)。

もう少し厄介にするために:ただし、低い方が良い場合は、0/1/3に緑/オレンジ/赤のしきい値を設定することをお勧めします。つまり、値> 3が読み取られます(ただし、nullも赤である必要があります)。 したがって、null値は緑になりますが、赤である必要があると主張できます。

この問題に対処するときは、#1319と一緒に検討する価値があります。 たとえば、テキストマッピングの範囲を実装し、そのようなテキストの色分けを指定することで、同時に対処できます(値の色は間接的に指定されるため、柔軟性は高くなりますが、おそらくより面倒です)。

@torkelo私は@feliksikに同意するとバグこれを呼び出す限り行くだろう:私の監視対象ノードのいずれかがオフラインになった場合、その負荷平均を返すのはnullを問い合わせます。 singlestatパネルはnullをゼロに置き換えるため、パネルには「N / A」が緑色で表示されますが、実際には赤色または無色である必要があります(できれば構成オプションによって異なります)。


編集:この機能は以前(#1130)に存在していましたが、cc21c66b3a128ea680be2e491cb89f8da90b2677で削除されました。 議論を#1130に移すことができると思います。

+1 @ n-stと@feliksikに同意します。現在、ダッシュボードにはN / Aの「赤」が表示されていますが、実際にはN / Aはデータがない、アクティビティがないことを意味するため、理想的には色を付けないでください。

OR演算子を使用してPrometheusのnullに対して0を返すことができます。メトリック式が何も返さない場合、 exression OR on() vector(0)は0を返します。 @pdf @torkelo

ほとんどのTSDBバックエンドにはクエリでnullを処理する方法があるため、これを閉じます

@grobie

式がnullの場合、OR演算子がこれを修正するのは事実です。 ただし、単一の統計ページでは、これによりnull値の色が修正されますが、null以外のメトリックでは、実際の値とプロメテウス式によって追加された{}の複数の値が報告されるため、色が壊れます。

この問題を再開することを提案できますか?

@boeboe上記のコメントから表現を更新しました。 これはあなたのために働くはずです。

説明:Prometheusは、式でラベルマッチングを使用します。 もしあなたのexpressionリターンラベルの付いたもの、それはによって生成された時系列と一致しませんvector(0) 。 これを可能にするには、 on()追加して、ラベルを一致させようとしないようにPrometheusに明示的に指示する必要があります。

@grobie説明ありがとうon()演算子の使用法に関する明確な例が示されていません(https://prometheus.io/docs/querying/operators)

これが私の現在のクエリです:
counter_services_active_sessions_responses_4xx_total{kubernetes_namespace="dev-appservicebase"} OR vector(0)

メトリックが存在する場合に重複を回避するために、これをどのように書き直す必要がありますか(この場合、マイクロサービスはHTTP 4xx応答を返します)。 現在、クエリは次の2つの結果を返します。

counter_services_active_sessions_responses_4xx_total {instance = "172.24.27.130:8081"、job =" kubernetes-pods "、kubernetes_namespace =" dev-appservicebase "、kubernetes_pod_name =" active-sessions-dp-3210291495-nw9n7 "、kubernetes_pod_node_name -24-24 "、pod_template_hash =" 3210291495 "、type =" active-sessions-type "} 1173
{} 0

@grobieは私の最後のコメントを気にしないでください、あなたがクエリを更新したのを見たに違いありません。 ありがとう!

MySQLのクエリ回避策はありますか?

@TheFrogDaddyは、合体関数の場合や組み合わせて、selectケースを使用できます。

@TheFrogDaddyは、合体関数の場合や組み合わせて、selectケースを使用できます。

こんにちは、すぐに返事をくれてありがとう。 これが機能しません。何かが足りませんか?

これを試しました:

SELECT $__timeGroup(updated, '1h', 0) AS time, COALESCE(SUM(1),0) as value, 'Errors' AS metric FROM mytable WHERE $__timeFilter(updated) AND error_message IS NOT NULL GROUP BY 1;

この

SELECT $__timeGroup(updated, '1h', 0) AS time, CASE ISNULL(SUM(1)) WHEN TRUE THEN 0 ELSE SUM(1) END AS value, 'Errors' AS metric FROM myTable WHERE $__timeFilter(updated) AND error_message IS NOT NULL GROUP BY 1;

ありがとう

@TheFrogDaddy sum(1)何を要約しようとしていますか? 私には意味がありません。 コミュニティサイト、特にタグmysqlで議論を続けることをお勧めします。 そこで新しいトピックを開いてください。@ + mefraimssonでpingを実行できます。

OR演算子を使用してPrometheusのnullに対して0を返すことができます。メトリック式が何も返さない場合、 exression OR on() vector(0)は0を返します。 @pdf @torkelo

インスタントオプションをアクティブにすることを忘れないでください!!

それはいいです

OR演算子を使用してPrometheusのnullに対して0を返すことができます。メトリック式が何も返さない場合、 exression OR on() vector(0)は0を返します。 @pdf @torkelo

良い。 兄弟

OR演算子を使用してPrometheusのnullに対して0を返すことができます。メトリック式が何も返さない場合、 exression OR on() vector(0)は0を返します。 @pdf @torkelo

これはby (label)では機能しませんが、これは機能しているようです。

expression OR up*0
sum by (label) (data_metric) - sum by (label) (nodata_metric or up*0)

これが私の2セントです

sum(expression) by (label) -
sum(expression offset $__interval OR expression * 0) by (label)

これにより、ターゲット間隔での2つの式の違いを知ることができます。 タイムセリが存在しない場合、値が0であると見なして計算が行われます。

このページは役に立ちましたか?
0 / 5 - 0 評価