Wave Spread...

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

分类:Linux 评论: 0

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

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

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

部署 influxdb

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

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

先更新软件源

$ sudo apt update

添加官方 influxdb 仓库

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

安装及启动

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

小贴士:若未成功监听请检查数据库配置是否正确。

创建数据库

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

检查配置

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

最终效果

参考链接

回复