zabbix、netdata和glances,做最简单的系统资源监控

软件需要显示服务器的资源信息(CPU、内存、网络、硬盘等),但是软件是在Docker容器中运行。

目前方案

通过ssh在主机上远程运行ps、free等指令,获取相应的信息。这种方案需要代码配置主机的IP,以及用户名和密码,一方面对于安全性来说不好,另一方面容器和主机通过IP进行了耦合,所以想看看有没有其他的方案。
要求:

  1. 开源
  2. 可以本地部署,也可以容器部署
  3. 在容器中部署,可以监控主机的资源
  4. 对系统资源占用的越小越好
  5. 需要支持ARM架构

zabbix

Zabbix:企业级开源监控解决方案
功能非常齐全,手册非常详细。
server没有windows版本,agent有windows版本;
但是zabbix感觉有些重,需要部署多个容器。

glances

nicolargo/glances: Glances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, Mac OS and Windows operating systems.
glance是python编写的轻量级系统监控,可以命令行交互,也可以web交互,对系统资源的占用非常小。它是基于psutil开发的,psutil可以在容器中获取主机信息,参考:Allow specifying /proc and other needed folders · Issue #558 · giampaolo/psutil,以及psutil inside docker container reports host stats · Issue #1011 · giampaolo/psutil

但是看了一下glances的代码,发现其中把“/proc”路径写死在代码中
在这里插入图片描述
如果想在容器中监控主机资源,就需要把所有的“/proc/”硬编码改为变量,有些犯懒了,不想改。
可以考虑使用psutil修改原来的代码,这样可以不用保存密码和主机IP,应该也能解决问题。

也可以考虑把对应的文件从主机映射到容器中,例如:如果要检测主机的启动时间-v /proc/uptime:/proc/uptime:ro
但是有些文件如果从主机映射到容器,可能会影响容器的运行,这个就需要一个一个测试了。

netdata

Learn Netdata
netdata基本功能开源,高级功能收费,部署较为简单(一个容器即可),对系统的资源占用可以根据开启的功能优化,
计划使用netdata作为系统资源监控方案

CPU:As a general rule, for modern hardware and VMs, the total CPU consumption of a standalone Netdata installation, including all its components, should be below 5 - 15% of a single core. For example, on 8 core server it will use only 0.6% - 1.8% of a total CPU capacity, depending on the CPU characteristics.
Memory:The memory footprint of Netdata is mainly influenced by the number of metrics concurrently being collected. Expect about 150MB of RAM for a typical 64-bit server collecting about 2000 to 3000 metrics.
Disk:By default, Netdata should not use more than 1GB of disk space, most of which is dedicated for storing metric data and metadata. For typical installations collecting 2000 - 3000 metrics, this storage should provide a few days of high-resolution retention (per second), about a month of mid-resolution retention (per minute) and more than a year of low-resolution retention (per hour).

How to optimize the Netdata Agent’s performance | Learn Netdata
上面的网址中有netdata对系统资源占用的评估,以及优化的说明

netdata好像还没有windows的版本,但是有windows的exporter,Windows Monitoring

  • 设置数据采集频率 Reduce the data collection frequency​,​Reduce collection frequency
  • 设置数据保存次数 Running Netdata on embedded devices​
  • 关闭不需要的采集器和插件 Disable a collector or plugin​,Collectors
  • 关闭报警和提示 Disable a specific alert​,Turn of all alerts and notifications​,是关掉部分,还是全部,还没有想好
  • 系统是多机部署时,采用分布式部署 How metrics streaming works
    • Use memory mode ram or save for the child nodes​
    • ​Disable health checks on the child nodes
    • Disable machine learning on the child nodes​
  • 降低数据保留的内存使用 Change how long Netdata stores metrics
  • 使用反向代理​ Running Netdata behind a reverse proxy
  • 关闭dashboard的数据压缩 Disable/lower gzip compression for the dashboard​
  • 开启KSM Enable KSM in kernel​,对ksm不是很了解,需要测试一下对其他服务的影响

这是我的设置:
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

【MATLAB】基于CEEMD分解的信号去噪算法(基础版)

代码的使用说明 【MATLAB】基于CEEMD分解的信号去噪算法(基础版) 代码流程图 代码效果图 获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复CEEMD去噪 本公众号致力于解决找代码难,写代…

Flink核心概念

并行度 当要处理的数据量非常大时,我们可以把一个算子操作,“复制”多份到多个节点,数据来了之后就可以到其中任意一个执行。这样一来,一个算子任务就被拆分成了多个并行的“子任务”(subtasks)&#xff0…

node14升级node16之后,webpack3项目无法启动处理

node从14升级到16之后,项目就无法启动了,研究了webpack3升级5,研究好几个小时都无法启动,最后发现,微微升级几个版本就可以了。webpack还是3 版本改了好多个的,但是不确定具体是哪几个起作用的,…

110. 平衡二叉树(Java)

给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:t…

AcWing 95. 费解的开关(递推)

题目链接 活动 - AcWing 本活动组织刷《算法竞赛进阶指南》,系统学习各种编程算法。主要面向有一定编程基础的同学。https://www.acwing.com/problem/content/97/ 题解 只要第一行开关的状态确定,则所有开关的状态都可以被推出来。第一行开关总共有种操…

Nginx的server层外层的常见配置语句的解读

有下面的Nginx配置: worker_processes auto; worker_rlimit_nofile 51200;events {use epoll;worker_connections 51200;multi_accept on; }http {include mime.types;default_type application/octet-stream;server_names_hash_bucket_size 512;client_max_body_size 50m;cli…

QT作业3

完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号和密码不匹配&#xf…

LAMP LNMP 企业网站架构部署和优化

LAMP 架构 LAMP架构:是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词,具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、PHP&…

Python中 dearpygui 和 Tkinter 的对比与选择

更多Python学习内容:ipengtao.com 大家好,我是彭涛,今天为大家分享 Python中 dearpygui 和 Tkinter 的对比与选择,全文4400字,阅读大约15分钟。 Python 中有许多用于创建图形用户界面的库,其中 dearpygui&a…

Web安全-SQL注入【sqli靶场第11-14关】(三)

★★实战前置声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 0、总体思路 先确认是否可以SQL注入&#xff0…

JAVA使用HTTP代码示例

你好,Java开发者们!今天,我要给你们带来一场硬核的盛宴,那就是在Java中使用HTTP协议进行网络通信的代码示例。准备好接受挑战了吗?Lets go! 首先,我们需要导入一些必要的库,它们将成…

[java/jdbc]插入数据时获取自增长主键的值

需求 数据库中的unum字段为自增长主键,使用sql语句插入时需要获取主键的值 insert into udata(upwd,utime,upath) values(?,?,?) 插入之后再查找显然效率太慢,其实jdbc提供了getGeneratedKeys()方法来获取主键 代码 PreparedStatement ps conn.p…