CollectD,InfluxDB和Grafana集成
在这个例子中,我们将收集带有collectd的系统统计信息,并将它们传递给InfluxDB,然后存储它们。然后我们将使用Grafana可视化存储的数据。我们将使用collectD版本5.5.1
,InfluxDB版本1.3.5
和Grafana版本4.4.3
。
我假设你已经安装了InfluxDB和Grafana。如果您想知道如何安装它们,可以参考之前文章InfluxDB和Grafana集成。
系统设置
如下图所示,我们设置两个虚拟机。
- 服务器1(192.168.50.20) - 收集统计数据并通过collectd转移到InfluxDB。
- 服务器2(192.168.99.30) - 其中统计数据(stats)由InfluxDB存储并由Grafana可视化。
服务器1信息
服务器1必须能够通过UDP端口与服务器2通信,25826
是collectd将用于传输数据内容的端口。检查通信是否正常。如果它确实有效,你应该看到类似下面的内容。
server1:~$ sudo tcpdump -i eth0 -p -n dst port 25826
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
10:52:34.138885 IP 10.0.2.15.34237 > 192.168.99.30.25826: UDP, length 1297
10:52:44.137505 IP 10.0.2.15.34237 > 192.168.99.30.25826: UDP, length 1319
10:52:54.138522 IP 10.0.2.15.34237 > 192.168.99.30.25826: UDP, length 1301
10:53:04.137666 IP 10.0.2.15.34237 > 192.168.99.30.25826: UDP, length 1298
InfluxDB
我们首先需要准备InfluxDB才能与collectd进行交互,所以请执行以下操作。
用户认证 执行以下操作以防止对数据库进行未经身份验证的访问。我们将创建一个管理员用户,并且只允许管理员用户使用用户名和密码访问数据库。
server-2:~$ influx
Connected to http://localhost:8086 version 1.3.5
InfluxDB shell version: 1.3.5
>
> CREATE USER inanzzz WITH PASSWORD '123123' WITH ALL PRIVILEGES
>
> SHOW USERS
user admin
---- -----
inanzzz true
>
> EXIT
auth-enabled
在/etc/influxdb/influxdb.conf
配置文件中查找并将其设置为auth-enabled = true
启用身份验证。
重启服务
server-2:〜$ sudo service Influxdb restart
创建数据库
server-2:~$ curl -i -XPOST http://localhost:8086/query -u inanzzz:123123 --data-urlencode "q=CREATE DATABASE collectd"
验证数据库
server-2:~$ influx -username inanzzz -password 123123
Connected to http://localhost:8086 version 1.3.5
InfluxDB shell version: 1.3.5
>
> SHOW DATABASES
name: databases
name
----
_internal
collectd
>
配置collectd
[[collectd]]
在/etc/influxdb/influxdb.conf
文件中查找并使其与下面的设置匹配。
[[collectd]]
enabled = true
bind-address =“:25826”
database =“collectd”
retention-policy =“”
typesdb =“/ usr / local / share / collectd / type.db”
batch-size = 5000
batch- pending = 10
batch-timeout =“10s”
read-buffer = 0
下载types.db
server-2:~$ sudo mkdir /usr/local/share/collectd
server-2:~$ sudo wget -P /usr/local/share/collectd https://raw.githubusercontent.com/collectd/collectd/master/src/types.db
重启InfluxDB
server-2:〜$ sudo service Influxdb stop
server-2:〜$ sudo service Influxdb start
CollectD
信息 CollectD用于定期收集系统指标,并可以将它们发送到数据存储,例如InfluxDB等。默认情况下,collectd监视CPU,内存,接口,负载和其他一些,但您可以将其配置为使用相关监视任何您想要监视的内容插件。
安装
server-1:〜$ sudo apt-get update
server-1:〜$ sudo apt-get install collectd collectd-utils
server-1:〜$ sudo service collectd status
配置 默认情况下,启用了许多插件,但我们只会观察cpu,磁盘,负载,内存,进程,交换和用户统计信息,然后禁用剩余的插件。
注意:禁用插件时,请确保禁用相关代码块(如果有)。例如df
,rrdtool
需要禁用。
server-1:~$ sudo nano /etc/collectd/collectd.conf# Enable just these
LoadPlugin cpu
LoadPlugin disk
LoadPlugin load
LoadPlugin memory
LoadPlugin processes
LoadPlugin swap
LoadPlugin users
除此之外,启用LoadPlugin network
然后将下面的块添加到页面底部。
<Plugin "network">
Server "192.168.99.30" "25826"
</Plugin>
重启collectd
server-1:~$ sudo service influxdb restart
InfluxDB
我们来看看我们在collectd数据库中的含义。
server-2:~$ influx -username inanzzz -password 123123
Connected to http://localhost:8086 version 1.3.5
InfluxDB shell version: 1.3.5
>
> USE collectd
Using database collectd
>
> SHOW MEASUREMENTS
name: measurements
name
----
cpu_value
memory_value
>
>
> SELECT * FROM cpu_value LIMIT 5
name: cpu_value
time host instance type type_instance value
---- ---- -------- ---- ------------- -----
1504974634305158622 other 0 cpu user 2711
1504974634305164974 other 0 cpu nice 0
1504974634305167452 other 0 cpu system 2448
1504974634305167969 other 0 cpu idle 2227665
1504974634305168533 other 0 cpu wait 372
>
> SELECT * FROM memory_value LIMIT 5
name: memory_value
time host type type_instance value
---- ---- ---- ------------- -----
1504974634305230505 other memory used 190013440
1504974634305231222 other memory buffered 16171008
1504974634305231662 other memory cached 265412608
1504974634305232101 other memory free 42156032
1504974644301487467 other memory used 188911616
添加数据源
- 单击顶部标题中的Grafana图标,然后选择“数据源”选项。
- 单击页面中的“添加数据源”按钮。
- 如下图所示填写字段,然后单击“添加”按钮。
如果单击顶部标题中的Grafana图标并选择“数据源”,则应在下面看到图像。
添加仪表板
- 单击顶部标题中的Grafana图标,选择“仪表板”选项,然后选择“新建”。
- 单击页面中的“图形”图标。
- 单击图形的“面板标题”标题,然后选择“编辑”。
- 配置“指标”如下图所示。
- 单击页面顶部的磁盘图标将其另存为“CPU stats”。这将在下面生成图表。
Collectd参考链接:
- Monitoring plugins
- Configuration options
- Mac上提升python运算速度-PyPy初体验
- python处理json数据(复杂的json转化成嵌套字典并处理)
- Pointer-network理论及tensorflow实战
- python3 log文件处理获取某天需要的数据
- 实战深度强化学习DQN-理论和实践
- Python 工匠:编写条件分支代码的技巧
- python3 下 Zabbix监控调用graph.get并且下载监控图
- 用R语言复盘美国总统大选结果~
- 最新Apache Spark平台的NLP库,助你轻松搞定自然语言处理任务
- 使用Seq2Seq+attention实现简单的Chatbot
- R语言可视化——用ggplot构造期待已久的雷达图
- 【实战】最新Deep Learning with Keras图书加代码,教你从零开发一个复杂深度学习模型(附下载)
- 基于zabbix 自动抓取每天监控数据!/usr/local/python/bin/python3.5
- 大过年的,一起来用Seq2Seq来作对联吧!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 5分钟Flink - 流处理API转换算子集合
- 视频上云/网络穿透/网络映射服务EasyNTS前端组织添加页面出现Vue冲突怎么解决?
- Pinpoint 一款强大的APM工具
- 1. Pandas系列 - 基本数据结构
- 6 年前,只会 JSP 和 Servlet 就可以找到工作
- Python文件处理实用指南
- 2. Pandas系列 - Series基本功能
- 1.3 广告算法专题 - 交叉验证
- 最好用的内网穿透工具合集
- JVM垃圾回收之垃圾回收器,程序员必须掌握的知识
- 5分钟Flink - 时间与语义案例详解
- 5分钟Flink - 时间语义和Watermark
- 3. Pandas系列 - DataFrame操作
- 4. Pandas系列 - 基本功能和统计操作
- 面经手册 · 第8篇《LinkedList插入速度比ArrayList快?你确定吗?》