この記事ではLPG、LPG実験、公式 入門 事例を紹介していますが、とても面白くて数時間かかりますので、ぜひ一緒に体験してみてください!
私が以前使用していたログ収集ソリューションは ELK で、多くの場合数ギガバイトのメモリを消費し、構成が不十分な一部のサーバーはそれに耐えられません。最近、軽量のログ収集ソリューションである Loki+Promtail+Grafana (略して LPG) を発見しました。メモリは数百 MB で十分で、インターフェイスは非常に優れています。皆さんにお勧めします。
はじめに: 環境は Mac や Windows ではなく、Linux マシンです。
1.LPGの概要
LPG ログ収集ソリューションはメモリ占有量が非常に少なく、経済的で効率的です。ELK ログ システムのようにログにインデックスを付けるのではなく、ログ ストリームごとに一連のタグを設定します。以下にそのコアコンポーネントを紹介します。
-
Promtail: Filebeat に似たログ コレクター。ログ ファイル内のログを収集し、収集したデータを Loki にプッシュできます。
-
Loki: ログ データを集約して保存し、Grafana に視覚的なデータを提供するための Grafana のデータ ソースとして使用できます。
-
Grafana: Loki からログ情報を取得し、視覚的に表示します。
上の図の説明:
1. 各サーバーをデプロイする必要があります
Promtail
。責任は、このサーバーのログを監視および収集し、それらを Loki ストレージ サービスにプッシュすること/var/log
です。デフォルトは、監視および収集ディレクトリです。2. Loki はログストレージを担当します
3. Grafana はデータ視覚化であり、Loki でのログの読み取りを担当します。
2. インストール
このログ収集ソリューションを実装するには、Loki、Promtail、Grafana などのサービスをインストールする必要がありますが、
docker-compose
これらを直接インストールするのが非常に便利です。
公式 Web サイトの「Install with Docker Compose」ソリューションを採用しています。以下は、公式 Web サイトのソリューションの簡単な紹介です。
1. まず、Docker Compose をインストールする必要があります (ご自身でインストールしてください)
2. docker-compose スクリプトをダウンロードして実行します。
wget https://raw.githubusercontent.com/grafana/loki/v2.8.0/production/docker-compose.yaml -O docker-compose.yaml
docker-compose -f docker-compose.yaml up
この Web サイトは海外ではデフォルトでアクセスできないため、作成者が提供したスクリプトdocker-compose.yamlを私が直接使用できるようにダウンロードしました。読者は、リファレンス ブログを使用して、raw.githubusercontent.com にアクセスできない問題の解決を試みることもできます。完全なスクリプトと手順は、この記事の最後にある付録にも記載されています。
3. 正常に実行された後、docker ps
コマンドを使用して 3 つのサービスを表示できます。
[root@server123 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a519d567e6a4 grafana/promtail:2.8.0 "/usr/bin/promtail -…" About an hour ago Up About a minute plg-promtail-1
c880ad914857 grafana/grafana:latest "sh -euc 'mkdir -p /…" About an hour ago Up About a minute 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp plg-grafana-1
dcc6c716cd69 grafana/loki:2.8.0 "/usr/bin/loki -conf…" About an hour ago Up About a minute 0.0.0.0:3100->3100/tcp, :::3100->3100/tcp plg-loki-1
3. ログスキームの効果をテストする
3.1. テスト 1: Promtail は/var/log
ディレクトリの変更を監視します
実験の目的: Promtail が /var/log ディレクトリ内の変更を監視できるかどうかをテストします。
実験手順:
1. /var/log ディレクトリに新しいファイルを作成します。
# 输出'hello lpg'到/var/log/lpg.log 文件
echo 'hello lpg' > /var/log/lpg.log
2. コンソールで /var/log/lpg.log ファイルを監視します。
/var/log
これは、サーバーの特定のディレクトリ (デフォルト) の変更を監視し、ログを Loki に送信するという Promtail の役割も確認します。
3. 検証を続ける
- 何かを入力すると
/var/log/test.sql
監視できますか? - 何かを入力すると
/var/log/fire/spring.log
監視できますか?
3.2. テスト 2: Grafana を使用してログを視覚的に表示する
実験の目的: Promtail によって監視されているログを視覚化プラットフォーム Grafana を通じて表示する
実験手順:
-
Grafana にログインします。アカウントのパスワードは です
admin:admin
。ログインに成功したら、Loki をデータ ソースとして追加する必要があります。アクセス アドレス: http://192.168.56.123:3000/ -
Loki データ ソースは、docker-compose.yml スクリプトの実行後にデフォルトで追加されます。
-
デフォルトで追加されたデータ ソースを確認してください。その後、Loki アクセス アドレスを設定し、[
Save&test
保存してテスト] をクリックすると、設定が成功したことを示す緑色のプロンプト メッセージが表示されます。下の図の http://loki:3100 は、loki スクリプトによってインストールされたネットワークです。
docker network
-
次に、
Explore
Loki を選択し、クエリ式 (Loki クエリ) を入力すると、ログが{filename="/var/log/lpg.log"}
表示されます。测试1
3.3. テスト 3: デプロイされた Spring Boot プログラムのログは Grafana でも表示できることが予想されます
実験目的: Spring Boot ログの分散監視
実験手順:
実験では、新しい Spring Boot アプリケーションを作成しました。Spring Boot 設定ファイル application.yml で、logger.path=/var/log
ログの出力ディレクトリは /var/log として指定されました。Spring Boot ログ ファイルのデフォルトの出力名は spring.log です。つまり、/var/log/spring.log ファイルが出力ログ ファイルとして使用されます。このファイルは Promtail によって設定されたルールに準拠している/var/log/*.log
ため、監視する必要があります。最後に、視覚化プラットフォーム Grafana でログをクエリできるかどうかを確認します。
次のように進めます。
1. Spring Bootアプリケーションのapplication.ymlの一部設定内容
# 配置日志文件的输出目的地
logging:
path: /var/log
2. 準備した Spring Boot アプリケーションの jar パッケージを Promtail サーバーにアップロードします
3. アプリケーションを起動し、/var/log/spring.log に内容があるかどうかを確認します。
java -jar fire-tiny-loki-1.0-SNAPSHOT.jar
tail -f /var/log/spring.log
4. 可視化プラットフォームGrafanaでログを検索する
http://loki:3100 にログインし、Explore
Loki を選択してクエリ式 (Loki クエリ) を入力してログ{filename="/var/log/spring.log"}
を表示します。测试1
**概要:** 各サーバーは Promtail サービスをデプロイする必要があります。このサービスは特定のログ ディレクトリを監視します。ディレクトリが変更されると、コンテンツはログ ストレージのために Loki に送信されます。最後に、すべてのマイクロサービスのログは、 Grafana 視覚化プラットフォームの情報。
3.4. 落とし穴の記録
著者は本当に騙されたので、今後の指針として罠を踏む過程を記録しました。
冒頭で实验1
述べたように、Promtail はデフォルトで /var/log ディレクトリを監視しますが、作成者の /var/log/fire/spring.log、/var/log/test.sql およびその他のファイルが見つからないという奇妙な問題が発生しました。 Grafana 可視化プラットフォームを介して、なぜ、o(╯□╰)o
分析プロセス:
1. 上記の/var/log/lpg.logなど、監視できるファイルと監視できないファイルがあり、設定の問題であると推測されます。
2. Promtail コンテナに入り、構成ファイルを表示します/etc/promtail/config.yml
。構成ファイルの一部は次のとおりです。
# ...
# 部分内容
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/*.log
3. 設定ファイルを確認します__path__: /var/log/*log
。この設定によれば、/var/log ディレクトリ内の .log で終わるファイルのみが監視されます。その後、/var/log/fire/spring.log および /var/log/test.sql が監視されます。設定した内容は当然クエリされません。問題が見つかったので、公式 Web サイトを__path__
確認して使用し、glob patterns
設定を変更して/var/log/**/*.log
試してください。この設定スタイルも ant スタイルのスタイルに似ており、Spring でもよく使用されています。大きな問題にはなりませんが、それでそれを修正し始めてください。
4. コンテナの設定内容を直接変更しますが、Promtail コンテナにはデフォルトで vi などの編集コマンドがインストールされていませんが、 Linux の/etc/promtail/config.yml
最もオリジナルなコマンドを使用してファイルを上書きします (主に怠惰のため、これが一番簡単です)echo
/etc/promtail/config.yml
# 1、先进入容器
docker exec -it lpg-promtail-1 /bin/bash
# 2、cat查看内容
cat /etc/promtail/config.yml
# 3、把内容复制到编辑器进行编辑
# 只改动一行,把/var/log/*.log改为/var/log/**/*.log
# 4、把编辑后的内容输出了...处开始覆写
echo '...' > /etc/promtail/config.yml
# 5、最后退出promtail容器
3 つのコンテナを再起動します
docker-compose down
docker-compose up
5. 再起動後、いくつかの新しいファイルを作成し、http://192.168.56.123:3100 を通じてアクセスします。
⚠️⚠️⚠️⚠️⚠️⚠️ に特に注意してください。下の図のファイル名は特に promtail 構成を参照している__path__: /var/log/**/*.log
ため、/app/logs/fire/spring.log
などを使用してアクセスすることはできません。結局のところ、ホストは視覚化ツール Grafana と密接に関連しており、Grafana に関連しているのは Promtail だけです。
6. ホストとコンテナをマウントして Promtail 構成ファイルを変更します (ステップ 5 と 6 のいずれかを選択するだけです)。
ホスト上の構成ファイルを変更し、ホストとコンテナーをマウントすることで Promtail 構成ファイルを間接的に変更します。具体的な手順は次のとおりです。
-
docker-compose を停止し、最初に作成した 3 つの Docker コンテナーを削除します。
# 停止容器 docker-compose down # 删除容器 docker rm lpg-grafana-1; docker rm lpg-loki-1; docker rm lpg-promtail-1;
-
ホスト上に新しい構成
/app/etc/promtail/config.yml
ファイルを作成します付録の config.yml ファイルをコピーします。
# 创建目录 mkdir -p /app/etc/promtail # 复制附录内容填写到...位置 echo '...' > /app/etc/promtail/config.yml
ファイルを微調整する
__path__
だけです# ... # 部分内容 scrape_configs: - job_name: system static_configs: - targets: - localhost labels: job: varlogs __path__: /var/log/**/*.log
-
docker-compose.yml スクリプトの内容の一部を次のように変更します。
# 创建目录 mkdir -p /app/logs
# 日志收集器 promtail: image: grafana/promtail container_name: lpg-promtail volumes: # 把主机的/app/logs挂载到容器的/var/log - /app/logs/:/var/log/ - /app/etc/promtail:/etc/promtail/ # 这里指的是容器内部的/etc/promtail/promtail.yml文件 command: -config.file=/etc/promtail/promtail.yml
-
いくつかの準備ができて docker-compose を再起動します
docker-compose up
-
再起動後、いくつかの新しいファイルを作成し、http://192.168.56.123:3100 を通じてアクセスしても問題ありません。
4. オフィシャルエントリー事例紹介
はじめに: Linux 用の Docker Compose 環境を準備してください。
この記事の前の LPG の簡単な紹介では、その他のコンポーネントがいくつか紹介されていませんでしたが、正式な導入事例の紹介では、システムが大規模になり、その他のコンポーネントがいくつか紹介されました。一緒に体験してみましょう!公式開始アドレス
このガイドは、読者が簡単な Loki クラスターを作成して使用するのに役立ちます。このクラスターはテスト、開発、評価を目的としており、ほとんどの運用要件を満たしていません。
実験プロセスの紹介:
1. テスト環境は flog アプリケーションを実行してログ行を生成します。
2. Promtail はテスト環境のエージェント (またはクライアント) であり、ログ行をキャプチャし、ゲートウェイ経由で Loki クラスターにプッシュします。
一般的な環境では、ログ生成アプリケーションとエージェントが一緒に実行されます。
3. Grafana は、Loki に保存されているログをクエリし、クエリ結果を視覚化する方法を提供します。
アーキテクチャ図:
上の図の簡単な説明は次のとおりです。
-
flog は、いくつかの一般的な形式 (Apache、Nginx、RFC3164、Json など) でログを生成できる、開発されたテスト ログ ジェネレーターです。
-
Promtail は生成されたログを監視し、それらをゲートウェイ (つまり nginx) インターフェイスにプッシュします。
flog と Promtail は点線で囲まれており、クライアントとして理解されます。
-
ゲートウェイは実際にはリクエスト転送を実装する nginx です
1. Promtail プッシュ ログ リクエストの転送
2. Grafana のログ確認リクエストを転送する
-
Loki 書き込みコンポーネントは、ゲートウェイによってプッシュされたログの書き込みを担当します。
-
Loki 読み取りコンポーネントは、MiniO に保存されているログの読み取りを担当します。
-
Grafana はブラウザのアクセスログ可視化プラットフォームです
公式エントリーケースの実験手順:
4.1. テスト環境の取得
1. 別のディレクトリを用意する
mkdir evaluate-loki
cd evaluate-loki
注: コンテナーの起動後に flog によって生成されたログは、現在のフォルダー (evaluate-loki) の隠しディレクトリに存在します
.data
。
2. loki-config.yaml
、promtail-local-config.yaml
、およびdocker-compose.yaml
3 つのスクリプトをダウンロードします
wget https://raw.githubusercontent.com/grafana/loki/main/examples/getting-started/loki-config.yaml -O loki-config.yaml
wget https://raw.githubusercontent.com/grafana/loki/main/examples/getting-started/promtail-local-config.yaml -O promtail-local-config.yaml
wget https://raw.githubusercontent.com/grafana/loki/main/examples/getting-started/docker-compose.yaml -O docker-compose.yaml
この Web サイトはデフォルトでは海外ではアクセスできないため、作成者が提供した3 つのスクリプトを私が直接使用できるようにダウンロードしました。読者は、リファレンス ブログを使用して、raw.githubusercontent.com にアクセスできない問題の解決を試みることもできます。完全なスクリプトと手順は、この記事の最後にある付録にも記載されています。
4.2. 導入環境
Evaluate-loki の現在のディレクトリに入り、次のコマンドを使用してバックグラウンドで起動します。
docker-compose up
起動後、コンソール上に定期的にログが出力されますが、これは動作中のflogの出力ログです。各 json ログは、Promtail によってゲートウェイ経由でインターフェイスにプッシュされます/loki/api/v1/push
。
http://192.168.56.123:3101/ready にアクセスして、loki read の準備ができているかどうかを確認してください。
http://192.168.56.123:3102/ready にアクセスして、loki 書き込みの準備ができているかどうかを確認してください。
docker-compose.yaml スクリプトに定義されている docker コンテナがすべて起動しているか確認し、すべて起動していれば大きな問題はありません。合計7つのサービスが開始されていることがわかります。
4.3. Grafana を使用したテスト
http://192.168.56.123:3000 にログインします。デフォルトでデータソースが構成されています。次に、Explore
Loki をクリックして選択し、クエリ式 (Loki クエリ) を入力して{container="evaluate-loki-flog-1"}
、[クエリ] をクリックします。
[クエリ] を繰り返しクリックして、flog によって生成された最新のログを表示します。1 秒あたり 1 つのログは、flog の設定と完全に一致します。公式 Web サイトには、自分で試すことができる他のクエリ式も多数提供されています。
{container="evaluate-loki-flog-1"} |= "GET"
{container="evaluate-loki-flog-1"} |= "POST"
{container="evaluate-loki-flog-1"} | json | status="401"
{container="evaluate-loki-flog-1"} != "401"
4. 付録
4.1. docker-compose スクリプトファイル
スクリプト ファイルには loki、promtail、grafana という 3 つのサービスが定義されているため、スクリプト ファイルを理解する必要があります。
元の docker-compose ファイルの内容は次のとおりです (注釈を追加)。
version: "3"
# 创建docker容器的网络,方便互通
networks:
loki:
services:
loki:
image: grafana/loki:2.8.0
ports:
- "3100:3100"
# loki执行的命令是容器中的/etc/loki/local-config.yaml来启动loki
command: -config.file=/etc/loki/local-config.yaml
networks:
- loki
promtail:
image: grafana/promtail:2.8.0
# 执行主机与docker容器的文件挂载关系
volumes:
- /var/log:/var/log
# promtail执行的命令是容器中的/etc/promtail/config.yml来启动promtail
command: -config.file=/etc/promtail/config.yml
networks:
- loki
grafana:
environment:
- GF_PATHS_PROVISIONING=/etc/grafana/provisioning
- GF_AUTH_ANONYMOUS_ENABLED=true
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
# grafana启动所执行的脚本
entrypoint:
- sh
- -euc
- |
mkdir -p /etc/grafana/provisioning/datasources
cat <<EOF > /etc/grafana/provisioning/datasources/ds.yaml
apiVersion: 1
datasources:
- name: Loki
type: loki
access: proxy
orgId: 1
url: http://loki:3100
basicAuth: false
isDefault: true
version: 1
editable: false
EOF
/run.sh
image: grafana/grafana:latest
ports:
- "3000:3000"
networks:
- loki
4.2. local-config.yaml ファイル
docker コンテナを使用して/etc/loki/local-config.yaml
loki を起動します。lokiコンテナから取り出した元ファイルの内容は以下のとおりです(追記)。
auth_enabled: false
server:
http_listen_port: 3100
common:
path_prefix: /loki
storage:
filesystem:
chunks_directory: /loki/chunks
rules_directory: /loki/rules
replication_factor: 1
ring:
kvstore:
store: inmemory
schema_config:
configs:
- from: 2020-10-24
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
ruler:
alertmanager_url: http://localhost:9093
# By default, Loki will send anonymous, but uniquely-identifiable usage and configuration
# analytics to Grafana Labs. These statistics are sent to https://stats.grafana.org/
#
# Statistics help us better understand how Loki is used, and they show us performance
# levels for most users. This helps us prioritize features and documentation.
# For more information on what's sent, look at
# https://github.com/grafana/loki/blob/main/pkg/usagestats/stats.go
# Refer to the buildReport method to see what goes into a report.
#
# If you would like to disable reporting, uncomment the following lines:
#analytics:
# reporting_enabled: false
4.3. config.yml ファイル
docker コンテナを使用して/etc/promtail/config.yml
promtail を開始します。promtailコンテナから取り出した元ファイルの内容は以下の通りです(注釈追加)。
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://loki:3100/loki/api/v1/push
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/*.log
erver
プロパティは、HTTP サーバーとしての Promtail の動作を構成します。positions
このプロパティは、Promtail がファイルを保存する場所を構成し、ファイルをどこまで読み取ったかを示します。これは Promtail が再起動するときに必要で、中断したところからログの読み取りを続行できるようになります。scrape_configs
プロパティは、Promtail が指定された検出方法を使用してさまざまなターゲットからログを収集する方法を構成します。static_configs
キャプチャログの静的ターゲット構成、静的構成ではターゲットリストとラベルセットを指定できますlabel
取得するログ ファイルと、__path__ で定義されたファイル ログ ストリームに適用するオプションの追加タグのセットを定義します。
詳細な構成リファレンス:
-
Promtail 構成ファイルの説明: https://cloud.tencent.com/developer/article/1824988
-
Promtail 公式ドキュメント: https://grafana.com/docs/loki/latest/clients/promtail/configuration/
4.4. 公式の入門ケーススクリプト
4.4.1. docker-compose.yaml
このスクリプトは docker-compose のビルド スクリプトです。簡単に説明します。
1. アーキテクチャ図でいくつかのサービスを定義します (flog、nginx、promtail、loki read、loki write、minio、grafana など)。
2. 各サービスの起動は、基本的にcommand
またはsh
スクリプトから起動します。
- flog、loki read、loki write、promtail はコマンド メソッドを使用します。
- nginx、minio、grafana は sh スクリプトを使用します
3. サービス間に依存関係がある
- たとえば、loki read と loki write はすべて minio に依存しており、minio はストレージ サービスを提供する最後のサービスです。
4.ダウンロードした設定ファイルはvolumes
サービスをマウントして使用します。loki-config.yaml
promtail-local-config.yaml
---
version: "3"
networks:
loki:
services:
read:
image: grafana/loki:2.8.3
command: "-config.file=/etc/loki/config.yaml -target=read"
ports:
- 3101:3100
- 7946
- 9095
volumes:
- ./loki-config.yaml:/etc/loki/config.yaml
depends_on:
- minio
healthcheck:
test: [ "CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:3100/ready || exit 1" ]
interval: 10s
timeout: 5s
retries: 5
networks: &loki-dns
loki:
aliases:
- loki
write:
image: grafana/loki:2.8.3
command: "-config.file=/etc/loki/config.yaml -target=write"
ports:
- 3102:3100
- 7946
- 9095
volumes:
- ./loki-config.yaml:/etc/loki/config.yaml
healthcheck:
test: [ "CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:3100/ready || exit 1" ]
interval: 10s
timeout: 5s
retries: 5
depends_on:
- minio
networks:
<<: *loki-dns
promtail:
image: grafana/promtail:2.8.3
volumes:
- ./promtail-local-config.yaml:/etc/promtail/config.yaml:ro
- /var/run/docker.sock:/var/run/docker.sock
command: -config.file=/etc/promtail/config.yaml
depends_on:
- gateway
networks:
- loki
minio:
image: minio/minio
entrypoint:
- sh
- -euc
- |
mkdir -p /data/loki-data && \
mkdir -p /data/loki-ruler && \
minio server /data
environment:
- MINIO_ROOT_USER=loki
- MINIO_ROOT_PASSWORD=supersecret
- MINIO_PROMETHEUS_AUTH_TYPE=public
- MINIO_UPDATE=off
ports:
- 9000
volumes:
- ./.data/minio:/data
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:9000/minio/health/live" ]
interval: 15s
timeout: 20s
retries: 5
networks:
- loki
grafana:
image: grafana/grafana:latest
environment:
- GF_PATHS_PROVISIONING=/etc/grafana/provisioning
- GF_AUTH_ANONYMOUS_ENABLED=true
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
depends_on:
- gateway
entrypoint:
- sh
- -euc
- |
mkdir -p /etc/grafana/provisioning/datasources
cat <<EOF > /etc/grafana/provisioning/datasources/ds.yaml
apiVersion: 1
datasources:
- name: Loki
type: loki
access: proxy
url: http://gateway:3100
jsonData:
httpHeaderName1: "X-Scope-OrgID"
secureJsonData:
httpHeaderValue1: "tenant1"
EOF
/run.sh
ports:
- "3000:3000"
healthcheck:
test: [ "CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:3000/api/health || exit 1" ]
interval: 10s
timeout: 5s
retries: 5
networks:
- loki
gateway:
image: nginx:latest
depends_on:
- read
- write
entrypoint:
- sh
- -euc
- |
cat <<EOF > /etc/nginx/nginx.conf
user nginx;
worker_processes 5; ## Default: 1
events {
worker_connections 1000;
}
http {
resolver 127.0.0.11;
server {
listen 3100;
location = / {
return 200 'OK';
auth_basic off;
}
location = /api/prom/push {
proxy_pass http://write:3100\$$request_uri;
}
location = /api/prom/tail {
proxy_pass http://read:3100\$$request_uri;
proxy_set_header Upgrade \$$http_upgrade;
proxy_set_header Connection "upgrade";
}
location ~ /api/prom/.* {
proxy_pass http://read:3100\$$request_uri;
}
location = /loki/api/v1/push {
proxy_pass http://write:3100\$$request_uri;
}
location = /loki/api/v1/tail {
proxy_pass http://read:3100\$$request_uri;
proxy_set_header Upgrade \$$http_upgrade;
proxy_set_header Connection "upgrade";
}
location ~ /loki/api/.* {
proxy_pass http://read:3100\$$request_uri;
}
}
}
EOF
/docker-entrypoint.sh nginx -g "daemon off;"
ports:
- "3100:3100"
healthcheck:
test: ["CMD", "service", "nginx", "status"]
interval: 10s
timeout: 5s
retries: 5
networks:
- loki
flog:
image: mingrammer/flog
command: -f json -n 1000 -l
networks:
- loki
4.4.2. loki-config.yaml
---
server:
http_listen_port: 3100
memberlist:
join_members:
- loki:7946
schema_config:
configs:
- from: 2021-08-01
store: boltdb-shipper
object_store: s3
schema: v11
index:
prefix: index_
period: 24h
common:
path_prefix: /loki
replication_factor: 1
storage:
s3:
endpoint: minio:9000
insecure: true
bucketnames: loki-data
access_key_id: loki
secret_access_key: supersecret
s3forcepathstyle: true
ring:
kvstore:
store: memberlist
ruler:
storage:
s3:
bucketnames: loki-ruler
4.4.3. promtail-local-config.yaml
---
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://gateway:3100/loki/api/v1/push
tenant_id: tenant1
scrape_configs:
- job_name: flog_scrape
docker_sd_configs:
- host: unix:///var/run/docker.sock
refresh_interval: 5s
relabel_configs:
- source_labels: ['__meta_docker_container_name']
regex: '/(.*)'
target_label: 'container'