LibreNMS:从docker出发

引言

LibreNMS 是一个免费开源的网络监控和自动化工具,用于监视网络设备、服务器和应用程序的性能和状态。它提供了一个集中的管理平台,帮助管理员实时监控和管理整个网络基础设施。

以下是 LibreNMS 的一些主要特点和功能:

  • 自动发现:LibreNMS 可以自动发现和添加网络设备,无需手动配置。它支持各种网络设备,如路由器、交换机、防火墙、服务器等。
  • 实时监控:LibreNMS 提供实时监控功能,可以监测设备的性能指标、接口流量、CPU 和内存利用率等。它还支持 SNMP、LLDP 和其他协议,以获取详细的设备信息。
  • 告警和通知:LibreNMS 可以根据预定义的规则生成告警,并通过电子邮件、Slack、PagerDuty 等方式发送通知。管理员可以根据需要定制告警规则和通知方式。
  • 图形化界面和报表:LibreNMS 提供直观的图形化界面,显示设备的状态和性能图表。它还提供各种报表和分析工具,帮助管理员进行容量规划和故障排除。
  • 集成和扩展性:LibreNMS 支持与其他系统和工具的集成,如 SNMP Trap 收集、Syslog 日志分析等。它还提供了强大的 API,方便开发者进行自定义扩展和集成。
  • 多用户支持:LibreNMS 允许创建多个用户账户,并为不同的用户分配不同的权限和访问级别。这对于团队协作和分工非常有用。
  • 社区支持和更新:LibreNMS 是一个活跃的开源项目,拥有庞大的社区支持。它经常发布更新和新功能,以改进性能和安全性。

安装docker

详细可以查看我之前发的博客:无桌面版docker在Ubuntu系统上安装

docker compose

下载

sudo curl -SL https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

可以选择下载上述二进制文件,到制定目录。因为比较慢,所以建议可以直接通过科学上网手段加快速度。也可以打开https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64下载到指定位置之后/usr/local/bin/,更改文件名为docker-compose

权限

下载完之后需要将可执行权限应用于安装目标路径中的独立二进制文件。

sudo chmod +x /usr/local/bin/docker-compose

LibreNMS 安装

关于libreNMS的docker安装可以参见官网:Docker - LibreNMS Docs

关于其中的参数说明可以参见:GitHub - librenms/docker: LibreNMS Docker image

如果你对docker的流程十分熟悉,那么看上面两个网页可以完全自行完成安装。

如果你不是很熟悉docker,那么请看下面的详细教程:

获取镜像

从docker官方镜像(https://hub.docker.com/r/librenms/librenms)获取镜像:

docker pull librenms/librenms

下载librenms配置文件

可以从github上拉去镜像,并且进入他的docker compose示例目录中去:

git clone https://github.com/librenms/docker.gitcd ./examples/compose # 进入docker compose示例文件夹

然后可以看见里面有以下几个文件,在linux中可以使用ls来查看,.env文件会自动隐藏,但是他是存在的:

修改原有的docker compose示例

.env

用你喜欢的编辑器打开.env文件

TZ=Europe/Paris
PUID=1000
PGID=1000MYSQL_DATABASE=librenms
MYSQL_USER=librenms
MYSQL_PASSWORD=asupersecretpassword

我们需要再这里修改自己的mysql数据库还有时区(TZ),关于这几个参数

如果你没有新建自己的MySQL数据库则不需要更改,如果你已经有了mysql数据库,则要匹配到自己mysql数据库的用户名和密码。

时区建议修改为Asia/Shanghai

compose.yml

name: librenmsservices:db:image: mariadb:10.5container_name: librenms_dbcommand:- "mysqld"- "--innodb-file-per-table=1"- "--lower-case-table-names=0"- "--character-set-server=utf8mb4"- "--collation-server=utf8mb4_unicode_ci"volumes:- "./db:/var/lib/mysql"environment:- "TZ=${TZ}"- "MYSQL_ALLOW_EMPTY_PASSWORD=yes"- "MYSQL_DATABASE=${MYSQL_DATABASE}"- "MYSQL_USER=${MYSQL_USER}"- "MYSQL_PASSWORD=${MYSQL_PASSWORD}"restart: alwaysredis:image: redis:5.0-alpinecontainer_name: librenms_redisenvironment:- "TZ=${TZ}"restart: alwaysmsmtpd:image: crazymax/msmtpd:latestcontainer_name: librenms_msmtpdenv_file:- "./msmtpd.env"restart: alwayslibrenms:image: librenms/librenms:latestcontainer_name: librenmshostname: librenmscap_add:- NET_ADMIN- NET_RAWports:- target: 8000published: 8000protocol: tcpdepends_on:- db- redis- msmtpdvolumes:- "./librenms:/data"env_file:- "./librenms.env"environment:- "TZ=${TZ}"- "PUID=${PUID}"- "PGID=${PGID}"- "DB_HOST=db"- "DB_NAME=${MYSQL_DATABASE}"- "DB_USER=${MYSQL_USER}"- "DB_PASSWORD=${MYSQL_PASSWORD}"- "DB_TIMEOUT=60"restart: alwaysdispatcher:image: librenms/librenms:latestcontainer_name: librenms_dispatcherhostname: librenms-dispatchercap_add:- NET_ADMIN- NET_RAWdepends_on:- librenms- redisvolumes:- "./librenms:/data"env_file:- "./librenms.env"environment:- "TZ=${TZ}"- "PUID=${PUID}"- "PGID=${PGID}"- "DB_HOST=db"- "DB_NAME=${MYSQL_DATABASE}"- "DB_USER=${MYSQL_USER}"- "DB_PASSWORD=${MYSQL_PASSWORD}"- "DB_TIMEOUT=60"- "DISPATCHER_NODE_ID=dispatcher1"- "SIDECAR_DISPATCHER=1"restart: alwayssyslogng:image: librenms/librenms:latestcontainer_name: librenms_syslognghostname: librenms-syslogngcap_add:- NET_ADMIN- NET_RAWdepends_on:- librenms- redisports:- target: 514published: 514protocol: tcp- target: 514published: 514protocol: udpvolumes:- "./librenms:/data"env_file:- "./librenms.env"environment:- "TZ=${TZ}"- "PUID=${PUID}"- "PGID=${PGID}"- "DB_HOST=db"- "DB_NAME=${MYSQL_DATABASE}"- "DB_USER=${MYSQL_USER}"- "DB_PASSWORD=${MYSQL_PASSWORD}"- "DB_TIMEOUT=60"- "SIDECAR_SYSLOGNG=1"restart: alwayssnmptrapd:image: librenms/librenms:latestcontainer_name: librenms_snmptrapdhostname: librenms-snmptrapdcap_add:- NET_ADMIN- NET_RAWdepends_on:- librenms- redisports:- target: 162published: 162protocol: tcp- target: 162published: 162protocol: udpvolumes:- "./librenms:/data"env_file:- "./librenms.env"environment:- "TZ=${TZ}"- "PUID=${PUID}"- "PGID=${PGID}"- "DB_HOST=db"- "DB_NAME=${MYSQL_DATABASE}"- "DB_USER=${MYSQL_USER}"- "DB_PASSWORD=${MYSQL_PASSWORD}"- "DB_TIMEOUT=60"- "SIDECAR_SNMPTRAPD=1"restart: always

如果你已经有自己的redis也需要对自己的redis参数进行修改,其余的几乎不需要更改,但是需要将所有的DB_HOST参数修改为自己的主机ip。

关于详细的参数配置可以查看这个网站https://github.com/librenms/docker/tree/master里的说明。

剩下的两个文件几乎不需要更改,保留即可。

安装启动

在your_path/examples/compose目录下,输入以下命令,启动docker-container

sudo docker compose up -d

如果已经成功运行,你可以输入http://localhost:8000,访问librenms UI界面。

应该会需要创建用户,如果没有创建用户环节,则默认密码和账户都是librenms。如果需要更改,可以在个人设置里修改自己的密码。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【.NET】控制台应用程序的各种交互玩法

关于控制台交互,大伙伴们也许见得最多的是进度条,就是输出一行但末尾不加 \n,而是用 \r 回到行首,然后输出新的内容,这样就做出进度条了。不过这种方法永远只能修改最后一行文本。 于是,有人想出了第二种方…

小程序地图检索

<template><view style"background-color: #f5f5f5"><!-- 头部开始 --><viewstyle"position: fixed;left: -5rpx;right: -5rpx;z-index: 99;top: -5rpx;width: 101vw;"><view style"position: relative"><view…

三大主流前端框架介绍

在前端项目中&#xff0c;可以借助某些框架&#xff08;如React、Vue、Angular等&#xff09;来实现组件化开发&#xff0c;使代码更容易复用。此时&#xff0c;一个网页不再是由一个个独立的HTML、CSS和JavaScript文件组成&#xff0c;而是按照组件的思想将网页划分成一个个组…

Go集成elasticsearch8极简demo,光速入门

Go集成elasticsearch8极简demo,光速入门 配置go环境创件go mod工程代码实现配置go环境 编辑器添加goproxy GO111MODULE=on;GOPROXY=https://mirrors.wps.cn/go/,https://goproxy.cn,direct;GOSUMDB=off创件go mod工程 mkdir demo cd demo go mod init demo代码实现 在demo…

人工智能与底层架构:构建智能引擎的技术支柱

导言 人工智能与底层架构的交融塑造了智能系统的基石&#xff0c;是推动智能时代发展的关键动力&#xff0c;本文将深入研究人工智能在底层架构中的关键作用&#xff0c;以及它对智能引擎的技术支持&#xff0c;探讨人工智能在计算机底层架构中的作用&#xff0c;以及这一融合如…

MongoDB的数据库引用

本文主要介绍MongoDB的数据库引用。 目录 MongoDB的数据库引用 MongoDB的数据库引用 MongoDB是一种面向文档的NoSQL数据库&#xff0c;它使用BSON&#xff08;Binary JSON&#xff09;格式存储和查询数据。在MongoDB中&#xff0c;数据库引用是一种特殊的数据类型&#xff0c;…

cefsharp120.1.8(cef120.1.8,Chromium120.0.6099.109)版本升级测试,其他版本H264版本

此版本最新版cef120.1.8,Chromium120.0.6099.109 此更新包括一个高优先级安全更新 This update includes a high priority security update. 说明&#xff1a;本版本暂时不支持264&#xff0c;其他H264版本参考119,116&#xff0c;114&#xff0c;110&#xff0c;109等版本 c…

【贪心算法】之跳跃游戏

问题&#xff1a; 给定一个非负整数数组 [nums] &#xff0c;开始时位于数组的初始位置 &#xff0c;数组中每个下标对应的元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达数组的最后位置。**思路&#xff1a;**贪心算法 看不懂的可以去下面这个链接看 具体思路 …

【Proteus仿真】【Arduino单片机】电子称重秤

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使LCD1602液晶&#xff0c;矩阵按键、蜂鸣器、HX711称重模块等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示HX711称重模块检测重量…

02.微服务组件 Eureka注册中心

1.Eureka注册中心 服务提供者与消费者&#xff1a; 服务提供者:一次业务中&#xff0c;被其它微服务调用的服务。(提供接口给其它微服务)服务消费者:一次业务中&#xff0c;调用其它微服务的服务。&#xff08;调用其它微服务提供的接口)一个服务是消费者还是提供者&#xff…

清空缓存区的方法

fflush(文件指针) fflush()用于刷新相应文件的缓存区。 使用getchar()函数来清空标准输入缓存区 上面的fflush是一个函数,有些编译器不一定支持,这时候我们可以自己实现清空标准输入缓存区的操作。 代码示例: 使用scanf()的高级特性来清空标准输入缓存区 上面代码的意思是: …

分布式链路追踪 —— 基于Dubbo的traceId追踪传递

文章目录 原文链接RpcContext 上下文对象Dubbo 过滤器&#xff08;Filter&#xff09;对象基于Dubbo的traceId追踪传递实现 原文链接 RpcContext 上下文对象 在实现 Dubbo 调用之间的链路跟踪之前&#xff0c;先简单了解 RpcContext 上下文对象和 Filter 过滤器对象&#xff…