Golang监控(Telegraf + InfluxDB + Grafana)

监控系统一般分几块:数据采集、数据存储、数据展示、告警。 对应服务如下:采集数据(Telegraf)-> 存储数据(InfluxDB) -> 显示数据(Grafana)

Telegraf: 是一个用 Go 编写的代理程序,可收集系统和服务的统计数据,并写入到 InfluxDB 数据库。Telegraf 具有内存占用小的特点,通过插件系统开发人员可轻松添加支持其他服务的扩展。

InfluxDB: 是一个开源分布式时序、事件和指标数据库。使用 Go 语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。

Grafana: 是用于可视化大型测量数据的开源程序,他提供了强大和优雅的方式去创建、共享、浏览数据。dashboard中显示了你不同metric数据源中的数据。

第一步: 安装InfluxDB

访问portal.influxdata.com/downloads , 点击InfluxDB

这时,会出现弹框

会有各系统下InfluxDB的安装方法

如centos, 输入以下两行命令进行安装

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.5.2.x86_64.rpm
sudo yum localinstall influxdb-1.5.2.x86_64.rpm
复制代码
#启动
sudo systemctl start influxdb

#配置开机启动
sudo systemctl enable influxdb
复制代码

启动influx cli

$ influx
Connected to http://localhost:8086 version 1.5.2
InfluxDB shell version: 1.5.2
复制代码

创建用户

CREATE USER influx WITH PASSWORD '123456' WITH ALL PRIVILEGES

#查看用户
SHOW USERS
复制代码

创建数据库

#创建数据库
CREATE DATABASE golang123

#查看数据库
SHOW DATABASES
复制代码

打开/etc/influxdb/influxdb.conf, 把 [http] 标签下的 auth-enabled 选项值改为 true

[http]  
  bind-address = ":8086"  
  auth-enabled = true 
复制代码

重启influxdb

systemctl restart influxdb
复制代码

第二步: 安装Telegraf

点击Telegraf, 出现弹框, 会有各系统下Telegraf的安装方法, 如centos, 输入以下两行命令进行安装

wget https://dl.influxdata.com/telegraf/releases/telegraf-1.6.0-1.x86_64.rpm
sudo yum localinstall telegraf-1.6.0-1.x86_64.rpm
复制代码

安装完后,暂时不要启动,先编辑/etc/telegraf/telegraf.conf,打开StatsD相关注释:

[[inputs.statsd]]
      protocol = "udp"
      service_address = ":8125"
复制代码

然后,配置InfluxDB的信息:

[[outputs.influxdb]]
    urls = ["http://127.0.0.1:8086"]
    database = "golang123"
    username = "influx"
    password = "123456"
复制代码

启动telegraf服务:

systemctl start telegraf
netstat -naup|grep 8125 #确认端口已监听
复制代码

第三步 安装Grafana

访问grafana.com/grafana/dow… ,查看各系统的安装方法

如果是centos的话,输入以下两行命令

wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.0.4-1.x86_64.rpm 
sudo yum localinstall grafana-5.0.4-1.x86_64.rpm 
复制代码

启动grafana服务

$ systemctl daemon-reload
$ systemctl start grafana-server
$ systemctl status grafana-server
复制代码

设置开机启动

systemctl enable grafana-server.service
复制代码

通过浏览器访问 http://127.0.0.1:3000 来登陆grafana的web界面,输入默认的用户名 admin,密码 admin。 点击按钮 Add data source来添加数据源, 如下图所示

配置项说明
Name数据源名称
Type数据源类型, 这里我们使用的是InfluxDB
URL填写InfluxDB对应的API地址即可,如果Grafana跟InfluxDB不在同一台机器,将localhost换成IP即可
AccessAPI访问方式,一共有Direct和Proxy两个选项。建议选择Proxy
Direct: 浏览器直连数据源API,然后由Grafana解析返回的数据
Proxy: Grafana后端通过API访问数据源,然后返回给浏览器展示
DatabaseInfluxDB数据源对应数据库名称
UserInfluxDB数据源账号
PasswordInfluxDB数据源密码

CentOS7中Grafana配置文件位置是: /etc/grafana/grafana.ini CentOS7中Grafana日志文件位置是: /var/log/grafana/grafana.log

第四步 集成statsd client

先安装go-statsd-client

go get github.com/cactus/go-statsd-client
复制代码

再编写代码,收集统计数据

import (
	"fmt"
	"log"
	"time"

	"github.com/cactus/go-statsd-client/statsd"
)

func main() {
	// 第一个参数是连接地址,
	// 第二个参数是statsd客户端前缀,这里我们不要前缀,直接设为""
	// 第三个参数是发送数据包的最大时间间隔,这里设为300毫秒
	// 第四个参数是数据包最大达到多少时,就发送,这里设为512字节
	client, err := statsd.NewBufferedClient("127.0.0.1:8125", "", 300*time.Millisecond, 512)

	if err != nil {
		log.Fatal(err)
	}

	defer client.Close()

	for {
		time.Sleep(300 * time.Millisecond)
		if err := client.Timing("get_article", 100, 1); err != nil {
			fmt.Println(err)
		} else {
			fmt.Println("Your Send operation was successful")
		}
	}
}
复制代码

第五步 创建仪表盘(Dashboard)

仪表盘(Dashboard),就是管理各种图表的地方。 仪表盘由 (Row)+ 图表面板(Panel)组成。

点击New创建Dashboard

然后点击Graph来添加曲线图

点击Panel Title,再点击Edit

General中填写Title

Metrics中选择数据源为golang123,然后依下图箭头处填写

配置项说明
Data Source选择Grafana已配置的数据源
FROM default默认Schema
FROM measurement对应的InfluxDB的表名
WHEREWHERE条件,根据自己需求选择
SELECT field对应选的字段,可根据需求增减
SELECT mean()选择的字段对应的InfluxDB的函数
GROUP BY time()根据时间分组
GROUP BY fill()当不存在数据时,以null为默认值填充

最后,我们点击右上角查看近半小时内get_article的调用情况

转载于:https://juejin.im/post/5c5062e451882514e75b4c7a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值