轻量级日志系统Loki——安装配置

news2024/11/25 5:21:40

关注“云计算就该这么学”微信公众号,搜索“001”,即可获取氪肝整理的154页Linux学习笔记。

Loki对标EFK/ELK,由于其轻量的设计,备受欢迎,Loki相比EFK/ELK,它不对原始日志进行索引,只对日志的标签进行索引,而日志通过压缩进行存储,通常是文件系统存储,所以其操作成本更低,数量级效率更高。


由于Loki的存储都是基于文件系统的,所以它的日志搜索时基于内容即日志行中的文本,所以它的查询支持LogQL,在搜索窗口中通过过滤标签的方式进行搜索和查询。


Loki分两部分,Loki是日志引擎部分,Promtail是收集日志端,然后通过Grafana进行展示。


 

1.安装grafana

wget https://dl.grafana.com/oss/release/grafana-8.2.5.linux-amd64.tar.gz
tar -zxvf grafana-8.2.5.linux-amd64.tar.gz
mv grafana-8.2.5 /usr/local/grafana

创建Systemd服务

cat>/usr/lib/systemd/system/grafana-server.service<<EOF
[Unit]
Description=Grafana Server
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/usr/local/grafana
ExecStart=/usr/local/grafana/bin/grafana-server

Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF

服务开机自启

systemctl daemon-reload
systemctl enable grafana-server.service && systemctl start grafana-server.service

/usr/local/grafana/conf/defaults.ini为默认配置文件
工作端口,默认为3000。

Loki的官方文档
https://grafana.com/docs/loki/latest/installation
Loki·安装
从官方文档看,Loki支持源码安装、Docker、Helm、Local、Tanka
我选择local,就是编译好的二进制可执行文件
安装步骤:
镜像网址
https://hub.fastgit.org/grafana
1.下载二进制可执行文件
https://hub.fastgit.org/grafana/loki/releases/download/v2.4.1/loki-linux-amd64.zip
unzip loki-linux-amd64.zip && mv loki-linux-amd64 /usr/bin/loki
chmod o+x /usr/bin/loki
创建工作目录并下载配置文件
mkdir -p /data/loki
参考配置文件
https://hub.fastgit.org/grafana/loki/blob/main/cmd/loki/loki-local-config.yaml
最终lok.yml如下

vim /data/loki/lok.yml

auth_enabled: false

server:
  http_listen_port: 3100
  grpc_listen_port: 9096

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

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
  
#启用Redis缓存配置
auth_enabled: false

server:
  http_listen_port: 3100
  grpc_listen_port: 9096

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

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

frontend:
  compress_responses: true

query_range:
  split_queries_by_interval: 24h
  results_cache:
    cache:
      redis:
        endpoint: 192.168.1.6:6379
        expiration: 10s
        db: 1
  cache_results: true

chunk_store_config:
  chunk_cache_config:
    redis:
      endpoint: 192.168.1.6:6379
      expiration: 10s
      db: 1
  write_dedupe_cache_config:
    redis:
      endpoint: 192.168.1.6:6379
      expiration: 1h
      db: 2

ruler:
  alertmanager_url: http://localhost:9093 

创建相关目录
mkdir -p /data/loki/{chunks,rules,logs}
启动

nohup  loki  --config.file=/data/loki/loki.yml  > /data/loki/logs/loki.log 2>&1 &

启动脚本

#!/bin/bash
CONFILE='/data/loki/loki.yml'
PIDFILE='/data/loki/loki.pid'
LOGFILE='/data/loki/loki.log'
OPTS='/usr/bin/loki --config.file='
PID=`ps -ef  | grep ${CONFILE} | grep 'config.file' | awk '{print $2}'`
if [ ! ${PID}  ]; then
nohup ${OPTS}${CONFILE} >${LOGFILE} 2>&1 &  echo $! >${PIDFILE} &
sleep 3
echo "loki PID:`ps -ef  | grep ${CONFILE} | grep 'config.file' | awk '{print $2}'`"
PID=`ps -ef  | grep ${CONFILE} | grep 'config.file' | awk '{print $2}'`
if [ ! ${PID}  ] ; then  echo "loki config error, tail -f ${LOGFILE}!"
fi
else
echo "loki is running,PID:`cat ${PIDFILE}`"
fi

安装promtail进行收集日志
Promtail是收集日志端
下载安装

wget  https://hub.fastgit.org/grafana/loki/releases/download/v2.4.1/promtail-linux-amd64.zip
unzip promtail-linux-amd64.zip && mv promtail-linux-amd64 /usr/bin/promtail && chmod o+x /usr/bin/promtail

配置参考文件
官网配置文件文档
https://grafana.com/docs/loki/latest/clients/promtail/configuration/

https://hub.fastgit.org/grafana/loki/blob/main/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

参数说明

server部分定义监听端口,positions定义读取的文件偏移量存储位置,clients定义loki接口地址,最后一部分scrape_configs是重点部分
promtail通过scrape_configs部分配置收集日志的相关信息,以测试配置文件为例:
job_name 用来区分日志组
static_configs 收集日志的静态配置
targets 收集日志的节点,这个参数其实是在自动发现的时候使用的
labels 定义一个要收集的日志文件和一组可选的附加标签
job 标签名称,在grafana索引的时候用到的标签名称
__path__ 定义日志收集的文件或路径,支持正则
配置文件修改完成后,就可以启动promtail了,和loki启动方法一样,通过--config.file指定配置文件启动

promtail,类似于tail,它只监听新增日志,不会像filebeat一样,读取日志所有内容,这是和filebeat的一个区别
最终配置,启用静态与文件自动发现
mkdir -p /data/promtail
vim /data/promtail/promtail.yml

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

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

scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs
      __path__: /var/log/*log
  file_sd_configs:
    - files:
      - /data/promtail/log_file/*.json
      refresh_interval: 1m

启动
创建相关文件

mkdir -p /data/promtail/log_file/
文件自动发现配置
vim /data/promtail/log_file/mail.json
[
  {
    "targets": [ "localhost" ],
    "labels": {
      "__path__": "/var/log/maillog",
      "job": "mailserver"
    }
  }
]

开机自启动

nohup  promtail --config.file=/data/promtail/promtail.yml  >/data/promtail/promtail.log 2>&1 &

启动脚本
vim /data/promtail/start.sh

#!/bin/bash
CONFILE='/data/promtail/promtail.yml'
PIDFILE='/data/promtail/promtail.pid'
LOGFILE='/data/promtail/promtail.log'
OPTS='/usr/bin/promtail --config.file='
PID=`ps -ef  | grep ${CONFILE} | grep 'config.file' | awk '{print $2}'`
if [ ! ${PID}  ]; then
nohup ${OPTS}${CONFILE} >${LOGFILE} 2>&1 &  echo $! >${PIDFILE} &
sleep 3
echo "promtail PID:`ps -ef  | grep ${CONFILE} | grep 'config.file' | awk '{print $2}'`"
PID=`ps -ef  | grep ${CONFILE} | grep 'config.file' | awk '{print $2}'`
if [ ! ${PID}  ] ; then  echo "promtail config error, tail -f ${LOGFILE}!"
fi
else
echo "promtail is running,PID:`cat ${PIDFILE}`"
fi

chmod o+x /data/promtail/start.sh

查看是否工作

[root@openrestry promtail]# netstat -ntpl | grep loki
tcp6       0      0 :::9096                 :::*                    LISTEN      1721/loki
tcp6       0      0 :::3100                 :::*                    LISTEN      1721/loki
[root@openrestry promtail]# netstat -ntpl | grep promtail
tcp6       0      0 :::40210                :::*                    LISTEN      1833/promtail
tcp6       0      0 :::9080                 :::*                    LISTEN      1833/promtail

在Grafana中添加显示输出
登录http://Grafana:3000,添加loki数据源
 

查看日志

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/666329.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《主责数据保护与流动安全监管框架》重磅发布,美创以“产业研究力量”深入参与

历时四年&#xff0c;聚合行业安全专家智慧&#xff0c;凝炼行业安全最佳实践&#xff0c;数字时代&#xff1a;基于行业最佳实践的《主责数据保护与流动安全监管框架》&#xff08;以下简称“框架”&#xff09;于2023年6月17日第三届数字安全大会上正式发布。 该框架是在中国…

基于SpringBoot+Html的前后端分离的学习平台

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 在知识大爆炸的现代,怎…

一.Elasticsearch快速入门及使用

Elasticsearch快速入门及使用 一.Elasticsearch是什么二.基本概念1.index (索引)2. type (类型)3.Document (文档) 三.为什么Elasticsearch可以从海量数据里快速检索出数据四.Elasticsearch安装1.解压2.运行3.显示以下内容就是启动成功14.Kibana可视化软件安装 五.入门(基本的操…

代码浅析Point-LIO

0. 简介 对于最近出来的Point-LIO(鲁棒高带宽激光惯性里程计)&#xff0c;本人还是非常该兴趣的&#xff0c;为此花了一些时间重点分析了Point-LIO的代码&#xff0c;并研究了它相较于Fast-LIO2的区别 1. laserMapping.cpp 第一部分就是实现对激光雷达视场角的图像分割。首先…

Day01 项目简介分布式基础概念

最近在改进公司开发的商城项目&#xff0c;看到了尚硅谷的谷粒商城&#xff0c;就快速学习了下&#xff0c;因为之前的Kafka,Redis都是在这学习的&#xff0c;还有大数据的Flink。所以感觉一定不错&#xff0c;就开始了。 这里做一下学习笔记 一、项目简介 1 、项目背景 1 &…

UIAutomatorViewer工具的使用

目录 前言&#xff1a; 一、uiautomatorviewer介绍 二、启动uiautomatorviewer 三、uiautomatorviewer界面 四、连接手机 前言&#xff1a; UIAutomatorViewer是Android SDK提供的一个可视化界面分析工具&#xff0c;可以用于查看Android应用的UI界面结构、属性信息以及布…

元宇宙在技术大爆炸时代迎来链游新世界

元宇宙是从虚拟游戏、虚拟艺术收藏品开始兴起&#xff0c;然后逐步扩展到社交和金融领域的。元宇宙的终极形态就是一种“无限游戏”&#xff0c;也即打破边界、颠覆规则、不断迭代和进化发展的新世界。 政策落地&#xff0c;元宇宙未来才能充满潜力 2021 年以来&#xff0c;元…

SSM在线学习平台-计算机毕设 附源码85204

SSM在线学习平台 摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;在线学习平台当然也不能排除在外。在线学习平台是以实际运用为开发背景&#xff0c;运用软件工程原理和…

数字非洲,沐光而行

“华为是什么公司&#xff1f;我们不相信中国企业能有先进的通信技术&#xff01;你们也不要总是来找我&#xff01;”1998年&#xff0c;华为人刚踏上非洲所遇到的&#xff0c;不是来自阳光大陆的热情&#xff0c;而是来自刚果&#xff08;金&#xff09;客户冷冰冰的拒绝。 2…

国产崛起,继操作系统装机500w,又有软件平台用户突破600w

国产操作系统行业部署超500W 这次&#xff0c;国产操作系统终于扬眉吐气了&#xff01; 国产的操作系统装机已达到500万&#xff0c;国产崛起的时刻已来&#xff01; 近日&#xff0c;国产操作系统的佼佼者——统信UOS&#xff0c;召开见面会&#xff0c;宣布&#xff1a;目…

7DGroup性能实施项目日记2

壬寅年 己酉月 己卯日 秋高气爽 天气转凉 昨天大风昨天看到项目计划中已经有了很多内容。 也就是说计划感觉已经写得差不多了。我仔细看了一下之后觉得这个计划不可行&#xff0c;就是样子挺像。 然后我问管理组&#xff0c;这个是你们商量之后写的吗&#xff1f;他们说不…

Java互联网工程师1100题(总结最全面的面试题)

本来已经在为去大厂工作摩拳擦掌的 Java 朋友&#xff0c;社招又是需要 5 年以上的&#xff0c;今年显得格外艰难&#xff1a; 就业人数高达 874 万&#xff01;人才竞争加剧&#xff01; 大多数公司的招聘需求缩减&#xff01;对社招来说&#xff0c;人才招聘要求愈来愈高&am…

Spring核心思想之IOC和AOP

IOC和AOP不是Spring提出的&#xff0c;在spring之前就已经存在&#xff0c;只不过更偏向于理论化&#xff0c;Spring在技术层次把这两个思想做了⾮常好的实现&#xff08;Java&#xff09;。 Spring核心思想 IOC(Inversion of Control)什么是IoC&#xff1f;IoC解决了什么问题…

unittest单元测试框架

目录 前言&#xff1a; 一、unittest模块的各个属性说明 二、使用unittest框架编写测试用例思路 三、使用unittest框架编写测试用例实例 前言&#xff1a; unittest是Python自带的单元测试框架&#xff0c;可以用于编写和执行单元测试。 一、unittest模块的各个属性说明 …

Linux内核4.14版本——drm框架分析(9)——DRM_IOCTL_MODE_GETCONNECTOR(drm_mode_getconnector)

目录 1. drm_mode_getconnector分析 1.1 找到connector 1.2 计算该connector的encoder数量 1.3 把connector支持的encoder和数量返回给用户 1.4 把找到的connector的参数返回给应用 1.5 填充mode&#xff08;很重要&#xff09; 1.6 把找到的connector的参数返回给应用 …

excel爬虫相关学习2:excel 和 vba 爬虫相关xmlhttp方法

目录 前言&#xff1a;vba 爬虫相关xmlhttp的方法 1 什么是xmlhttp 1.1 定义 1.2 特点 定义XMLHTTP对象&#xff1a; XMLHTTP方法&#xff1a; open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword) send(varBody) setRequestHeader(bstrHeader, bstrValue) …

Java 被挤出前三。。

TIOBE 2023 年 06 月份的编程语言排行榜已经公布&#xff0c;官方的标题是&#xff1a;Python 还会保持第一吗&#xff1f;&#xff08;Will Python remain number 1?&#xff09; 在过去的 5 年里&#xff0c;Python 已经 3 次获得 TIOBE 指数年度大奖&#xff0c;这得益于…

简述Spring中IOC核心流程

基础概念 IOC 和 DI IOC&#xff0c;即控制反转。是Spring的一种设计思想。传统程序设计中&#xff0c;我们创建一个对象是通过 new 关键字&#xff0c;是程序主动去创建依赖对象&#xff0c;而在spring中专门有一个容器来创建和管理这些对象&#xff0c;并将对象依赖的其他对…

rpm详解——原理,命令详细讲解

目录 三个问题 什么是RPM SRPM (Source RPM) RPM软件包 RPM 查询命令 查询已安装的RPM软件信息 查询文件/目录属于哪个RPM软件 查询未安装的RPM包文件 RPM 软件包的安装、卸载 安装 卸载 RPM 升级与更新 三个问题 先抛出三个问题&#xff0c;最后简单解释一下。 …

HiveSQL 电商场景TopK统计

数据准备 CREATE TABLE test.test2 ( user_id string, shop string ) ROW format delimited FIELDS TERMINATED BY \t; INSERT INTO TABLE test.test2 VALUES ( u1, a ), ( u2, b ), ( u1, b ), ( u1, a ), ( u3, c ), ( u4, b ), ( u1, a ), ( u2, c ), ( u5, b ), ( u4, b )…