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

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

【OpenDKIM】Luaを使いたい

概要

Luaを使うための手順とか。

www.opendkim.org

github.com

手順

前準備

$ yum install -y lua-devel.x86_64

ビルド

$ curl -Lo opendkim-2.10.3.tar.gz https://sourceforge.net/projects/opendkim/
$ tar -xvf opendkim-2.10.3.tar.gz
$ cd opendkim-2.10.3.
$ ./configure --with-lua
$ make

確認

$ ./opendkim/opendkim -V
lt-opendkim: OpenDKIM Filter v2.10.3
    Compiled with OpenSSL 1.0.2k-fips  26 Jan 2017
    SMFI_VERSION 0x1000001
    libmilter version 1.0.1
    Supported signing algorithms:
        rsa-sha1
        rsa-sha256
    Supported canonicalization algorithms:
        relaxed
        simple
    Active code options:
        USE_LUA
    libopendkim 2.10.3:

【Grafana Loki】入門する

Grafana Lokiとは

Grafana Lokiは、Grafana Labsによって開発されたオープンソースのログアグリゲーションシステムです。Prometheusに されたこのシステムは、特にコスト効率と簡易性を重視して設計されており、大量のログデータを効率的に処理し、検索することができます。Lokiは主にコンテナ環境と密に連携して動作し、Kubernetesやその他のコンテナオーケストレーションツールと組み合わせて利用されることが多いです。Goで実装されています。

github.com

特徴は以下です。

  • インデックスフリー
    • Lokiは「インデックスフリー」アプローチを採用しています。つまり、全文検索のインデックスを作成せずに、ログファイルのメタデータのみをインデックス化します。これにより、ストレージのコストを大幅に削減しつつ、効率的なログ検索が可能になります。
  • スケーラビリティ
    • Lokiのアーキテクチャは、高いスケーラビリティを実現するよう設計されています。これにより、大規模なシステム環境でも効率的にログを管理できます。 Grafanaとの統合: LokiはGrafanaと密接に統合されており、Grafanaのダッシュボードを使用してログデータを視覚的に探索したり、監視データと併せて分析することが可能です。
  • 多様なログソースのサポート
    • Lokiは様々なログソースからのデータを受け入れることができ、特にPromtailというエージェントを用いて、Kubernetesクラスタからのログを収集するのに適しています。
  • コスト効率
    • データのインデックス化を最小限に抑えることで、ストレージコストを大幅に削減しながらログ管理を行えます。

grafana.com

アーキテクチャ

公式より引用

https://grafana.com/docs/loki/latest/get-started/loki_architecture_components.svg

参考

Grafana Lokiで始めるログ管理 - Speaker Deck

最短で理解して運用するGrafana Loki

【Grafana Tempo】入門する

github.com

Grafana Tempoとは

Grafana Tempoは、分散トレーシングデータを効率的に格納して検索するためのオープンソースの分散トレーシングバックエンドシステムです。Grafana Labsによって開発されたこのシステムは、特に大量のトレースデータを扱う際のコスト効率とスケーラビリティに焦点を当てています。Grafana Tempoは、Grafanaと統合することで、視覚的なトレースデータの解析やデバッグが容易になります。主な特徴は以下です。

  • コスト効率: Tempoはデータを格納するために、高いストレージ効率を持つオブジェクトストレージを使用します。これにより、オンプレミスやクラウド環境での運用コストを削減できます。
  • スケーラビリティ: 大規模なデータセットを扱う能力があり、様々な規模のデプロイメントでの利用が可能です。
  • 統合性: Grafanaとのシームレスな統合により、トレーシングデータから直接ダッシュボードを作成し、分析することができます。
  • シンプルなアーキテクチャ: Tempoはシンプルなアーキテクチャを採用しており、設定や管理が容易です。
  • 互換性: 既存のトレーシングフォーマット(例えば、JaegerやZipkin)と互換性があります。

アーキテクチャ

https://grafana.com/docs/tempo/latest/operations/tempo_arch.png

公式より引用それぞれのコンポーネントは以下です。

  • Ingesters
    • Ingestersはデータを一時的にメモリ上に保持し、バッチ処理が可能なサイズになるまで集約します。このバッチ処理されたデータはその後、永続ストレージに書き込まれます。
  • Distributors
    • Distributorsは、受け取ったトレースデータを複数のIngestersに均等に分散させる役割を担います。これにより、負荷を均等に分散し、システムのスケーラビリティと耐障害性を向上させます。
  • Storage
    • Tempoはオブジェクトストレージを使用してトレースデータを保存します。Grafana Labsの実装では、Google Cloud Storage、Amazon S3、またはその他の互換性のあるオブジェクトストレージが利用可能です。トレースデータは高い圧縮率で保存され、コスト効率良く大量のデータを扱うことができます。
  • Queriers
    • Queriersはストレージからデータを検索する役割を担います。ユーザーがトレースデータを要求すると、Queriersがデータを取得し、必要な情報をユーザーに提供します。インジェスターから直接データを引き出すこともあり、これにより最近のデータへのアクセスが迅速になります。
  • Compactors
    • コンパクターはストレージ内のデータを定期的に圧縮や最適化を行うコンポーネントです。これにより、データの取得効率が向上し、ストレージコストを抑えることができます。

Tempo CLI

grafana.com