运维监控系统之Open-Falcon

Posted shuyang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运维监控系统之Open-Falcon相关的知识,希望对你有一定的参考价值。

目录:

  • Open-Falcon的简介
  • 行业监控软件对比
  • Open-Falcon架构
  • Open-Falcon部署
  • Open-Falcon相关连接

 

一、Open-Falcon的简介

1、监控系统,可以从运营级别(基本配置即可),以及应用级别(二次开发,通过端口进行日志上报),对服务器、操作系统、中间件、应用进行全面的监控,及报警,对我们的系统正常运行的作用非常重要。

2、基础监控

CPU、Load、内存、磁盘、IO、网络相关、内核参数、ss 统计输出、端口采集、核心服务的进程存活信息采集、关键业务进程资源消耗、NTP offset采集、DNS解析采集,这些指标,都是open-falcon的agent组件直接支持的。

Linux运维基础采集项:http://book.open-falcon.org/zh/faq/linux-metrics.html

对于这些基础监控选项全部理解透彻的时刻,也就是对Linux运行原理及命令进阶的时刻。

3、第三方监控

术业有专攻,运行在OS上的应用甚多,Open-Falcon的开发团队不可能把所有的第三方应用的监控全部做完,这个就需要开源社区提供更多的插件,当前对于很多常用的第三方应用都有相关插件了。

4、JVM监控

对于Java作为主要开发语言的大多数公司,对于JVM的监控不可或缺。

每个JVM应用的参数,比如GC、类加载、JVM内存、进程、线程,都可以上报给Falcon,而这些参数的获得,都可以通过MxBeans实现。

使用 Java 平台管理 bean:http://www.ibm.com/developerworks/cn/java/j-mxbeans/

5、业务应用监控

对于业务需要监控的接口,比如响应时间等。可以根据业务的需要,上报相关数据到Falcon,并通过Falcon查看结果。

二、行业监控软件对比

 

三、Open-Falcon架构

Open-Falcon是一个比较大的分布式系统,有十几个组件。按照功能,这十几个组件可以划分为 基础组件、作图链路组件和报警链路组件,其安装部署的架构如下图所示,

 

四、Open-Falcon部署

1、单机部署

分为前端(客户端)和后端(服务端)

后端部署:

参考官方文档:https://book.open-falcon.org/zh_0_2/quick_install/prepare.html

1)系统环境

# cat /etc/redhat-release

CentOS Linux release 7.2.1511 (Core)

 

2)系统优化(更新源)

#安装下载软件

yum install wget -y
 
#更换aliyun源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
 
#下载epel源
yum install epel-release.noarch -y
rpm -Uvh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
yum clean all
yum makecache
 
#下载常用软件
yum install git telnet net-tools tree nmap sysstat lrzsz dos2unix tcpdump ntpdate -y
 
#配置时间同步
ntpdate cn.pool.ntp.org
 
#更改主机名
hostnamectl set-hostname open-falcon-server
hostname open-falcon-server
 
#开启缓存
sed -i \'s#keepcache=0#keepcache=1#g\' /etc/yum.conf
grep keepcache /etc/yum.conf
 
#关闭selinux
sed -i \'s/SELINUX=enforcing/SELINUX=disabled/g\' /etc/selinux/config
setenforce 0
 
#关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
 
3)软件安装
# yum install redis -y
 
redis常用命令

redis-server redis 服务端
redis-cli    redis 命令行客户端
redis-benchmark redis 性能测试工具
redis-check-aof   AOF文件修复工具
redis-check-dump RDB文件修复工具
redis-sentinel    Sentinel 服务端

 

#启动redis

# redis-server &

 

#安装mysql

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

# rpm -ivh mysql-community-release-el7-5.noarch.rpm

# ll /etc/yum.repos.d/

-rw-r--r--. 1 root root 1209 Jan 29  2014 mysql-community.repo
-rw-r--r--. 1 root root 1060 Jan 29  2014 mysql-community-source.repo

# yum install -y mysql-server

# systemctl start mysqld.service

# 设置开启启动

systemctl enable mysqld.service

# 登陆

# mysql -uroot -p

 

4)初始化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/

#设置数据库密码

# mysqladmin -uroot password "password"

#检查导入的数据库表

# mysql -uroot -p

> show databases;

 

5)配置Go语言开发环境

# yum install golang -y

# go version

go version go1.8.3 linux/amd64

# 查看go安装路径

# find / -name go

/etc/alternatives/go
/var/lib/alternatives/go
/usr/bin/go
/usr/lib/golang/src/cmd/go  #需要的是这个路径
/usr/lib/golang/src/go
/usr/lib/golang/bin/go
/usr/lib/golang/pkg/linux_amd64/go
 
#设置环境变量GOROOT和GOPATH
 

export GOROOT=/usr/lib/golang
export GOPATH=/home

 

6)下载编译好的二进制版本

https://github.com/open-falcon/falcon-plus/releases

直接下载官方编译好的二进制版本(x86 64位平台)

开始安装

# export FALCON_HOME=/home/work

# export WORKSPACE=$FALCON_HOME/open-falcon

# mkdir -p $WORKSPACE

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

 

7)修改配置文件cfg.json

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

如果需要每个模块都能正常启动,需要将上面模块的cfg.json的数据库信息进行修改。根据本教程的配置,需要修改配置文件所在的目录: 

模块 配置文件所在路径
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

(1)修改aggregator的配置文件

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

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

(2)修改graph的配置文件

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

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

(3)修改hbs的配置文件

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

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

(4)修改nodata的配置文件

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

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

(5)修改api的配置文件

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

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

(6)修改alarm的配置文件

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

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

(7)启动后端模块

# cd /home/work/open-falcon

# ./open-falcon start
[falcon-graph] 25682
[falcon-hbs] 25691
[falcon-judge] 25699
[falcon-transfer] 25705
[falcon-nodata] 25711
[falcon-aggregator] 25718
[falcon-agent] 25726
[falcon-gateway] 25733
[falcon-api] 25739
[falcon-alarm] 25751
#检查服务启动状态
# ./open-falcon check
        falcon-graph         UP           25682
          falcon-hbs         UP           25691
        falcon-judge         UP           25699
     falcon-transfer         UP           25705
       falcon-nodata         UP           25711
   falcon-aggregator         UP           25718
        falcon-agent         UP           25726
      falcon-gateway         UP           25733
          falcon-api         UP           25739
        falcon-alarm         UP           25751
#更多的命令行工具用法
# ./open-falcon [start|stop|restart|check|monitor|reload] module
# ./open-falcon start agent
至此后端部署完成。

其它用法

#重载配置(备注:修改vi cfg.json配置文件后,可以用下面命令重载配置)

curl 127.0.0.1:1988/config/reload

 

前端部署

1)创建工作目录

export HOME=/home/work

export WORKSPACE=$HOME/open-falcon

 

mkdir -p $WORKSPACE

 

cd $WORKSPACE
2)克隆前端组件代码
git clone https://github.com/open-falcon/dashboard.git
3)安装依赖包

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

ps:

#省略下面这三步不操作(备注:因执行virtualenv ./env;安装的pip版本为1.4.1,再用pip安装pip_requirements.txt文件中的软件。都会出现报错的情况,导致无法安装成功。主要原因就是pip版本的问题。)解决这个问题,请参考第4步
# 进入目录
# cd $WORKSPACE/dashboard/
virtualenv ./env
source env/bin/activate#如果安装了高版本pip,请先卸载pip uninstall pip 再按两次y
#指定源安装包(备注:这步如果安装不成功,请检查pip版本是否为pip-9.0.1)
pip install -r pip_requirements.txt -i

4)先安装ez_setup.py,再安装pip

#下载ez_setup.py

wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py
python ez_setup.py --insecure
 
#下载pip
wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9
 
#解压并安装
tar xf pip-9.0.1.tar.gz
cd pip-9.0.1
python setup.py install
cd ..
ps:
#配置环境变量  (备注:这步不需要操作了)
# which pip
/usr/bin/pip
# vim /etc/profile
# pip path
export PATH="/usr/bin/pip/bin:$PATH"
# source /etc/profile
 
# 查看需要安装的软件
cat dashboard/pip_requirements.txt
Flask==0.10.1
Flask-Babel==0.9
Jinja2==2.7.2
Werkzeug==0.9.4
gunicorn==19.1.1
python-dateutil==2.2
requests==2.3.0
mysql-python
python-ldap
 
# pip安装
# cd /home/work/open-falcon/dashboard
pip install -r pip_requirements.txt
 
5)修改配置
#配置说明:
dashboard的配置文件为: \'rrd/config.py\',请根据实际情况修改
# API_ADDR 表示后端api组件的地址
API_ADDR = "http://127.0.0.1:8080/api/v1"
## 根据实际情况,修改PORTAL_DB_*, 默认用户名为root,默认密码为""
## 根据实际情况,修改ALARM_DB_*, 默认用户名为root,默认密码为""
 
# cd /home/work/open-falcon/dashboard/rrd
# cp config.py config.py.bak
# vim config.py
 1 #-*-coding:utf8-*-
 2 # Copyright 2017 Xiaomi, Inc.
 3 #
 4 # Licensed under the Apache License, Version 2.0 (the "License");
 5 # you may not use this file except in compliance with the License.
 6 # You may obtain a copy of the License at
 7 #
 8 # http://www.apache.org/licenses/LICENSE-2.0
 9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15  
16  
17 # app config
18 import os
19 LOG_LEVEL = os.environ.get("LOG_LEVEL",\'DEBUG\')
20 SECRET_KEY = os.environ.get("SECRET_KEY","secret-key")
21 PERMANENT_SESSION_LIFETIME = os.environ.get("PERMANENT_SESSION_LIFETIME",3600 * 24 * 30)
22 SITE_COOKIE = os.environ.get("SITE_COOKIE","open-falcon-ck")
23  
24 # Falcon+ API
25 API_ADDR = os.environ.get("API_ADDR","http://192.168.1.180:8080/api/v1")
26  
27 # portal database
28 # TODO: read from api instead of db
29 PORTAL_DB_HOST = os.environ.get("PORTAL_DB_HOST","192.168.1.180")
30 PORTAL_DB_PORT = int(os.environ.get("PORTAL_DB_PORT",3306))
31 PORTAL_DB_USER = os.environ.get("PORTAL_DB_USER","root")
32 PORTAL_DB_PASS = os.environ.get("PORTAL_DB_PASS","password")
33 PORTAL_DB_NAME = os.environ.get("PORTAL_DB_NAME","falcon_portal")
34  
35 # alarm database
36 # TODO: read from api instead of db
37 ALARM_DB_HOST = os.environ.get("ALARM_DB_HOST","192.168.1.180")
38 ALARM_DB_PORT = int(os.environ.get("ALARM_DB_PORT",3306))
39 ALARM_DB_USER = os.environ.get("ALARM_DB_USER","root")
40 ALARM_DB_PASS = os.environ.get("ALARM_DB_PASS","password")
41 ALARM_DB_NAME = os.environ.get("ALARM_DB_NAME","alarms")
42  
43 # ldap config
44 LDAP_ENABLED = os.environ.get("LDAP_ENABLED",False)
45 LDAP_SERVER = os.environ.get("LDAP_SERVER","ldap.forumsys.com:389")
46 LDAP_BASE_DN = os.environ.get("LDAP_BASE_DN","dc=example,dc=com")
47 LDAP_BINDDN_FMT = os.environ.get("LDAP_BINDDN_FMT","uid=%s,dc=example,dc=com")
48 LDAP_SEARCH_FMT = os.environ.get("LDAP_SEARCH_FMT","uid=%s")
49 LDAP_ATTRS = ["cn","mail","telephoneNumber"]
50 LDAP_TLS_START_TLS = False
51 LDAP_TLS_CACERTDIR = ""
52 LDAP_TLS_CACERTFILE = "/etc/openldap/certs/ca.crt"
53 LDAP_TLS_CERTFILE = ""
54 LDAP_TLS_KEYFILE = ""
55 LDAP_TLS_REQUIRE_CERT = True
56 LDAP_TLS_CIPHER_SUITE = ""
57  
58 # i18n
59 BABEL_DEFAULT_LOCALE = \'zh_CN\'
60 BABEL_DEFAULT_TIMEZONE = \'Asia/Shanghai\'
61 # aviliable translations
62 LANGUAGES = {
63 \'en\': \'English\',
64 \'zh_CN\': \'Chinese-Simplified\',
65 }
66  
67 # portal site config
68 MAINTAINERS = [\'root\']
69 CONTACT = \'root@open-falcon.org\'
70  
71 try:
72 from rrd.local_config import *
73 except:
74 print "[warning] no local config file"
View Code

 

#启动服务

#启动服务
有两种方法:
法一:
(env)[root@Open-Falcon-client dashboard]# bash control start
falcon-dashboard started..., pid=40853

法二:
(env)[root@Open-Falcon-client dashboard]# ./control start
falcon-dashboard started..., pid=40853

#查看日志

./control tail

#退出env环境

deactivate

6)访问网站

http://IP:8081

#关于登录账号的问题或参考FAQ

请自行注册管理员用户名和密码

7)其它用法

#以开发者模式启动

# ./env/bin/python wsgi.py

#开启8081端口

# 防火墙添加8081端口永久开放
firewall-cmd --add-port=8081/tcp --permanent
# 重新载入防火墙配置
firewall-cmd --reload

#停止dashboard运行

bash control stop

#查看dashboard运行状态

bash control status

五、Open-Falcon相关链接

1、FAQ问题

  • Q: open-falcon v0.2 有管理员帐号吗?
  • A: 可以通过dashboard自行注册新用户,第一个用户名为root的帐号会被认为是超级管理员,超级管理员可以设置其他用户为管理员。
  • Q: open-falcon v0.2 dashboard 可以禁止用户自己注册吗?
  • A: 可以的,在api组件的配置文件中,将signup_disable配置项修改为true,重启api即可。

2、相关链接

开发历程:

https://mp.weixin.qq.com/s?__biz=MjM5OTcxMzE0MQ==&mid=400225178&idx=1&sn=c98609a9b66f84549e41cd421b4df74d

官网:

http://open-falcon.org/

https://book.open-falcon.org

https://github.com/open-falcon/falcon-plus/releases

以上是关于运维监控系统之Open-Falcon的主要内容,如果未能解决你的问题,请参考以下文章

Open-falcon运维监控系统——微信接口二次开发

运维架构服务监控Open-Falcon

运维架构服务监控Open-Falcon

三大开源运维监控工具zabbixnagios和open-falcon优缺点详细比较(转)

Open-Falcon部署

Open-Falcon安装详解