运维-6-采用LPG搭建轻量级日志收集系统

news2024/9/17 9:27:03

参考Grafana 安装配置教程

1 Grafana

Grafana是一个通用的可视化工具。对于Grafana而言,Prometheus这类为其提供数据的对象均称为数据源(Data Source)。目前,Grafana官方提供了对:Graphite, InfluxDB, OpenTSDB, tdengine,Prometheus, Elasticsearch, CloudWatch的支持。对于Grafana管理员而言,只需要将这些对象以数据源的形式添加到Grafana中,Grafana便可以轻松的实现对这些数据的可视化工作。

1.1 下载安装

官方下载地址
企业版是默认和推荐的版本。它包含了OSS版的所有功能,可以免费使用,并且可以升级到完整的企业功能集,包括对企业插件的支持。
(1)离线下载Linux安装包
下载https://dl.grafana.com/enterprise/release/grafana-enterprise_11.1.1_amd64.deb。
(2)执行安装

sudo apt-get install -y musl
sudo dpkg -i grafana-enterprise_11.1.1_amd64.deb

注意grafana的安装包目录(linux下默认目录是/usr/share/grafana)。

1.2 启动grafana

执行命令

#查看服务状态
systemctl status grafana-server.service
#设置服务开机自启动
systemctl enable grafana-server.service
#启动服务
systemctl start grafana-server.service
#关闭服务
systemctl stop grafana-server.service

(4)虚拟机配置端口转发
VirtualBox中,管理->工具->网络管理器->NAT网络->端口转发:
在这里插入图片描述
然后可以访问页面:http://localhost:23000/。

1.3 基本配置

1.3.1 登录设置

访问页面http://localhost:23000/。
初次访问页面,可以直接修改密码。
默认的登录用户名/密码:admin/admin。
修改的登录用户名/密码:admin/自定义。

1.3.2 中文设置

在默认情况下,Grafana使用英文作为其用户界面语言。对于非英语用户来说,这可能会造成一些不便,Grafana提供了设置中文的选项。

在 grafana默认配置 grafana安装目录/conf/defaults.ini 中,将default_language = en-US改为 zh-Hans即可,存在部分翻译不完全
注:linux安装默认目录:/usr/share/grafana/conf/defaults.ini

#default_language = en-US
default_language = zh-Hans

重启服务systemctl restart grafana-server.service
在这里插入图片描述

2 LPG(Loki+Promtail+Grafana)

参考轻量级日志系统Loki安装部署(最新版教程)
参考Grafana+Loki+Promtail 搭建日志收集系统
Grafana Loki是一个日志聚合工具,它是功能齐全的日志堆栈的核心。
Loki是受Prometheus启发由Grafana Labs团队开源的水平可扩展,高度可用的多租户日志聚合系统。开发语言: Google Go。它的设计具有很高的成本效益,并且易于操作。使用标签来作为索引,而不是对全文进行检索,也就是说,你通过这些标签既可以查询日志的内容也可以查询到监控的数据签,极大地降低了日志索引的存储。

2.1 Loki架构

Loki架构十分简单,由以下三个部分组成:
(1)Loki是主服务器,负责存储日志和处理查询 。
(2)promtail是代理,负责收集日志并将其发送给loki 。
(3)Grafana用于UI展示。

只要在应用程序服务器上安装promtail来收集日志然后发送给Loki存储,就可以在Grafana UI界面通过添加Loki为数据源进行日志查询。

Grafana可以和loki部署在同一台服务器。
而promtail需安装在每台有日志输出文件的应用服务器。
在这里插入图片描述
(1)Promtail收集并将日志发送给Loki的Distributor组件。
(2)Distributor会对接收到的日志流进行正确性校验,并将验证后的日志分批并行发送到Ingester。
(3)Ingester接受日志流并构建数据块,压缩后存放到所连接的存储后端。
(4)Querier收到HTTP查询请求,并将请求发送至Ingester用以获取内存数据,Ingester收到请求后返回符合条件的数据。

2.2 下载安装

参考Loki的GitHub下载地址
参考loki-local-config.yaml通用配置文件
参考promtail-local-config.yaml通用配置文件

2.2.1 loki-local-config.yaml

auth_enabled: false  # 是否启用鉴权

server:
  http_listen_port: 3100   #http访问端口
  grpc_listen_port: 9096   #rpc访问端口

common:
  path_prefix: /tmp/loki    #loki
  storage:
    filesystem:
      chunks_directory: /tmp/loki/chunks    #记录块存储目录,默认chunks块上的日志数量或到期后,将chunks数据打标签后存储
      rules_directory: /tmp/loki/rules      #规则配置目录
  replication_factor: 1
  ring:
    instance_addr: 127.0.0.1   #网络地址
    kvstore:
      store: inmemory

query_range:         #查询规则
  results_cache:     #结果缓存
    cache:
#      embedded_cache:  #默认开启后会有提示,未配置缓存项,暂不开启
#        enabled: true
#        distributed: 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   #告警通知url

2.2.2 promtail-local-config.yaml

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml   #用于记录每次读取日志文件的索引行数,如:promtail重启后从该配置中恢复日志文件的读取位置

clients:
  - url: http://localhost:3100/loki/api/v1/push   #推送日志流到Loki中的api

scrape_configs:   #发现日志文件的位置并从中提取标签
- job_name: system   #任务名称
  static_configs:    # 目录配置
  - targets:         # 标签
      - localhost
    labels:
      job: varlogs   #子任务名称,通常以项目命令
      __path__: /var/log/*log   #要读取的日志文件的位置,允许使用通配符/*log或/**/*.log

2.3 启动loki和promtail

sudo unzip logcli-linux-amd64.zip
sudo unzip promtail-linux-amd64.zip
# 切换到root用户执行。
nohup /opt/loki/loki-linux-amd64 -config.file=/opt/loki/loki-local-config.yaml >loki.out 2>&1 &

nohup /opt/loki/promtail-linux-amd64 -config.file=/opt/loki/promtail-local-config.yaml >promtail.out 2>&1 &

在这里插入图片描述
http://本机IP:23100/metrics

3 使用systemctl管理loki和promtail

参考参考loki入门

3.1 loki.service

cat /etc/systemd/system/loki.service 
[Unit]
Description=Loki Log Aggregator Service
After=network.target

[Service]
ExecStart=/opt/loki/loki-linux-amd64 -config.file=/opt/loki/loki-local-config.yaml
Restart=always
RestartSec=5s
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

Restart=always: 只要不是通过systemctl stop来停止服务,任何情况下都必须要重启服务,默认值为no。
RestartSec=5: 重启间隔,比如某次异常后,等待5(s)再进行启动,默认值0.1(s)。

3.2 promtail.service

cat /etc/systemd/system/promtail.service 
[Unit]
Description=Promtail Log Shipper Service
After=network.target

[Service]
ExecStart=/opt/loki/promtail-linux-amd64 -config.file=/opt/loki/promtail-local-config.yaml
Restart=always
RestartSec=5s
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

3.3 服务管理

systemctl start loki
systemctl status loki
systemctl stop loki

systemctl start promtail
systemctl status promtail
systemctl stop promtail

systemctl enable loki  # 配置开机自启动
systemctl enable promtail  # 配置开机自启动

4 LPG与ELK比较

ELK虽然功能丰富,但规模复杂,资源占用高,操作苦难,很多功能往往用不上,有点杀鸡用牛刀的感觉。loki 不对日志进行全文索引。通过存储压缩非结构化日志和索引元数据,Loki 操作起来会更简单,更省成本。通过使用与 Prometheus相同的标签记录流对日志进行索引和分组,这使得日志的扩展和操作效率更高。安装部署简单快速,且受 Grafana 原生支持。

一、架构和组件
(1)Loki:Loki是一个开源的水平可扩展日志聚合系统,由Promtail、Loki和 Grafana组成。
(2)EFK:EFK是一个集成的解决方案,由Elasticsearch、Fluentd和Kibana组成。

二、存储和查询
(1)Loki:Loki使用了基于日志流的存储方式,将日志数据存储为可压缩的块文件,并达到高度压缩效率。
(2)EFK:EFK使用Elasticsearch作为中心化的日志存储和索引引擎。

三、可扩展性和资源消耗
(1)Loki:Loki的水平可扩展性非常好,可以处理大规模的日志数据。
(2)EFK:Elasticsearch是一个高度可扩展的分布式存储系统,但它对硬件资源的要求较高,特别是在存储大规模日志数据时。

四、配置和部署复杂性
(1)Loki:Loki的配置和部署较为简单。通过使用Promtail收集日志,并使用 Grafana进行查询和可视化,可以相对快速地启动和使用。
(2)EFK:EFK的配置和部署相对复杂一些。需要配置Fluentd的输入、过滤和输出插件,以及Elasticsearch和Kibana的集群设置。

5 使用Grafana查询日志

5.1 配置数据源Loki

(1)连接->数据源->添加新数据源->填写如下相关信息->点击保存和测试连接。
注意URL要使用本机IP。
在这里插入图片描述
(2)点击探索->选择loki数据源
(2-1)模式Code->输入查询条件
在这里插入图片描述
(2-2)模式Builder
在这里插入图片描述
选择不同的标签过滤filenam,job,stream等标签:
在这里插入图片描述
(3)结果显示
在这里插入图片描述

5.2 采集多个日志

在这里插入图片描述
在过滤条件中可以看到job的标签。
在这里插入图片描述

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

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

相关文章

v-for遍历数据类型方式

第一种&#xff1a;数组 v-for"(item, index) in list" 属性作用item取数组的每一项的对象&#xff1b;index取数组的每一项的下标&#xff1b; html&#xff1a; <div v-for"(item, index) in list" :key"index"><span>名称&…

探索设计模式:组合模式

探索设计模式&#xff1a;组合模式 &#x1f9d0;1. 概念&#x1f3af;2. 作用&#x1f4e6;3. 用法&#x1f4e6;3.1 绘图示例&#x1f4e6;3.2 文件示例 &#x1f4bb;4. 使用场景 在软件设计中&#xff0c;组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设…

WebLogic:弱口令,木马反弹连接

weblogic WebLogic 是 Oracle 公司开发的应用服务器&#xff0c;主要用作开发、集成、部署和管理大型分布式 Web 应用、网络应用和数据库应用的 Java 应用服务器。它在历史上曾出现过多个安全漏洞&#xff0c;其中包括弱口令、任意文件上传、SSRF、反序列化漏洞等 常见版本&a…

YOLOv8入门 | yaml文件解读,YOLOv8网络结构打印以及网络结构图绘制【小白必看】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

软考高级-系统架构设计师

2024广东深圳考试时间 报考人员可登录中国计算机技术职业资格网&#xff08;http://www.ruankao.org.cn&#xff09;进行网上报名&#xff0c;报名前须扫码绑定个人微信&#xff0c;不允许代报名。 上半年考试报名信息填报时间&#xff1a;2024年3月25日9:00&#xff0d;4月2日…

【ASR系列】【论文阅读】CIF

1. 概念学习 WER(word error rate): 单词错误率,是评价asr系统的一种重要指标,越低越好 是Continuous integrate-and-fire的简称,集成和发射,翻译成积分不太合理,可理解为求和 2. 思想 一个人说了几句话,在说第一句话的时候会不断地对输入的信号集成,说完这句话(达…

计算机毕业设计PySpark+Django高考志愿填报推荐系统 高考预测 高考大数据分析 Hadoop Spark 机器学习 深度学习 Python

在撰写关于《PySpark高考推荐系统》的论文时&#xff0c;推荐算法的实现通常会利用PySpark&#xff0c;这是Apache Spark的Python API。以下是一个使用PySpark中MLlib库的ALS&#xff08;交替最小二乘法&#xff09;算法来构建高考推荐系统的示例代码。在这个示例中&#xff0c…

短视频矩阵系统搭建教程,源码获取,部署上线指南

目录 一、短视频矩阵是什么&#xff1f; 二、搭建教程 1、前端界面开发 2、后端架构搭建 3、第三方视频平台对接 三、部分代码展示 一、短视频矩阵是什么&#xff1f; 短视频矩阵系统是一种集成了多元短视频平台功能的综合性管理工具&#xff0c;它汇聚了多个视频发布渠…

MyBatis-Plus知识总结

1. MP前瞻 官网&#xff1a;https://baomidou.com/ 1、MyBatis-Plus是什么&#xff1a;MyBatis-Plus&#xff08;简称MP&#xff09;是一个MyBatis的增强工具&#xff0c;它在MyBatis的基础上只做增强不做改变&#xff0c;为简化开发、提供效率而生。并且MP内部提供了丰富的 AP…

(已解决,附RDM工具解决方案)如何实现多个redis连接间指定key(键)的数据同步

目录 问题现象&#xff1a; 问题分析&#xff1a; 方法一-重复执行操作&#xff1a; 方法二-redis命令实现导出再导入&#xff1a; 方法三-使用rdb文件实现数据迁移 方法四-RDM工具自带的数据复制功能 总结&#xff1a; 解决方法&#xff1a; 方法一-重复执行…

SpringMVC(包括Servlet,会话技术)理解

目录 前言&#xff1a; Servlet&#xff1a; http请求的内容&#xff1a; 会话技术&#xff1a; Cookie&#xff1a; Session&#xff1a; 案例实现代码&#xff1a; 小总结&#xff08;感想&#xff09;&#xff1a; SpringMVC介绍&#xff1a; 调用流程&#xff1a…

最后一个单词的长度-string

58. 最后一个单词的长度 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int lengthOfLastWord(string s) {int right s.size()-1;while(s[right] ){right--;}int cnt 0;while(right > 0 && s[right] ! ){right--;cnt;}return cnt;} }; 注意…

达梦数据库系列—39.统计信息详解

目录 达梦统计信息 举例 统计信息的缺点 统计信息管理 手动收集 自动收集 查看统计信息 更新统计信息 删除统计信息 达梦统计信息 达梦数据库的统计信息分为表统计信息&#xff0c;列统计信息&#xff0c;索引统计信息。 表&#xff1a;计算表的行数、所占的页数目、…

二百五十、Linux——visudo 命令编辑 /etc/sudoers 文件时报错 “/etc/sudoers 忙,请稍后重试”

一、目的 在Linux上用visudo 命令编辑 /etc/sudoers 文件时报错&#xff0c;/etc/sudoers 忙&#xff0c;请稍后重试 [roothurys23 ~]# sudo visudo visudo: /etc/sudoers 忙&#xff0c;请稍后重试 二、原因分析 1 另一个 visudo 实例正在运行 如果另一个用户或同一个用户…

Mirror学习笔记(一) 简介

文章目录 一、常规学习&#xff1a;Mirror核心功能有服务器和主机 二、时间戳批处理时间戳 三、TCP和UDP四、CCU(同时在线人数)五、SyncDirection(同步方向)六、RTT&#xff08;往返时间&#xff09;七、Connection Quality&#xff08;连接质量&#xff09;八、Lag Compensati…

django档案馆集中管理系统-计算机毕业设计源码31775

目录 摘要 Abstract 第一章 绪论 1.1 选题背景及意义 1.2 国内外研究现状 1.3 研究方法 第二章 相关技术介绍 2.1 MySQL简介 2.2 Python 2.3 Django框架 2.4 Pycharm简介 第三章 档案馆集中管理系统系统分析 3.1 系统可行性分析 3.1.1 技术可行性 3.1.2 经济可行…

FFmpeg研究

1.FFmpeg介绍 FFmpeg的全称是“Fast Forward Moving Picture Expert Group”&#xff0c;组件由命令行应用程序和函数库两部分组成。通俗概括来说&#xff0c;FFmpeg 是一个免费的开源程序库&#xff0c;一个多媒体音视频处理分析工具软件&#xff0c;且提供命令行方式调用&am…

Linux(1)--VMware的安装与配置

Linux Linux是一种自由和开放源码的类Unix操作系统&#xff0c;由林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;于1991年首次发布。Linux以其高效性、灵活性和稳定性而闻名&#xff0c;广泛应用于各种计算机硬件设备中&#xff0c;包括手机、平板电脑、路由器、视频游戏…

【Win10】记一次蓝屏修复

最近电脑蓝屏了好多次&#xff0c;错误代码为&#xff1a;IRQL_NOT_LESS_OR_EQUAL 直接搜这个错误代码不太好找原因&#xff0c;于是按照这篇文章[1]来打开错误日志文件。 需要先在windows的应用商店中下载WinDbg 然后&#xff0c;打开目录 C:\Windows\Minidump &#xff0c;…

React 学习——组件内通信(兄弟之间)

A组件 > B组件 核心思路&#xff1a; 1、A组件先通过子传父的方式把数据传给父组件App 2、App拿到数据后通过父传子的方式再传递给B组件 import { useState } from "react" function A({onGetMsg}){const AMsg 我是A组件的消息return (<div><button…