使用 collectd 和 InfluxDB 和 Grafana 部署可视化系统监控
后知后觉 暂无评论

使用 Collectd、Grafana 和 InfluxDB 搭建一个类似于 New Relic 美观的监控系统。

本文在 Debian 9 Stretch 环境下进行操作,其他 Linux 发行版同理,自行替换相应命令即可。

以 # 开头的命令表示必须在 root 用户(或者具有 root 权限)下进行执行。
以 $ 开头的命令表示可以在任何用户下进行执行。

部署 InfluxDB

InfluxDB 是一款流行的时序数据库,对时间戳敏感的应用有很强的亲和力,比如:监控、金融、后台等。

InfluxDB 使用 GoLang 编写,无依赖,绿色小巧。

软件源

安装所需的基础依赖

sudo apt install curl sudo

然后添加 InfluxDB 官方仓库

安装及启动

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 页面,搭建好后端后直接将数据库对接即可使用。

最终效果

最终效果图


附录

参考链接

本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。