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データソースを選択します 写真 ログ表示 写真 写真
|