Nightingle夜莺Docker版SNMP监控

news2025/1/13 10:24:09

起因

对夜莺很感兴趣,想使用一下。我看官方提供了v6版本的docker-compose。而且我之前有使用过promtheus和grafana,虽然很好但是总觉得还是得二开。总有一天有人去搞一个不错的玩意儿出来。官方文档地址

安装与配置

直接运行docker版本的demo,启动后,我发现有prometheus和categraf。但我想根据官方文档使用VictoriaMetrics单机版本。

使用VictoriaMetrics

我在compose中去掉了prometheus,然后在主机安装了VictoriaMetrics。我没用在compose中添加,我懒改了。直接看官当文档多香。

后面启动后修改数据源:
ZviA7j7

添加好数据源后,看下是否正常:
时序指标随便敲敲看有没指标
WxPg5Rs
看到有指标我很自信的说成了。

后面我加了两个Ping,发现可以没问题的。

JoY5v64
使用内置的展示仪表盘美滋滋。

SNMP部分

之后我想测试SNMP部分,这是我工作需要的内容。

首先默认的官方demo没有提供相关categraf插件配置。他的插件都是在github上面的。下载一份放到demo的categraf/conf目录下。
我的路径: home/xxx/nightingate/docker/categraf/conf

我这里用到snmp, 就拷贝input.snmp 这个目录到上面路径内。

进入这个input.snmp,里面有两个文件,一个 snmp.toml另一个是snmp.toml.example 。实际使用的是第一个,在里面编辑内容:

[[instances]]
  agents = ["udp://10.10.10.2:161"]
  timeout = "5s"
  version = 2
  path = ["/usr/share/snmp/mibs"]
  community = "public"
  agent_host_tag = "switch"
  retries = 1

[[instances.field]]
  oid = ".1.3.6.1.2.1.1.3.0"
  name = "uptime"

[[instances.field]]
  oid = ".1.3.6.1.2.1.1.5.0"
  name = "source"
  is_tag = true

[[instances.table]]
  oid = "IF-MIB::ifTable"
  name = "interface"
  inherit_tags = ["source"]
  index_as_tag = true
  include_filter = ["ifIndex:2","ifIndex:4"]

[[instances.table.field]]
  oid = "IF-MIB::ifDescr"
  name = "ifDescr"
  is_tag = true
[[instances.table.field]]
  oid = "IF-MIB::ifPhysAddress"
  name = "ifPhysAddress"
  is_tag = true

遇到问题

保存重启categraf后,我只看到了一个指标snmp_uptime。我单独取uptime这个是有的,就好像没办法执行snmpwalk 只能搞snmpget

通过docker log我看到categraf中关于snmp部分报错:
metrics_agent.go:255: E! failed to init input: local.snmp error: initializing table interface ins: translating: exec: “snmptranslate”: executable file not found in $PATH

我开始以为是没有mibs文件导致的,所以我在docker-compose.yaml中挂在了宿主机的mibs。结果是重启categraf无效。

我问了下GPT这句话怎么肥事,回答内容:
这个错误信息表明 Nightingale 监控软件在尝试初始化 SNMP 输入时遇到了问题。具体来说,它无法找到名为 “snmptranslate” 的可执行文件。

看这个名字大概就知道,他主要功能是翻译转换吧。大概就是MIB和OID的关系了。这部分内容建议看看SNMP的一些内容。n9e官方提供了一些相关内容:SNMP插件

好,既然我知道是缺少这个,我就进到容器里去看看,果然没有,算你蒙对了。我就自己安装一个吧,在容器内安装命令:
sudo apt updatesudo apt install snmp,这个容器进来就是root,所以直接装就好了。装好之后,重启categraf果然错误变了:
metrics_agent.go:255: E! failed to init input: local.snmp error: initializing table interface ins: translating: Created directory: /var/lib/snmp/cert_indexes /usr/share/snmp/mibs/iana: No such file or directory /usr/share/snmp/mibs/ietf: No such file or directory MIB search path: /root/.snmp/mibs:/usr/share/snmp/mibs:/usr/share/snmp/mibs/iana:/usr/share/snmp/mibs/ietf Cannot find module (IF-MIB): At line 1 in (none) IF-MIB::ifTable: Unknown Object Identifier: exit status 2

这个意思大概是他没找到MIB文件。我可能挂载有问题吧,既然这样我就直接在容器折腾了,apt-get install snmp-mibs-downloader, 装完之后需要创建一个目录~/.snmp,并在这目录中创建一个snmp.conf,文件内容:mibs +ALL

之后我手动执行了categraf test参数,来直接测试snmp部分内容。 容器内部执行 /usr/bin/categraf --configs /etc/categraf/conf --test --inputs snmp如果执行没出现任何error,应该是ok的。

然后在界面查询指标:
![[Pasted image 20230627093410.png]]
都有了,那么也就是我的折腾是有效的。

进行调整

整理上面的操作,我们需要对原来的镜像进行调整,所以我拉取他的代码,在上面进行魔改。

进入源码目录:
RQgBBdl
可以看到他的DockerFile是在docker目录下。

FROM ubuntu:22.10

RUN echo 'hosts: files dns' >> /etc/nsswitch.conf

RUN set -ex && \
    mkdir -p /usr/bin /etc/categraf 

COPY categraf  /usr/bin/categraf

COPY conf /etc/categraf/conf

COPY entrypoint.sh /entrypoint.sh

CMD ["/entrypoint.sh"]

简单明了,把程序搞过来,配置搞过来完事了,那我加上相关snmp部分配置就好啦。

先把go程序编译放到此目录,然后我看copy一个conf目录,但是我在使用官方demo都是挂在宿主机上的conf,所以这里我给他一个空conf就好啦。docker目录下创建一个conf。在RUN命令加入安装SNMP命令。

#最终魔改后
FROM ubuntu:22.10

RUN echo 'hosts: files dns' >> /etc/nsswitch.conf \
    && apt-get update \
    && apt-get install -y snmp snmp-mibs-downloader \
    && mkdir -p ~/.snmp \
    && echo "mibs +ALL" > ~/.snmp/snmp.conf \
    && apt-get clean

RUN set -ex && \
    mkdir -p /usr/bin /etc/categraf

COPY categraf  /usr/bin/categraf

COPY conf /etc/categraf/conf

COPY entrypoint.sh /entrypoint.sh

CMD ["/entrypoint.sh"]

最后docker build 一个镜像。使用魔改后的就不需要再折腾容器了。

如果你还是想体验夜莺SNMP相关,又不想自己build呢?
没问题用我的这个镜像地址来拉取替换官方版本体验SNMP。

在夜莺demo中修改docker-compose.yaml

...
services:
  ...
  categraf:
    image: "chenwl2016/categraf:0.3.16"
    ulimits:
      nofile:
        soft: 8192
        hard: 8192
    cap_add:
      - NET_RAW
    cap_drop:
      - NET_RAW
    container_name: "categraf"
    hostname: "categraf01"
    restart: always
    environment:
      TZ: Asia/Shanghai
      HOST_PROC: /hostfs/proc
      HOST_SYS: /hostfs/sys
      HOST_MOUNT_PREFIX: /hostfs
    volumes:
      - ./categraf/conf:/etc/categraf/conf
      - /:/hostfs
      - /var/run/docker.sock:/var/run/docker.sock
    network_mode: host
    depends_on:
      - n9e
      - ibex
...

最终docker版本的SNMP监控可以使用了。具体SNMP配置还是需要看官方文档了。

完结

祝好~

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

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

相关文章

mysql内部结构和InnoDB底层原理

一、mysql内部结构 mysql总体上分为客户端、Server层、引擎层,具体如下图: 1、连接器 一般客户端通过jdbc、navicat等工具发送请求连接到mysql服务端,完成TCP三次握手后,连接器就开始认证身份,如果身份认证成功&…

数据结构-串、数组和广义表

数据结构之串、数组和广义表 串的定义一、串的顺序存储结构1.1、串的链式存储结构1.2、串的模式匹配算法1.2.1、Brute-Force简称为BF算法1.2.2、KMP算法 数组的定义2.1、数组的顺序存储结构2.2、数组的特点:结构固定-----维数和维界不变2.3、特殊矩阵的压缩存储 广义…

密码学—Kasiski测试法Python程序

Kasiski Kasiski是辅助破解Vigenere的前提工作,Kasiski是猜测加密者使用Vigenere密码体系的密钥的长度,Kasiski只是猜测长度而已,所以说是辅助破解Vigenere 若密文中出现两个相同的密文段(密文段的长度m>2),则它们对应的明文&…

leetcode第66题:加一

题目 这是一道简单的小题,自己却也没写出来。。。逆序遍历数组digits,用carry标记当前元素是否需要进位(0不要,1要)。 若carry1,则当前元素要么置0,要么自加1。自加1之后,再也不需要…

【深入了解Spring Cloud Alibaba Nacos:服务注册和配置中心】—— 每天一点小知识

💧 深入了解 S p r i n g C l o u d A l i b a b a N a c o s :服务注册和配置中心 \color{#FF1493}{深入了解Spring Cloud Alibaba Nacos:服务注册和配置中心} 深入了解SpringCloudAlibabaNacos:服务注册和配置中心💧…

深入浅出解析LoRA完整核心基础知识 | 【算法兵器谱】

Rocky Ding 公众号:WeThinkIn 写在前面 【算法兵器谱】栏目专注分享AI行业中的前沿/经典/必备的模型&论文,并对具备划时代意义的模型&论文进行全方位系统的解析,比如Rocky之前出品的爆款文章Make YOLO Great Again系列。也欢迎大家提…

让Ai帮我们画个粽子,它会画成什么样呢?

让Ai帮我们画个粽子,它会画成什么样呢? 本文目录: 一、Ai绘图技术的现状 二、看看Ai理解的粽子是怎样的 2.1、基础粽子 2.2、生成不同风格的粽子 2.2.1、真实风格的粽子 2.2.2、插图风格的粽子 2.2.3、3D风格的粽子 2.2.4、卡通风格…

Mysql锁机制介绍

Mysql锁机制 锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题&#xff0…

vue-cli笔记

vue的生命周期: 借鉴react 钩子函数: change() 挂载完毕,vue完成模板解析,并把初始的真实的dom元素放入到页面后执行 beforeCreate() {// 数据代理和数据监测创建之前console.log(beforeCreate) }, created() {console.l…

深度:全面解析数据智能的金融“炼金术”!

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 金融以其财富效应,成为最新科技的试金石。一项新技术出来后,人们首先闪过的念头就是“能不能用它赚钱”。例如,ChatGPT带火了大模型,人们也开始将目标聚焦到大模型在金融领域的…

【实战】 JWT、用户认证与异步请求(下) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(五)

文章目录 一、项目起航:项目初始化与配置二、React 与 Hook 应用:实现项目列表三、TS 应用:JS神助攻 - 强类型四、JWT、用户认证与异步请求1~56.用useAuth切换登录与非登录状态7.用fetch抽象通用HTTP请求方法,增强通用性8.用useHt…

AR宇航员互动体验软件:虚拟与现实叠加增强体验感

随着科技的不断发展,人们对太空探索的兴趣和热情也越来越高涨。为了满足人们对太空探索的渴望,广州华锐互动研发了宇航员AR模拟体验软件,这种软件可以让用户身临其境地体验太空探索的过程,提供一种全新的、令人兴奋的太空探索新体…

css基础知识十一:CSS3新增了哪些新特性?

一、是什么 css,即层叠样式表(Cascading Style Sheets)的简称,是一种标记语言,由浏览器解释执行用来使页面变得更为美观 css3是css的最新标准,是向后兼容的,CSS1/2的特性在CSS3 里都是可以使用…

图解CNN中的卷积(卷积运算、池化、Padding、多通道的卷积)

文章目录 卷积操作池化Padding对多通道(channels)图片的卷积套上激活函数是什么样的参考: 卷积层是深度学习神经网络中经常使用的一种层。它通过卷积运算来提取输入的特征,常用于图像、语音等信号处理任务中。 卷积层有以下几个参…

rocketmq-spring-boot-starter支持SpringBoot 1.x(spring-context 4.x)版本

1 问题说明 由于历史原因,项目使用的是SpringBoot1.x版本,而且由于种种原因,不能升级。在项目开发迭代过程中,决定使用RocketMQ作为消息中间件,因为是SpringBoot项目,理所应当的引入了rocketmq-spring-boo…

简单聊聊数字孪生与GIS融合的必要性

随着科技的不断发展和应用的不断深入,数字孪生和GIS在各自领域中展现出巨大的潜力。然而,更引人注目的是,数字孪生和GIS的融合将为许多行业带来全新的机遇和变革。在本文中,我们将探讨数字孪生和GIS融合的必要性,以及它…

2023ty计网期末综合题满分冲刺版

1. 假设有段1km长的CSMA/CD网络链路的数据传输率为1Gb/s。设信号在此链路媒介上的传播速度为2x105 km/s,求使用此协议的最短数据帧长度。 (1)传播时延:1/2000005微秒, (2)往返时延&#xff1a…

List合并的操作

List合并的操作 1.addAll方法 List list1new ArrayList();List list2new ArrayList();for (int i 0; i < 10; i) {list1.add(i*2);list2.add(i*21);}System.out.println(list1);//方法1&#xff1a;addAlllist1.addAll(list2);System.out.println(list1); 2.Stream操作 L…

ATTCK(二)之ATTCK的发展历史

ATT&CK的发展历史 MITRE公司 MITRE是美国NIST标准化组织选择的专注于网络安全的组织&#xff0c;由美国联邦政府资助。很多安全标准都MITRE制定的&#xff0c;比如有名的漏洞CVE编号规则以及威胁情报格式STIX。所以ATT&CK非常有影响力&#xff0c;而且未来能成为一个公…

MySQL----MHA高可用

文章目录 一、MHA理论1.1什么是 MHA1.2MHA 的组成1.3MHA 的特点 二、MHA的一主两从部署实验设计故障修复步骤&#xff1a; 一、MHA理论 1.1什么是 MHA MHA&#xff08;MasterHigh Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出…