open-falcon 的使用

open-falcon

open-falcon 是小米公司开源的一款监控服务。

一.安装open-falcon 后台

1.redis安装与配置

yum -y install redis

2.mysql安装及配置

初始化mysql
cd /tmp/ && git clone https://github.com/open-falcon/falcon-plus.git 
cd /tmp/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
rm -rf /tmp/falcon-plus/

3.下载open-falcon后端的二进制包 并配置

wget https://github.com/open-falcon/falcon-plus/releases/download/v0.2.1/open-falcon-v0.2.1.tar.gz

vim /etc/profile
export FALCON_HOME=/home/work
export WORKSPACE=$FALCON_HOME/open-falcon

mkdir -p $WORKSPACE
tar -xzvf open-falcon-v0.2.1.tar.gz -C $WORKSPACE

修改密码,将下列的real_user 和 real_passwd 换成真正的mysql用户和密码。
cd $WORKSPACE
grep -Ilr 3306  ./ | xargs -n1 -- sed -i 's/root:/real_user:real_password/g'

后端服务启动:

./open-falcon start
[falcon-graph] 88169
[falcon-hbs] 88183
[falcon-judge] 88195
[falcon-transfer] 88204
[falcon-nodata] 88213
[falcon-aggregator] 88223
[falcon-agent] 88234
[falcon-gateway] 88243
[falcon-api] 88251
[falcon-alarm] 88265

注:如果启动不起来,请检查连接数据库的是否正常,一般来讲,mysql8之类的高版本对登陆十分苛刻,需要新建用户连接。

4.安装配置open-falcon前端服务

cd $WORKSPACE
git clone https://github.com/open-falcon/dashboard.git

cd $WORKSPACE/dashboard/
virtualenv ./env

./env/bin/pip install -r pip_requirements.txt -i https://pypi.douban.com/simple

启动

以开发者模式启动
./env/bin/python wsgi.py

在生产环境启动
bash control start

在浏览器上输入localhost:8081 即可访问。

至此,一个open-falcon 的监控后台已经搭建完成,如果需要监控其他的机器那么就需要安装falcon-agent。

二.open-falcon 各组件

2.1 agent

      agent用于采集机器负载监控指标,比如cpu.idle、load.1min、disk.io.util等等,每隔60秒push给Transfer。agent与Transfer建立了长连接,数据发送速度比较快,agent提供了一个http接口/v1/push用于接收用户手工push的一些数据,然后通过长连接迅速转发给Transfer。

agent 组件就是 open-falcon 的agent 目录。其配置文件如下:

{
    "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
    }
}

数据采集来源:

1.机器的指标,如cpu,网卡,磁盘,内存。

2.业务监控指标,比如某个接口调用的latency

3.开源软件的监控如MySQL,Nginx,Redis。

2.2 Transfer

     transfer是数据转发服务。它接收agent上报的数据,然后按照哈希规则进行数据分片、并将分片后的数据分别push给graph&judge等组件。

2.3 Graph

     graph是存储绘图数据的组件。graph组件 接收transfer组件推送上来的监控数据,同时处理api组件的查询请求、返回绘图数据。

2.4 API

    api组件,提供统一的restAPI操作接口。比如:api组件接收查询请求,根据一致性哈希算法去相应的graph实例查询不同metric的数据,然后汇总拿到的数据,最后统一返回给用户。

2.5 Judge

   Judge用于告警判断,agent将数据push给Transfer,Transfer不但会转发给Graph组件来绘图,还会转发给Judge用于判断是否触发告警。

2.6 Alarm

    alarm模块是处理报警event的,judge产生的报警event写入redis,alarm从redis读取处理,并进行不同渠道的发送。

2.7 Nodata

     nodata用于检测监控数据的上报异常。nodata和实时报警judge模块协同工作,过程为: 配置了nodata的采集项超时未上报数据,nodata生成一条默认的模拟数据;用户配置相应的报警策略,收到mock数据就产生报警。采集项上报异常检测,作为judge模块的一个必要补充,能够使judge的实时报警功能更加可靠、完善。

2.8 Aggregator

   集群聚合模块。聚合某集群下的所有机器的某个指标的值,提供一种集群视角的监控体验。

三.自定义push监控数据

python 实现

#!-*- coding:utf8 -*-

import requests
import time
import json

ts = int(time.time())
payload = [
    {
        "endpoint": "test-endpoint",
        "metric": "test-metric",
        "timestamp": ts,
        "step": 60,
        "value": 1,
        "counterType": "GAUGE",
        "tags": "idc=lg,loc=beijing",
    },

    {
        "endpoint": "test-endpoint",
        "metric": "test-metric2",
        "timestamp": ts,
        "step": 60,
        "value": 2,
        "counterType": "GAUGE",
        "tags": "idc=lg,loc=beijing",
    },
]

r = requests.post("http://127.0.0.1:1988/v1/push", data=json.dumps(payload))

print r.text

四.监控Mysql数据库

MySQl 的监控数据采集可以通过mymon来做。

mymon 是一个cron,每一分钟跑一次,配置文件中配置了数据库的连接地址,mymon连到该数据库,采集一些监控指标。比如global status,global variables,slave status 等等。

配置安装:

go get -u github.com/open-falcon/mymon
cd $GOPATH/src/github.com/open-falcon/mymon
make

vim etc/myMon.cfg

endpoint=local_mysql

[mysql]
# 数据库用户名
user=root
# 您的数据库密码
password=
# 数据库连接地址
host=127.0.0.1
# 数据库端口

启动方式,使用cron定时任务管理。

echo '* * * * * cd $GOPATH/src/github.com/open-falcon/mymon && ./mymon -c etc/myMon.cfg ' > /etc/cron.d/mymon

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章