===============================================

2019/4/28_第1次修改                       ccb_warlock

更新说明:

2019/4/29:调整防火墙的配置内容

===============================================

距离上次整理open-falcon的部署手册(https://www.cnblogs.com/straycats/p/7199209.html)已经一年多了,当时才刚接触linux,很多东西整理的并不是很合理(比如一些操作的描述),一些部署的内容也不是很严谨(比如如何实现开机自启)。

正好最近在做监控系统的选型,open-falcon又被我拿出来作为试验的目标。介于后来0.2.1与0.2.0的一些部署上的差异,我决定重新针对0.2.1整理一份部署手册,供路人一起参考。

由于新文档变更了之前文档的一些部署路径及配置内容,建议基础能力还不是很强的同学可以忽略我17年整理的0.2.0版本的部署手册,直接看这份手册。


部署一套系统之前,首先关注整个架构,这里直接把官方的图盗过来。


一、环境准备

操作系统:centos 7.6(www.centos.org下载的包是CentOS-7-x86_64-Minimal-1810.iso)

虚拟机IP:192.168.12.55

1.1 配置防火墙

# 为了方便可以选择直接关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

当然如果你需要开启防火墙,那么开放几个业务上需要开放的端口。

服务模块 功能 端口
hbs 连接所有agent的心跳服务 6030
transfer 接收agent发送的监控数据 8433
dashboard 页面 8081

# 开放端口6030、8433、8081,允许任意IP访问

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

# 重新加载防火墙配置

firewall-cmd --reload

1.2 安装wget、vim

yum install -y wget vim

1.3 安装git

yum install -y git

安装结束后,确认是否满足官方要求的Git >= 1.7.5

git version

1.4 安装golang

# 通过fedora的epel仓库来安装golang

yum install -y epel-release
yum install -y golang

安装结束后,确认是否满足官方要求的Go >= 1.6

go version

1.5 安装redis

# 通过fedora的epel仓库来安装redis

yum install -y epel-release
yum install -y redis

# 启动、开机启动redis

systemctl start redis
systemctl enable redis

1.6 安装mysql 5.6

# 获取repo源

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

# 安装该rpm包

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

# 安装mysql

yum install -y mysql-server

# 启动mysql

systemctl start mysql

PS.通过这种方式的mysql是默认开机启动的。

1.7 设置临时变量(临时生效的变量,换一个会话(shell终端)这个变量就没有了)

export GOROOT=/usr/lib/golang
export GOPATH=/opt/git

1.8 从github上拉取后端(open-falcon)的源码

# 创建存放源码文件的目录

mkdir -p $GOPATH/src/github.com/open-falcon

# 进入该目录

cd $GOPATH/src/github.com/open-falcon

# 拉取源码

git clone https://github.com/open-falcon/falcon-plus.git

PS.通过git clone经常龟速,所以可以通过本地获取源码后,将源码文件上传到/opt/git/src/github.com/open-falcon/falcon-plus目录下。

1.9 初始化数据库

# 进入目录

cd $GOPATH/src/github.com/open-falcon/falcon-plus/scripts/mysql/db_schema

# 执行5个脚本初始化数据库

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

PS.在运行“mysql -h..................”时会提示“Enter password”,如果mysql的root没有设置密码,回车即可。

1.10 编译后端的源码并打包

# 进入目录

cd $GOPATH/src/github.com/open-falcon/falcon-plus

# 编译所有模块

make all

PS.17年部署0.2.0时还需要手动获取rrdtool工具包,现在(19年)的版本(0.2.1)试下来已经不用了.

# 打包

make pack

打包完成后,/opt/git/src/github.com/open-falcon/falcon-plus/目录下多了刚才打的压缩包“open-falcon-v0.2.1.tar.gz”(因为整理手册的时候版本已经到了0.2.1)。

PS.官方也有提供编译好的二进制包(https://book.open-falcon.org/zh_0_2/quick_install/prepare.html),如果编译过程不顺利可以直接下载。


二、部署后端

v0.2后端分为下面几个服务模块:

模块 功能
alarm alarm模块是处理报警event的,judge产生的报警event写入redis,alarm从redis读取处理,并进行不同渠道的发送。
agent agent用于采集机器负载监控指标,比如cpu.idle、load.1min、disk.io.util等等,每隔60秒push给Transfer。agent与Transfer建立了长连接,数据发送速度比较快,agent提供了一个http接口/v1/push用于接收用户手工push的一些数据,然后通过长连接迅速转发给Transfer
aggregator 集群聚合模块。聚合某集群下的所有机器的某个指标的值,提供一种集群视角的监控体验。
api api模块提供统一的restAPI操作接口。比如:api组件接收查询请求,根据一致性哈希算法去相应的graph实例查询不同metric的数据,然后汇总拿到的数据,最后统一返回给用户。
gateway 没有遇到机房分区问题,可以忽略此模块。
graph graph是存储绘图数据的组件。graph组件 接收transfer组件推送上来的监控数据,同时处理api组件的查询请求、返回绘图数据。
hbs HBS(Heartbeat Server)心跳服务器,公司所有agent都会连到HBS,每分钟发一次心跳请求。
judge 用于告警判断,agent将数据push给Transfer,Transfer不但会转发给Graph组件来绘图,还会转发给Judge用于判断是否触发告警。
nodata nodata用于检测监控数据的上报异常。nodata和实时报警judge模块协同工作,过程为: 配置了nodata的采集项超时未上报数据,nodata生成一条默认的模拟数据;用户配置相应的报警策略,收到mock数据就产生报警。采集项上报异常检测,作为judge模块的一个必要补充,能够使judge的实时报警功能更加可靠、完善。
task task是监控系统一个必要的辅助模块。定时任务,实现了如下几个功能:index更新(包括图表索引的全量更新 和 垃圾索引清理)、falcon服务组件的自身状态数据采集(采集了transfer、graph、task这三个服务的内部状态数据)、falcon自检控任务
transfer 数据转发服务。它接收agent上报的数据,然后按照哈希规则进行数据分片、并将分片后的数据分别push给graph&judge等组件。

2.1 设置临时变量

# 设置后端工作目录的环境变量(临时生效的变量,换一个会话(shell终端)这个变量就没有了)

export BACKSPACE=/opt/open-falcon/back

2.2 创建目录

# 创建后端工作目录

mkdir -p $BACKSPACE

2.3 解压包

# 进入目录

cd $GOPATH/src/github.com/open-falcon/falcon-plus

# 将“1.9 编译源码并打包”中的“open-falcon-v0.2.1.tar.gz”解压到后端工作目录(BACKSPACE)下。

tar -xzvf open-falcon-v0.2.1.tar.gz -C $BACKSPACE

2.4 修改配置文件cfg.json

如果需要每个模块正常启动,需要将下面每个模块的cfg.json的数据库信息进行修改。

根据本教程的配置,需要修改模块如下:

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

1)编辑aggregator的配置文件cfg.json

vim /opt/open-falcon/back/aggregator/config/cfg.json

PS.我部署mysql的root密码为空,所以不需要填“password”;若mysql的root密码不为空,则用root密码替换“password”。

2)编辑graph的配置文件cfg.json

vim /opt/open-falcon/back/graph/config/cfg.json

PS.我部署mysql的root密码为空,所以不需要填“password”;若mysql的root密码不为空,则用root密码替换“password”。

3)编辑hbs的配置文件cfg.json

vim /opt/open-falcon/back/hbs/config/cfg.json

PS.我部署mysql的root密码为空,所以不需要填“password”;若mysql的root密码不为空,则用root密码替换“password”。

4)编辑nodata的配置文件cfg.json

vim /opt/open-falcon/back/nodata/config/cfg.json

PS.我部署mysql的root密码为空,所以不需要填“password”;若mysql的root密码不为空,则用root密码替换“password”。

5)编辑api的配置文件cfg.json

vim /opt/open-falcon/back/api/config/cfg.json

PS.我部署mysql的root密码为空,所以不需要填“password”;若mysql的root密码不为空,则用root密码替换“password”。

6)编辑alarm的配置文件cfg.json

vim /opt/open-falcon/back/alarm/config/cfg.json

PS.我部署mysql的root密码为空,所以不需要填“password”;若mysql的root密码不为空,则用root密码替换“password”。

2.5 启动后端

# 启动所有模块

cd /opt/open-falcon/back
./open-falcon start

2.6 设置开机启动

请参考“四、设置开机启动”。

2.7 其他操作命令

open-falcon还提供了下面这些命令:

# 检查所有模块的启动情况

cd /opt/open-falcon/back
./open-falcon check

# 停止所有模块

cd /opt/open-falcon/back
./open-falcon stop

# 启动指定的模块(以alarm模块为例)

cd /opt/open-falcon/back
./open-falcon start alarm

# 停止指定的模块(以alarm模块为例)

cd /opt/open-falcon/back
./open-falcon stop alarm

# 重启指定的模块(以alarm模块为例)

cd /opt/open-falcon/back
./open-falcon restart alarm

三、部署前端

3.1 设置临时变量

# 设置前端工作目录的环境变量(临时生效的变量,换一个会话(shell终端)这个变量就没有了)

export FRONTSPACE=/opt/open-falcon/front

3.2 创建目录

# 创建前端工作目录

mkdir -p $FRONTSPACE

3.3 从github上拉取前端(dashboard)的源码

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

PS.通过git clone经常龟速,所以可以通过本地获取源码后,将源码文件上传到/opt/open-falcon/front/dashboard目录下。

3.4 安装依赖

yum install -y python-virtualenv
yum install -y python-devel
yum install -y openldap-devel
yum install -y mysql-devel
yum groupinstall -y "Development tools"

# 通过virtualenv创建目录env作为独立的运行环境

cd $FRONTSPACE/dashboard
virtualenv ./env

# 生成 requirements.txt 并安装依赖

./env/bin/pip install -r pip_requirements.txt

PS.官方教程中使用了下面的命令安装依赖包(指定了安装包的源地址)

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

3.5 修改配置

根据本教程的配置,dashboard的配置文件在/opt/open-falcon/front/dashboard/rrd/config.py

爬坑点:

原本不接入LDAP、数据库root账号密码为空不需要修改配置,但是官方给出的配置文件在这里留了一个坑:PORTAL_DB的用户名/密码初始为falcon/falcon。

这个坑最终会导致dashboard登录后的“HostGroups”、“Templates”、“Expressions”、“Nodata”,下面提供解决方案,也就是将错误的初始配置改过来。

# 编辑dashboard配置文件config.py

vim /opt/open-falcon/front/dashboard/rrd/config.py +33

将portal的数据库用户名改为root,密码改为空,wq保存。

3.6 启动前端

# 启动

cd $FRONTSPACE/dashboard
bash control start

3.7 设置开机启动

参考“四、设置开机启动”。

3.8 其他操作命令

dashboard还提供了下面这些命令:

# 检查dashboard的启动情况

cd /opt/open-falcon/front/dashboard
bash control status

# 停止dashboard

cd /opt/open-falcon/front/dashboard
bash control stop

# 以开发者模式启动

cd /opt/open-falcon/front/dashboard
./env/bin/python wsgi.py

四、设置开机启动

由于open-falcon没有service实现开机启动,所以需要额外找方案来解决这个问题。

这里提供一套方案:通过进程守护服务(Supervisor)实现open-falcon的开机启动。

4.1 安装supervisor

yum install -y python-setuptools
easy_install supervisor

4.2 修改配置文件supervisord.conf

# 创建目录

mkdir -p /etc/supervisor/conf.d

# 创建supervisord.conf的模板文件

echo_supervisord_conf > /etc/supervisor/supervisord.conf

# 编辑supervisord.conf

vim /etc/supervisor/supervisord.conf

将下面的内容添加到supervisord.conf内,wq保存。

[include]
files = conf.d/*.conf

4.3 创建open-falcon启动脚本

# 创建目录

mkdir -p /opt/sh

# 编辑open-falcon-startup.sh

vim /opt/sh/open-falcon-startup.sh

将下面的内容添加到open-falcon-startup.sh内,wq保存。

#!/bin/bash
sleep 30s && /opt/open-falcon/back/open-falcon start

PS.引入启动脚本(延迟30s启动)的原因:在open-falcon启动时,mysql没有启动完成,将会导致部分服务启动失败,而supervisord又检测不到open-falcon每个服务的进程,结果导致open-falcon部分服务(aggregator、agent、gateway、api、alarm)启动失败。

4.4 修改需要守护的进程配置

# 编辑open-falcon-back.conf

vim /etc/supervisor/conf.d/open-falcon-back.conf

将下面的内容添加到open-falcon-back.conf内,wq保存。

[program:open-falcon-back]
command=/bin/bash /opt/sh/open-falcon-startup.sh ;运行程序的命令
directory=/opt/open-falcon/back ;命令执行的目录
user=root ; 进程执行的用户身份
autostart=true ;在supervisord启动时运行该程序
autorestart=true ;程序异常退出后自动重启
stdout_logfile=/var/log/open-falcon-back.out.log ;输出日志文件
stdout_logfile_maxbytes=10MB ;输出日志文件大小(10MB)
stdout_logfile_backups=5 ;输出日志文件备份数
stderr_logfile=/var/log/open-falcon-back.err.log ;错误日志文件
stderr_logfile_maxbytes=10MB ;错误日志文件大小(10MB)
stderr_logfile_backups=5 ;错误日志文件备份数

# 编辑open-falcon-front.conf

vim /etc/supervisor/conf.d/open-falcon-front.conf

将下面的内容添加到open-falcon-front.conf内,wq保存。

[program:open-falcon-front]
command=/bin/bash /opt/open-falcon/front/dashboard/control start ;运行程序的命令
directory=/opt/open-falcon/front/dashboard ;命令执行的目录
user=root ; 进程执行的用户身份
autostart=true ;在supervisord启动时运行该程序
autorestart=true ;程序异常退出后自动重启
stdout_logfile=/var/log/open-falcon-front.out.log ;输出日志文件
stdout_logfile_maxbytes=10MB ;输出日志文件大小
stdout_logfile_backups=5 ;输出日志文件备份数
stderr_logfile=/var/log/open-falcon-front.err.log ;错误日志文件
stderr_logfile_maxbytes=10MB ;错误日志文件大小
stderr_logfile_backups=5 ;错误日志文件备份数

4.5 创建supervisor的service文件

# 编辑supervisord.service

vim /usr/lib/systemd/system/supervisord.service

将下面的内容添加到supervisord.service内,wq保存。

[Unit]
Description=Supervisor [Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s [Install]
WantedBy=multi-user.target

4.6 启动、开机启动supervisor

systemctl start supervisord
systemctl enable supervisord

4.7 查看supervisor启动程序的状态

supervisorctl status

这里open-falcon-front状态为FATAL可能是因为启动比较快导致,实际上dashboard已经成功启动了。


五、使用open-falcon

5.1 访问open-falcon的页面

由于手册部署用的虚拟机IP为192.168.12.55,故浏览器访问http://192.168.12.55:8081

5.2 创建超级管理员(root)

dashboard没有默认创建任何账号(包括管理员账号),需要通过页面进行注册账号。

注册用户名为root的账号(第一个帐号名称为root的用户,会被自动设置为超级管理员)。

1)点击“sign up”

2)填写用户名、中文名、email、密码后,点击“sign up”创建root账号

5.3 关闭注册功能

注册账号能够被任何打开dashboard页面的人注册,有时候我们不允许任何人都可以随便访问监控数据。所以当创建完root账号(系统管理员)后,可以关闭注册账号功能。没有接入LDAP的话,可以通过root账号增加用户账号。

根据本教程的配置,api的配置文件所在路径如下:

模块 配置文件所在路径
api /opt/open-falcon/back/api/config/cfg.json

# 编辑api的配置文件cfg.json

vim /opt/open-falcon/back/api/config/cfg.json

将signup_disable配置项修改为true,wq保存。

# 重启api模块

cd /opt/open-falcon/back
./open-falcon restart api

5.4 创建普通用户

  • 没有接入LDAP,允许用户自由创建账号登录,将“4.3 关闭注册功能”的配置改回来;

  • 没有接入LDAP,不允许用户随意创建账号登录,让管理员用root账号创建用户账号;

  • 接入LDAP,直接使用LDAP账号登录;


参考资料

1.https://book.open-falcon.org/zh_0_2/quick_install/index.html

centos7 部署 open-falcon 0.2.1的更多相关文章

  1. CentOS7部署.Net Core2.0站点(上)

    其实类似的教程网上已经有很多了,之所以要写,是应为发现在使用最新的centos7和.netcore2.1版本时还是遇到了不少坑,所以记录下,以后希望大家能少走弯路. 一.安装CentOS7 我是用虚拟 ...

  2. CentOS7部署HDP3.1.0.0

    Apache Ambari是一个基于Web的支持Apache Hadoop集群的供应.管理和监控的开源工具,Ambari已支持大多数Hadoop组件,包括HDFS.MapReduce.Hive.Pig ...

  3. 云服务器 Centos7 部署 Elasticsearch 8.0 + Kibana 8.0 指南

    文章转载自:https://mp.weixin.qq.com/s/iPfh9Mkwxf5lieiqt6ltxQ 服务器是命令行模式登录,没法以浏览器方式访问.而官方推荐的快捷部署方式,在kibana ...

  4. CentOS7部署.Net Core2.0站点(中)

    继续上篇的内容,本篇来学习下nginx的配置和守护进程supervisor的使用. 一.Nginx安装及配置 (1)安装nginx sudo yum install epel-release #添加源 ...

  5. centos7.2环境elasticsearch-5.0.1+kibana-5.0.1+zookeeper3.4.6+kafka_2.9.2-0.8.2.1部署详解

    centos7.2环境elasticsearch-5.0.1+kibana-5.0.1+zookeeper3.4.6+kafka_2.9.2-0.8.2.1部署详解 环境准备: 操作系统:centos ...

  6. CentOS7+ApacheServer2.4+MariaDB10.0+PHP7.0+禅道项目管理软件8.0环境部署

    CentOS7+ApacheServer2.4+MariaDB10.0+PHP7.0+禅道项目管理软件8.0环境部署 by:授客 QQ:1033553122 目录 一. 二. 三. 四. 五. 六. ...

  7. centos7 部署 open-falcon 0.2.0

    =============================================== 2019/4/29_第3次修改                       ccb_warlock 更新 ...

  8. CentOS7安装CDH 第五章:CDH的安装和部署-CDH5.7.0

    相关文章链接 CentOS7安装CDH 第一章:CentOS7系统安装 CentOS7安装CDH 第二章:CentOS7各个软件安装和启动 CentOS7安装CDH 第三章:CDH中的问题和解决方法 ...

  9. 手动编译部署LNMP环境(CentOS7.5+Nginx-1.18.0+MySQL-5.7.30+PHP-7.4.14)

    在平时运维工作中,经常需要用到LNMP应用框架.LNMP环境是指在Linux系统下,由Nginx + MySQL + PHP组成的网站服务器架构. 可参考前面的文章: 如何在CentOS 7上搭建LA ...

  10. 阿里云CentOS7部署MySql8.0

    本文主要介绍了阿里云CentOS7如何安装MySql8.0,并对所踩的坑加以记录; 环境.工具.准备工作 服务器:阿里云CentOS 7.4.1708版本; 客户端:Windows 10; SFTP客 ...

随机推荐

  1. 省选模拟赛第四轮 B——O(n^4)->O(n^3)->O(n^2)

    一 稍微转化一下,就是找所有和原树差距不超过k的不同构树的个数 一个挺trick的想法是: 由于矩阵树定理的行列式的值是把邻接矩阵数值看做边权的图的所有生成树的边权乘积之和 那么如果把不存在于原树中的 ...

  2. C#基础 常用语&数据类型定义&类型转换

    int temp = Console.Read(); Console.WriteLine(temp); Console.Read(); Console.Write("  ");直接 ...

  3. 关于阿里云Centos服务器搭建Java网站不能访问的问题

    首先阿里云提供的手册是没问题的 手工搭建 然后我在地址栏输入服务器地址之后总是提示无法访问! 输入命令 netstat -tunlp,80端口确实是在监听(这里不是8080,因为我在tomcat的配置 ...

  4. 洛谷【P1523】旅行商的背包(算法导论 15-1) 题解

    P1523 旅行商简化版 题目背景 欧几里德旅行商\((Euclidean Traveling Salesman)\)问题也就是货郎担问题一直是困扰全世界数学家.计算机学家的著名问题.现有的算法都没有 ...

  5. java代码示例(6-4)

    创建ChangePassword.java /** * 需求分析:修改用户密码 * @author chenyanlong * 日期:2017/10/15 */ package com.hp.test ...

  6. 2018acm-icpc西安邀请赛后记

    第一次参加icpc的邀请赛,有一点小激动,深知大一弱队实力弱,赛前给队友的目标就是拿块铜,不打铁. 热身赛因为没有用过pc^2,codeblocks又用不习惯的原因,开始调工程调了很久,差一点拿到A题 ...

  7. selenium_基本用法

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  8. 通过Cloudera Manager部署CDH5.15.1的webUI界面详解

    通过Cloudera Manager部署CDH5.15.1的webUI界面详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客CDH的部署完全通过Cloudera Mana ...

  9. CISCO知识扫盲

    cisco知识扫盲 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.vlan简介 1.什么是VLAN 简称虚拟局域网.至于英语怎么写自行百度吧. VLAN的优势: 1>.广 ...

  10. CM记录-迁移JournalNode和Service Monitor超时解决方案

    1.迁移JournalNode节点 当你在HDFS服务中新加入一个JournalNode角色时,JournalNode角色需要的数据目录是没有被创建的.但你启用HDFS的HA后,NameNode必须需 ...