• 运维监控系统之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

  • 相关阅读:
    SharePoint提交前有效性验证
    showModalDialog/showModelessDialog弹出窗刷新例子
    在多选用户字段中查找是否存在某个用户(转自JianYi博客)
    SQL获得月第一天等
    SQL如何将Null不参与计算
    自定义Icon字段
    Backup Exec Remote Agent 在远程服务器上启动时挂起,一直显示Starting状态
    一个好用的日期控件My97DatePicker
    使用错误页统一处理错误(转)
    MS SQL游标的使用
  • 原文地址:https://www.cnblogs.com/wangshuyang/p/7843631.html
Copyright © 2020-2023  润新知