Linux 搭建 grafana + influxdb + collectd
最近一直想搞个监控系统来检测下大陆到国外的延时什么的, 但是
SmokePing
Grafana
抽烟ping看得懂的,都是文森特凡高的后代啊(蔡博语)…… 来搞IT可惜了…… —— 某大佬
环境
本文接下来都在
Arch Linux
Docker
/data
安装 Docker
对于其他系统, 官方已经准备了一键安装脚本 执行就好了
curl -sSL get.docker.com | bash
对于
Arch Linux
Docker
pacman -S docker
systemctl start docker
systemctl enable docker
Pull 所需的映像
- influxdb:alpine
- grafana/grafana
- busybox:latest
Collectd
对于
Collectd
Docker 映像
Collectd
CPU 内存 网络使用
安装
默认包管理已经有现成的了
pacman -S collectd
其他系统请参考 官方教程
启动
使用
systemd
systemctl enable collectd
systemctl start collectd
InfluxDB
首先我们需要生成配置文件
docker run --rm influxdb:alpine influxd config > influxdb.conf
这时候在本目录
/data
influxdb.conf
运行
Docker
docker run -d -p 8086:8086 -p 8083:8083 -p 25826:25826/udp \
-v /data/influxdb_volume:/var/lib/influxdb \
-v /data/influxdb.conf:/etc/influxdb/influxdb.conf:ro \
-v /usr/share/collectd/types.db:/usr/share/collectd/types.db \
--restart=always --name influxdb \
-e GOGC=10 \
-e INFLUXDB_DATA_INDEX_VERSION=tsi1 \
-e INFLUXDB_ADMIN_ENABLED=true \
influxdb:alpine -config /etc/influxdb/influxdb.conf
这时候就运行了
influxdb
身份验证
通过
exec
docker exec -it {container_id} bash
influx
# 创建账户
> CREATE USER <username> WITH PASSWORD '<password>' WITH ALL PRIVILEGES
# 创建数据库
> CREATE DATABASE collectdb
> quit
# ^P + Q
然后编辑
influxdb.conf
$ nano influxdb.conf
# 找到
# [http]
# enabled = true
# bind-address = ":8086"
# auth-enabled = false <---
将
auth-enabled
true
docker restart {container_id}
这时候
InfluxDB
和 Collectd 对接
InfluxDB 部分
打开
influxdb.conf
[[collectd]]
enabled = false // <-----
bind-address = ":25826"
database = "collectd" // <-----
将这里的
enable
true
collectd
database
collectdb
注意 25826/udp 是可以绕过账户保护的 请对这个端口使用防火墙什么的
修改完成后重启
influxdb
collectd
Collectd 部分
collectd
/etc/collectd.conf
# cat /etc/collectd.conf
BaseDir "/etc/collectd"
PIDFile "/run/collectd.pid"
Hostname "localhost"
Interval 60
<loadplugin df>
Interval 120
</loadplugin>
LoadPlugin disk
LoadPlugin interface
LoadPlugin load
LoadPlugin memory
LoadPlugin network
LoadPlugin processes
LoadPlugin users
LoadPlugin ping
<plugin interface>
Interface "eth0"
IgnoreSelected false
</plugin>
<plugin network>
Server "{ InfluxDB Host }" "25826"
</plugin>
<plugin ping>
Host "{ Host you want to ping }"
Host "{ Another host you want to ping }"
Interval 5.0
Timeout 0.9
TTL 255
</plugin>
你可以参考我的配置文件对
collectd
systemctl restart collectd
Grafana
安装
Grafana
docker run -d -v /var/lib/grafana --name grafana-storage busybox:latest
docker run \
-d \
-p 3000:3000 \
--name=grafana \
--volumes-from grafana-storage \
grafana/grafana
访问
http://localhost:3000
admin
数据源
点击
Getting Started
Add data source
influxdb
Add
创建图表
Create Dashboard
Graph
Panel Title
Edit
成果
最后多添加几个查询 然后改下
Title