1、二进制包安装
2、源码安装
前提:推荐使用普通账号安装
1、安装redis:yum install redis -y
2、安装mysql(二进制mariadb包安装)
3、初始化mysql数据库与表结构
export HOME=/home/work
export WORKSPACE=$HOME/open-falcon
mkdir -p $WORKSPACE
cd $WORKSPACE
git clone https://github.com/open-falcon/scripts.git
cd ./scripts/
mysql -h localhost -u root -p < db_schema/graph-db-schema.sql
mysql -h localhost -u root -p < db_schema/dashboard-db-schema.sql
mysql -h localhost -u root -p < db_schema/portal-db-schema.sql
mysql -h localhost -u root -p < db_schema/links-db-schema.sql
mysql -h localhost -u root -p < db_schema/uic-db-schema.sql
4、初始化go语言环境
golang包下载:https://golang.org/dl/
cd ~ && tar xf go1.4.1.linux-amd64.tar.gz
echo "export HOME=/home/work" >> .bashrc
echo "export GOROOT=$HOME/go" >> .bashrc
echo "export GOPATH=$HOME/workspace" >> .bashrc
echo "export WORKSPACE=$HOME/open-falcon" >> .bashrc
echo "export PATH=$GOROOT/bin:$GOPATH/bin:$PATH" >> .bashrc
source .bashrc
mkdir -p $GOPATH/src/github.com/
git clone --recursive https://github.com/open-falcon/of-release.git
注意:如果是rpm包安装的golang(centos6是1.7的版本)GOROOT环境变量设置需要改变:
# echo "export GOROOT=/usr/lib/golang" >> .bashrc
一、安装agent
cd $GOPATH/src/github.com/of-release/agent
go get ./...
报错:
# github.com/of-release/agent
./main.go:34: undefined: g.InitLocalIps
1、yum 安装go环境是1.7报错
2、go二进制包安装环境版本是1.4.1依然爆这个错误
这是在逗我吗?
go get ./...
./control build
./control pack
最后一步会出一个.tar.gz包,拿去安装即可。
agent配置文件:基于cfg.example.json修改
{
"debug": true, # 控制一些debug信息的输出,生产环境通常设置为false
"hostname": "", # agent采集了数据发给transfer,endpoint就设置为了hostname,默认通过`hostname`获取,如果配置中配置了hostname,就用配置中的
"ip": "", # agent与hbs心跳的时候会把自己的ip地址发给hbs,agent会自动探测本机ip,如果不想让agent自动探测,可以手工修改该配置
"plugin": {
"enabled": false, # 默认不开启插件机制
"dir": "./plugin", # 把放置插件脚本的git repo clone到这个目录
"git": "https://github.com/open-falcon/plugin.git", # 放置插件脚本的git repo地址
"logs": "./logs" # 插件执行的log,如果插件执行有问题,可以去这个目录看log
},
"heartbeat": {
"enabled": true, # 此处enabled要设置为true
"addr": "127.0.0.1:6030", # hbs的地址,端口是hbs的rpc端口
"interval": 60, # 心跳周期,单位是秒
"timeout": 1000 # 连接hbs的超时时间,单位是毫秒
},
"transfer": {
"enabled": true, # 此处enabled要设置为true
"addrs": [
"127.0.0.1:8433",
"127.0.0.1:8433"
], # transfer的地址,端口是transfer的rpc端口, 可以支持写多个transfer的地址,agent会保证HA
"interval": 60, # 采集周期,单位是秒,即agent一分钟采集一次数据发给transfer
"timeout": 1000 # 连接transfer的超时时间,单位是毫秒
},
"http": {
"enabled": true, # 是否要监听http端口
"listen": ":1988" # 如果监听的话,监听的地址,收集到数据通过agent的v1/push接口转发
},
"collector": {
"ifacePrefix": ["eth", "em"] # 默认配置只会采集网卡名称前缀是eth、em的网卡流量,配置为空就会采集所有的,lo的也会采集。可以从/proc/net/dev看到各个网卡的流量信息
},
"ignore": { # 默认采集了200多个metric,可以通过ignore设置为不采集
"cpu.busy": true,
"mem.swapfree": true
}
}
接口使用范式:
ts=`date +%s`; curl -X POST -d "[{\"metric\": \"metric.demo\", \"endpoint\": \"qd-open-falcon-judge01.hd\", \"timestamp\": $ts,\"step\": 60,\"value\": 9,\"counterType\": \"GAUGE\",\"tags\": \"project=falcon,module=judge\"}]" http://127.0.0.1:1988/v1/push
必要的数据结构:
metric: 最核心的字段,代表这个采集项具体度量的是什么, 比如是cpu_idle呢,还是memory_free, 还是qps
endpoint: 标明Metric的主体(属主),比如metric是cpu_idle,那么Endpoint就表示这是哪台机器的cpu_idle
timestamp: 表示汇报该数据时的unix时间戳,注意是整数,代表的是秒
value: 代表该metric在当前时间点的值,float64
step: 表示该数据采集项的汇报周期,这对于后续的配置监控策略很重要,必须明确指定。
counterType: 只能是COUNTER或者GAUGE二选一,前者表示该数据采集项为计时器类型,后者表示其为原值 (注意大小写)
GAUGE:即用户上传什么样的值,就原封不动的存储
COUNTER:指标在存储和展现的时候,会被计算为speed,即(当前值 - 上次值)/ 时间间隔
tags: 一组逗号分割的键值对, 对metric进一步描述和细化, 可以是空字符串. 比如idc=lg,比如service=xbox等,多个tag之间用逗号分割