influxdb+grafana监控网络情况
一、 部署InfluxDB
docker run -d -p 8086:8086 --name=influxdb influxdb
以上命令dcoker会自动从仓库下载最新版本的influxdb镜像,后台运行一个名为influxdb的容器并映射主机8086端口到容器8086端口。
若想将数据存储到宿主机而非容器内,可使用以下命令启动挂载本地目录到容器内。
# $pwd为当前工作目录,可替换为其它宿主机目录
[root@localhost influxdb]# pwd
/opt/influxdb
[root@localhost influxdb]# docker run -d -p 8086:8086 -v $PWD:/var/lib/influxdb --name=influxdb influxdb
启动InfluxDB容器后,通过http接口访问进行测试。
curl -G http://localhost:8086/query --data-urlencode "q=show databases"
若influxdb运行正常,则会返回如下结果:
# 链接查询参数为show databases 数据库会返回所有的数据库名,新安装的influxdb默认只有一个"_internal"
# 数据库。
{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["telegraf"],["_internal"],["network"]]}]}]}
二、 启动influxdb,使用
PS:InfluxDB中文文档
官网地址
其他命令请自行查看文档
1. 进入容器
[root@localhost influxdb]# docker exec -it influxdb /bin/bash
PS: 因为实验,所以 我使用的是默认 influxdb
的配置文件,可以自行查看官网修改
2. 启动influxdb,并且使用
- 创建一个
mydb
数据库:
> CREATE DATABASE network
- 现在数据库
mydb
已经创建好了,我们可以用SHOW DATABASES
语句来看看已存在的数据库:
> SHOW DATABASES
name: databases
---------------
name
_internal
mydb
说明:
_internal
数据库是用来存储InfluxDB内部的实时监控数据的。
不像SHOW DATABASES
,大部分InfluxQL需要作用在一个特定的数据库上。你当然可以在每一个查询语句上带上你想查的数据库的名字,但是CLI提供了一个更为方便的方式USE <db-name>
,这会为你后面的所以的请求设置到这个数据库上。例如:
> USE mydb
Using database mydb
>
3. 使用HTTP接口创建数据库
使用POST
方式发送到URL的/query
路径,参数q
为CREATE DATABASE <new_database_name>
,下面的例子发送一个请求到本地运行的InfluxDB创建数据库mydb
:
curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE mydb"
4. 使用HTTP接口查询数据
HTTP接口是InfluxDB查询数据的主要方式。通过发送一个GET
请求到/query
路径,并设置URL的db
参数为目标数据库,设置URL参数q
为查询语句。下面的例子是查询在写数据里写入的数据点。
curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=mydb" --data-urlencode "q=SELECT \"value\" FROM \"cpu_load_short\" WHERE \"region\"='us-west'"
InfluxDB返回一个json值,你查询的结果在
result
列表中,如果有错误发送,InfluxDB会在error
这个key里解释错误发生的原因。
5. 用户管理
>shouw users (查看用户)
>create user "username" with password 'password' (创建普通用户)
>create user "username" with password 'password' with all privileges (创建管理员用户)
>drop user "username" (删除用户)
>auth (用户认证,设置密码后的登录认证)
6. shell脚本插入数据
PS: 首先创建一个 数据库+用户+密码都为
network
(实验环境) 请自行搞定
脚本地址:
为方便 grafana
的可观性,请自行修改dic
放到计划任务中,可以看到表中已经有数据写入
> use network
Using database network
> show MEASUREMENTS
name: measurements
name
----
SG_BRlaten
SG_BRloss
SG_VNlaten
SG_VNloss
>
三、 部署Grafana
Grafana同样采用官方docker镜像进行快速部署。
docker run -d -p 3000:3000 --name=grafana grafana/grafana
以上命令docker会拉取最新版grafana镜像,运行名为grafana的容器,并映射宿主机3000端口。
初次启动,grafana会创建数据库,时间稍长,稍后即可访问http://localhost:3000
打开grafana登录页面。
输入默认用户名密码登录(admin)。
按照主页向导完成初次配置。
1 添加数据源
点击添加数据源,按照下图配置选择influxdb添加一个influxdb数据源。
url需配置成正确的宿主机ip和端口(防火墙需放行8086),若不想暴露数据库端口,可换成influxdb容器的ip地址(需自行进入容器查看,容器重启后可能会发生变化)避免数据库暴露至公网。
InfluxDB Details需填写数据名(默认telegraf)、用户名和密码(默认均为root)。
填写完成后,点击Save&Test
按钮,若访问正常,会出现Data source is working
提示,否则请检查配置内容以及网络(防火墙)。
2 添加仪表板
返回主页,点击添加仪表板按钮添加新仪表板,点击Graph
创建一个Graph Panel。
配置好数据源,然后添加面板展示数据
最后的结果如下
PS: 文章中使用的脚本
地址: https://github.com/cyylog/Script/tree/master/Grafana/Ping