暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Loki 与 Promtail 实现轻量级日志管理系统

IT运维大爆炸 2024-11-09
240

1、简介

Grafana Loki 是一个用于日志聚合和分析的开源工具,专为云原生环境设计,与 Grafana 无缝集成,能够高效地收集、存储和查询日志。以下是如何使用 Grafana Loki 收集日志的详细步骤。

2、环境准备

确保你已经安装了以下组件:

  • Docker(用于容器化部署)

  • Grafana(用于可视化日志数据)

  • Loki(存储日志)

  • Promtail(收集日志)

3、安装 Loki

可以通过 Docker 轻松安装 Loki。运行以下命令:

[root@mast01 istio]# vim etc/loki/local-config.yaml
auth_enabled: false

server:
http_port: 3100

distributor:
ring:
  kvstore:
    store: inmemory

ingester:
chunk_idle_period: 5m
chunk_block_size: 720kb
max_chunk_age: 1h
lifecycler:
  heartbeat_timeout: 1m

storage_config:
boltdb:
  directory: loki/index

schema_config:
configs:
   - from: 2020-10-22
    store: boltdb
    schema: v11
    index:
      prefix: loki_index_
      period: 168h

compactor:
working_directory: loki/compactor


[root@mast01 istio]# docker run -d --name=loki -p 3100:3100 grafana/loki:latest -config.file=/etc/loki/local-config.yaml

4、安装 Promtail

[root@mast01 istio]# vim etc/promtail/config.yaml
server:
http_listen_port: 9080

positions:
filename: tmp/positions.yaml

clients:
 - url: http://192.168.58.116:3100/loki/api/v1/push

scrape_configs:
 - job_name: varlogs
  static_configs:
     - targets:
         - localhost
      labels:
        job: varlogs
        __path__: var/log/*.log

[root@mast01 istio]# docker run -d --name=promtail -v var/log:/var/log -v $(pwd)/promtail-config.yaml:/etc/promtail/config.yaml grafana/promtail:latest -config.file=/etc/promtail/config.yaml

5、安装  Grafana

[root@mast01 ~]# vim grafana.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
name: grafana-config
data:
grafana.ini: |
  [server]
  root_url = %(protocol)s://%(domain)s:%(http_port)s/
  serve_from_sub_path = true

  [auth]
  disable_login_form = false
  disable_signout_menu = false

  [users]
  allow_sign_up = true

---
apiVersion: apps/v1
kind: Deployment
metadata:
name: grafana
spec:
replicas: 1
selector:
  matchLabels:
    app: grafana
template:
  metadata:
    labels:
      app: grafana
  spec:
    containers:
       - name: grafana
        image: registry.cn-shanghai.aliyuncs.com/study-03/grafana:9.0.1
        ports:
           - containerPort: 3000
        env:
           - name: GF_SECURITY_ADMIN_PASSWORD
            value: "123456"  # 设置管理员密码
        volumeMounts:
           - name: grafana-config-volume
            mountPath: etc/grafana/grafana.ini
            subPath: grafana.ini
    volumes:
       - name: grafana-config-volume
        configMap:
          name: grafana-config

---
apiVersion: v1
kind: Service
metadata:
labels:
   # For use as a Cluster add-on (https://github.com/kubernetes/kubernetes/tree/master/cluster/addons)
   # If you are NOT using this as an addon, you should comment out this line.
  kubernetes.io/cluster-service: 'true'
  kubernetes.io/name: monitoring-grafana
name: monitoring-grafana
spec:
 # In a production setup, we recommend accessing Grafana through an external Loadbalancer
 # or through a public IP.
 # type: LoadBalancer
 # You could also use NodePort to expose the service at a randomly-generated port
 # type: NodePort
ports:
 - port: 80
  targetPort: 3000
selector:
  app: grafana
type: NodePort
 
 
[root@mast01 ~]# kubectl apply -f gra.yaml
configmap/grafana-config created
deployment.apps/grafana created
service/monitoring-grafana created

[root@mast01 ~]# kubectl get pod
NAME                       READY   STATUS   RESTARTS   AGE
grafana-5f996b9995-skg9n   1/1     Running   0         22s

6、在 Grafana 中配置 Loki 数据源

  • 登录 Grafana 控制台。

  • 进入 “Configuration” > “Data Sources”。

  • 点击 “Add data source” 并选择 “Loki”。

  • 在 URL 中输入 Loki 的地址(例如 http://192.168.58.116:3100
    )。

  • 点击 “Save & Test” 以确认连接成功。

7、验证效果

  • 点击左侧工具栏,选择Explore

  • 在查询框中输入日志查询,例如:

#使用 Grafana 提供的强大查询语言,可以进行更复杂的日志查询。例如,你可以使用 `|~` 进行正则匹配,或使用 `|=` 进行字符串过滤,构建适合你的查询。
{job="varlogs"} |= "error"

[root@mast01 log]# cat vmware-vmsvc-root.log |grep 2024-11-07|grep error
[2024-11-07T07:22:37.812Z] [ warning] [vmsvc] SimpleSock: failed to connect (1023 => 976), error 110: 连接超时

8、总结

通过以上步骤,你可以成功搭建一个基于 Grafana Loki 的日志收集和监控系统。Loki 提供高效的日志存储和查询能力,与 Grafana 的结合让用户能够轻松分析和可视化日志数据。这一组合非常适合于云原生环境和微服务架构,能够帮助团队快速定位和解决


文章转载自IT运维大爆炸,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论