influxdb+grafana监控网络情况


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,并且使用
  1. 创建一个mydb数据库:
> CREATE DATABASE network
  1. 现在数据库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路径,参数qCREATE 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 (实验环境) 请自行搞定

脚本地址:

My Github

为方便 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)。

BneM2n.png

按照主页向导完成初次配置。

1 添加数据源

点击添加数据源,按照下图配置选择influxdb添加一个influxdb数据源。

url需配置成正确的宿主机ip和端口(防火墙需放行8086),若不想暴露数据库端口,可换成influxdb容器的ip地址(需自行进入容器查看,容器重启后可能会发生变化)避免数据库暴露至公网。

InfluxDB Details需填写数据名(默认telegraf)、用户名和密码(默认均为root)。

填写完成后,点击Save&Test按钮,若访问正常,会出现Data source is working提示,否则请检查配置内容以及网络(防火墙)。

Bne1K0.png

Bne3rV.png

2 添加仪表板

返回主页,点击添加仪表板按钮添加新仪表板,点击Graph创建一个Graph Panel。

BneJVU.png

配置好数据源,然后添加面板展示数据

BneTZ8.png

最后的结果如下

Bne7dS.png

PS: 文章中使用的脚本

地址: https://github.com/cyylog/Script/tree/master/Grafana/Ping


 上一篇
Prometheus Prometheus
Prometheus架构介绍介绍 1.一套开源的系统监控报警框架。 Prometheus基于Golang编写,不存在任何的第三方依赖。 由 SoundCloud 开源监控告警解决方案。 单一节点就可以存储百万的监控指标,每秒处理数十万
2020-10-29
下一篇 
K8S 原理 K8S 原理
面试问到了K8S原理,花5分钟来总结下,以后再也不怕了原创DevOps笔记2020-10-25 22:32:59 前言 K8S K8S现在是一项必会的技能,它为软件工程师提供了强大的容器编排能力,模糊了开发和运维之间的边界,让我们开发、管理
2020-10-25
  目录