KubernetesロギングシステムがLoki-Stackを立ち上げました
スコフィールド初心者の運用と保守の話
ロキ入門
Grafana Lokiは、完全に機能するログスタックを形成できるコンポーネントのセットです。
他のロギングシステムとは異なり、Lokiはログに関するメタデータのみにインデックスを付けるというアイデアに基づいて構築されています:タグ(Prometheusタグと同じように)。次に、ログデータ自体が圧縮され、オブジェクトストレージ(S3やGCSなど)のブロックに保存されるか、ファイルシステムにローカルに保存されます。小さなインデックスと高度に圧縮されたブロックにより、操作が簡素化され、Lokiのコストが大幅に削減されます。
EKLと比較して、ロキは非常に軽量です。ロキを使用した後、ELKは突然香りを失います!ハハ~~~
Loki-スタックコンポーネント
最初に2枚の写真を入れてください
- Promtail
Promtailは、コンテナログをLokiまたはGrafanaサービスに送信するために使用されるログ収集ツールです。このツールには、主にコレクションターゲットの検出と、ログストリームへのラベルタグの追加、およびそれらのLokiへの送信が含まれます。さらに、Promtailのサービス検出はPrometheusに基づいています。サービス検出メカニズムが実装されています。 - Loki
Lokiは、水平方向に拡張でき、可用性が高く、マルチテナンシーをサポートするログ集約システムです。Prometheusと同じサービス検出メカニズムを使用し、フルテキストインデックスを作成する代わりに、ログストリームにタグを追加します。したがって、Promtailから受信したログと適用されたメトリックには、同じラベルセットがあります。ログとインジケーター間のコンテキスト切り替えが改善されるだけでなく、ログのフルテキストインデックス作成も回避されます。 - Grafana
Grafanaは、監視と視覚的観察のためのオープンソースプラットフォームであり、非常に豊富なデータソースをサポートします。Lokiテクノロジースタックでは、PrometheusやLokiなどのデータソースからの時系列データを表示するために特に使用されます。また、データダッシュボードの作成、探索、共有に使用できるクエリ、視覚化、アラームなどの操作も可能です。
次に、Lokiスタックを開始して体験しましょう。
ヘルムを使用してloki-stackをデプロイします
1.前提条件として、k8sクラスターが必要であり、ヘルムツールをインストールする必要があります
。2。ヘルムソースを追加します。
helm repo add loki https://grafana.github.io/loki/charts
下载到本地,也可以直接安装,因为需要修改存储类及其他一些配置,我习惯下载到本地,方便修改调试
helm fetch loki/loki-stack
tar -zxf loki-stack-0.38.1.tgz
cd loki-stack/
[root@ loki-stack]# ls -al
drwxr-xr-x. 7 root root 85 Jul 2 07:25 charts
-rwxr-xr-x. 1 root root 369 Jul 1 01:46 Chart.yaml
-rwxr-xr-x. 1 root root 342 Jul 1 01:46 .helmignore
-rwxr-xr-x. 1 root root 1662 Jul 1 01:46 README.md
-rwxr-xr-x. 1 root root 533 Jul 1 01:46 requirements.lock
-rwxr-xr-x. 1 root root 595 Jul 1 01:46 requirements.yaml
drwxr-xr-x. 3 root root 80 Jul 2 08:46 templates
-rwxr-xr-x. 1 root root 206 Jul 16 00:53 values.yaml
3. loki-stackのvalues.yamlファイルを変更します。ここでは、lokiとpromtailのみをインストールし、クラスターがgrafanaとprometheus用にデプロイしたprometheus-operatorを使用します。
[root@ ]# cat values.yaml
loki:
enabled: true
promtail:
enabled: true
4. lokiのvalues.yaml
を変更し、主にstorageClassと永続性のサイズを変更し、serviceMonitorを開いてlokiを監視します
[root@ loki-stack]# cd charts/loki/
[root@ loki]# ll
total 20
-rw-r--r-- 1 root root 367 Nov 28 00:31 Chart.yaml
-rw-r--r-- 1 root root 1846 Nov 28 00:31 README.md
drwxr-xr-x 2 root root 4096 Dec 1 09:14 templates
-rw-r--r-- 1 root root 6695 Dec 1 09:15 values.yaml
persistence:
enabled: true
storageClass: "rbd"
accessModes:
- ReadWriteOnce
size: 100Gi
annotations: {}
serviceMonitor:
enabled: true
interval: ""
additionalLabels: {}
annotations: {}
# scrapeTimeout: 10s
5. promtailのvalues.yamlを変更し
ます。ログディレクトリをさらに追加する場合は、ここに追加できます。
# Extra volumes to scrape logs from
volumes:
- name: docker
hostPath:
path: /var/lib/docker/containers
- name: pods
hostPath:
path: /var/log/pods
6.展開を実行します
cd loki-stack
kubectl create ns loki
helm install loki -n loki -f values.yaml .
[root@ loki-stack]# helm ls -n loki
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
loki loki 1 2020-12-01 09:15:22.971437761 +0800 CST deployed loki-stack-2.1.0 v2.0.0
7.既存のgrafanaインターフェースにログインし、lokiソースを追加し、
最初にlokiのサービスアドレスを取得します
[root@ loki-stack]# kubectl get svc -n loki
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
loki NodePort 10.101.129.255 <none> 3100:30439/TCP 92m
loki-headless ClusterIP None <none> 3100/TCP 92m
情報を入力したら、[保存してテスト]をクリックして、grafanaがloki
8に接続できることを確認します。[探索]をクリックすると、以下に示すように、LogQLを使用してログをクエリできます。
もちろん、他の人が作成したテンプレートをインポートすることもできます。より多くの
ダッシュボードは、公式Webサイトhttps://grafana.com/grafana/dashboardsで表示できます。PS:記事はdev.kubeops.netに同期されます。