golang系统指标收集与展示并支持Graphite/InfluxDB转发的插件库ostent的使用

Golang系统指标收集与展示并支持Graphite/InfluxDB转发的插件库Ostent使用

Ostent是一个用于收集、显示和报告系统指标的服务器工具,支持将指标转发到InfluxDB、Graphite和Librato。

功能特性

系统收集和报告的指标包括:

  • RAM、swap使用情况
  • CPU使用率、平均负载
  • 磁盘空间使用情况(字节和inode)
  • 网络输入输出(字节、数据包、丢包和错误)

进程顶部信息仅用于显示。

安装

Ostent是一个单可执行文件。可以通过以下命令下载并解压:

curl -L https://github.com/ostrost/ostent/releases/download/v0.7.0/`uname`-`uname -m`.tar.xz | tar Jxf -

这会将可执行文件放在./usr/**/bin/ostent目录下。如需系统级安装,可以使用sudo tar Jxf - -C / <<<...

支持平台:

  • Linux
  • FreeBSD
  • Mac OS X

使用

$ ostent -h
Ostent是一个用于收集、显示和报告系统指标的服务器工具。

用法:
  ostent [flags]

标志:
      --bind string         服务器绑定地址 (默认 "")
      --bind-port int       服务器绑定端口 (默认 8050)
      --config string       配置文件名称 (默认 "$HOME/.ostent.toml")
      --interval duration   指标收集间隔 (默认 10s)
      --log-requests        记录服务器请求 (默认 false)
      --upgrade-checks      定期检查更新 (默认 true)
      --version             打印版本并退出

配置

配置文件支持所有[telegraf]设置。Ostent实现额外提供了[agent] bindbind_port选项。其他结构与[telegraf配置]相同。

要启用InfluxDB报告:

[outputs]
  [outputs.influxdb]
    database = "ostent"
    urls = ["http://127.0.0.1:8086"]

其他输出部分可以是[outputs.graphite][outputs.librato]

运行代码

  1. go get github.com/ostrost/ostent
  2. ostent运行

重建

  1. cd $(go list -f {{.Dir}} github.com/ostrost/ostent)
  2. make init(只需执行一次)
  3. npm install(可选,设置资源和模板重建)
  4. 修改后执行gulp watchmake

make会重建以下提交到仓库的文件:

  • share/assets/bindata.*.go
  • share/assets/css/*.css
  • share/assets/js/*/*.js
  • share/templates/*.html
  • share/templates/bindata.*.go
  • share/js/*.jsx

两种构建方式

make(或go get -tags bin)生成的独立和发布二进制文件包含嵌入的模板和资源。

gulp watchgo get生成的非bin构建:

  • 从实际文件提供资源和模板
  • 有一组用于调试等的标志

更多关于golang系统指标收集与展示并支持Graphite/InfluxDB转发的插件库ostent的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang系统指标收集与展示并支持Graphite/InfluxDB转发的插件库ostent的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


ostent - Golang系统指标收集与展示库

ostent是一个用Go语言编写的轻量级系统指标收集和展示工具,支持将指标转发到Graphite和InfluxDB等时间序列数据库。

主要特性

  1. 实时收集系统指标(CPU、内存、磁盘、网络等)
  2. 提供简洁的Web界面展示
  3. 支持指标转发到Graphite和InfluxDB
  4. 轻量级,易于部署

安装与使用

安装

go get github.com/rzab/ostent

基本使用

package main

import (
	"log"
	"github.com/rzab/ostent/ostent"
)

func main() {
	// 创建ostent实例
	o := ostent.NewOstent()

	// 配置基本参数
	o.Addr = ":8080" // Web界面监听端口
	o.Interval = 5   // 收集间隔(秒)

	// 启动服务
	if err := o.Run(); err != nil {
		log.Fatal(err)
	}
}

配置转发到Graphite/InfluxDB

Graphite配置示例

package main

import (
	"log"
	"github.com/rzab/ostent/ostent"
	"github.com/rzab/ostent/graphite"
)

func main() {
	o := ostent.NewOstent()
	o.Addr = ":8080"
	o.Interval = 5

	// 配置Graphite转发
	graphiteConfig := &graphite.Config{
		Host:     "graphite.example.com",
		Port:     2003,
		Prefix:   "ostent",
		Interval: 60, // 转发间隔(秒)
	}
	
	// 添加Graphite转发器
	o.AddFlusher(graphite.NewFlusher(graphiteConfig))

	if err := o.Run(); err != nil {
		log.Fatal(err)
	}
}

InfluxDB配置示例

package main

import (
	"log"
	"github.com/rzab/ostent/ostent"
	"github.com/rzab/ostent/influxdb"
)

func main() {
	o := ostent.NewOstent()
	o.Addr = ":8080"
	o.Interval = 5

	// 配置InfluxDB转发
	influxConfig := &influxdb.Config{
		Host:     "influxdb.example.com",
		Port:     8086,
		Database: "metrics",
		Username: "user",
		Password: "pass",
		Interval: 60, // 转发间隔(秒)
	}
	
	// 添加InfluxDB转发器
	o.AddFlusher(influxdb.NewFlusher(influxConfig))

	if err := o.Run(); err != nil {
		log.Fatal(err)
	}
}

自定义指标收集

ostent允许添加自定义指标收集器:

package main

import (
	"log"
	"time"
	"github.com/rzab/ostent/ostent"
	"github.com/rzab/ostent/params"
)

// 自定义指标收集器
type CustomCollector struct{}

func (c *CustomCollector) Collect() ([]params.Param, error) {
	return []params.Param{
		{
			Name:  "custom.metric",
			Value: float64(time.Now().Unix()),
			Unit:  "timestamp",
		},
	}, nil
}

func main() {
	o := ostent.NewOstent()
	o.Addr = ":8080"
	o.Interval = 5

	// 添加自定义收集器
	o.AddCollector(&CustomCollector{})

	if err := o.Run(); err != nil {
		log.Fatal(err)
	}
}

命令行参数

ostent也支持通过命令行参数配置:

# 基本运行
ostent -addr :8080 -interval 5

# 启用Graphite转发
ostent -graphite-host graphite.example.com -graphite-port 2003 -graphite-prefix ostent

# 启用InfluxDB转发
ostent -influxdb-host influxdb.example.com -influxdb-port 8086 -influxdb-database metrics

注意事项

  1. ostent默认会收集系统基础指标,包括CPU、内存、磁盘、网络等
  2. Web界面访问地址为 http://localhost:8080
  3. 转发到Graphite/InfluxDB的间隔建议大于收集间隔,以减少网络开销
  4. 在生产环境中,建议通过systemd或supervisor管理ostent进程

ostent是一个轻量级的解决方案,适合需要快速搭建系统监控但不想部署复杂监控系统的场景。对于更复杂的需求,可能需要考虑Prometheus等更全面的监控方案。

回到顶部