Closed4

Grafana LokiにSyslog送ったら429 (TooManyRequests)エラーが大量発生した件について公式サポートに聞いてみた

harrythecodeharrythecode

事の発端

Grafana Cloudを使い始めて、色んなインフラ機能を移そうと試しています。その中の1つにGrafana Loki ( 要はログ保存してクエリ検索できる機能 )があり、これにSyslogを送ってみます。

送り方は以下の通りとしてます。

  • syslog -> filebeat (Elastic) -> logstash (Grafana Plugin) -> loki (Grafana Cloud)

filebeatを使った理由は、Octetタイプのsyslog ( rfc6587 ) を受信するため、です。

簡単に設定できると思いきや、いざ試してみると 429エラーが頻発し、ネットを探して回ってもはっきりとした正解がわからなかったのでGrafana公式に問い合わせ。

harrythecodeharrythecode

公式のすすめ1

$ logcli series '{job="logstash"}' --analyze-labels

Total Streams:  6724
Unique Labels:  9

Label Name       Unique Values  Found In Streams
prv_ip           2230           6719
pub_ip           126            6719
syslog_program   5              6723
proto            3              6719
sproto           3              6719
action           2              6719
service_name     1              6724
job              1              6724
syslog_hostname  1              6719

トータルに対してユニークが多すぎるとパフォーマンス下がるらしいけど、ボクの場合は問題なさそうなので次。

harrythecodeharrythecode

公式のススメ2

以下の通り回答をもらった:

Lokiのパフォーマンスは、いくつかの重要なパラメータに依存しています。そのため、特定の制限を設けてパフォーマンスを維持しており、現在の状態ではストリーム制限に引っかかっている可能性があります。これは、ログに多くの異なる値を持つ「高カーディナリティ」なラベルが含まれているときに発生しやすい問題です。

高カーディナリティなラベルとは、多数の異なる値を持つラベルのことで、これが原因でLokiのパフォーマンスが低下したり、制限に引っかかることがあります。この対策やラベルの使い方については、こちらのガイド(Grafana Cloudのログラベルについて)に詳細が記載されています。

https://grafana.com/docs/grafana-cloud/send-data/logs/#using-labels-with-logs

いやってかさっきと同じですやん。ってことで再度問い合わせ。

harrythecodeharrythecode

公式のススメ3

以下の通り回答をもらった:

高カーディナリティのラベルはストリームを細分化し、チャンクが小さくなり、クエリパフォーマンスが低下します。無限に増える可能性のある高カーディナリティラベルの使用は推奨しません。詳しくは以下のガイドを参照ください:
https://grafana.com/blog/2023/12/20/the-concise-guide-to-grafana-loki-everything-you-need-to-know-about-labels/

「IP」をインデックスラベルとして使うのではなく、Structured Metadataに移行することを推奨します。これにより、IPでのログフィルタリングが可能です。詳しくは以下のドキュメントをご覧ください:
https://grafana.com/docs/loki/latest/get-started/labels/structured-metadata/

要はIndexではなくMetadataに移せ、と。そうしたらFilterIn/Outできないのでは、、、?まあGrafana Lokiは大容量データの保存場所には適さないということですかね。

このスクラップは10日前にクローズされました