Grafana Lokiの設定
このガイドでは、Milvusクラスタのログを収集するLokiと、ログをクエリして表示するGrafanaの設定方法について説明します。
このガイドでは、以下の方法を学びます:
参考までに、Promtailは非推奨となるため、Kubernetesのログを収集してLokiに転送する新しいエージェントとしてGrafana Labsが公式に提案しているAlloyを紹介します。
前提条件
- K8s上にMilvusクラスタをインストールしている。
- Helmや Kubectlなど必要なツールをインストールしている。
Lokiのデプロイ
LokiはPrometheusにインスパイアされたログ集約システムです。Helmを使用してLokiをデプロイし、Milvusクラスタからログを収集します。
1.GrafanaのHelmチャートリポジトリを追加する
HelmにGrafanaのチャートリポジトリを追加し、更新します:
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
2.Lokiのオブジェクトストレージの設定
以下のストレージオプションのいずれかを選択し、loki.yaml 設定ファイルを作成します:
オプション1:ストレージにMinIOを使用する
loki: commonConfig: replication_factor: 1 auth_enabled: false minio: enabled: trueオプション2:ストレージにAWS S3を使用する。
以下の例では、
<accessKey>と<keyId>を独自の S3 アクセスキーと ID に、s3.endpointを S3 エンドポイントに、s3.regionを S3 リージョンに置き換えてください。loki: commonConfig: replication_factor: 1 auth_enabled: false storage: bucketNames: chunks: loki-chunks ruler: loki-ruler admin: loki-admin type: 's3' s3: endpoint: s3.us-west-2.amazonaws.com region: us-west-2 secretAccessKey: <accessKey> accessKeyId: <keyId>
3.Lokiのインストール
以下のコマンドを実行し、Lokiをインストールします:
kubectl create ns loki
helm install --values loki.yaml loki grafana/loki -n loki
Alloyのデプロイ
Alloy の設定を表示します。
1.Alloyコンフィギュレーションの作成
以下のalloy.yaml 、すべてのKubernetesポッドのログを収集し、loki-gateway経由でLokiに送信します:
alloy:
enableReporting: false
resources: {}
configMap:
create: true
content: |-
loki.write "default" {
endpoint {
url = "http://loki-gateway/loki/api/v1/push"
}
}
discovery.kubernetes "pod" {
role = "pod"
}
loki.source.kubernetes "pod_logs" {
targets = discovery.relabel.pod_logs.output
forward_to = [loki.write.default.receiver]
}
// Rewrite the label set to make log query easier
discovery.relabel "pod_logs" {
targets = discovery.kubernetes.pod.targets
rule {
source_labels = ["__meta_kubernetes_namespace"]
action = "replace"
target_label = "namespace"
}
// "pod" <- "__meta_kubernetes_pod_name"
rule {
source_labels = ["__meta_kubernetes_pod_name"]
action = "replace"
target_label = "pod"
}
// "container" <- "__meta_kubernetes_pod_container_name"
rule {
source_labels = ["__meta_kubernetes_pod_container_name"]
action = "replace"
target_label = "container"
}
// "app" <- "__meta_kubernetes_pod_label_app_kubernetes_io_name"
rule {
source_labels = ["__meta_kubernetes_pod_label_app_kubernetes_io_name"]
action = "replace"
target_label = "app"
}
// "job" <- "__meta_kubernetes_namespace", "__meta_kubernetes_pod_container_name"
rule {
source_labels = ["__meta_kubernetes_namespace", "__meta_kubernetes_pod_container_name"]
action = "replace"
target_label = "job"
separator = "/"
replacement = "$1"
}
// L"__path__" <- "__meta_kubernetes_pod_uid", "__meta_kubernetes_pod_container_name"
rule {
source_labels = ["__meta_kubernetes_pod_uid", "__meta_kubernetes_pod_container_name"]
action = "replace"
target_label = "__path__"
separator = "/"
replacement = "/var/log/pods/*$1/*.log"
}
// "container_runtime" <- "__meta_kubernetes_pod_container_id"
rule {
source_labels = ["__meta_kubernetes_pod_container_id"]
action = "replace"
target_label = "container_runtime"
regex = "^(\\S+):\\/\\/.+$"
replacement = "$1"
}
}
2.Alloyのインストール
helm install --values alloy.yaml alloy grafana/alloy -n loki
Grafanaでログをクエリする
Grafanaをデプロイし、ログをクエリするためにLokiに接続するように設定します。
1.Grafanaのデプロイ
以下のコマンドでGrafanaをインストールします:
kubectl create ns monitoring
helm install my-grafana grafana/grafana --namespace monitoring
Grafanaにアクセスする前に、admin パスワードを取得する必要があります:
kubectl get secret --namespace monitoring my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
次に、Grafanaポートをローカルマシンに転送する:
export POD_NAME=$(kubectl get pods --namespace monitoring -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=my-grafana" -o jsonpath="{.items[0].metadata.name}")
kubectl --namespace monitoring port-forward $POD_NAME 3000
2.GrafanaのデータソースとしてLokiを追加する
Grafanaが実行されたら、ログをクエリするためのデータソースとしてLokiを追加する必要があります。
- ウェブブラウザを開き、
127.0.0.1:3000に移動する。ユーザー名adminと、先ほど取得したパスワードを使用してログインする。 - 左側のメニューで、Connections>Add new connection を選択する。
- 表示されたページで、データソースのタイプとしてLokiを選択する。検索バーにlokiと入力すると、データ・ソースを検索できます。
- Lokiデータソースの設定で、Nameと URLを指定し、Save & testをクリックします。
データソース
3.Milvusログの照会
Lokiをデータソースとして追加したら、GrafanaでMilvusのログを照会する:
- 左側のメニューで、Exploreをクリックする。
- ページの左上隅で、loki データソースを選択する。
- Label browserを使用してラベルを選択し、ログをクエリする。
クエリ