Skip to content

基本性能监控系统使用

基本性能监控系统使用

简介

使用GrafanaInfluxDBCollectd组成的基本性能监控系统是一种强大的解决方案,用于收集、存储、分析和可视化系统性能数据。这个系统结合了这三个开源工具的优势,形成了一个完整的监控链,能够实时提供关于系统状态、性能指标和潜在问题的洞察。

为什么要使用性能监控系统

  1. 综合监控能力

    • 这个系统组合能够覆盖从数据采集、存储到可视化的整个监控流程。Collectd可以收集各种系统和应用的性能指标,InfluxDB提供高效的时序数据存储,而 Grafana 则将这些数据以直观的方式呈现出来。
  2. 实时性能监控

    • 对于需要实时了解系统状态和运行状况的场景,这个系统能够即时收集并展示关键性能指标。无论是 CPU 使用率、内存占用还是网络流量,都可以实时跟踪和监控。
  3. 可扩展性和灵活性

    • 所有的组件都是开源的,并且有着活跃的社区支持,这意味着它们可以根据特定的需求进行定制和扩展。Collectd支持大量的插件,可以轻松地增加新的监控项;InfluxDB 支持水平扩展,能够处理大量的数据;Grafana提供了丰富的图表类型和仪表盘定制选项。
  4. 告警和通知功能

    • 通过Grafana的告警功能,可以设定阈值,当某个指标超过或低于这些阈值时,系统会自动发送通知(如邮件、Slack消息等)。这有助于及时发现潜在问题,避免性能瓶颈或故障。
  5. 数据持久化和历史分析

    • InfluxDB 能够长期存储性能数据,使得用户可以进行历史数据分析,了解系统的长期趋势和周期性变化。这对于性能调优、故障排查以及容量规划都非常有价值。
  6. 社区支持和生态丰富

    • 这些工具都有庞大的用户基础和活跃的社区,这意味着用户可以很容易地找到解决方案、获取帮助以及参与开发。此外,还有大量的插件、集成和扩展可以进一步丰富系统的功能。

如何搭建性能监控系统

  1. 准备 linux 环境: 参考教程

  2. 下载 docker:参考教程

基本性能监控系统组成

  • 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

alt text alt text alt text alt text alt text

alt text

然后进入可视化页面:

alt text

配置文件

collectd 启用对应的监控数据
编辑配置文件 collectd.conf
启用对应的监控选项

使用vim collectd.conf
然后 输入 :set number

输入 :/uptime
然后找到 #load plugin uptime
光标移到#号位置,按下键盘s,然后就进入了编辑模式并且删除了光标所指字符,然后按esc退出编辑模式
输入 :wq 保存并退出
如果因为权限问题无法修改,就 :q,先退出
然后输入权限修改命令 $ sudo chmod -R 777 ./
然后查看权限:ls -l ./
然后再进行修改

alt text

alt text

如果需要放开某些面板比如 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
  1. 搭建基于 influxdb 和 grafana 和 collectd 的监控系统教程:参考教程

  2. 启动三个服务

alt text

  1. 系统运行截图:

alt text

  1. 常见性能监控面板

    • Data Source :数据源
    • Dashboard :仪表盘
    • panel :面板
    • Free Memory: 空闲内存
    • Memory Used: 已使用内存
    • Memory Buffered: 缓存内存
    • Memory Cached: 缓存内存
    • CPU Usage : cpu 利用率

总结

使用GrafanaInfluxDBCollectd组成的基本性能监控系统是一种强大的解决方案,用于收集、存储、分析和可视化系统性能数据。