使用Loki收集网络设备日志

news2024/12/27 17:43:21

3221babb110e73bd02e87e98a8500df3.gif

新钛云服已累计为您分享716篇技术干货

eb375de16b23402c471efcd68da0facc.gif

前言

Loki是Grafana Labs团队的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统,它的设计非常简洁易于操作。

受Prometheus启发的,可以水平扩展、高可用以及支持多租户的日志聚合系统,使用了和Prometheus相同的服务发现机制,将标签添加到日志流中而不是构建全文索引,从promtail接收到的日志和应用的Metrics指标就有相同的标签集,不仅提供了更好的日志和指标之间的上下文切换,还避免了对日志进行全文索引。

日常的网络运维中,如果能把网络设备的日志收集起来,集中查看,在处理故障或日常巡检时,会比较方便一些

如果没有专业的日志收集硬件或软件设备,那么可以搭建Loki进行收集,并使用Grafana查看收集好的日志

本文的主要内容如下:

  1. 如何安装部署loki

  2. 如何配置网络设备的syslog

  3. 如何使用rsyslog收集到网络设备的日志

  4. 如何配置Grafana并查看日志

环境准备

1台主机,可以是云主机、虚机,可以根据日志的多少来决定配置的大小,本实验中的配置是4C8G的

OS为Debian11,但其他发行版如CentOS,大部分情况下也是适用的

该主机将会安装loki,rsyslog、promtail

*本文档不再介绍如何安装Grafana

安装部署Loki

  1. 下载最新的版本

    https://github.com/grafana/loki/releases/[1]

    在Linux中安装时可下载loki-linux-amd64.zip

  2. 解压可执行文件到目标目录

    unzip -d /usr/local/bin/ loki-linux-amd64.zip
  3. 创建用户

    useradd -r -s /sbin/nologin loki
  4. 创建配置文件

    mkdir -pv /etc/loki /data/loki
    
    chown -R loki:loki /etc/loki
  5. 编辑Loki的配置文件

    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: 10.20.20.20
        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
  6. 请修改以上几项内容

    1. instance_addr,修改为安装主机的IP地址

    2. alertmanager_url:修改为alertmanager的url,本次并未使用alertmanager,所以写的localhost

  7. 编辑Systemd[2]的服务配置文件

    vim /lib/systemd/system/loki.service

    [Unit]
    Description=Loki service
    After=network.target
    
    [Service]
    Type=simple
    User=loki
    ExecStart=/usr/local/bin/loki-linux-amd64 -config.file /etc/loki/loki-my-config.yaml
    
    [Install]
    WantedBy=multi-user.target
  8. 启动并设置为开机自启动

    systemctl start loki; systemctl enable loki
    
    systemctl status loki

安装并配置promtail

  1. 从 https://github.com/grafana/loki/releases[3] 下载安装包

  2. 下载示例的配置文件

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

    也可以直接使用如下的示例配置,注意个别地址需要修改,已进行注释

    server:
      http_listen_port: 9080
      grpc_listen_port: 0
    
    positions:
      filename: /etc/promtail/positions.yaml
    
    clients:
    # 将地址修改为实际的 loki Server 的地址
      - url: http://10.20.20.20:3100/loki/api/v1/push
    
    
    scrape_configs:
    - job_name: loki
      static_configs:
      - targets:
          - localhost
        labels:
          job: syslog
          env: prod
          location: whcq
          vendor: loki
          hostname: m-loki
          __path__: /var/log/network/m-loki-127.0.0.1.log
    
    - job_name: syslog
      static_configs:
      - targets:
          - localhost
        labels:
          job: syslog
          env: prod
          location: whcq   # 设备的机房或者所在的位置
          vendor: huawei   # 品牌
          hostname: Test-S6720-254  # 主机名
          __path__: /var/log/network/Test-S6720-254-10.20.99.254.log  # 日志的路径
    
    - job_name: syslog
      static_configs:
      - targets:
          - localhost
        labels:
          job: syslog
          env: prod
          location: shbd
          vendor: cisco
          hostname: Test-C3560G
          __path__: /var/log/network/192.168.99.254-192.168.99.254.log
  3. 调整promtail执行文件和配置文件的路径

    mv promtail-linux-amd64 /usr/local/bin/
    
    mkdir -pv /etc/promtail; mv promtail-local-config.yaml config-promtail.yml
  4. 创建用户并修改文件的权限

    useradd -r promtail
    
    chown promtail:promtail /tmp/positions.yaml
  5. 编辑 Promtail.service

    vim /lib/systemd/system/promtail.service

    [Unit]
    Description=Promtail service
    After=network.target
    
    [Service]
    Type=simple
    User=promtail
    ExecStart=/usr/local/bin/promtail -config.file /etc/promtail/config-promtail.yml
    
    [Install]
    WantedBy=multi-user.target
  6. 启动服务

    systemctl start promtail
    
    systemctl enable promtail

使用rsyslog收集到网络设备的日志

· 搭建并配置rsyslog

  1. 配置文件如下

    vim /etc/rsyslog.conf

    # provides UDP syslog reception
    module(load="imudp")
    input(type="imudp" port="514")
    
    # provides TCP syslog reception
    module(load="imtcp")
    input(type="imtcp" port="514")
    
    
    
    $template IpTemplate,"/var/log/network/%HOSTNAME%-%FROMHOST-IP%.log"
    *.*  ?IpTemplate
    & ~

    %HOSTNAME%-%FROMHOST-IP%.log是日志文件的名字,表示主机名+发送源主机的IP

  2. 重启服务

    systemctl restart rsyslog

配置交换机发送日志到Loki

· Cisco交换机

# 设置发送日志的源端口
logging source-interface Vlan99

# 设置目标主机
logging 10.20.20.20

· 华为交换机

# 根据实际情况修改源接口,或者不配置
info-center loghost source Vlanif999

# 设置 syslog 的目标主机
info-center loghost 10.20.20.20

# 默认情况下是Info级别,所以此命令可以不执行
info-center source default channel loghost log level informational

· 配置Grafana

  1. 导入ID为13639的Dashboard

  2. 配置Variables,建议的配置如下

39c76264029c74611a3c983916c048a5.png

3. 查看日志

81a65749949ae2ec6a17ada14040db19.png

参考资料:

[1]https://github.com/grafana/loki/releases/: https://github.com/grafana/loki/releases/
[2]Systemd: https://www.wolai.com/5YUVEN1zqVdZG2inbWBKh9
[3]https://github.com/grafana/loki/releases: https://github.com/grafana/loki/releases

    推荐阅读   

b8470272471ab6d4376be59c0a060a22.png

449790b6954620789cbacc75c9f15313.png

    推荐视频    

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

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

相关文章

S-HUB如何实现数据库对接WEBSERVICE API

近几年SAAS被大家逐步认可,越来越多的企业购买SAAS服务,但是仍然有很多自建各种业务系统,这些系统建设时一般都只考虑自身业务,而不是特别注重与别的系统之间的互联互通。而企业为了提升效率,又需要将这些业务与别的系…

Java开发 - 双向链表不可怕

前言 说起链表,那还是当初上学的时候学习的,印象里就觉得像锁链一样一环扣一环,后来工作后就几乎没实际接触过链表,每当遇到链表,总是不知道该怎么讲,因为对链表的本质一无所知。也是在学习了Java后&#…

剑指offer----C语言版----第三天

目录 1. 替换空格 1.1 题目描述 1.2 题目背景 1.3 必要的思考 1.4 思路一 1.5 思路二 1.6 思路三(学方法) 1.7 小试牛刀 1. 替换空格 原题链接:剑指 Offer 05. 替换空格 - 力扣(LeetCode)https://leetcode.cn/p…

回首2022,展望2023(年度总结)

回首2022,展望2023 热爱技术的伙计们: 哈喽,这篇文章经过一周左右的写写改改,在2022最后的工作日与大家见面,有人说总结是为了更好的开始。是的,一年的时间真的很快,马上就是2023了&#xff0…

k-mean聚类的python实现

文章目录介绍KMeans()函数介绍实例导入相关包整理数据手肘法确定分类个数创建模型绘制结果分为3类的结果作者:张双双介绍 sklearn.cluster模块提供了常用的非监督聚类算法。 该模块中每一个聚类算法都有两个变体: 一个是类(class)另一个是函数(function)。 类实现了…

day06 Debug基础练习

1.Debug模式 1.1 什么是Debug模式 是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。 1.2 Debug介绍与操作流程 如何加断点 选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可 …

刷题记录:牛客NC24858Job Hunt [最长路+两种不同判环详解]

传送门:牛客 题目描述: 奶牛们正在找工作。农场主约翰知道后,鼓励奶牛们四处碰碰运气。而且他还加了一条要求:一头牛在一个城市 最多只能赚D(1≤D≤1000)美元,然后它必须到另一座城市工作。当然,它可以在…

2自由度陀螺仪滑模控制和PID控制跟踪目标轨迹

目录 前言 1.陀螺仪模型 2.滑模跟踪控制 3.PID控制 4.总结 前言 不为别的,这篇小文章只为内涵某人,问候一下他:不是有手就行,哈哈~ 1.陀螺仪模型 2.滑模跟踪控制 对于2自由度陀螺仪有两个方向x、y跟踪,所以需要…

对于软件测试认识的几大误区,看看你有没有?

对于软件开发来说,软件测试可能还不被大众了解,很多开发人员,包括很多软件高层管理人员,由于缺乏软件测试的知识和实践经验,对软件测试的认识还有很多的误区: 误区一:如果软件发布后有质量问题…

我们一起来谈谈高并发和分布式系统的幂等如何处理!

什么是幂等性 幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同。 在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。 幂等函数或幂等…

Codeforces Round #841 (Div. 2)

题目链接 A. Joey Takes Money 题目描述 input output 题意: 有一个长度为n的数组,你可以进行一步操作,选择两个i,j,然后再选择两个数x,y,使得a[i]a[j] xy,然后将a[i] x,a[j] y,问任意步操…

Spring 中运用的 9 种设计模式

Spring中涉及的设计模式总结,在面试中也会经常问道 Spring 中设计模式的问题。本文以实现方式、实质、实现原理的结构简单介绍 Sping 中应用的 9 种设计模型,具体详细的刨析会在后面的文章发布,话不多说,来个转发、在看、收藏三连…

京东软件测试岗:惨不忍睹的三面,幸好做足了准备,月薪17k,已拿offer

我今年25岁,专业是电子信息工程本科,19年年末的时候去面试,统一投了测试的岗位,软件硬件都有,那时候面试的两家公司都是做培训的,当初没啥钱,他们以面试为谎言再推荐去培训这点让我特别难受。 …

Unity 搭建ILRuntime开发环境

Unity热更新目前主流的方案有: Lua, ILRuntime, puerts, huatuo方案。前两个大家都比较熟悉了,puerts 是基于TypeScript开发的热更新,huatuo是基于C#的方案。后两个大家会比较陌生。本系列分享基于ILRuntime来做热更新。 对啦!这里有个游戏开…

【财务】FMS财务管理系统---存货管理

前一篇文章介绍了付款相关的内容,本文中笔者继续介绍FMS财务管理系统的设计,今天是关于存货管理的介绍。 财务存货管理应该就是针对公司的生产原材料、物料、成品、加工品的数量与金额的管控。 在前面也介绍了,存货属于公司的资产&#xff0…

纯Java实现一个网页版的Xshell

前言 最近由于项目需求,项目中需要实现一个WebSSH连接终端的功能,由于自己第一次做这类型功能,所以首先上了GitHub找了找有没有现成的轮子可以拿来直接用,当时看到了很多这方面的项目,例如:GateOne、webss…

微信小程序实现身份证识别-orc

项目中有一个识别身份证的需求,经过调研,最后决定使用微信小程序orc插件进行开发。 一:首先登录小程序公众平台。 1:进入设置> 第三方设置。 2:添加ocr插件。 3:添加完后,需要领取免费额度,100次/天。 https://fuwu.weixin…

SpringBoot+Vue实现后疫情时代下的旅游管理系统

文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript、Vue.js 、css3 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库:MySQL 5.7/8.0 数据库管理工具:phpstudy/Navicat JD…

Linux高级之日志管理

Linux高级之日志管理1.系统常用日志2.日志服务的稳定性3.自定义日志服务4.日志轮替5.内存日志1.系统常用日志 日志文件用于记录linux系统的各种运行信息的文件,相当于linux主机的日记,不同的日志文件记载了不同类型的信息,如Linux内核消息、用户登录事件…

React学习04-React_Ajax

写在前面 React本身只关注于界面,并不包含发送ajax请求的代码前端应用需要通过ajax请求与后台进行交互(json数据)React应用中需要集成第三方ajax库(或自己封装) 常用的ajax请求库 jQuery:比较重&#xf…