1.open-falcon介绍

监控系统是整个运维环节,乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供翔实的数据用于追查定位问题。监控系统作为一个成熟的运维产品,业界有很多开源的实现可供选择。当公司刚刚起步,业务规模较小,运维团队也刚刚建立的初期,选择一款开源的监控系统,是一个省时省力,效率最高的方案。之后,随着业务规模的持续快速增长,监控的对象也越来越多,越来越复杂,监控系统的使用对象也从最初少数的几个SRE,扩大为更多的DEVS,SRE。这时候,监控系统的容量和用户的“使用效率”成了最为突出的问题

1.1特点

容量水平扩展:生产环境每秒50万次数据收集、告警、存储、绘图,可持续水平扩展。

告警策略自发现:Web界面、支持策略模板、模板继承和覆盖、多种告警方式、支持回调动作。

告警设置人性化:支持最大告警次数、告警级别设置、告警恢复通知、告警暂停、不同时段不同阈值、支持维护周期,支持告警合并。

历史数据高效查询:秒级返回上百个指标一年的历史数据。

Dashboard人性化:多维度的数据展示,用户自定义Dashboard等功能

1.2架构

每台服务器,都有安装falcon-agent,falcon-agent是一个golang开发的daemon程序,用于自发现的采集单机的各种数据和指标,这些指标包括不限于以下几个方面,共计200多项指标。

  • CPU相关
  • 磁盘相关
  • IO
  • Load
  • 内存相关
  • 网络相关
  • 端口存活、进程存活
  • ntp offset(插件)
  • 某个进程资源消耗(插件)
  • netstat、ss 等相关统计项采集
  • 机器内核配置参数

只要安装了falcon-agent的机器,就会自动开始采集各项指标,主动上报,不需要用户在server做任何配置(这和zabbix有很大的不同),这样做的好处,就是用户维护方便,覆盖率高。当然这样做也会server端造成较大的压力,不过open-falcon的服务端组件单机性能足够高,同时都可以水平扩展,所以自动多采集足够多的数据,反而是一件好事情,对于SRE和DEV来讲,事后追查问题,不再是难题。

另外,falcon-agent提供了一个proxy-gateway,用户可以方便的通过http接口,push数据到本机的gateway,gateway会帮忙高效率的转发到server端

2.准备环境

2.1配置yum源

mv /etc/yum.repos.d /etc/yum.repos.d.backup
mkdir /etc/yum.repos.d
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
yum update -y 

2.2安装git

(要求Git >= 1.7.5)

[root@10~]# git version

gitversion 1.8.3.1

2.3安装go语言环境(go>=1.6)

[root@10 ~]# yum install -y epel-release
[root@10 ~]# yum install golang -y
[root@10 ~]# go version
go version go1.9.4 linux/amd64

2.4安装redis

由于部署go时已经安装了epel,故直接执行下面的安装命令

[root@10 ~]# yum install redis -y
[root@10 ~]# systemctl start redis
[root@10 ~]# systemctl enable redis
[root@10 ~]# systemctl status redis

2.5安装MySQL

2.5.1配置epel源

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 

2.5.2安装rpm包

安装这个包后,会获得两个mysql的yum repo源

/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo
[root@10 ~]# rpm -ivh mysql-community-release-el7-5.noarch.rpm

2.5.3安装MySQL 并且查看

[root@10 ~]# yum install mysql-server -y
[root@10 ~]# systemctl start mysql
[root@10 ~]# systemctl status mysql

3.后端安装

3.1环境准备

[root@10 ~]# mkdir -p /home/src/github.com/open-falcon/
[root@10 ~]# cd /home/src/github.com/open-falcon/
[root@10 /home/src/github.com/open-falcon]# git clone https://github.com/open-falcon/falcon-plus.git

3.2初始化数据库

[root@10 /home/src/github.com/open-falcon]# cd falcon-plus/scripts/mysql/db_schema/
mysql -h 127.0.0.1 -u root -p < 1_uic-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 2_portal-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 3_dashboard-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 4_graph-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 5_alarms-db-schema.sql

3.3编译源码打包

[root@10 /home/src/github.com/open-falcon]# cd falcon-plus
[root@10 /home/src/github.com/open-falcon/falcon-plus]# go get github.com/open-falcon/rrdlite
[root@10 /home/src/github.com/open-falcon/falcon-plus]# make all
[root@10 /home/src/github.com/open-falcon/falcon-plus]# make pack
在/home/src/github.com/open-falcon/falcon-plus/目录下就多了刚才的压缩包“open-falcon-v0.2.0.tar.gz”

https://book.open-falcon.org/zh_0_2/quick_install/prepare.html中官方有提供编译包,如果编译过程不顺利可以直接下载编译包

4.部署后端

4.1环境准备

mkdir -p /home/work
cd /home/src/github.com/open-falcon/falcon-plus
tar -xzvf open-falcon-v0.2.0.tar.gz -C /home/work

4.2修改配置

因为如果不修改配置文件,aggregator模块会出现无法启动,graph、hbs、nodata、api、alarm模块会出现开启不报错但是状态为开启失败的情况

4.3模块及配置文件所在位置

模块                                配置文件所在路径

aggregator                           /home/work/aggregator/config/cfg.json

graph                               /home/work/graph/config/cfg.json

hbs                                 /home/work/hbs/config/cfg.json

nodata                              /home/work/nodata/config/cfg.json

api                                 /home/work/api/config/cfg.json

alarm                              /home/work/alarm/config/cfg.json

4.4修改aggregator的配置文件

[root@10/home/src/github.com/open-falcon]# vim /home/work/aggreg

mysql的root密码为空,则去掉“password”,若不为空,则用root密码替换“password”

其他几个配置文件与之相同

4.5启动后端模块检查

[root@10 /home/src/github.com/open-falcon]# cd /home/work/
[root@10 /home/src/github.com/open-falcon]# ./open-falcon start
[root@10 /home/work]# ./open-falcon check  falcon-graph         UP            3277   falcon-hbs         UP            3280   falcon-judge         UP            3285   falcon-transfer         UP            3291   falcon-nodata         UP            3305   falcon-aggregator         UP            3308   falcon-agent         UP            3315   falcon-gateway         UP            3323   falcon-api         UP            3334   falcon-alarm         UP            3338  

5 前端部署

5.1环境准备

mkdir-p /home/front/open-falcon

5.2 获取前端的代码 安装依赖

cd /home/front/open-falcon
git clone https://github.com/open-falcon/dashboard.git
yum install -y python-virtualenv
yum install -y python-devel
yum install -y openldap-devel
yum install -y mysql-devel
yum groupinstall "Development tools" -y

5.3安装Dashboard

dashboard是面向用户的查询界面,在这里,用户可以看到push到graph中的所有数据,并查看其趋势图

[root@10 /home/front/open-falcon]# cd /home/front/open-falcon/dashboard/
[root@10 /home/front/open-falcon/dashboard]# virtualenv ./env
[root@10 /home/front/open-falcon/dashboard]# ./env/bin/pip install -r pip_requirements.txt 

5.4注意

1.   yum install -ypython-virtualenv 时可能报错

2.   error: command 'gcc' failed with exit status1

3.错误:python-develconflictswithpython-2.7.5-16.el7.x86_64

解决方案:

解决依赖关系

由于是提醒低版本导致错误,需要高版本,那我删除掉低版本

[root@10 /dev]# rpm -qa|greppython-2.7.5-34.el7.x86_64|xargs rpm -e --nodeps

[root@10/dev]# rpm -qa|grep python-2.7

python-2.7.5-68.el7.x86_64

5.5启动open-falcon

[root@10 /home/src/github.com]# cd /home/front/open-falcon/dashboard/
[root@10 /home/front/open-falcon/dashboard]# bash control start
[root@10 /home/front/open-falcon/dashboard]# bash control status
falcon-dashboard now is running, pid=11657

5.6以开发者的模式启动

./env/bin/python wsgi.py

5.7 开启8081端口

5.7.1 防火墙永久开启8081端口

firewall-cmd --add-port=8081/tcp --permanent

5.7.2重新载入防火墙配置

firewall-cmd --reload

6.web界面

6安装open-falcon之agent

功能

采集数据,解析数据,上报数据至transfer

基本涵盖了系统层面监控指标,直接将数据转换为metricValue形式,上报至transfer

支持插件采集,代码插件可受git管理,放置在plugin目录,从HBS中获取执行周期,版本等

支持数据直接上报,提供HTTPAPI,将收到的数据转换为mtricValue形式,上报到transfer

支持HTTP API对自身控制

配置文件:

设置采集数据的脚本更新地址

指定agent的上游模块的地址,包括heartbeat和transfer模块

agent开放的HTTP的端口

采集数据的过滤条件

6.1搭建

通过scp命令把open-falcon server服务器/home/work/目录下的agent和open-falcon发送到需要监控的服务器上

6.2配置详解

[root@db02 /home/work/agent/config]# vim cfg.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,   "addrs": [  "127.0.0.1:18433"  ],  # transfer的地址,端口是transfer的rpc端口, 可以支持写多个transfer的地址,agent会保证HA  "interval": 60, # 采集周期,单位是秒,即agent一分钟采集一次数据发给transfer  "timeout": 1000 # 连接transfer的超时时间,单位是毫秒  },  "http": {  "enabled": true,  # 是否要监听http端口  "listen": ":1988",  "backdoor": false  },  "collector": {  "ifacePrefix": ["eth", "em"], # 默认配置只会采集网卡名称前缀是eth、em的网卡流量,配置为空就会采集所有的,lo的也会采集。可以从/proc/net/dev看到各个网卡的流量信息  "mountPoint": []  },  "default_tags": {  },  "ignore": {  # 默认采集了200多个metric,可以通过ignore设置为不采集  "cpu.busy": true,  "df.bytes.free": true,  "df.bytes.total": true,  "df.bytes.used": true,  "df.bytes.used.percent": true,  "df.inodes.total": true,  "df.inodes.free": true,  "df.inodes.used": true,  "df.inodes.used.percent": true,  "mem.memtotal": true,  "mem.memused": true,  "mem.memused.percent": true,  "mem.memfree": true,  "mem.swaptotal": true,  "mem.swapused": true,  "mem.swapfree": true  }
}  

6.3 启动并查看

[root@db02 /home/work]# ./open-falcon start agent   #启动
[falcon-agent] 2225
[root@db02 /home/work/agent/bin]# ./falcon-agent --check  netstat  ... ok
ss -s    ... ok
ps aux   ... ok
df.bytes ... ok
net.if   ... ok
disk.io  ... ok
memory   ... ok
ss -tln  ... ok
du -bs   ... ok
kernel   ... ok
loadavg  ... ok
cpustat  ... ok  

o语言环境(要求Go >= 1.6)

open-falcon 小米开源监控相关推荐

  1. Open-Falcon 小米开源监控系统Dashboard使用操作与告警通知

    前言 上一章节我们已经完成了Open-Falcon的单机部署,这一章节主要介绍Open-Falcon的用户注册.功能使用和监控客户端配置. Open-Falcon 部署参考:CentOS-7 单机部署 ...

  2. 小米开源监控系统OpenFalcon应对高并发7种手段

    2019独角兽企业重金招聘Python工程师标准>>> 小米开源监控系统OpenFalcon应对高并发7种手段 原创 2016-04-01 秦晓辉 高可用架构 编者按:本文是秦晓辉在 ...

  3. 小米开源监控open-falcon安装

    https://www.cnblogs.com/liangqihui/p/6618127.html 前言 近期爆出Zabbix有严重bug,加上一直对zabbix的性能.UI不满.所以这次想钻研一下最 ...

  4. 小米开源监控系统监控mysql_二、小米开源监控平台open-falcon安装与使用

    小米开源企业级监控平台open-falcon安装与部署 由于实验机器不多,并不是生产环境,只是作为学习使用,故采用 ALL In One 的模式,即一个中心主机,其他主机都往这一个中心主机推送数据.中 ...

  5. 小米开源监控系统监控mysql_小米开源监控 Open-Falcon 3.0 部署

    一.系统环境准备 目前我这里使用单机版进行部署,也可以前后端进行分离,前端,后端,数据库分别在不同的服务器上进行部署搭建 1.更改主机名 [root@localhost ~]# hostnamectl ...

  6. 小米开源监控系统Open-falcon部署笔记(上)

    一.环境准备 操作系统:centos7.4 1.1 更换yum源 1.1.1 备份默认的yum文件 mv /etc/yum.repos.d /etc/yum.repos.d.bak 1.1.2 新建y ...

  7. 小米的开源监控系统open-falcon架构设计,看完明白如何设计一个好的系统

    小米的开源监控系统open-falcon架构设计,看完明白如何设计一个好的系统 小米的http://book.open-falcon.org/zh/intro/ 早期,一直在用zabbix,不过随着业 ...

  8. 开源监控解决方案OpenFalcon系列(一)

    OpenFalcon是由小米的运维团队开源的一款企业级.高可用.可扩展的开源监控解决方案,,在众多开源爱好者的支持下,功能越来越丰富,文档更加的完善,OpenFalcon 已经成为国内最流行的监控系统 ...

  9. openfalcon 组件监控_开源监控解决方案OpenFalcon系列(一)

    OpenFalcon是由小米的运维团队开源的一款企业级.高可用.可扩展的开源监控解决方案,,在众多开源爱好者的支持下,功能越来越丰富,文档更加的完善,OpenFalcon 已经成为国内最流行的监控系统 ...

最新文章

  1. php定义常量和静态常量的区别,php静态变量与自定义常量的区别实例详解
  2. 微软企业库4.1学习笔记(三)企业库迁移和并行使用,以及企业库的扩展
  3. html标签在html页面正常显示而不被解析
  4. 计算机网络基础(路由原理)
  5. ADO Execute 方法
  6. 2016年10月CPU天梯图
  7. 使用用户自定义类型作为map的key
  8. 二分查找之搜索插入位置
  9. netty websocket 简单消息推送demo
  10. ios xcode文件前缀_IOS Xcode开发中 文件名的后缀名m,mm,cpp,h区别
  11. POJ 2503-Babelfish(map)
  12. Java基础知识强化之集合框架笔记55:Map集合之HashMap集合(HashMapInteger,String)的案例...
  13. 阿里中间件-全链路压测 总结
  14. 【高级渲染特性】抗锯齿技术介绍
  15. 编程示例:公农历转换的算法
  16. RS232串口的直连串口线和交叉串口线的区别
  17. 使用腾讯云轻量服务器搭建flarum论坛
  18. mysql数据库如何查看表空间_MYSQL:查看的数据库表空间
  19. Installations
  20. 四 利用excel实现数据可视化

热门文章

  1. 机器人将颠覆零售业,看AI在零售行业有哪些应用?
  2. android 用 versionName 进行比对做版本更新 - kt
  3. vue3安装wot-design步骤
  4. markdown mermaid
  5. INT 21H中断大全
  6. 无名前端的10年前端路~
  7. 大厂测试员为了不加班,降薪去事业单位,半年后:还不如当测试员?
  8. 计算机网络教程第四版谢钧,计算机网络教程(第4版) 谢钧.pdf
  9. 计算机网络设计校园网实验报告,计算机网络课程设计实验报告---校园网网络构建方案设计和实现...
  10. 【08月02日】A股滚动市盈率PE历史新低排名