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





