Open-Falcon介绍

章涵蓄
2023-12-01

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:

https://oapi.dingtalk.com/robot/send?access_token=b10deee3d9e2dbc21ce57eb9f80da23a643ebe83154dd6b086486da2c833acb6

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.”。

  1. # 下载源码包
  2. cd /usr/local
  3. wget https://storage.googleapis.com/golang/go1.4-bootstrap-20170531.tar.gz
  4. tar -xf go1.4-bootstrap-20170531.tar.gz
  5.  
  6. # 安装
  7. cd go/src
  8. ./make.bash
  9.  
  10. mv go go1.4
  11. vim /etc/profile
  12.  
  13. # 添加:
  14. export GOROOT_BOOTSTRAP=/usr/local/go1.4
  15.  
  16. source /etc/profile

2.下载源码包

  1. cd /usr/local
  2. wget https://storage.googleapis.com/golang/go1.10.src.tar.gz
  3. tar -xf go1.10.src.tar.gz

3.安装Go

  1. cd go/src
  2. ./all.bash

4.设置环境变量

  1. vim /etc/profile
  2. export GOROOT=/usr/local/go1.10
  3. export GOBIN=$GOROOT/bin
  4. export PATH=$PATH:$GOBIN

5.设置工作目录

  1. export GOPATH=/usr/local/mygo
  2. export PATH=$PATH:${GOPATH//://bin:}/bin
  3. source /etc/profile
  4. 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;

 类似资料: