参考博主:努力哥完成

一、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查看结果。

二、Zabbix、Nagios、Open-Falcon这3大开源运维监控工具的比较

说明:Open-Falcon部署分为前端(客户端)和后端(服务端)

三、后端部署(服务端)

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

1、系统环境

[root@open-falcon-server ~]# cat /etc/redhat-release
CentOS Linux release 7.2. (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

#关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

3、软件环境准备

#安装 redis

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

[root@localhost ~]# redis-server &
[]
[root@localhost ~]# :C Feb ::31.280 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
:M Feb ::31.280 * Increased maximum number of open files to (it was originally set to ).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.2. (/) bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port:
| `-._ `._ / _.-' | PID: 3222
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
[root@localhost ~]# netstat -lntup|grep red
tcp 0.0.0.0: 0.0.0.0:* LISTEN /redis-server *
tcp6 ::: :::* LISTEN /redis-server *

#安装mysql

[root@open-falcon-server ~]#wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm  
[root@open-falcon-server ~]# rpm -ivh mysql-community-release-el7-.noarch.rpm 
[root@open-falcon-server ~]#yum install -y mysql-server

#启动mysql并设置开机自启动

[root@open-falcon-server ~]# systemctl start mysqld.service
[root@open-falcon-server ~]# systemctl enable mysqld.service

#检查3306端口

[root@open-falcon-server ~]# netstat -lntup|grep 

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/

#设置数据库密码 (备注:用户名:root ,密码: password )

[root@open-falcon-server open-falcon]# mysqladmin -uroot password "password"
Warning: Using a password on the command line interface can be insecure.

#检查导入的数据表

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| alarms |
| dashboard |
| falcon_portal |
| graph |
| mysql |
| performance_schema |
| uic |
+--------------------+
rows in set (0.00 sec)

5、配置Go语言开发环境

#安装go语言开发包(备注:安装需要epel源)

yum install golang -y

#检查版本

[root@open-falcon-server ~]# go version
go version go1.8.3 linux/amd64

#查看go的安装路径

[root@open-falcon-server ~]# 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、下载编译好的二进制版本

下载地址:

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

#开始安装open-falcon

[root@open-falcon-server ~]# export FALCON_HOME=/home/work
[root@open-falcon-server ~]# export WORKSPACE=$FALCON_HOME/open-falcon
[root@open-falcon-server ~]# mkdir -p $WORKSPACE
#上传软件
[root@open-falcon-server ~]# ll
-rw-r--r--. root root Oct open-falcon-v0.2.1.tar.gz #解压
[root@open-falcon-server ~]# tar -xf open-falcon-v0.2.1.tar.gz -C $WORKSPACE
[root@open-falcon-server ~]# cd $WORKSPACE
<br>#查看解压结果
[root@open-falcon-server open-falcon]# ll
total
drwxrwxr-x. Aug : agent
drwxrwxr-x. Aug : aggregator
drwxrwxr-x. Aug : alarm
drwxrwxr-x. Aug : api
drwxrwxr-x. Aug : gateway
drwxrwxr-x. Aug : graph
drwxrwxr-x. Aug : hbs
drwxrwxr-x. Aug : judge
drwxrwxr-x. Aug : nodata
-rwxrwxr-x. Aug : open-falcon
lrwxrwxrwx. Aug : plugins -> ./agent/plugins/
lrwxrwxrwx. Aug : public -> ./agent/public/
drwxrwxr-x. Aug : transfer

7、修改配置文件cfg.json

坑:

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

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

模块 配置文件所在路径
aggregator    /home/work/open-falcon/aggregator/config/cfg.json
graph /home/work/open-falcon/graph/config/cfg.json
hbs /home/work/open-falcon/hbs/config/cfg.json
nodata /home/work/open-falcon/nodata/config/cfg.json
api /home/work/open-falcon/api/config/cfg.json
alarm /home/work/open-falcon/alarm/config/cfg.json

1)修改aggregator的配置文件

vim /home/work/open-falcon/aggregator/config/cfg.json

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

2)修改graph的配置文件

vim /home/work/open-falcon/graph/config/cfg.json

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

3)修改hbs的配置文件

vim /home/work/open-falcon/hbs/config/cfg.json

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

4)修改nodata的配置文件

vim /home/work/open-falcon/nodata/config/cfg.json

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

5)修改api的配置文件

vim /home/work/open-falcon/api/config/cfg.json

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

6)修改alarm的配置文件

vim /home/work/open-falcon/alarm/config/cfg.json

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

8、启动后端模块

[root@open-falcon-server open-falcon]# cd /home/work/open-falcon

#启动服务

[root@open-falcon-server open-falcon]# ./open-falcon start

#检查服务启动状态

[root@open-falcon-server open-falcon]# ./open-falcon check

[root@open-falcon-server open-falcon]# ./open-falcon check
falcon-graph UP 8945
falcon-hbs UP 8954
falcon-judge UP 8962
falcon-transfer UP 8968
falcon-nodata UP 8974
falcon-aggregator UP 8981
falcon-agent UP 8989
falcon-gateway UP 8995
falcon-api UP 8999
falcon-alarm UP 9004

#更多的命令行工具用法

# ./open-falcon [start|stop|restart|check|monitor|reload] module
./open-falcon start agent
/open-falcon check
falcon-graph UP
falcon-hbs UP
falcon-judge UP
falcon-transfer UP
falcon-nodata UP
falcon-aggregator UP
falcon-agent UP
falcon-gateway UP
falcon-api UP
falcon-alarm UP

至此后端部署完成。

9、其它用法

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

curl 127.0.0.1:/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

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..tar.gz
cd pip-9.0.
python setup.py install
cd ..

#查看需要安装的软件

[root@prometheus dashboard]# vim pip_requirements.txt
Flask==0.10.
Flask-Babel==0.9
Jinja2==2.7.
Werkzeug==0.9.
gunicorn==19.1.
python-dateutil==2.2
requests==2.3.
mysql-python
python-ldap

#利用pip安装上面这些软件

virtualenv ./env
source env/bin/activate #进入虚拟环境
[root@prometheus]# cd /home/work/open-falcon/dashboard  #安装软件
[root@prometheus 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,默认密码为""

#修改方法

[root@Open-Falcon-client]#cd /home/work/open-falcon/dashboard/rrd
[root@Open-Falcon-client rrd]# cp config.py config.py.bak
(env)[root@Open-Falcon-client rrd]# vi config.py
#-*-coding:utf8-*-
# Copyright 2017 Xiaomi, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
 
#-*-coding:utf8-*-
# Copyright 2017 Xiaomi, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
 
 
# app config
import os
LOG_LEVEL = os.environ.get("LOG_LEVEL",'DEBUG')
SECRET_KEY = os.environ.get("SECRET_KEY","secret-key")
PERMANENT_SESSION_LIFETIME = os.environ.get("PERMANENT_SESSION_LIFETIME",3600 * 24 * 30)
SITE_COOKIE = os.environ.get("SITE_COOKIE","open-falcon-ck")
 
# Falcon+ API
API_ADDR = os.environ.get("API_ADDR","http://10.0.0.6:8080/api/v1")
 
# portal database
# TODO: read from api instead of db
PORTAL_DB_HOST = os.environ.get("PORTAL_DB_HOST","10.0.0.6")
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","password")
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","10.0.0.6")
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","password")
ALARM_DB_NAME = os.environ.get("ALARM_DB_NAME","alarms")
 
# ldap config
LDAP_ENABLED = os.environ.get("LDAP_ENABLED",False)
LDAP_SERVER = os.environ.get("LDAP_SERVER","ldap.forumsys.com:389")
LDAP_BASE_DN = os.environ.get("LDAP_BASE_DN","dc=example,dc=com")
LDAP_BINDDN_FMT = os.environ.get("LDAP_BINDDN_FMT","uid=%s,dc=example,dc=com")
LDAP_SEARCH_FMT = os.environ.get("LDAP_SEARCH_FMT","uid=%s")
LDAP_ATTRS = ["cn","mail","telephoneNumber"]
LDAP_TLS_START_TLS = False
LDAP_TLS_CACERTDIR = ""
LDAP_TLS_CACERTFILE = "/etc/openldap/certs/ca.crt"
LDAP_TLS_CERTFILE = ""
LDAP_TLS_KEYFILE = ""
LDAP_TLS_REQUIRE_CERT = True
LDAP_TLS_CIPHER_SUITE = ""
 
# i18n
BABEL_DEFAULT_LOCALE = 'zh_CN'
BABEL_DEFAULT_TIMEZONE = 'Asia/Shanghai'
# aviliable translations
LANGUAGES = {
'en': 'English',
'zh_CN': 'Chinese-Simplified',
}
 
# portal site config
MAINTAINERS = ['root']
CONTACT = 'root@open-falcon.org'
 
try:
from rrd.local_config import *
except:
print "[warning] no local config file"

#启动服务

有两种方法:

法一:

(env)[root@Open-Falcon-client dashboard]# bash control start
falcon-dashboard started..., pid=

法二:

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

#查看日志

(env)[root@Open-Falcon-client dashboard]# ./control tail
[-- :: +] [] [INFO] Starting gunicorn 19.1.
[-- :: +] [] [INFO] Listening at: http://0.0.0.0:8081 (40853)
[-- :: +] [] [INFO] Using worker: sync
[-- :: +] [] [INFO] Booting worker with pid:
[-- :: +] [] [INFO] Booting worker with pid:
[-- :: +] [] [INFO] Booting worker with pid:
[-- :: +] [] [INFO] Booting worker with pid:

#退出env环境

(env)[root@Open-Falcon-client dashboard]# deactivate
[root@Open-Falcon-client dashboard]#

#访问网站

http://10.0.0.6:8081

#登录界面

6、其它用法

#以开发者模式启动

./env/bin/python wsgi.py

open http://127.0.0.1:8081 in your browser.

#开启8081端口 (备注:如果关闭了防火墙,则直接忽略这步)

1)防火墙添加8081端口永久开放

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

2)重新载入防火墙配置

firewall-cmd --reload

#停止dashboard运行

bash control stop

#查看dashboard运行状态

bash control status

六、FAQ

  • Q: open-falcon v0.2 有管理员帐号吗?
  • A: 可以通过dashboard自行注册新用户,第一个用户名为root的帐号会被认为是超级管理员,超级管理员可以设置其他用户为管理员。

  • Q: open-falcon v0.2 dashboard 可以禁止用户自己注册吗?
  • A: 可以的,在api组件的配置文件中,将signup_disable配置项修改为true,重启api即可。

endpoint 查看磁盘相关监控信息。

Centos7部署Open-Falcon监控的更多相关文章

  1. CentOS7下搭建zabbix监控(二)——Zabbix被监控端配置

    Zabbix监控端配置请查看:CentOS7下搭建zabbix监控(一)——Zabbix监控端配置 (1).在CentOS7(被监控端)上部署Zabbix Agent 主机名:youxi2 IP地址: ...

  2. [原]CentOS7部署osm2pgsql

    转载请注明原作者(think8848)和出处(http://think8848.cnblogs.com) 部署Postgresql和部署PostGis请参考前两篇文章 本文主要参考GitHub上osm ...

  3. 部署点评Cat监控项目(转)

    原文地址:http://www.bubuko.com/infodetail-986338.html 在项目中监控代码运行的状况,可以采用点评的Cat项目来监控整个项目,但是按照官方的文档来部署cat, ...

  4. centos7 部署ssserver

    centos7 部署shadowsocks服务端 为什么要选centos7? 以后centos7 肯定是主流,在不重要的环境还是尽量使用新系统吧 centos7 的坑 默认可能会有firewall 或 ...

  5. Docker部署Zabbix+Grafana监控

    Docker部署Zabbix+Grafana监控 环境 centos 7 ; Docker 17.12.0-ce ; docker-compose version 1.20.1 2018-4-1 当前 ...

  6. 部署点评Cat监控项目

    在项目中监控代码运行的状况,可以采用点评的Cat项目来监控整个项目,但是按照官方的文档来部署cat,总会遇到各种问题,讲解的也不够简明清楚,现在用一个单机来部署运行cat监控项目. 首先,到项目的Gi ...

  7. CentOS7 部署zabbix4.2

    zabbix我就不介绍了吧,但是可能又有些小白,我还是介绍一下吧,嘿嘿! 一:什么是zabbix及优缺点(对比cacti和nagios) Zabbix能监视各种网络参数,保证服务器系统的安全运营:并提 ...

  8. centos7上安装cacti监控

     简介 在企业网络运维过程中,管理员必须时刻关注服务器的运行状态,如CPU.内存.磁盘空间使用情况等.为了能够及时的发现问题,尽量减少故障的发生.当网络中的设备,服务器等数量较多时,可以部署一套监控系 ...

  9. centos7 部署 docker compose

    =============================================== 2019/4/10_第1次修改                       ccb_warlock == ...

  10. centos7 部署 docker ce

    =============================================== 2019/4/9_第1次修改                       ccb_warlock === ...

随机推荐

  1. 2139: road

    把a[i], b[i]分开来排序 对应位置上的点连边 感性理解这是最小的 会连出若干个环 要使得若干个环连成大环 令a[i]向b[i - 1] 连边 易证一定能使图联通 感性理解这也是最小的 #inc ...

  2. python语法root=Tkinter.Tk()

    1. Tkinter 是一个python模块,是一个调用Tcl/Tk的接口,它是一个跨平台的脚本图形界面接口.Tkinter不是唯一的python图形编程接口,但是是 其中比较流行的一个.最大的特点是 ...

  3. 剑指Offer - 九度1373 - 整数中1出现的次数(从1到n整数中1出现的次数)

    剑指Offer - 九度1373 - 整数中1出现的次数(从1到n整数中1出现的次数)2014-02-05 23:03 题目描述: 亲们!!我们的外国友人YZ这几天总是睡不好,初中奥数里有一个题目一直 ...

  4. 《Cracking the Coding Interview》——第5章:位操作——题目8

    2014-03-19 06:33 题目:用一个byte数组来模拟WxH的屏幕,每个二进制位表示一个像素.请设计一个画水平线的函数. 解法:一个点一个点地画就可以了.如果要优化的话,其实可以把中间整字节 ...

  5. cannot bind to 127.0.0.1:5037 报错

    使用appium连接真机时,提示这个错误,找了很久,发现是端口被占用 打开cmd,netstat -nao查看当前的TCP连接,找到使用127.0.0.1:5037的代码,然后到任务管理器查看详细进程 ...

  6. java IO小结

    package 字符与字节转换; import java.io.*; public class char_byte { public static void main(String[] args) { ...

  7. 实验 使用 vivado zedboard GPIO 开关 开控制 LED

    前面我做了几个实验 都没有用过 开关,这一次用一用 发现 vivado 真的挺方便 所以 使用 vivado 开发 1.建工程 我使用 vivado 2013.4 创建新工程 –> next – ...

  8. 【Android】实验8 SQLite数据库操作2016.5.12

    实验8  SQLite数据库操作 [目的] 设计一个个人通讯录,掌握Android平台下的数据库开发,该个人通讯录主要包括联系人列表和联系人详细信息等界面. [要求] 程序主界面是通讯录的目录显示手机 ...

  9. atom插件之less-autocompile

    less-autocompile package Auto compile LESS file on save. Add the parameters on the first line of the ...

  10. composer 库无法提交git

    composer require firebase/php-jwt 安装了该库,想提交到版本库,无论如何也提交不上去,.ignore中也没忽略,网上寻找答案,说有个.git文件夹需要删除 PHPSTO ...