PLG | Prometheus + Loki + Grafana 是时候把你的ELK扔掉了

目录

零、瞎BB

一、Pomtail

二、Loki

三、对接Grafana


 Prometheus和Grafana默认你懂,本篇直接上 promtail 组件和 loki 。本文采用二进制安装部署 

零、瞎BB

 PLG 通常指的是 Prometheus , Loki , Grafana 的日志和监控栈,这是一个常见的开源解决方案组合,用于收集、存储和可视化日志和度量数据。

  •  Prometheus 主要用于收集和存储指标数据。
  •  Loki 专注于日志聚合和管理。
  •  Grafana 是用于数据的可视化和监控的工具。

在这个组合中, Promtail Loki 的一个代理,负责收集日志并发送给 Loki Loki 则负责存储和查询这些日志数据。日志文件本身通常存储在你的系统中的某个地方, Promtail 会监视这些日志文件,并将新的日志条目推送到 Loki

例如,如果你有一个应用程序,它的日志被写入到 /var/log/myapp 目录中,你会在 Promtail 的配置文件中指定这个目录。 Promtail 会监视目录中的变化,并将日志数据发送到Loki Loki 则接收这些数据并将其存储在其数据库中,通常是结合使用本地存储和/或对象存储(如Amazon S3、Google Cloud Storage等)。这意味着,日志数据的生命周期如下:

1.应用程序生成日志,写入到它的日志文件中
2.Promtail 被配置为监视这些日志文件,捕获其内容
3.Promtail 将日志数据发送到 Loki
4.Loki 接收日志数据并将其存储在后端存储中

在 Grafana 中,你可以配置 Loki 数据源,然后创建仪表板来查询和可视化 Loki 中的日志数据。总的来说,PLG 栈的组件都有各自的职责,Promtail 不存储日志文件,它仅仅是作为一个中介,将日志数据从你的系统发送到 Loki 服务。Loki 是负责存储和查询日志数据的组件。


一、Pomtail

下载promtail:

curl -O -L "https://github.com/grafana/loki/releases/download/v2.9.3/promtail-linux-amd64.zip"

解压:

unzip promtail-linux-amd64.zip

移下位置,方便后面加入systemd:

sudo mv promtail-linux-amd64 /usr/local/bin/

下载配置文件,或者直接复制下文:

#下载
wget  --no-check-certificate https://raw.githubusercontent.com/grafana/loki/master/clients/cmd/promtail/promtail-local-config.yaml
#配置文件原文
server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

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

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

根据需求将 clients 下的地址修改为Loki 所在地址。以及 labels 下日志文件的存放路径。若需要同时监听多个目录下的日志文件,写法如下:

#按需修改
server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

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

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

  - job_name: application
    static_configs:
      - targets:
          - localhost
        labels:
          job: applogs
          __path__: /path/to/your/application/logs/*.log

  - job_name: another_application
    static_configs:
      - targets:
          - localhost
        labels:
          job: anotherapplogs
          __path__: /another/path/to/logs/**/*.log  # 支持glob模式

这个配置定义了三个 scrape_configs ,分别用于从不同的目录收集日志: 

  1.  system 作业从 /var/log 目录下收集所有 .log 文件。
  2.  application 作业从特定应用程序的日志目录收集日志。
  3.  another_application 作业从另一个应用程序的日志目录收集日志,并且使用了 glob 模式来匹配更深层次的目录结构中的日志文件。

__path__ 标签中指定的路径支持使用通配符 * 来匹配文件名或目录名的一部分。 ** 模式可以匹配任意中间目录,这在指定具有多级子目录的日志路径时非常有用。

确保配置文件中的 positions 文件的路径对你的系统来说是可写的,因为 Promtail 会使用这个文件来记录哪些日志内容已被读取和发送。

移动一下:

sudo mkdir /etc/promtail && sudo mv promtail-local-config.yaml /etc/promtail/

加入系统服务:

sudo vim /etc/systemd/system/promtail.service

确认下地址是否一致:

[Unit]
Description=Promtail service
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/promtail-linux-amd64 -config.file=/etc/promtail/promtail-local-config.yaml
Restart=on-failure

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable promtail.service --now

二、Loki

下载Loki:

curl -O -L "https://github.com/grafana/loki/releases/download/v2.9.3/loki-linux-amd64.zip"

解压:

unzip loki-linux-amd64.zip
sudo mv loki-linux-amd64 /usr/local/bin/

下载配置文件:

wget  --no-check-certificate https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml

注意一下文件内容,如果不对就复制以下内容(按需修改)

sudo mkdir /etc/loki && sudo vim /etc/loki/loki-local-config.yaml
auth_enabled: false

server:
  http_listen_port: 3100
  grpc_listen_port: 9096

common:
  instance_addr: 127.0.0.1
  path_prefix: /tmp/loki
  storage:
    filesystem:
      chunks_directory: /tmp/loki/chunks
      rules_directory: /tmp/loki/rules
  replication_factor: 1
  ring:
    kvstore:
      store: inmemory

query_range:
  results_cache:
    cache:
      embedded_cache:
        enabled: true
        max_size_mb: 100

schema_config:
  configs:
    - from: 2020-10-24
      store: tsdb
      object_store: filesystem
      schema: v12
      index:
        prefix: index_
        period: 24h

ruler:
  alertmanager_url: http://localhost:9093

# By default, Loki will send anonymous, but uniquely-identifiable usage and configuration
# analytics to Grafana Labs. These statistics are sent to https://stats.grafana.org/
#
# Statistics help us better understand how Loki is used, and they show us performance
# levels for most users. This helps us prioritize features and documentation.
# For more information on what's sent, look at
# https://github.com/grafana/loki/blob/main/pkg/analytics/stats.go
# Refer to the buildReport method to see what goes into a report.
#
# If you would like to disable reporting, uncomment the following lines:
#analytics:
#  reporting_enabled: false

加入系统服务:

sudo vim /etc/systemd/system/loki.service
[Unit]
Description=Loki log aggregation system
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/loki-linux-amd64 -config.file /etc/loki/loki-local-config.yaml

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable loki.service --now

三、对接Grafana

点击添加数据源:

PLG | Prometheus + Loki + Grafana 是时候把你的ELK扔掉了_第1张图片

选择Loki:

PLG | Prometheus + Loki + Grafana 是时候把你的ELK扔掉了_第2张图片

输入IP端口并保存:

PLG | Prometheus + Loki + Grafana 是时候把你的ELK扔掉了_第3张图片

左侧点击Explore,上方选择Loki: 

PLG | Prometheus + Loki + Grafana 是时候把你的ELK扔掉了_第4张图片

选择好后点击Show Logs:

PLG | Prometheus + Loki + Grafana 是时候把你的ELK扔掉了_第5张图片

效果(码一下)(有点恶心:

PLG | Prometheus + Loki + Grafana 是时候把你的ELK扔掉了_第6张图片

你可能感兴趣的:(Linux,prometheus,grafana,elk)