地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

2023-08-01から1ヶ月間の記事一覧

【Go】クライアント切断を検知する

pkg.go.dev Request.Context()を使うことでクライアントが切断したことをアプリケーションから検知することができる。一般的なhttpでの処理は以下のようになっている。そのうち5番まで処理が進んだ状態でそこから処理キャンセルをすることができるというので…

ingress-nginxでOpenTracingを試す

kubernetes.github.io ingress-nginxにはOpenTracingを入れれるオプションがあったので使ってみる 環境 kind ingressのデプロイ $ kubectl apply -f https://raw.githubusercontent.com/Kong/kubernetes-ingress-controller/master/deploy/single/all-in-one…

HTTP/3を試したい

コネクションマイグレーションは新幹線乗るたびに早く普及して欲しいと思っている(通信環境安定化もして欲しい、、)https://t.co/N4OQxmGCD8— RyuichiWatanabe@gurasan (@ryuichi_1208) 2023年8月18日 こんな投稿があったりして手元で試すにはどうやれば良い…

kubebuilder関連のメモ

kubebuilder kubernetes-sigs/kubebuilder Kubernetesを拡張するためのカスタムコントローラー/オペレーターを開発するためのフレームワーク client-go kubernetes/client-go KubernetesのAPIを実行するためのgoのモジュール controller-tools kubernetes-si…

OpenTelemetryのリンクメモ

open-telemetry/opentelemetry-collector OpenTelemetry Collectorのコアコードが置いてある open-telemetry/opentelemetry-collector-contrib コレクターの実験的およびベンダー固有の拡張機能が含まれている docker-composeとかサクッと試す場合はこっちを…

OpenTelemetryでCPU使用率やメモリ使用量などを取ってみる

opentelemetry-collectorでCPU使用率やメモリ使用量を取ることもできるのでそちらを使ってみます。 hostmetricsreceiverを使う CPUやメモリなどを取るにはhostmetricsreceiverというreciverが用意されているのでそちらを使います。設定もシンプルで取りたい…

opentelemetry-goを使ってメトリクスを送信する

opentelemetry-goを使ってメトリクスをotlpで送信して標準出力に出すまでのメモです otel-collectorlのconfig fileをstdoutにすることで送信先をstdoutにすることができます。送信されてきたメトリクスをこれでプロセスの出力としてみることができます。 rec…

otel-collectorのprocessorでattributesを追加する

attributesprocessorというのがあるのでこちらを利用することで特定の属性を追加してデータの投入を行うことができる。 github.com processors: batch: # send_batch_size: 10000 # timeout: 10s attributes: actions: - key: hoge value: custom_value acti…

Blackbox exporterをOpenTelemetryコレクターでscrapeする

【Jaeger】入門する

Jaegerとは Jaegerは、Uber Technologies社によって開発され、その後オープンソース化された分散トレーシングシステムです。Goで実装されています。CNCFの卒業プロジェクトで多くの環境で導入されている実績もあるようです。アプリケーションの内部の処理フ…

複数サービスでトレースしたい

opentelemetry.io Propagators APIを用いることでサービスAのトレース情報をサービスBに伝播することができる。これができればJaegurとかから以下のように一つのトレースで複数サービスを見ることができる。 やり方 とても簡単で 後続のサービスへspanのCont…

opentelemetry-collectorでサンプリングレートを指定したい

probabilisticsamplerprocessorというプロセッサーがあるのでこちらを利用することで実現が可能。ただしlogsはalphaでtraceもbetaなので今後仕様が変わる可能性がある。 パイプラインは、データがコレクター内でたどるパスを定義するもの processors: probab…

OTEL AWSメモ

aws-sdk-go-v2を使ったサンプルに送信先をJaguarにした例 github.com v2だとめっちゃ楽に実装できて便利。ちなみにv1だとちょっとだけ工夫が必要な模様。 package main import ( "context" "fmt" "log" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/…

terraform lifecycleメモ

create_before_destroy (bool) 既存のリソースが有った場合に、削除してから作成する prevent_destroy (bool) この値があるリソースを削除しようとするとエラーになる ignore_changes (list of strings) 実際のリソースとTerraform管理下のリソースの差分が…

kubectl explain

kubectl explainを使うと、現在のコンテキストのバージョンに沿った情報を見ることができる。explainの次にはリソース名を指定する。ターミナルだけで完結できる機会が増えるはず。 $ kubectl explain service KIND: Service VERSION: v1 DESCRIPTION: Servi…

kustomizeでlistに任意の項目を足す

nginxのpodに443と8443のポートを足したい時のkustomizeの書き方 apiVersion: apps/v1 kind: Pod metadata: name: app spec: containers: - name: app image: nginx:latest ports: - name: http containerPort: 80 - op: add path: /spec/containers/0/ports…

Packerへ入門する

github.com Packerはマシン・イメージの自動生成や管理をするコマンドライン・ツール。HashiCorp製のツールでGoで実装されている。Packer 1.5.0からHCLを対応したとのことで現在はこちらが推奨されていてちょっと古い記事だと気にして読む必要がある。 使い…