1、启动步骤:
启动redis后台运行,redis-server &
cd open-falcon//移动到工作目录
./open-falcon start//启动后端
./open-falcon check//检查启动情况
cd dashboard//移动到工作目录
bash control start//以生产环境启动前端,127.0.0.1:8081
bash control tail//查看日志
2、钉钉发送组件:
1.1、复制webhook:
1.2、修改mysql中uic库中的user表,把im字段的大小改为4000(防止钉钉token溢出截断)
alter table user modify column im varchar(4000);
1.3、go环境安装准备:
一、源码安装
1.设置Go的环境变量
GOROOT_BOOTSTRAP 这个目录在安装 Go 1.5 版本及之后的版本时需要设置。由于在 1.4 版本后,Go 编译器实现了自举,即通过 1.4 版本来编译安装之后版本的编译器。如果不设置该环境变量的话,会产生这样一个错误“Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.”。
- # 下载源码包
- cd /usr/local
- wget https://storage.googleapis.com/golang/go1.4-bootstrap-20170531.tar.gz
- tar -xf go1.4-bootstrap-20170531.tar.gz
- # 安装
- cd go/src
- ./make.bash
- mv go go1.4
- vim /etc/profile
- # 添加:
- export GOROOT_BOOTSTRAP=/usr/local/go1.4
- source /etc/profile
2.下载源码包
- cd /usr/local
- wget https://storage.googleapis.com/golang/go1.10.src.tar.gz
- tar -xf go1.10.src.tar.gz
3.安装Go
- cd go/src
- ./all.bash
4.设置环境变量
- vim /etc/profile
- export GOROOT=/usr/local/go1.10
- export GOBIN=$GOROOT/bin
- export PATH=$PATH:$GOBIN
5.设置工作目录
- export GOPATH=/usr/local/mygo
- export PATH=$PATH:${GOPATH//://bin:}/bin
- source /etc/profile
- go version
至此,我们的Golang已经安装好了
6.工作目录介绍
GOPATH允许多个目录,当有多个目录时,默认会将go get的内容放在第一个目录下。
$GOPATH 目录约定有三个子目录:
src 存放源代码(比如:.go .c .h .s等)
pkg 编译后生成的文件(比如:.a)
bin 编译后生成的可执行文件(为了方便,可以把此目录加入到 $PATH 变量中,如果有多个gopath,那么使用${GOPATH//://bin:}/bin添加所有的bin目录)
3、排查思路:
问题:alarm已经产生告警日志,并且dashboard未恢复告警已展示,但是alarm模块不发送
解决:在确保alarm模块的配置无误后,查看judge模块是否成功把event写到redis里,alarm能否从redis中读取event,查看钉钉/微信或邮件的告警通道是否有问题
4、同步:curl -s "hostname:1988/plugin/update"
V0.2更新内容:
全新的前端
- Open-Falcon 所有前端组件进行了统一整合,包括dashboard、screen、portal、alarm-dashboard、uic、fe、links等统一整合到了 dashboard 组件;
- Dashboard 全站增加权限控制;
- Dashboard 增加删除指定 endpoint、counter 以及对应的数据文件的功能;
- Dashboard 首页默认展示 endpoint 列表,并支持 endpoint 列表和 counter 列表翻页功能;
- Dashboard 增加删除一级 screen 的功能;
- 支持将报警的 callback 参数和内容在 Dashboard 页面上展示;
- 无缝支持微信报警通道;
- Dashboard 支持历史报警信息管理功能;
统一的后端
- alarm支持报警历史信息入库存储和展示;
- 「报警合并」模块links的功能合并到统一前端 Dashboard 中,降低用户配置和维护成本;
- 「报警发送」模块sender的功能合并到 alarm 中,降低用户配置和维护成本;
- query的功能合并到了falcon-api组件中,提供统一的restAPI接口;
- 支持非周期性上报数据存储;
- agent支持通过自定义配置,只采集指定磁盘挂载点的磁盘监控数据;
- agent支持配置一个默认 tag,这样通过该 agent 上报的所有数据都会自动追加这个tag;
- judge新增报警判断函数lookup(#num, limit),如果检测到过去num个周期内,有limit次符合条件就报警;
- 新增集群百分比告警功能;
- 后端模块统一到一个repo,在代码层面做了整合,方便社区开发;
过去那些等待已久的bugfix
- 修复grafana不支持metric含有大写字母的bug;
- 修复agent写多个transfer高可用不生效的bug;
- 修复agent发送数据给transfer的超时设置不合理的问题;
全新的 RESTful API:让 open-falcon 没有难自动化的操作
- 发布了全新设计的组件 falcon-api,falcon-plus 所有的功能都可以通过 RESTful API 来完成;
- 统一前端 Dashboard 绝大部分功能都是通过 falcon-plus api 来实现;
func BuildCommonIMContent(event *model.Event) string {
return fmt.Sprintf(
"[告警级别:P%d][采集项状态:%s][服务器信息:%s][采集项问题信息:%s 告警最大次数:%s 采集项:%s 采集值:%s %s%s%s][告警次数:%d 时间:%s]",
event.Priority(),
event.Status,
event.Endpoint,
event.Note(),
event.Func(),
event.Metric(),
utils.SortedTags(event.PushedTags),
utils.ReadableFloat(event.LeftValue),
event.Operator(),
utils.ReadableFloat(event.RightValue()),
event.CurrentStep,
event.FormattedTime(),
)
}
select metric,count(*) from history where created_time >= unix_timestamp(now())-43200 AND created_time <= unix_timestamp(now()) and metric not regexp ('system|attack|listenqueue|table_locks_waited|disk.io|container|jucloud|swap|cpu|net|smarthome|mq|historage') group by metric;