使用 Collectd、Grafana 和 InfluxDB 搭建一个类似于 New Relic 美观的监控系统。
本文在 Debian 9 Stretch
环境下进行操作,其他 Linux 发行版同理,自行替换相应命令即可。
以 # 开头的命令表示必须在 root 用户(或者具有 root 权限)下进行执行。
以 $ 开头的命令表示可以在任何用户下进行执行。
部署 InfluxDB
InfluxDB 是一款流行的时序数据库,对时间戳敏感的应用有很强的亲和力,比如:监控、金融、后台等。
InfluxDB 使用 GoLang 编写,无依赖,绿色小巧。
软件源
安装所需的基础依赖
sudo apt install curl sudo
然后添加 InfluxDB 官方仓库
Ubuntu 添加仓库
curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add - source /etc/lsb-release echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
Debian 添加仓库
curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add - source /etc/os-release test $VERSION_ID = "7" && echo "deb https://repos.influxdata.com/debian wheezy stable" | sudo tee /etc/apt/sources.list.d/influxdb.list test $VERSION_ID = "8" && echo "deb https://repos.influxdata.com/debian jessie stable" | sudo tee /etc/apt/sources.list.d/influxdb.list test $VERSION_ID = "9" && echo "deb https://repos.influxdata.com/debian stretch stable" | sudo tee /etc/apt/sources.list.d/influxdb.list test $VERSION_ID = "10" && echo "deb https://repos.influxdata.com/debian buster stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
安装及启动
sudo apt update
sudo apt install influxdb
sudo systemctl enable influxdb
sudo systemctl start influxdb
配置 InfluxDB
sudo vim /etc/influxdb/influxdb.conf
搜索关键字 collectd
,将以下几项前面的注释去掉并改成如下参数。
[[collectd]]
enabled = true
bind-address = "127.0.0.1:25826"
database = "collectd"
batch-size = 5000
batch-pending = 10
batch-timeout = "10s"
然后重启数据库
sudo systemctl restart influxd
检查 InfluxDB
查看是否已经监听 25826
端口
sudo ss -lntup | grep 25826
udp UNCONN 0 0 127.0.0.1:25826 *:* users:(("influxd",pid=11474,fd=26))
小贴士:若未成功监听请检查数据库配置是否正确。
创建数据库
influx
数据库也兼容标准的 SQL 语句
Connected to http://localhost:8086 version 1.6.4
InfluxDB shell version: 1.6.4
> SHOW DATABASES;
name: databases
name
----
_internal
> CREATE DATABASE collectd;
> SHOW DATABASES;
name: databases
name
----
_internal
collectd
注意:很多教程都提到使用 8083 端口以 WEB 方式访问数据库进行操作。在 InfluxDB 1.3 之后的版本已经分离此功能,单独成为单独一款数据可视化产品 Chronograf
。
部署 collectd
collectd 是一款用 C 语言编写的小巧的系统探针,可以获取各种系统数据,本文采用它作为收集工具。
安装 collectd
sudo apt install collectd
小贴士:目前官方仓库还未支持 stretch ,在 RedHat / CentOS 上需要自行编译安装。
配置 collectd
sudo vim /etc/collectd/collectd.conf
/ 搜索以下几行并去掉注释
LoadPlugin network
...
<Plugin network>
Server "127.0.0.1" "25826"
</Plugin>
重启 collectd
sudo systemctl restart collectd
检查配置
influx
Connected to http://localhost:8086 version 1.6.4
InfluxDB shell version: 1.6.4
> show databases
name: databases
name
----
_internal
collectd
> use collectd
Using database collectd
> show measurements
name: measurements
name
----
cpu_value
df_value
disk_io_time
disk_read
disk_value
disk_weighted_io_time
disk_write
entropy_value
interface_rx
interface_tx
irq_value
load_longterm
load_midterm
load_shortterm
memory_value
processes_value
swap_value
users_value
> select * from cpu_value
小贴士:若显示出数据即为正常,若未收集到数据请稍等片刻后重新检查,依然没有请检查之前的配置是否正确。
部署 Grafana
Grafana 是一款美观的数据呈现工具,会自动生成数据图表,美观且专业。
配置仓库
curl https://packagecloud.io/gpg.key | sudo apt-key add -
source /etc/lsb-release
echo "deb https://packagecloud.io/grafana/stable/debian/ ${DISTRIB_CODENAME} main" | sudo tee /etc/apt/sources.list.d/grafana.list
安装 Grafana
sudo apt update
sudo apt install grafana
小贴士:部分老旧或者过于精简的系统可能会安装报错,安装 apt-transport-https
即可。
也可以使用预编译包形式安装,点击跳转 选择正确的平台使用对应的链接。
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_5.X.X_amd64.deb
sudo dpkg -i grafana_5.X.X_amd64.deb
启动 Grafana
sudo systemctl start grafana-server
小贴士:在 UI 界面中配置数据库即可,推荐使用 Grafana 官方的免费托管服务 GrafanaCloud,无需自行搭建 Grafana 页面,搭建好后端后直接将数据库对接即可使用。
最终效果
附录
参考链接
- 「官方文档」 - InfluxDB
- 「官方博客」 - InfluxDB
- 「Install on Linux」 - Grafana Labs
- 「Collectd 和 InfluxDB 的部署和使用」 - 后端云
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2017-09-30 21:25 PM