実践: Loki をベースにした K8s ログの収集

実践: Loki をベースにした K8s ログの収集

1. ロキの紹介

1. Loki は、水平方向にスケーラブルで、可用性が高く、軽量で使いやすい、マルチテナント ログ集約システムです。ログ コンテンツをインデックス化するのではなく、各ログ ストリームのラベル セットをコンパイルするため、コスト効率が非常に高く、操作が簡単になるように設計されています。このプロジェクトは Prometheus に触発されており、特に Prometheus および k8s ユーザー向けに最適化されています。

2. Loki のアーキテクチャは非常にシンプルで、次の 3 つの部分で構成されています。①、Loki: メイン サーバー。ログの保存とクエリの処理を担当し、es に似ており、Prometheus と同じサービス検出メカニズムを使用して、フルテキスト インデックスを構築する代わりにログ ストリームにタグを追加します。したがって、Promtail から受信したログとアプリケーションのメトリックには、同じラベル セットが含まれます。ログとメトリック間のコンテキスト切り替えが改善されるだけでなく、ログの全文インデックス作成も回避されます。

②、promtail:ログを収集してLokiに送信する役割を担う収集側。 Filebeat と同様に、このツールの主な機能は、収集ターゲットの検出、ログ ストリームへのラベルの追加、そしてそれらを Loki に送信することです。 Promtail のサービス検出は、Prometheus のサービス検出メカニズムに基づいています。

③、Grafana(皆さんもすでにご存知でしょう):収集されたログの表示を担当し、非常に豊富なデータソースをサポートします。 Loki テクノロジー スタックでは、Grafana は主に Prometheus や Loki などのデータ ソースからの時系列データを表示するために使用されます。クエリ、視覚化、アラームなどの操作も可能になります。ページで指定されたラベルを持つポッドのログを照会できます。

次に、helmをインストールします

注: Loki は helm インストール方法を提供しており、インストール用のパッケージを直接ダウンロードできるので、まず helm をインストールします (マスターノードのインストール)

1. helmインストールパッケージをダウンロードする

[root@master ~]# wget https://get.helm.sh/helm-v3.9.0-linux-amd64.tar.gz

写真

2. インストール パッケージを解凍し、helm 実行コマンドを /usr/bin/ ディレクトリに移動します (簡易インストール)

 [root@master ~]# tar -xf helm-v3.9.0-linux-amd64.tar.gz #解压[root@master ~]# cd linux-amd64/ [root@master linux-amd64]# ls helm LICENSE README.md [root@master linux-amd64]# mv helm /usr/bin/

写真

3. Helmの自動補完を設定する

[root@master linux-amd64]# vim /etc/profile #编辑该文件source <(helm completion bash) #文档最后写入该命令[root@master linux-amd64]# source /etc/profile #使其生效

写真

4. インストールが成功したことを確認する

[root@master ~]# helm version #查看版本version.BuildInfo{Version:"v3.9.0", GitCommit:"7ceeda6c585217a19a1131663d8cd1f7d641b2a7", GitTreeState:"clean", GoVersion:"go1.17.5"} [root@master ~]# helm repo list #查看仓库Error: no repositories to show #还没有添加仓库[root@master ~]# helm env #查看helm的配置信息HELM_BIN="helm" HELM_CACHE_HOME="/root/.cache/helm" HELM_CONFIG_HOME="/root/.config/helm" HELM_DATA_HOME="/root/.local/share/helm" HELM_DEBUG="false" HELM_KUBEAPISERVER="" HELM_KUBEASGROUPS="" HELM_KUBEASUSER="" HELM_KUBECAFILE="" HELM_KUBECONTEXT="" HELM_KUBETOKEN="" HELM_MAX_HISTORY="10" HELM_NAMESPACE="default" HELM_PLUGINS="/root/.local/share/helm/plugins" HELM_REGISTRY_CONFIG="/root/.config/helm/registry/config.json" HELM_REPOSITORY_CACHE="/root/.cache/helm/repository" HELM_REPOSITORY_CONFIG="/root/.config/helm/repositories.yaml"

3. Lokiをデプロイする

1. Helm ソース (ウェアハウス) を追加する

[root@master ~]# helm repo add grafana https://grafana.github.io/helm-charts #添加仓库"grafana" has been added to your repositories [root@master ~]# [root@master ~]# [root@master ~]# helm repo list #查看仓库NAME URL grafana https://grafana.github.io/helm-charts [root@master ~]# helm search repo | grep loki #在仓库中搜索可用的helm的charts grafana/loki 5.36.3 2.9.2 Helm chart for Grafana Loki in simple, scalable... grafana/loki-canary 0.14.0 2.9.1 Helm chart for Grafana Loki Canary grafana/loki-distributed 0.76.1 2.9.2 Helm chart for Grafana Loki in microservices mode grafana/loki-simple-scalable 1.8.11 2.6.1 Helm chart for Grafana Loki in simple, scalable... grafana/loki-stack 2.9.11 v2.6.1 Loki: like Prometheus, but for logs. #下载最后一个堆栈类型,包含了各日志工具

2. helm チャートをダウンロードします。注: 直接インストールすることもできます。いくつかの設定を変更する必要があるため、最初にローカルにダウンロードすることを選択できます。

 [root@master ~]# helm pull grafana/loki-stack #下载[root@master ~]# ls anaconda-ks.cfg calico.yaml helm-v3.9.0-linux-amd64.tar.gz linux-amd64 loki-stack-2.9.11.tgz

2. 減圧

[root@master ~]# tar -xf loki-stack-2.9.11.tgz #解压[root@master ~]# cd loki-stack [root@master loki-stack]# ls #可以看到,解压后目录下会有多个资源文件charts Chart.yaml README.md requirements.lock requirements.yaml templates values.yaml

4. メイン設定ファイル(リソースファイル)を変更し、Grafanaを有効にする

[root@master loki-stack]# vim values.yaml 36 grafana: 37 enabled: true #由false修改为true,启用grafana 38 sidecar: 39 datasources: 40 label: "" 41 labelValue: "" 42 enabled: true 43 maxLines: 1000 44 image: 45 tag: 8.3.5

写真

5. アプリケーションをインストールして展開し、リソースを表示する

まずlokiという名前空間を作成します

[root@master loki-stack]# kubectl create ns loki namespace/loki created [root@master loki-stack]# helm install loki -n loki . #安装,这里最后有个点,为引用当前目录下的资源NAME: loki LAST DEPLOYED: Sat Nov 18 14:43:20 2023 NAMESPACE: loki STATUS: deployed REVISION: 1 NOTES: The Loki stack has been deployed to your cluster. Loki can now be added as a datasource in Grafana. See http://docs.grafana.org/features/datasources/loki/ for more detail. [root@master loki-stack]# kubectl -n loki get pods #查看pod资源NAME READY STATUS RESTARTS AGE loki-0 1/1 Running 0 8m43s loki-grafana-6b5f7dc79-rjcwm 2/2 Running 0 8m43s loki-promtail-t69rd 1/1 Running 0 8m43s loki-promtail-tckwm 1/1 Running 0 8m43s [root@master loki-stack]# [root@master loki-stack]# [root@master loki-stack]# [root@master loki-stack]# kubectl -n loki get deploy #查看控制器NAME READY UP-TO-DATE AVAILABLE AGE loki-grafana 1/1 1 1 8m49s

写真

現時点では、Grafana のサービス タイプは clusterip であり、外部ネットワーク アクセスのためにタイプを nodeport に変更する必要があります。

写真

6. 編集を通じてGrafanaのサービスタイプを変更する

[root@master loki-stack]# kubectl -n loki edit svc loki-grafana service/loki-grafana edited #修改类型为nodeport [root@master loki-stack]# kubectl -n loki get svc #查看暴露的端口NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE loki ClusterIP 10.96.209.225 <none> 3100/TCP 14m loki-grafana NodePort 10.96.164.26 <none> 80:31276/TCP 14m loki-headless ClusterIP None <none> 3100/TCP 14m loki-memberlist ClusterIP None <none> 7946/TCP 14m

IV.訪問

1.まずログインパスワードを取得する

[root@master loki-stack]# kubectl get secret -n loki loki-grafana -o jsnotallow="{.data.admin-password}" | base64 --decode ; echo hdHI2C0vBAWdE6dw8Mbx7j846JZSsCUXbmUXLx4g #获取到的密码

2. ログインします。ノードのIP+ポートのユーザーはadminで、パスワードはコマンドラインから取得したパスワードです。

写真

Lokiデータソースがデフォルトで追加されました

写真

3. テンプレートをインポートする

公式サイトからダウンロードできます

Grafana テンプレートの公式サイト: https://grafana.com/grafana/dashboards/?search=linux

ダウンロードしたテンプレートをインポートし、Lokiデータソースを選択します

写真

ログ表示

写真

写真


<<:  Kubernetes の怠け者開発者ガイド

>>:  2024 年に無視できない 6 つのクラウド セキュリティの脅威

推薦する

SEO実践コード学習体験(パート1)

私は1年間SEOを勉強し、いくつかの基本的な概念を習得しました。私は常にSEOの専門家だと思っていま...

raksmart: 大規模トラフィックサーバー、回線: CN2/本土最適化/国際 BGP

ビデオ サーバー、CDN サーバー、ダウンロード サーバー、さまざまなストリーミング メディア サー...

Code Year が 48 時間で 10 万人のユーザーを獲得した裏話: 1 時間で Web ページをデザインする

たった 1 時間で Code Year の Web サイトをデザインした方法: Code Year ...

LoveServers - 20 USD/年/KVM/512MB RAM/10GB HDD/500GB Flow/英国

LoveServers.com は以前の weloveservers に少し似ていますか?しかし、彼...

少女がWikipediaを使って高品質の外部リンクを作成

1. 百科事典のリソースを収集して整理します。 1. 百科事典のリソースを収集する: 検索エンジンの...

サーバー: reprisehosting-dual-channel L5640/32g メモリ/1T ハードディスク/シアトル/45 USD

reprisehosting.com の特別サーバープロモーションはここです。米国西海岸のシアトルデ...

自動車コンピューティングの未来: クラウド、エッジ、自動車バリューチェーンにおける新たな機会と戦略

コネクテッドカーのエコシステムが発展するにつれ、自動車、通信、ソフトウェア、半導体など、複数のバリュ...

ウェブサイトの重みとランキングが低いのはなぜですか?

1. 外部リンクの品質が低い一部のウェブサイトでは外部リンクを大量に掲載していますが、その品質は非常...

YY: ペンギンとの競争の中でアライグマの生存が優先

ペンギンの影に隠れたアライグマの生存ルール:テンセントはすべてをコピーする責任があり、YYはテンセン...

ウェブマスターの推奨: 韓国の VPS 推奨、高速、安価、高防御、大容量

韓国の VPS の推奨: 韓国の VPS は物理的に本土に近く、速度が速く、登録も不要です。韓国の ...

ウェブサイトの販売力とコンバージョン率を効果的に向上させる方法を分析する

インターネットの急速な発展に伴い、電子商取引に従事する人が増えていますが、ウェブサイトの販売力は想像...

いわゆる新しい SEO テクノロジーを分析して、罠に陥っていませんか?

忙しくて長い間ブログを書いていませんでした。昨夜、シェアしたいという子供が、どこかで学んだ SEO ...

IT運用におけるクラウドコンピューティングの役割

IT リーダーは、クラウド コンピューティングのビジネス価値を十分に引き出すために、一貫性があり、拡...