搭建Loki、Promtail、Grafana轻量级日志系统(centos7)--简称PLG

需求

公司项目采用微服务的架构,服务很多,每个服务都有自己的日志,分别存放在不同的服务器上。当查找日志时需要分别登录不同的服务器,有大量的请求的情况下,在日志文件中查找信息十分困难。想要搭建一个日志系统,ELK分布式日志系统对于中小型公司来说开发维护成本太高,经过调研,选择Loki轻量级日志系统。

Loki简介

Loki 是一个水平可扩展,高可用性,多租户日志聚合系统,灵感来自 Prometheus ,其设计非常经济高效,易于操作。它不索引日志的内容,而是为每个日志流设置一组标签。

Loki与其他日志聚合系统差别:

不对日志进行全文本索引。通过存储压缩的,非结构化的日志以及仅索引元数据,Loki更加易于操作且运行成本更低。

使用与Prometheus相同的标签对日志流进行索引和分组,从而使您能够使用与Prometheus相同的标签在指标和日志之间无缝切换。

特别适合存储Kubernetes Pod日志。诸如Pod标签之类的元数据会自动被抓取并建立索引。

在Grafana中原生支持(需要Grafana v6.0及以上)。

Loki的日志系统的组件:

Promtail是代理,负责收集日志并将其发送给Loki。

Loki是主服务器,负责存储日志和处理查询。

Grafana用于查询和显示日志。

搭建步骤

本文采用的搭建方式是分别下载各个组件并安装。也可以参考官方的文档进行搭建安装。

Loki的GitHub地址:https://github.com/grafana/loki

配置文件官网地址:https://grafana.com/docs/loki/latest/installation/local/

Grafana下载官网:https://grafana.com/grafana/download

1.下载安装启动Grafana

官网提供了下图中几种方式,本文采用的是CentOS系统,yum安装的方式。

#下载安装grafana命令,下列命令执行成功后。在/usr/sbin文件夹下会有grafana-server执行文件
wget https://dl.grafana.com/oss/release/grafana-7.3.2-1.x86_64.rpm
sudo yum localinstall grafana-7.3.2-1.x86_64.rpm
#启动grafana,grafana会占用服务器3000端口,记得保证3000端口不被占用
cd /usr/sbin
./grafana-server web

2.下载启动Loki和Promtail

官方文档地址:https://grafana.com/docs/loki/latest/installation/local/

因为采用本地安装的方式,参考文档(下图箭头指向的位置),分别下载执行文件和启动的配置文件。

下载Promtail:https://github.com/grafana/loki/releases/download/v2.0.0/promtail-linux-amd64.zip

#下载压缩文件
curl -O -L "https://github.com/grafana/loki/releases/download/v2.0.0/loki-linux-amd64.zip"
#解压文件
unzip "loki-linux-amd64.zip"
#执行文件授权
chmod a+x "loki-linux-amd64" #下载Loki和Promtail的配置文件
wget https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml
wget https://raw.githubusercontent.com/grafana/loki/main/clients/cmd/promtail/promtail-local-config.yaml
若下载失败,使用下面已下载好的文件
loki-local-config.yaml
vim loki-local-config.yaml

auth_enabled: false

server:
http_listen_port: 3100 # 端口 ingester:
lifecycler:
address: 127.0.0.1 # 地址
ring:
kvstore:
store: inmemory
replication_factor: 1
final_sleep: 0s
chunk_idle_period: 1h # Any chunk not receiving new logs in this time will be flushed
max_chunk_age: 1h # All chunks will be flushed when they hit this age, default is 1h
chunk_target_size: 1048576 # Loki will attempt to build chunks up to 1.5MB, flushing first if chunk_idle_period or max_chunk_age is reached first
chunk_retain_period: 30s # Must be greater than index read cache TTL if using an index cache (Default index read cache TTL is 5m)
max_transfer_retries: 0 # Chunk transfers disabled schema_config:
configs:
- from: 2020-10-24
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h storage_config:
boltdb_shipper:
active_index_directory: /tmp/loki/boltdb-shipper-active
cache_location: /tmp/loki/boltdb-shipper-cache
cache_ttl: 24h # Can be increased for faster performance over longer query periods, uses more disk space
shared_store: filesystem
filesystem:
directory: /tmp/loki/chunks compactor:
working_directory: /tmp/loki/boltdb-shipper-compactor
shared_store: filesystem limits_config:
reject_old_samples: true
reject_old_samples_max_age: 168h chunk_store_config:
max_look_back_period: 0s table_manager:
retention_deletes_enabled: false
retention_period: 0s ruler:
storage:
type: local
local:
directory: /tmp/loki/rules
rule_path: /tmp/loki/rules-temp
alertmanager_url: http://localhost:9093 # alertmanager报警地址
ring:
kvstore:
store: inmemory
enable_api: true
promtail-local-config.yaml
vim 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

启动Loki,本文采用的Loki默认配置,服务端口为3100

#启动Loki命令
后台启动 nohup ./loki-linux-amd64 -config.file=loki-local-config.yaml > loki.log 2>&1 & 前台启动
./loki-linux-amd64 -config.file=./loki-local-config.yaml #查看启动是否成功(查看3100端口的进程是否存在)
netstat -tunlp | grep 3100
#或者根据名称查找进程(执行命令后有下边的显示,则启动成功)
ps -ef | grep loki-linux-amd64
$ root 11037 22022 0 15:44 pts/0 00:00:55 ./loki-linux-amd64 -config.file=loki-local-config.yaml

启动Promtail

前台启动
./promtail-linux-amd64 -config.file=./promtail-local-config.yaml 后台启动
#Promtail默认端口是9080,启动完成后,可以采用上边的方式查看进程是否启动成功
nohup ./promtail-linux-amd64 -config.file=promtail-local-config.yaml > promtail.log 2>&1 &

配置服务

vim /usr/lib/systemd/system/loki.service

[Unit]
Description=loki
Documentation=https://github.com/grafana/loki/tree/master
After=network.target [Service]
Type=simple
User=loki
ExecStart=/usr/local/src/loki-linux-amd64 -config.file=/usr/local/src/loki-local-config.yaml &>> /opt/logs/loki-3100.log # 具体路径可以根据实际情况修改
Restart=on-failure [Install]
WantedBy=multi-user.target
# systemctl daemon-reload
# systemctl start loki
# systemctl status loki
# systemctl enable loki
vim /usr/lib/systemd/system/promtail.service

[Unit]
Description=promtail
Documentation=https://github.com/grafana/loki/tree/master
After=network.target [Service]
Type=simple
User=promtail
ExecStart=/usr/local/src/promtail-linux-amd64 -config.file=/usr/local/src/promtail-local-config.yaml &>> /opt/logs/promtail-9080.log # 具体路径可以根据实际情况修改
Restart=on-failure [Install]
WantedBy=multi-user.target
# systemctl daemon-reload
# systemctl start promtail
# systemctl status promtail
# systemctl enable promtail

验证:

curl "http://127.0.0.1:3100/api/prom/label"
curl localhost:3100/loki/api/v1/labels

如何配置数据源

访问web页面:http://localhost:3000/ 进行登录(账号密码都是admin),点击下图中的位置,找到Loki,配置数据源。

填写数据源的访问地址并保存。

日志查看效果如下图。

配置日志路径

varlog参考写法

参考:https://www.cnblogs.com/sanduzxcvbnm/p/14234953.html

参考:https://blog.csdn.net/tcy1429920627/article/details/109679363

搭建Loki、Promtail、Grafana轻量级日志系统(centos7)的更多相关文章

  1. Spring Cloud 5分钟搭建教程(附上一个分布式日志系统项目作为参考) - 推荐

    http://blog.csdn.net/lc0817/article/details/53266212/ https://github.com/leoChaoGlut/log-sys 上面是我基于S ...

  2. 轻量级日志收集方案Loki

    先看看结果有多轻量吧 官方文档:https://grafana.com/docs/loki/latest/ 简介 Grafana Loki 是一个日志聚合工具,它是功能齐全的日志堆栈的核心. Loki ...

  3. 利用Asio搭建日志系统

    Asio(http://think-async.com)官方示例中给出了一个比较初步的日志服务,主要代码在basic_logger.hpp.logger_service.hpp.logger_serv ...

  4. .NET下日志系统的搭建——log4net+kafka+elk

    .NET下日志系统的搭建--log4net+kafka+elk 前言     我们公司的程序日志之前都是采用log4net记录文件日志的方式(有关log4net的简单使用可以看我另一篇博客),但是随着 ...

  5. centos7搭建安装loki、promtail、Grafana日志系统

    loki.promtail.Grafana安装包 链接:https://pan.baidu.com/s/1vkSa_KYrXM0UEI8i42KdaA 提取码:4d4q 如果安装失败或者下载速度慢可以 ...

  6. 【日志系统】Loki日志监控 - 入门初体验

    使用Grafana+Loki+Promtail入门级部署分布式日志系统(windows环境) 生命不息,写作不止 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放 ...

  7. elk + filebeat,6.3.2版本简单搭建,实现我们自己的集中式日志系统

    前言 刚从事开发那段时间不习惯输出日志,认为那是无用功,徒增代码量,总认为自己的代码无懈可击:老大的叮嘱.强调也都视为耳旁风,最终导致的结果是我加班排查问题,花的时间还挺长的,要复现问题.排查问题等, ...

  8. Loki日志系统

    一.概述 背景 Loki的第一个稳定版本于2019年11月19日发布,是 Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统. Grafana 对 Loki ...

  9. Loki日志系统基础知识

    文章摘抄转载自:https://lluozh.blog.csdn.net/article/details/111027998 Loki 日志系统由以下3个部分组成: loki是主服务器,负责存储日志和 ...

随机推荐

  1. docker基础——2.镜像管理

    1. Docker镜像的主要特点 (1) 采用分层构建机制. 最底层为bootfs,用于系统引导的文件系统,包括bootloader和kernel,容器启动后会被卸载以节约资源. 其上为rootfs, ...

  2. js实现网页回弹小球效果

    直接上效果图 运行页面会首先弹出一个输入框,询问用户想要产生的小球数量,随后后台就会产生指定数量的小球,在页面中来回跳动,触碰到页面边框时,就会回弹,且产生的小球颜色随机,小球在页面中的位置随机,小球 ...

  3. 直接引入vue.js和使用vue脚手架的区别?

    脚手架工具搭建的项目是把Vue作为一个模块(如CommonJS规范的模块)对待,在源码中引入vue模块,最终需要用构建工具(如webpack)载入模块,编写代码需要require('vue'). 而直 ...

  4. 基于 Kintex-7 XC7K325T的半高PCIe x4双路万兆光纤收发卡

    一.板卡概述 板卡采用Xilinx公司的XC7K325T-2FFG900I芯片作为主处理器,可应用于万兆网络.高速数据采集.存储:光纤隔离网闸等领域. 二.功能和技术指标: 板卡功能 参数内容 主处理 ...

  5. 利用 pip download 打包软件来提供离线安装

    文章目录 1.通过 pip download 下载安装包 2.利用 pip install --no-index 离线安装 1.通过 pip download 下载安装包 linux-oz6w:~ # ...

  6. Spring Cloud之微服务注册到Eureka Server集群

    在Spring Cloud之服务注册中心搭建Eureka Server服务注册中⼼ - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中已经搭建好了Eureka Server集群,本文就利用 ...

  7. nginx负载均衡初体验

    本例采取简单的轮询策略进行nginx的负载均衡处理. 在反向代理(参考:https://www.cnblogs.com/ilovebath/p/14771571.html)的基础上增加负载均衡处理的n ...

  8. python进阶(25)协程

    协程的定义 协程(Coroutine),又称微线程,纤程.(协程是一种用户态的轻量级线程) 作用:在执行 A 函数的时候,可以随时中断,去执行 B 函数,然后中断B函数,继续执行 A 函数 (可以自动 ...

  9. 攻防世界之Web_upload1

    题目: 本题考查的是文件上传漏洞. 上传一句话木马. 桌面新建一个webshell.php文本文件,写入<?php @eval($_POST['pass']);?>保存.  点击浏览,选择 ...

  10. 什么是jQuery?

    目录 一:jQuery 1.jQuery介绍 2.jQuery的宗旨 3.有了jQuery那我们还使用BOM与DOM吗? 4.jQuery的优势 5.python与jQuery导入(复习) 6.jQu ...