Kubernetes cluster と Grafana Cloud を Grafana Alloy で連携してみる(後編) 〜Getting Started Guide の先へ〜

前回は Grafana Cloud の Getting Started Guide に従って Grafana Alloy をインストールする方法や、Kubernetes Monitoring Helm chart の values の読み解き方や、secret を別で管理する方法について説明しました。
今回は設定の変更方法、デバッグ方法、OpenTelemetry との連携方法に焦点を当てます。
前回同様、Kubernetes Monitoring Helm chart で Alloy がインストールされていて、namespace は alloy、release name は grafana-k8s-monitoring であるものとします。

詳説 Grafana Alloy loki.process

とりあえず Grafana Alloy を使って Loki にログを送ってみるだけなら Use Grafana Alloy to send logs to LokiLogs and relabeling basics in Grafana Alloy をやれば雰囲気を掴むことができるんですが、ログをフィルタリングしたり加工したりするには loki.process の理解が欠かせません。livedebugging を使えば loki.process の input と output の情報は確認できますが、loki.process 内の各 stage でどのような処理が行われたかは確認することができません。log level を debug にしても同様です。そのこともあって、ドキュメントを読みつつ設定を変更して試行錯誤しても自分には使い方がいまいち理解できず、ソースコードを読んだりしてようやく理解できたので、理解した内容についてまとめました。

Kubernetes cluster と Grafana Cloud を Grafana Alloy で連携してみる(前編) 〜Getting Started Guide の先へ〜

最近 Grafana Cloud を試したんですが、Getting Started Guide に従って Kuberneters cluster に Grafana Alloy をインストールするだけで様々なログやメトリクスが取れるようになるし、メトリクスの取得も高速でとても感動しました。
ただ、Grafana、Prometheus、OpenTelmetry Collector を浅く使ったことがあるだけの自分にとって、ブラックボックス過ぎてわからないことが多く、どこの設定をどう修正すれば好みの内容になるのかわかりづらかったので、備忘録がてら知見についてまとめます。

OpenTelemetry Collector の OTLP receiver で受け取ったデータに Kubernetes attributes processor で attribute を付与する

OpenTelemetry Collector の Kubernates attribute processor は、Kubernetes cluster 上で動いている Pod の情報を保持し、それらの Pod から telemetry data が送られてきたら Pod に関連する metadata を attribute として付与する processor です。

Terraform Provider for Azure Key Vault を作った 〜Azure の Key Vault secret を Terraform で安全に管理したい〜

Azure の Key Vault secret (AWS でいう paramete store) を Terraform で管理できると次のようなメリットがあります。

PagerDuty のシフト回数を数える pd-shift というツールを作成した 〜オンコール待機手当の計算を効率化する〜

24/365 で運用しているサービスであれば、オンコール体制を整備するために PagerDuty を利用しているサービスも多いことでしょう。また、業務時間外に待機することに対して、待機手当なるものが支給されることもあるでしょう。
待機手当が待機回数に応じて支給される場合、人手で待機回数を数えるのは地味に大変だったりします。そんなわけで、pd-shift というツールを作成しました。
現状はシフト回数を数える機能しかありませんが、将来的に pd よりも手軽に override を作成する機能も提供したいと思っていて、少し抽象的な名前になっています。

Kubernetes で sleep infinity しつつ SIGTERM を受け取ったらすぐ終了させたい

Introducing dumb-init, an init system for Docker containers で説明されているように、PID 1 のプロセスは特殊な扱いになるため、そのプロセスにシグナルハンドラーがなければ、シグナルは無視されます。

akv://<vault-name>/<secret-name> 形式の文字列を Azure Key Vault secrets で差し替えるツールを作った

akv というツールを作りました。次のように標準入力に含まれる akv://<vault-name>/<secret-name> 形式の文字列や、同形式の環境変数を Azure Key Vault secret(AWS だと parameter store に相当)の値で差し替えることができます。

前方互換性・後方互換性とは何なのか? 〜Schema Registry における例〜

Schema evolution において前方互換性・後方互換性を意識することは重要ですが、どっちがどっちか混乱することがあるのでメモとして残しておきます。

DataGrip などの JetBrains 製 IDE から IAM データベース認証を使って RDS インスタンスに接続する

今までデータベースにアクセスする際には GUI ツールとして Sequel Ace を使っていたんですが、諸事情から IAM データベース認証に対応したツールを利用する必要が出てきました。残念ながら Sequel Ace は IAM データベース認証に対応していません。
cf. Cannot connect to AWS RDS using IAM Authentication · Issue #202 · Sequel-Ace/Sequel-Ace

広告