赞
踩
Open-falcon是一款用golang和python写的监控系统,由小米启动这个项目。
1、监控系统,可以从运营级别(基本配置即可),以及应用级别(二次开发,通过端口进行日志上报),对服务器、操作系统、中间件、应用进行全面的监控,及报警,对我们的系统正常运行的作用非常重要。
2、基础监控
CPU、Load、内存、磁盘、IO、网络相关、内核参数、ss 统计输出、端口采集、核心服务的进程存活信息采集、关键业务进程资源消耗、NTP offset采集、DNS解析采集,这些指标,都是open-falcon的agent组件直接支持的。
3、第三方监控
术业有专攻,运行在OS上的应用甚多,Open-Falcon的开发团队不可能把所有的第三方应用的监控全部做完,这个就需要开源社区提供更多的插件,当前对于很多常用的第三方应用都有相关插件了。
4、JVM监控
对于Java作为主要开发语言的大多数公司,对于JVM的监控不可或缺。
每个JVM应用的参数,比如GC、类加载、JVM内存、进程、线程,都可以上报给Falcon,而这些参数的获得,都可以通过MxBeans实现。
5、业务应用监控
对于业务需要监控的接口,比如响应时间等。可以根据业务的需要,上报相关数据到Falcon,并通过Falcon查看结果
官网:https://www.open-falcon.com/
其中,基础组件以绿色标注圈住、作图链路组件以蓝色圈住、报警链路组件以红色圈住,橙色填充的组件为域名。OpenTSDB功能尚未完成。
agent用于采集机器负载监控指标,比如cpu.idle、load.1min、disk.io.util等等,每隔60秒push给Transfer。agent与Transfer建立了长连接,数据发送速度比较快,agent提供了一个http接口/v1/push用于接收用户手工push的一些数据,然后通过长连接迅速转发给Transfer。
Open-Falcon,采用和OpenTSDB相似的数据格式:metric、endpoint加多组key value tags
Plugin可以看做是对agent功能的扩充。对于业务系统的监控指标采集,最好不要做成plugin,而是把采集脚本放到业务程序发布包中,随着业务代码上线而上线,随着业务代码升级而升级,这样会比较容易管理。
tag其实是一种分组方式,当push的数据无法标记tag(比如:我们agent采集的cpu, memory, net等信息),那我们就要将这些数据手工分组了,这就是HostGroup;
HostGroup实际上是对endpoint的一种分组;
想象一下,一条数据push上来,我们应该怎么判断这条数据是否该报警呢?首先我们需要找到这条数据的expression,无非就是看expression中的tag是否是当前push上来数据的子集;当没有tag的数据呢? push上来的数据肯定有endpoint, 我们可以根据endpoint查看是哪个HostGroup, HostGroup又是跟template绑定,template中又会配置告警策略。
端口名称 | 默认端口 | 说明 |
---|---|---|
httpd | 3000 | 监听的网络端口 |
netcat | 44444 | netcat端口 |
dashboard | 8081 | dashboard前端web端口 |
api | 8080 | 后端API端口 |
push_api | 1988 | 后端API端口 |
redis | 6379 | redis-server端口 |
中间件名称 | 版本号 |
---|---|
CentOS | CentOS6.8 |
Java | 1.8.0_121 |
go | 1.13.11 linux/amd64 |
redis | 3.2.5 |
python | 2.7.4 |
pip | 20.2 |
open-falcon | 0.2.1 |
CentOS6.8 安过程省略。预先创建用户/用户组zhouchen
预先安装jdk1.8.0_121 +
预先安装Mysql
预先安装Redis
预先安装Python
预先安装Pip
创建目录/opt/open-falcon作为open-falcon的home
[zhouchen@hadoop102 software]$ sudo service iptables stop
[zhouchen@hadoop102 software]$ sudo chkconfig iptables off
1.安装golang包
[zhouchen@hadoop102 software]$ sudo yum install golang -y
2.配置全局环境
[zhouchen@hadoop102 software]$ sudo vim /etc/profile.d/hadoop.sh
#添加如下内容
export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH
1.启动Redis服务端
[zhouchen@hadoop102 redis-3.2.5]$ redis-server redis.conf
2.启动Redis客户端
[zhouchen@hadoop102 redis-3.2.5]$ redis-cli -h hadoop102 -p 6379
hadoop102:6379>
1.安装下载源码包falcon-plus-master.zip
https://github.com/open-falcon/falcon-plus
2.上传到服务器并解压
[zhouchen@hadoop102 software]$ unzip -d falcon-plus-master.zip -d /opt/open-falcon
3.执行falcon-plus中的sql脚本
[zhouchen@hadoop102 open-falcon]$ cd falcon-plus-master/scripts/mysql/db_schema/
[zhouchen@hadoop102 db_schema]$ mysql -h hadoop102 -u root -p < 1_uic-db-schema.sql
[zhouchen@hadoop102 db_schema]$ mysql -h hadoop102 -u root -p < 2_portal-db-schema.sql
[zhouchen@hadoop102 db_schema]$ mysql -h hadoop102 -u root -p < 3_dashboard-db-schema.sql
[zhouchen@hadoop102 db_schema]$ mysql -h hadoop102 -u root -p < 4_graph-db-schema.sql
[zhouchen@hadoop102 db_schema]$ mysql -h hadoop102 -u root -p < 5_alarms-db-schema.sql
1.下载二进制包open-falcon-v0.2.1.tar.gz
github下载地址
2.上传到服务器并解压
[zhouchen@hadoop102 software]$ tar -zxvf open-falcon-v0.2.1.tar.gz -C /opt/open-falcon/
3.修改配置文件
需要修改的组件如下:
aggregator /opt/open-falcon/aggregator/config/cfg.json
graph /opt/open-falcon/graph/config/cfg.json
hbs /opt/open-falcon/hbs/config/cfg.json
nodata /opt/open-falcon/nodata/config/cfg.json
api /opt/open-falcon/api/config/cfg.json
alarm /opt/open-falcon/alarm/config/cfg.json
需要修改的内容如下:
1)将所有的127.0.0.1改成hadoop102
[zhouchen@hadoop102 open-falcon]$ grep -Ilr '127.0.0.1' ./ | xargs -n1 -- sed -i 's/127.0.0.1/hadoop102/g'
2)配置mysql数据库和密码将root:改成root:zhou59420
[zhouchen@hadoop102 open-falcon]$ grep -Ilr 3306 ./ | xargs -n1 -- sed -i 's/root:/root:zhou59420/g'
4.启动open-falcon
[zhouchen@hadoop102 open-falcon]$ ./open-falcon start
[falcon-graph] 4697
[falcon-hbs] 4710
[falcon-judge] 4721
[falcon-transfer] 4730
[falcon-nodata] 4738
[falcon-aggregator] 4747
[falcon-agent] 4758
[falcon-gateway] 4766
[falcon-api] 4774
[falcon-alarm] 4789
5.检查组件启动情况
[zhouchen@hadoop102 open-falcon]$ ./open-falcon check
falcon-graph UP 4697
falcon-hbs UP 4710
falcon-judge UP 4721
falcon-transfer UP 4730
falcon-nodata UP 4738
falcon-aggregator UP 4747
falcon-agent UP 4758
falcon-gateway UP 4766
falcon-api UP 4774
falcon-alarm UP 4789
1.下载源码包dashboard-master.zip
github源码下载地址
2.上传到服务器并解压
[zhouchen@hadoop104 software]$ unzip dashboard-master.zip -d /opt/open-falcon/
3.安装依赖
[zhouchen@hadoop104 software]$ sudo yum install -y openldap-devel
[zhouchen@hadoop104 software]$ sudo yum install -y python-devel
[zhouchen@hadoop104 software]$ sudo yum install -y python-virtualenv
[zhouchen@hadoop104 software]$ sudo yum groupinstall "Development tools"
[zhouchen@hadoop104 software]$ sudo yum -y install openssl openssl-devel
4.安装
[zhouchen@hadoop104 software]$ python -m pip install virtualenv
[zhouchen@hadoop104 open-falcon]$ cd dashboard-master/
[zhouchen@hadoop104 dashboard-master]$ pip install -r pip_requirements.txt -i https://pypi.douban.com/simple
#注意这一步如果报错,可以将pip_requirements.txt中的安装步骤分别执行,检查到底是哪一步安装错误
[zhouchen@hadoop104 dashboard-master]$ pip install Flask==1.0 -i https://pypi.douban.com/simple
[zhouchen@hadoop104 dashboard-master]$ vim rrd/config.py # Falcon+ API API_ADDR = os.environ.get("API_ADDR","http://hadoop102:8080/api/v1") API_USER = os.environ.get("API_USER","admin") API_PASS = os.environ.get("API_PASS","password") # portal database # TODO: read from api instead of db PORTAL_DB_HOST = os.environ.get("PORTAL_DB_HOST","hadoop102") PORTAL_DB_PORT = int(os.environ.get("PORTAL_DB_PORT",3306)) PORTAL_DB_USER = os.environ.get("PORTAL_DB_USER","root") PORTAL_DB_PASS = os.environ.get("PORTAL_DB_PASS","zhou59420") PORTAL_DB_NAME = os.environ.get("PORTAL_DB_NAME","falcon_portal") # alarm database # TODO: read from api instead of db ALARM_DB_HOST = os.environ.get("ALARM_DB_HOST","hadoop102") ALARM_DB_PORT = int(os.environ.get("ALARM_DB_PORT",3306)) ALARM_DB_USER = os.environ.get("ALARM_DB_USER","root") ALARM_DB_PASS = os.environ.get("ALARM_DB_PASS","zhou59420") ALARM_DB_NAME = os.environ.get("ALARM_DB_NAME","alarms")
1.启动bash
[root@hadoop104 dashboard-master]# bash control start
日志的位置:
/opt/open-falcon/dashboard-master/var/app.log
2.浏览器访问http://hadoop104:8081/
3.注册账户
1)dashbord没有默认创建任何账号包括管理账号,需要你通过页面进行注册账号
2)第一个帐号名称为root的用户会被自动设置为超级管理员
3)注册账号能够被任何打开dashboard页面的人注册。关闭注册账号功能:修改api组件的配置文件cfg.json,将signup_disable配置项修改为true
1.后端页面 hadoop102:1988
2.api页面hadoop102:8080
3.前端页面
见2.8
官方参考链接:https://book.open-falcon.org/zh_0_2/usage/flume.html
open-falcon作为一个监控框架,可以去采集任何系统的监控指标数据,只要将监控数据组织为open-falcon规范的格式就OK了。Flume的数据采集可以通过脚本flume-monitor来做。
flume-monitor.py是一个采集脚本,只需要放到falcon-agent的plugin目录,在portal中将对应的plugin绑定到主机组,falcon-agent会主动执行flume-monitor.py脚本,flume-monitor.py脚本执行结束后会输出json格式数据,由falcon-agent读取和解析数据。
Flume运行时需要在配置文件中加入java环境变量,启动成功之后flume进程会监听一个端口,可以通过http请求的方式来抓取flume提供的metrics,flume-monitor.py脚本中配置了需要抓取的Flume组件metric,通过http的方式从flume端口中抓取需要的组件信息,输出json格式数据。
1.修改$FLUME_HOME/conf/flume-env.sh
[zhouchen@hadoop102 flume]$ vim conf/flume-env.sh
# 添加语句,http的端口指定为3000
export JAVA_OPTS="$JAVA_OPTS -Dflume.monitoring.type=http -Dflume.monitoring.port=3000"
2.启动flume
[zhouchen@hadoop102 flume]$ bin/flume-ng agent --conf conf/ --name a1 --conf-file conf/flume-netcat-logger.conf -Dflume.root.logger=INFO,console -Dflume.monitoring.type=http -Dflume.monitoring.port=3000
1.进入open-falcon工作目录,修改agent/config/cfg.json
[zhouchen@hadoop102 open-falcon]$ mkdir plugin
[zhouchen@hadoop102 open-falcon]$ vim agent/config/cfg.json
#修改内容如下
"plugin": {
"enabled": true,
"dir": "./plugin",
"git": "https://github.com/mdh67899/openfalcon-monitor-scripts.git",
"logs": "./logs"
}
./plugin指的是open-falcon工作目录下的plugin目录
2.下载https://github.com/mdh67899/openfalcon-monitor-scripts.git
3.上传openfalcon-monitor-scripts.git到服务器并解压
4.将openfalcon-monitor-scripts.git中的flume移动到open-falcon工作目录下的plugin
[zhouchen@hadoop102 openfalcon-monitor-scripts-master]$ mv flume/ ../plugin/
5.为flume脚本添加权限
[zhouchen@hadoop102 open-falcon]$ chmod 755 plugin/flume/60_flume-monitor.py
6.修改60_flume-monitor.py脚本
[zhouchen@hadoop102 open-falcon]$ vim plugin/flume/60_flume-monitor.py
#修改内容如下
url="http://hadoop102:3000/metrics"
r = requests.post("http://hadoop102:1988/v1/push", data=json.dumps(payload))
1.创建HostGroup
2.绑定host
3.绑定plugin
1.重启open-falcon agent
[zhouchen@hadoop102 open-falcon]$ ./open-falcon restart agent
2.查看dashboard
3.agent中flume相关日志
[zhouchen@hadoop102 open-falcon]$ vim agent/logs/agent.log
2020/08/03 16:14:47 plugin.go:64: <Plugins:[flume], Timestamp:1596442487>
4.相关日志
/opt/open-falcon/logs/flume/60_flume-monitor.py.stderr.log
报错
[zhouchen@hadoop102 dashboard-master]$ env/bin/pip install -r pip_requirements.txt -i https://pypi.douban.com/simple
Looking in indexes: https://pypi.douban.com/simple
ERROR: Command errored out with exit status 1:
command: /opt/open-falcon/dashboard-master/env/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-g1k2j1gd/mysql-python/setup.py'"'"'; __file__='"'"'/tmp/pip-install-g1k2j1gd/mysql-python/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-opjj8aav
cwd: /tmp/pip-install-g1k2j1gd/mysql-python/
Complete output (7 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-g1k2j1gd/mysql-python/setup.py", line 13, in <module>
from setup_posix import get_config
File "/tmp/pip-install-g1k2j1gd/mysql-python/setup_posix.py", line 2, in <module>
from ConfigParser import SafeConfigParser
ModuleNotFoundError: No module named 'ConfigParser'
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
原因1:
环境中有一个python3.7,到时候pip默认也是用的python3.7的环境。而在Python 3.x 版本后,ConfigParser.py 已经更名为 configparser.py 所以出错。
解决:
[zhouchen@hadoop102 /]$ sudo find ./ -name 'configparser.py'
./usr/local/lib/python3.7/configparser.py
./opt/module/miniconda3/envs/superset/lib/python3.7/configparser.py
./opt/module/miniconda3/envs/superset/lib/python3.7/site-packages/future/moves/configparser.py
./opt/module/miniconda3/lib/python3.7/configparser.py
./opt/module/miniconda3/pkgs/python-3.7.7-hcff3b4d_5/lib/python3.7/configparser.py
[zhouchen@hadoop102 /]$ cp /usr/local/lib/python3.7/configparser.py /usr/local/lib/python3.7/ConfigParser.py
[zhouchen@hadoop102 /]$ cp /opt/module/miniconda3/envs/superset/lib/python3.7/configparser.py /opt/module/miniconda3/envs/superset/lib/python3.7/ConfigParser.py
[zhouchen@hadoop102 /]$ cp /opt/module/miniconda3/envs/superset/lib/python3.7/site-packages/future/moves/configparser.py /opt/module/miniconda3/envs/superset/lib/python3.7/site-packages/[zhouchen@hadoop102 /]$ future/moves/ConfigParser.py
[zhouchen@hadoop102 /]$ cp /opt/module/miniconda3/lib/python3.7/configparser.py /opt/module/miniconda3/lib/python3.7/ConfigParser.py
[zhouchen@hadoop102 /]$ cp /opt/module/miniconda3/pkgs/python-3.7.7-hcff3b4d_5/lib/python3.7/configparser.py /opt/module/miniconda3/pkgs/python-3.7.7-hcff3b4d_5/lib/python3.7/ConfigParser.py
原因2:
MySQL-python安装的问题。这个包的安装又依赖于mysql-devel,而mysql-devel的版本又会与Mysql-server亦或是mysql-common冲突。
解决:
在没有安装mysql的机器上安装Mysql-python规避这个问题。然后在该节点上安装open-falcon前端。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。