当前位置: 首页 > article >正文

基于promtail+loki+grafana搭建日志系统

文章目录

    • Promtail
      • 安装promtail
      • 创建配置文件
      • 创建systemd 服务文件
      • 启动promtail服务
    • loki
      • 下载loki服务
      • 创建config.yml文件
      • 创建systemd服务文件
      • 启动loki
    • grafana
      • 下载grafana

本文基于promtail+loki+grafana+prometheus(可选)
搭建一个轻量快速的日志系统,集成了日志收集、查询、监控error、做可视化dasborad的日志系统

Promtail

  • 作用:代理,监控日志文件,将日志内容传输到loki中

安装在产生日志的服务器上

安装promtail

安装promtail包
解压
创建config.yml文件

curl -O -L "https://github.com/grafana/loki/releases/download/v2.9.1/promtail-linux-amd64.zip"
apt install unzip
unzip promtail-linux-amd64.zip
chmod +x promtail-linux-amd64
sudo mv promtail-linux-amd64 /usr/local/bin/promtail
cd /etc
mkdir promtail
cd promtail
vim config.yml

创建配置文件

config.yml

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /var/log/positions.yaml

clients:
  - url: http://{收集日志的loki服务器ip}/loki/api/v1/push
    batchsize: 1048576
    batchwait: 5s

scrape_configs:
  - job_name: system
    static_configs:
      - targets:
          - localhost
        labels:
          job: job_name # 该日志的标签名
          __path__: /data/log # 需要监控传输的日志文件

注意loki的url,如果配置了nginx,注意nginx转发问题

创建systemd 服务文件

vim /etc/systemd/system/promtail.service

promtail.service

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

[Service]
Type=simple
ExecStart=/usr/local/bin/promtail -config.file /etc/promtail/config.yml	# promtail的config配置文件路径
Restart=on-failure
MemoryLimit=128M

[Install]
WantedBy=multi-user.target

启动promtail服务

systemctl daemon-reload
systemctl start promtail
systemctl enable promtail
systemctl status promtail 查看状态
# systemctl restart promtail 重启服务
# journalctl -u promtail.service -f 查看启动日志

loki

存储日志的数据库,接收promtail传输过来的日志数据,自带高效存储,定时删除等功能

下载loki服务

去到需要收集日志的服务器上

curl -O -L "https://github.com/grafana/loki/releases/download/v2.9.1/loki-linux-amd64.zip"
unzip loki-linux-amd64.zip
chmod +x loki-linux-amd64
sudo mv loki-linux-amd64 /usr/bin/loki
#apt-get update
#apt-get install loki promtail

创建config.yml文件

cd /etc
mkdir loki
cd loki
vim config.yml

config.yml

auth_enabled: false

server:
  http_listen_port: 3100
  grpc_listen_port: 9096

common:
  instance_addr: 127.0.0.1
  path_prefix: /tmp/loki	# loki的存储目录
  storage:
    filesystem:
      chunks_directory: /tmp/loki/chunks
      rules_directory: /tmp/loki/rules
  replication_factor: 1
  ring:
    kvstore:
      store: inmemory

query_range:
  align_queries_with_step: true # 启用后,查询会对齐到步长边界,有助于提高缓存命中率。
  max_retries: 5 # 查询失败时的最大重试次数。增加重试次数可以提高查询成功率,但也可能增加查询时间。
  results_cache:
    cache:
      embedded_cache:
        enabled: true
        max_size_mb: 100

schema_config:
  configs:
    - from: 2020-10-24
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h

ruler:
  alertmanager_url: http://localhost:9093
 
limits_config:
  max_query_parallelism: 16. # 允许并行执行的最大查询数。增加这个值可以提高查询性能,但会增加服务器负载。
  split_queries_by_interval: 15m #将查询按指定时间间隔拆分,以提高查询效率和性能
  ingestion_rate_mb: 4  # 每秒最大摄取速率(MB)
  ingestion_burst_size_mb: 6  # 突发摄取速率(MB)
  max_streams_per_user: 1000  # 每用户最大流数

table_manager:
  retention_deletes_enabled: true
  retention_period: 15d    # 日志保留 15天

创建systemd服务文件

vim /etc/systemd/system/loki.service
loki.service

[Unit]
Description=Loki service
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=loki
ExecStart=/usr/bin/loki -config.file /etc/loki/config.yml # loki的config配置文件路径
# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec = 120
Restart = on-failure
RestartSec = 2
MemoryLimit=512M #内存大小限制

[Install]
WantedBy=multi-user.target

启动loki

注意创建好对应的loki用户,以及nginx配置
useradd -r -s /sbin/nologin loki

systemctl daemon-reload
systemctl start loki
systemctl enable loki
systemctl status loki 查看状态
# systemctl restart loki 重启服务
# journalctl -u loki.service -f 查看启动日志

grafana

连接loki的日志数据库,基于loki的数据库做可视化报表以及监控告警等

下载grafana

后面再更新


http://www.kler.cn/a/387565.html

相关文章:

  • day06_Spark SQL
  • [离线数仓] 总结二、Hive数仓分层开发
  • 数据结构与算法之二叉树: LeetCode 637. 二叉树的层平均值 (Ts版)
  • 软件系统安全逆向分析-混淆对抗
  • 里氏替换原则(Liskov Substitution Principle,LSP):面向对象设计的基本原则
  • PHP 循环控制结构深度剖析:从基础到实战应用
  • 【WRF运行报错】segmentation fault (SIGSEGV) 错误原因总结
  • 网站视频过大,加载缓慢解决方法【分段加载视频】
  • 当爱遇见旋律:陆瑶记忆中的音符碎片!
  • 高速光耦——推动工业生产自动化飞跃的关键力量
  • 当今陪玩系统小程序趋势,陪玩系统源码搭建后的适用于哪些平台
  • 《ASP.Net Core技术内幕与项目实战》读书笔记_1
  • 引入 axios,根据 api 文档生成调用接口
  • AI大模型重塑软件开发流程:从自动化编码到智能协作的未来展望
  • 【MM-Align】学习基于输运的最优对齐动力学,快速准确地推断缺失模态序列
  • 【春秋云镜】CVE-2023-2130
  • springboot系列--web相关知识探索七
  • 使用 pd.ExcelWriter 创建多工作表 Excel 文件的详细教程
  • JAVA中的string和stringbuffer
  • SQL进阶技巧:如何计算复合增长率?
  • 如何在Python中实现一个简单的搜索引擎:从零开始的指南
  • Vue中父组件通过v-model向子组件传对象参数
  • 图像识别算法优化:提升识别精度与速度
  • 记一次文件包含刷题(伪协议篇)
  • Leetcode 买卖股票的最佳时机 Ⅱ
  • 思考:linux Vi Vim 编辑器的简明原理,与快速用法之《 7 字真言 》@ “鱼爱返 说 温泉哦“ (**)