基本性能监控系统使用
基本性能监控系统使用
简介
使用Grafana
、InfluxDB
和Collectd
组成的基本性能监控系统是一种强大的解决方案,用于收集、存储、分析和可视化系统性能数据。这个系统结合了这三个开源工具的优势,形成了一个完整的监控链,能够实时提供关于系统状态、性能指标和潜在问题的洞察。
为什么要使用性能监控系统
-
综合监控能力:
- 这个系统组合能够覆盖从数据采集、存储到可视化的整个监控流程。
Collectd
可以收集各种系统和应用的性能指标,InfluxDB
提供高效的时序数据存储,而Grafana
则将这些数据以直观的方式呈现出来。
- 这个系统组合能够覆盖从数据采集、存储到可视化的整个监控流程。
-
实时性能监控:
- 对于需要实时了解系统状态和运行状况的场景,这个系统能够即时收集并展示关键性能指标。无论是
CPU
使用率、内存占用还是网络流量,都可以实时跟踪和监控。
- 对于需要实时了解系统状态和运行状况的场景,这个系统能够即时收集并展示关键性能指标。无论是
-
可扩展性和灵活性:
- 所有的组件都是开源的,并且有着活跃的社区支持,这意味着它们可以根据特定的需求进行定制和扩展。
Collectd
支持大量的插件,可以轻松地增加新的监控项;InfluxDB
支持水平扩展,能够处理大量的数据;Grafana
提供了丰富的图表类型和仪表盘定制选项。
- 所有的组件都是开源的,并且有着活跃的社区支持,这意味着它们可以根据特定的需求进行定制和扩展。
-
告警和通知功能:
- 通过
Grafana
的告警功能,可以设定阈值,当某个指标超过或低于这些阈值时,系统会自动发送通知(如邮件、Slack
消息等)。这有助于及时发现潜在问题,避免性能瓶颈或故障。
- 通过
-
数据持久化和历史分析:
InfluxDB
能够长期存储性能数据,使得用户可以进行历史数据分析,了解系统的长期趋势和周期性变化。这对于性能调优、故障排查以及容量规划都非常有价值。
-
社区支持和生态丰富:
- 这些工具都有庞大的用户基础和活跃的社区,这意味着用户可以很容易地找到解决方案、获取帮助以及参与开发。此外,还有大量的插件、集成和扩展可以进一步丰富系统的功能。
如何搭建性能监控系统
基本性能监控系统组成
- Collectd+influxdDB+Grafana
- Collectd 是是一个守护(daemon)进程,用来定期收起系统和引用程序的性能指标,同时提供了以不同的方式来存储这些指标值的机制
- InfluxDB 开源的,高性能的时序型数据库
- Grafana 一个非常酷的数据可视化平台,常常应用于显示监控数据,支持多种数据源。
环境搭建
- Docker 部署环境
-
步骤:
- 准备数据文件:types.db collectd.conf
- 启动 influxDB
- 启动 grafana
- 启动 collectd
准备数据文件
> docker create --name temporary mwaeckerlin/collectd
创建一个名为temporary的docker容器并且基于 mwaeckerlin/collectd 这个镜像。mwaeckerlin/collectd 镜像来源可能是 Docker Hub 或其他 Docker 仓库中可用的一个镜像,它可能包含了一个预先配置好的 Collectd 环境
> docker cp temporary:/usr/share/collectd/types.db types.db
从temporary容器中拷贝`usr/share/collectd/types.db`文件 到当前目录下的types.db文件
> docker cp temporary:/etc/collectd/collectd.conf collectd.conf
从temporary容器中拷贝`/etc/collectd/collectd.conf`文件 到当前目录下的collectd.conf文件
(一般当前目录为桌面目录)
> sudo mkdir -p <your path>
> sudo mv -i types.db <your path>
> sudo mv -i collectd.conf <your path>
> docker rm temporary
启动 InfluxDB 服务
docker run -d \
--name influxdb \
-e INFLUXDB_COLLECTD_ENABLED=true \
-e INFLUXDB_COLLECTD_DATABASE=_internal \
-e INFLUXDB_COLLECTD_TYPESDB=/usr/share/collectd/types.db \
-e INFLUXDB_COLLECTD_SECURITY_LEVEL=none \
-v <your path>/types.db:/usr/share/collectd/types.db \
influxdb:1.8
启动 grafana 服务
docker run -d \
--name=grafana \
-p 3000:3000 \
--link influxdb:influxdb grafana/grafana
解析:启动一个名为grafana的容器,与本地的映射端口为 3000 映射虚拟机的3000端口
--link 需要连接的 influxdb服务对应的容器名为 influxdb
默认用户名/密码:admin/admin
启动 collectd 服务
docker run -d \
--name collectd \
--hostname localhost \
--link influxdb:influxdb \
-v <your path>/collectd.conf:/etc/collectd/collectd.conf \
mwaeckerlin/collectd
创建并运行一个名为collectd的容器,然后是设置hostname名localhost,连接influxdb服务对应的启动容器influxdb,-v 则是将主机上的 <your path>/collectd.conf文件挂载到容器里的/etc/collectd/collectd.conf文件 然后是镜像源:mwaeckerlin/collectd
注意上述三个服务都要启动在同一个虚拟机上或者本地机器上
查看正在运行的容器:docker ps
环境配置与监控环境的使用
Grafana中配置数据源
类型: InfluxDB
URL: http://influxdb:8086
Database: _internal
Grafana 配置Dashboard
Import id 555
然后进入可视化页面:
配置文件
collectd 启用对应的监控数据
编辑配置文件 collectd.conf
启用对应的监控选项
使用vim collectd.conf
然后 输入 :set number
输入 :/uptime
然后找到 #load plugin uptime
光标移到#号位置,按下键盘s,然后就进入了编辑模式并且删除了光标所指字符,然后按esc退出编辑模式
输入 :wq 保存并退出
如果因为权限问题无法修改,就 :q,先退出
然后输入权限修改命令 $ sudo chmod -R 777 ./
然后查看权限:ls -l ./
然后再进行修改
如果需要放开某些面板比如 uptime
(上图的 N/A)的监控数据,则要进入 collectd.conf
文件里,然后找到# loading plugin uptime
的那行,将#
删掉。
vim 文件名
输入 :/uptime 这一句会找到文件里包含uptime字样的段落
按下键盘 i,或者a,或者s,当按下s时会在进入编辑模式的同时删除光标所指的字符
按下esc退出编辑模式
输入:wq 保存并退出
从某种意义来说 键盘按下 : 会让文件进入命令模式
做完上述操作后,重启collectd容器即可 sudo docker restart collectd
总结命令行
> docker create --name temporary mwaeckerlin/collectd
> docker cp temporary:/usr/share/collectd/types.db types.db
> docker cp temporary:/etc/collectd/collectd.conf collectd.conf
> sudo mkdir -p <your path>
> sudo mv -i types.db <your path>
> sudo mv -i collectd.conf <your path>
> docker rm temporary
docker run -d \
--name influxdb \
-p 8086:8086\
-e INFLUXDB_COLLECTD_ENABLED=true \
-e INFLUXDB_COLLECTD_DATABASE=_internal \
-e INFLUXDB_COLLECTD_TYPESDB=/usr/share/collectd/types.db \
-e INFLUXDB_COLLECTD_SECURITY_LEVEL=none \
-v <your path>/types.db:/usr/share/collectd/types.db \
influxdb:1.8
启动 grafana 服务容器
docker run -d \
--name=grafana \
-p 3000:3000 \
--link influxdb:influxdb grafana/grafana
检查是否为文件:ls -l ./
会输出当前文件夹下的东西的权限,而不会输出当前文件夹本身的权限,如果权限开头是-
则为文件,如果为d
则为文件夹。
docker run -d \
--name collectd \
--hostname localhost \
--link influxdb:influxdb \
-v <your path>/collectd.conf:/etc/collectd/collectd.conf \
mwaeckerlin/collectd
-
搭建基于 influxdb 和 grafana 和 collectd 的监控系统教程:参考教程
-
启动三个服务
- 系统运行截图:
-
常见性能监控面板
- Data Source :数据源
- Dashboard :仪表盘
- panel :面板
- Free Memory: 空闲内存
- Memory Used: 已使用内存
- Memory Buffered: 缓存内存
- Memory Cached: 缓存内存
- CPU Usage : cpu 利用率
总结
使用Grafana
、InfluxDB
和Collectd
组成的基本性能监控系统是一种强大的解决方案,用于收集、存储、分析和可视化系统性能数据。