openfalcon安装及各组件介绍

环境

内核: n3.10.0-693.11.6.el7.x86_64
系统: CentOS Linux release 7.4.1708 (Core)
falcon: open-falcon-v0.2.x.tar.gz
go: go1.9.2.linux-amd64.tar.gz

安装

安装redis和mysql

  1. yum install -y redis
  2. yum install -y mariadb-server

导入表结构

  1. cd /tmp/ && git clone https://github.com/open-falcon/falcon-plus.git
  2. cd /tmp/falcon-plus/scripts/mysql/db_schema/
  3. mysql -h 127.0.0.1 -u root -p < 1_uic-db-schema.sql
  4. mysql -h 127.0.0.1 -u root -p < 2_portal-db-schema.sql
  5. mysql -h 127.0.0.1 -u root -p < 3_dashboard-db-schema.sql
  6. mysql -h 127.0.0.1 -u root -p < 4_graph-db-schema.sql
  7. mysql -h 127.0.0.1 -u root -p < 5_alarms-db-schema.sql
  8. rm -rf /tmp/falcon-plus/

安装golang环境

  1. tar -C /usr/local -xzf go1.9.2.linux-amd64.tar.gz
  2. echo 'export GOROOT=/usr/local/go' >> /etc/profile
  3. echo 'export GOPATH=/root/workspace' >> /etc/profile
  4. echo 'export PATH=$PATH:/usr/local/go/bin
  5. ' >> /etc/profile

从源码编译

  1. mkdir -p $GOPATH/src/github.com/open-falcon
  2. cd $GOPATH/src/github.com/open-falcon
  3. git clone https://github.com/open-falcon/falcon-plus.git
  4. cd falcon-plus/
  5. make all modules
  6. make pack
  7. ##这时候,你会在当前目录下面,得到open-falcon-v0.2.x.tar.gz的压缩包,就表示已经编译和打包成功了。

创建工作目录

  1. export FALCON_HOME=/home/work
  2. export WORKSPACE=$FALCON_HOME/open-falcon
  3. mkdir -p $WORKSPACE

解压二进制包

  1. tar xf open-falcon-v0.2.1.tar.gz -C $WORKSPACE

根据实际情况修改配置文件中的账号密码

  1. cd $WORKSPACE
  2. grep -Ilr 3306 ./ | xargs -n1 -- sed -i 's/root:password/自己的用户:自己的密码/g')

启动

  1. cd $WORKSPACE
  2. ./open-falcon start
  3. # 检查所有模块的启动状况
  4. ./open-falcon check

安装dashboard

  1. export HOME=/home/work
  2. export WORKSPACE=$HOME/open-falcon
  3. mkdir -p $WORKSPACE
  4. cd $WORKSPACE
  5. # 克隆代码
  6. cd $WORKSPACE
  7. git clone https://github.com/open-falcon/dashboard.git
  8. # 安装依赖包
  9. yum install -y python-virtualenv
  10. yum install -y python-devel
  11. yum install -y openldap-devel
  12. yum install -y mysql-devel
  13. yum groupinstall "Development tools"
  14. cd $WORKSPACE/dashboard/
  15. virtualenv ./env
  16. ./env/bin/pip install -r pip_requirements.txt -i https://pypi.douban.com/simple
  17. # 修改配置
  18. dashboard的配置文件为: 'rrd/config.py',请根据实际情况修改
  19. ## API_ADDR 表示后端api组件的地址
  20. API_ADDR = "http://127.0.0.1:8080/api/v1"
  21. ## 根据实际情况,修改PORTAL_DB_*, 默认用户名为root,默认密码为""
  22. ## 根据实际情况,修改ALARM_DB_*, 默认用户名为root,默认密码为""
  23. # 启动
  24. bash control start
  25. # 停止
  26. bash control stop
  27. # 查看日志
  28. bash control tail

组件介绍

  • falcon-graph
    • graph是存储绘图数据的组件。graph组件 接收transfer组件推送上来的监控数据,同时处理api组件的查询请求、返回绘图数据。
    • 部署完graph组件后,请修改transfer和api的配置,使这两个组件可以寻址到graph。
  • falcon-hbs
    • agent发送心跳信息给HBS的时候,会把hostname、ip、agent version、plugin version等信息告诉HBS,HBS负责更新host表。
    • HBS去获取所有的报警策略缓存在内存里,然后Judge去向HBS请求。
    • 如果你先部署了agent,后部署的hbs,那咱们部署完hbs之后需要回去修改agent的配置,把agent配置中的heartbeat部分enabled设置为true,addr设置为hbs的rpc地址。如果hbs的配置文件维持默认,rpc端口就是6030,http端口是6031,agent中应该配置为hbs的rpc端口,小心别弄错了。
  • falcon-judge
    • Judge用于告警判断,agent将数据push给Transfer,Transfer不但会转发给Graph组件来绘图,还会转发给Judge用于判断是否触发告警。
    • 因为监控系统数据量比较大,一台机器显然是搞不定的,所以必须要有个数据分片方案。Transfer通过一致性哈希来分片,每个Judge就只需要处理一小部分数据就可以了。所以判断告警的功能不能放在直接的数据接收端:Transfer,而应该放到Transfer后面的组件里。
  • falcon-transfer
    • transfer是数据转发服务。它接收agent上报的数据,然后按照哈希规则进行数据分片、并将分片后的数据分别push给graph&judge等组件。
    • 部署完成transfer组件后,请修改agent的配置,使其指向正确的transfer地址。在安装完graph和judge后,请修改transfer的相应配置、使其能够正确寻址到这两个组件。
  • falcon-nodata
    • nodata用于检测监控数据的上报异常。nodata和实时报警judge模块协同工作,过程为: 配置了nodata的采集项超时未上报数据,nodata生成一条默认的模拟数据;用户配置相应的报警策略,收到mock数据就产生报警。采集项上报异常检测,作为judge模块的一个必要补充,能够使judge的实时报警功能更加可靠、完善。
  • falcon-aggregator
    • 集群聚合模块。聚合某集群下的所有机器的某个指标的值,提供一种集群视角的监控体验。
  • falcon-agent
    • agent用于采集机器负载监控指标,比如cpu.idle、load.1min、disk.io.util等等,每隔60秒push给Transfer。agent与Transfer建立了长连接,数据发送速度比较快,agent提供了一个http接口/v1/push用于接收用户手工push的一些数据,然后通过长连接迅速转发给Transfer
  • falcon-gateway
  • falcon-api
    • api组件,提供统一的restAPI操作接口。比如:api组件接收查询请求,根据一致性哈希算法去相应的graph实例查询不同metric的数据,然后汇总拿到的数据,最后统一返回给用户。
    • 部署完成api组件后,请修改dashboard组件的配置、使其能够正确寻址到api组件。
    • 请确保api组件的graph列表 与 transfer的配置 一致。
  • falcon-alarm
    • alarm模块是处理报警event的,judge产生的报警event写入redis,alarm从redis读取处理,并进行不同渠道的发送。
    • alarm是个单点。对于未恢复的告警是放到alarm的内存中的,alarm还需要做报警合并,故而alarm只能部署一个实例。需要对alarm的存活做好监控。
    • 如果某个核心服务挂了,可能会造成大面积报警,为了减少报警短信数量,我们做了报警合并功能。把报警信息写入dashboard模块,然后dashboard返回一个url地址给alarm,alarm将这个url链接发给用户,这样用户只要收到一条短信(里边是个url地址),点击url进去就是多条报警内容。
    • highQueues中配置的几个event队列中的事件是不会做报警合并的,因为那些是高优先级的报警,报警合并只是针对lowQueues中的事件。如果所有的事件都不想做报警合并,就把所有的event队列都配置到highQueues中即可

监控实现

端口监控

  1. net.port.listen/port=22
  2. net.port.listen/port=80
  3. net.port.listen/port=443

进程监控

  1. proc.num/name=ntpd
  2. # 这里的name是cat /proc/ntpd对应的进程id/status中的name字段

怎么知道我的策略是否同步成功了?

A: curl -s "judge-hostname:port/strategy/host.test.01/cpu.idle", 这个是查看 机器host.test.01 & metric为 cpu.idle 对应的策略。

触发器函数:http://book.open-falcon.org/zh_0_2/usage/func.html
基本上all(#3)就够用了,其他先不用记,先知道有就行。

posted @ 2018-01-29 10:47  yangrz  阅读(690)  评论(0编辑  收藏  举报