Open-Falcon监控系统部署

本文并不分析Open-Falcon的架构或者选用它的原因,官方的文档在这里,虽然还不够完善。不过这也是我写这篇的原因,官方文档并没能把整个部署过程连在一起,而且个别地方有点问题。我在这篇文章中就不介绍各个组件的作用和功能了,只是单纯的介绍如何从零部署。

安装

下载

  wget https://github.com/XiaoMi/open-falcon/releases/download/0.0.5/open-falcon-0.0.5.tar.gz -O open-falcon.tar.gz

解压

  mkdir tmp
  tar -zxvf open-falcon.tar.gz -C ./tmp

基础环境

  sudo apt-get install redis-server
  sudo apt-get install mysql-server
  pip install virtualenv  
  #数据库初始化的代码来源于官方文档
  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

配置

数据库连接的配置格式是: username:password@tcp(path:port)/xxxx

agent

mv cfg.example.json cfg.json && ./control start && ./control tail 开始监听1988端口,查看log. 默认端口是1988, 可以打开 http://127.0.0.1:1988 查看一个比较简单的web dashboard. 没什么特殊需要的话, 可以使用默认配置.

hbs

mv cfg.example.json cfg.json && ./control start && ./control tail 心跳服务默认http端口是6030, rpc 端口 6031

transfer

mv cfg.example.json cfg.json && ./control start && ./control tail 默认http端口是6060, rpc端口8433

judge

mv cfg.example.json cfg.json && ./control start && ./control tail http端口6081, rpc端口 6080 配置项中注意alarm的 redis链接 和hbs的server地址,如果修改过请记得对应.

graph

mv cfg.example.json cfg.json && ./control start && ./control tail rpc端口 6070, http端口 6071 数据库文件存储在/home/work/data/6070 启动报错的话, 换sudo 或者 root 用户启动. 注意修改数据库连接.

上面的服务配置完成数据就开始采集了.

dashboard

  virtualenv env  source env/bin/activate
  ./env/bin/pip install -r pip_requirements.txt  # 使用
  ./env/bin/python wsgi.py  # 或者用
  deactivate && ./control start && ./control tail

可以更改为自定义端口.这里可以查看Endpoints 的相关数据并绘图.

query

mv cfg.example.json cfg.json && ./control start && ./control tail 只要修改cfg.json 文件即可, 注意还有 graph_backends.txt 文件

fe

mv cfg.example.json cfg.json && ./control start && ./control tail 注意配置项目中的数据库连接, 以及下面的shortcut 中需要配置外网可以访问的地址,如果不是在服务器部署的话,这里默认也没有关系.

portal

这里要注意一个坑. 如果使用./control start 启动服务, 并且更改了默认端口的, 请配置 gunicorn.conf 中的bind项. 如果是使用python wsgi.py启动的话, 修改wsgi.py中的端口即可. 同时在配置 frame/config.py 的时候, 要注意所谓UIC_ADDRESS 选项的配置, 其实就是填写上面fe 模块的地址.

UIC_ADDRESS = {    'internal': 'http://127.0.0.1:port', #你的内网地址
    'external': 'http://your_fe_name', #外网访问的地址, 如果是本地部署,这里可以和内网地址一样 }

这里确实想对web界面的操作吐槽一下,相当不人性化.而且配置告警的时候,真的没有把整个流程联系在一起啊喂!这里的配置可以创建一个template 然后再创建监控主机,进行绑定. 在模板中配置的callback() 非常好用.可以在这里直接写告警消息的推送接口,使用第三方服务也ok.

alarm

mv cfg.example.json cfg.json && ./control start && ./control tail 需要配置的就是自定义的端口监控地址, 和下面的api, 其他部分保持默认即可. 在它的文档中写着下面这样的说明

{...
  "api": {      "portal": "http://falcon.example.com", # 内网可访问的portal的地址
      "uic": "http://uic.example.com", # 内网可访问的uic(或fe)的地址
      "links": "http://link.example.com" # 外网可访问的links的地址
  }     
}

但是如果按照这样配的话,所有东西就只能在内网访问了.这明显是不符合我们的期望的. 所以这里要全部配置成外网可以访问的地址,防止踩坑.

sender

这个组件用于调用自己提供的短信和邮件接口, 编辑 cfg.json 添加

{...  'api': {      'sms': 'http://your_send_sms_api',
      'mail': 'http://your_send_mail_api'
  }
}

在调用的时候, 会把消息先写入redis队列中, 之后再调用接口,进行消息发送. worker 参数是对队列的配置.

links

mv cfg.example.json cfg.json && ./control start && ./control tail 告警合并组件, python应用, 记得修改默认端口即可.

其他

task

监控自检程序

gateway

没有跨机房问题可以忽略.(hhah

redis-monitor.py

scripts 文件夹中一个很简单的脚本, 把redis info 中的数据读出,写入数据库, 供监控使用.

最后附图一张,前几天我启动这个服务时候的终端。

原文发布于微信公众号 - MoeLove(TheMoeLove)

原文发表时间:2015-10-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏林欣哲

图解Git合并--Merge和Rebase

项目初始情况 ? Merge fast-forward ? 快速合并,直接把指针指向前去,无冲突要解决。 非 fast-forward ? 保留历史记录,解决冲...

3197
来自专栏云计算教程系列

如何在Debian 9上安装Linux,Nginx,MySQL,PHP(LEMP堆栈)

LEMP软件堆栈是一组可用于为动态网页和Web应用程序提供服务的软件。这是一个描述Linux操作系统的首字母缩写词,带有Nginx Web服务器。后端数据存储在...

2860
来自专栏SpringBoot 核心技术

ubuntu下MySQL数据库自动备份并发送到指定邮箱

1102
来自专栏决胜机器学习

RabbitMQ(一)简介

RabbitMQ(一)——简介 (原创内容,转载请注明来源,谢谢) 一、概述 RabbitMQ是一种消息的传输者(broker),除了消息持久化,不对消息内容本...

3324
来自专栏测试驿栈

JProfiler简明使用教程

 JProfile是一款性能瓶颈分析工具,监控粒度可以细化到某一个类包,堪称神器!我安装了一下9.11的版本,并简单说说使用方法。

1.4K3
来自专栏云计算教程系列

如何在Ubuntu 16.04上使用Concourse CI设置持续集成管道

Concourse CI是一个现代的,可扩展的集成系统,旨在通过可组合的声明性语法自动测试管道。

1702
来自专栏三木的博客

Linux权限管理

Linux权限管理是其一大特色,优秀的权限管理机制为Linux安全性提供了可靠的保障。 ###一、用户权限管理: root用户是系统的超级用户,是Linux系统...

2316
来自专栏Python爬虫与数据挖掘

安装完Python之后,如何设置Python环境变量

人生苦短,我用Python。最近有许多加群的萌新在咨询Python安装的事宜,Python安装问题不大,可以戳这篇文章:。本以为安装Python之后就可...

1452
来自专栏云计算教程系列

三种方法在CVM安装Node.js

Node.js是一个用于通用编程的JavaScript平台,允许用户快速构建网络应用程序。通过在前端和后端利用JavaScript,Node.js使开发更加一致...

2045
来自专栏云计算教程系列

Debian入门教程:删除和授予用户Sudo权限

启动新服务器时,会创建一个默认帐户命名为root。此用户具有完整系统的访问权限,应仅用于管理任务。作为根用户,这个账户对你的系统都没有限制,虽然root用户管理...

2063

扫码关注云+社区

领取腾讯云代金券