使用 collectd 和 InfluxDB 和 Grafana 部署可视化系统监控

后知后觉 暂无评论

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

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

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

部署 InfluxDB

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

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

软件源

安装所需的基础依赖

# apt install curl sudo

然后添加 InfluxDB 官方仓库

安装及启动

# apt update
# apt install influxdb
# systemctl enable influxdb
# systemctl start influxdb

配置 InfluxDB

# 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"

然后重启数据库

# systemctl restart influxd

检查 InfluxDB

查看是否已经监听 25826 端口

root@domain:~# 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

# apt install collectd
小贴士:目前官方仓库还未支持 stretch ,在 RedHat / CentOS 上需要自行编译安装。

配置 collectd

# vim /etc/collectd/collectd.conf

/ 搜索以下几行并去掉注释

LoadPlugin network
...
<Plugin network>
        Server "127.0.0.1" "25826"
</Plugin>

重启 collectd

# 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

# systemctl start grafana-server
小贴士:在 UI 界面中配置数据库即可,推荐使用 Grafana 官方的免费托管服务 GrafanaCloud,无需自行搭建 Grafana 页面,搭建好后端后直接将数据库对接即可使用。

最终效果

最终效果图


附录

参考链接

本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
回复
回答42+14=