asp.net 部署之后只显示文件目录_生产环境部署Loki+grafana+promtail

本文介绍了如何在Kubernetes(k8s)环境中部署Loki和Grafana,以及在ECS服务器上安装promtail进行日志收集。Loki作为日志聚合系统,与Grafana结合提供了高效的日志管理和查看。部署过程包括安装helm、创建PVC、部署Loki、promtail和Grafana,以及在其他服务器上安装promtail。
摘要由CSDN通过智能技术生成

Loki是一个水平可扩展,高可用性,支持多租户的日志聚合系统,使用了和 Prometheus 相同的服务发现机制,将标签添加到日志流中而不是构建全文索引,而是为每个日志流编制一组标签。

Grafana 是一个用于监控和可视化观测的开源平台,支持非常丰富的数据源,支持Prometheus 和 Loki 等数据源的时间序列数据。

Grafana和Loki的组合使得我们日志收集聚合简单高效,而且查看起来更接近在控制台实时查看日志。

Loki由3个组成部分组成:

  • loki 是主服务器,负责存储日志和处理查询。
  • promtail 是代理,发现采集目标以及给日志流添加上 Label 标签,然后发送给 Loki,也可以选择fluent-bit。
  • 用户界面的Grafana。

部署方式

由于我们服务有同时运行在k8s集群上和ECS服务器上,所以规划Loki server使用helm部署在k8s中,grafana也部署在k8s中,promtail部署在k8s和其他ECS服务器上以docker方式运行。

Loki和grafana通过ingress暴露服务。

1. 安装helm

wget https://get.helm.sh/helm-v3.3.4-linux-amd64.tar.gztar zxf helm-v3.3.4-linux-amd64.tar.gzmv linux-amd64/helm /usr/bin/helm version  # 查看helm 版本

添加Loki源

helm repo add loki https://grafana.github.io/loki/charts && helm repo updatehelm search repo loki
fcf55e7e8410bc8942cbb8a8285b8f1c.png

2.创建PVC

为了使Loki数据持久化,k8s集群需要准备好StorageClass,这里使用了阿里云的Default StorageClass

执行以下命令将StorageClass (alicloud-disk-efficiency)配置为一个Default StorageClass。

kubectl patch storageclass alicloud-disk-efficiency -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
kubectl get sc
c47cc7fcebf0b28f64a3cc4552e8c9b2.png

创建PVC

注,在阿里云k8s设置了Default StorageClass后可以不指定StorageClass,但其他情况需要指定

apiVersion: v1kind: PersistentVolumeClaimmetadata:  name: loki-server-pvcspec:  accessModes:  - ReadWriteOnce  resources:    requests:      storage: 100Gi

集群会自动创建一个云盘卷(PV),且配置了Default StorageClass(alicloud-disk-ssd)。

kubectl get pvc
9ecfad328b7ef3e682701c9f1df2c434.png

3. 下载Loki并改造

helm fetch loki/loki

编辑 loki/value.yaml修改配置

14    enabled: true19      - host: loki.k8s.example.com # 开启ingress, ingress域名20        paths: ['/loki/api/v1/push']72      ingestion_rate_mb: 32121   enabled: true #开启持久化存储129   existingClaim: loki-server-pvc # 为之前创建的PVC

左侧为value.yaml的行数

4. 安装Loki

helm install loki-server ./loki   # 指定release的名称
08197dd02ff73014a28745f9a5e0f998.png

5.在k8s上安装promtail

安装日志采集端在k8s中

helm install promtail loki/promtail --set "loki.serviceName=loki-server"  # 要指定loki-server的名称

6. 安装grafana

grafana.yml如下

kind: DeploymentapiVersion: apps/v1beta2metadata:  labels:    app: grafana  name: grafanaspec:  replicas: 1  revisionHistoryLimit: 10  selector:    matchLabels:      app: grafana  template:    metadata:      labels:        app: grafana    spec:      securityContext:        runAsUser: 0      containers:        - name: grafana          image: grafana/grafana:latest          imagePullPolicy: IfNotPresent          env:            - name: GF_AUTH_BASIC_ENABLED              value: "true"            - name: GF_AUTH_ANONYMOUS_ENABLED              value: "false"          readinessProbe:            httpGet:              path: /login              port: 3000          ports:            - containerPort: 3000              protocol: TCP---apiVersion: v1kind: Servicemetadata:  name: grafana-service  labels:    app: grafanaspec:  ports:    - port: 3000      name: grafana      targetPort: 3000  selector:    app: grafana---apiVersion: extensions/v1beta1kind: Ingressmetadata:  name: grafana-public-ingress  #annotations:  #  kubernetes.io/ingress.class: shujiajia-public-ingressspec:  rules:  - host: grafana.k8s.example.com  # 注意修改为自己的域名    http:      paths:      - backend:          serviceName: grafana-service          servicePort: 3000

登入 Grafana,添加 Loki 作为数据源,如:http://loki-server:3100。添加之后,就可以点击 Explore 按钮,然后根据label选择不同服务查看日志了。

af997af1c6de4db94c6ed5e0b5aaa142.png

7. 在其他服务器上安装promtail进行日志收集

安装日志采集端在服务器上-docker方式

配置文件如下:cat config.yml

server:  http_listen_port: 0  grpc_listen_port: 0positions:  filename: /etc/promtail/positions.yaml   # 游标记录上一次同步位置  sync_period: 10s #10秒钟同步一次clients:  - url: http://loki.k8s.example.com/loki/api/v1/push  # 替换为自己的Loki server的地址,ingress暴露的地址scrape_configs:- job_name: gateway  static_configs:  - targets:      - localhost    labels:      # 自定义标签      app: gateway      __path__: /data/logs/*/*.log   # 需要收集的日志目录,支持正则匹配

启动

docker run -d --name promtail     -v /data/apps/promtail:/etc/promtail     -v /data/logs:/data/logs     grafana/promtail

注意,由于是docker方式运行,所以需要把配置文件目录和服务运行的日志目录进行挂载,如果目录下有多个日志,比如error.log和log.log,Loki会对日志进行聚合显示。

8.升级/更新loki

helm upgrade --install loki-server ./loki

查看日志

881125c431b1b2e02e770c672c659f00.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值