実践: 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 つのクラウド セキュリティの脅威

推薦する

インターネットはどのようにしてトラフィックを生成するのでしょうか?

トラフィックとユーザーの生成は一度きりのことではなく、モバイルで持続的かつ長期的な運用が必要です。な...

悲しんでください!靴が2足あるとワクワクする

月収10万元の起業の夢を実現するミニプログラム起業支援プラン驚くべきことに、最近、KicksBall...

ヘンゴーストはどうですか?香港データセンター、香港独立サーバー評価、実際のテストデータ共有

Henghost(Hengchuang Technology)は、香港クラウドサーバー、香港独立サー...

dogyun: 重慶聯通専用サーバー、月額 400 元、2*e5-2680v4/128gDDR4/1TSSD/帯域幅 50M 入力 & 40M 出力

Dogyun は現在、重慶聯通のコンピュータ ルームで独立サーバーを先行販売しています。デフォルトの...

URL転送と301リダイレクトが体重に与える影響に関する研究

すべてのウェブマスターは、www 付きドメイン名と www なしドメイン名の違いと関連性を知っており...

Kubernetes の NodePort、LoadBalancer、Ingress を理解する

これら 3 つはクラスター内のサービスをクラスター外に公開できますが、それらの違いと、これらのコンポ...

中小企業が電子商取引に移行する過程で、どのような問題に直面するのでしょうか? - A5 ウェブマスターネットワーク

昨日、オンライン マーケティングをアウトソーシングしているクライアント企業を再訪問しました。会ったと...

ロサンゼルスのDC3データセンターのCN2 GTシリーズネットワークのVPSの簡単なレビュー

実は、以前、ロサンゼルスのBandwagonHostのDC3データセンターのVPSについてレビュー記...

初心者の視点から見たSEO:ウェブサイトの本来の価値を見落としがちです

ウェブサイトに触れてまだ1年も経っていない初心者として、ここでSEOについて話すと、専門家の前で自分...

Red HatとNutanixが協力してオープンハイブリッドマルチクラウドソリューションを提供

[[416086]]最近、Red Hat と Nutanix は、オンプレミスおよびハイブリッドクラ...

2020 年のクラウド コンピューティング開発予測

2020 年には、マルチクラウド分野では、マルチクラウド管理、「ブティック」クラウド、AI/機械学習...

ローカル人材ウェブサイトのコア競争力の欠如という現象を打破する方法

地元の人材ウェブサイトは、雇用や採用を促進するための優れた基盤を築いてきましたが、雇用圧力が高まるに...

2018年クラウドネイティブテクノロジープラクティスサミット(CNBPS)がクラウドネイティブを再定義

9月20日、2018年クラウドネイティブベストプラクティスサミットがクラウンプラザ北京U-Townで...