運維監控系統之Open-Falcon

目錄:

  • Open-Falcon的簡介
  • 行業監控軟件對比
  • Open-Falcon架構
  • Open-Falcon部署
  • Open-Falcon相關鏈接

 

1、Open-Falcon的簡介

一、監控系統,能夠從運營級別(基本配置便可),以及應用級別(二次開發,經過端口進行日誌上報),對服務器、操做系統、中間件、應用進行全面的監控,及報警,對咱們的系統正常運行的做用很是重要。html

二、基礎監控前端

CPU、Load、內存、磁盤、IO、網絡相關、內核參數、ss 統計輸出、端口採集、核心服務的進程存活信息採集、關鍵業務進程資源消耗、NTP offset採集、DNS解析採集,這些指標,都是open-falcon的agent組件直接支持的。java

Linux運維基礎採集項:http://book.open-falcon.org/zh/faq/linux-metrics.htmlpython

對於這些基礎監控選項所有理解透徹的時刻,也就是對Linux運行原理及命令進階的時刻。mysql

三、第三方監控linux

術業有專攻,運行在OS上的應用甚多,Open-Falcon的開發團隊不可能把全部的第三方應用的監控所有作完,這個就須要開源社區提供更多的插件,當前對於不少經常使用的第三方應用都有相關插件了。git

四、JVM監控github

對於Java做爲主要開發語言的大多數公司,對於JVM的監控不可或缺。golang

每一個JVM應用的參數,好比GC、類加載、JVM內存、進程、線程,均可以上報給Falcon,而這些參數的得到,均可以經過MxBeans實現。redis

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

五、業務應用監控

對於業務須要監控的接口,好比響應時間等。能夠根據業務的須要,上報相關數據到Falcon,並經過Falcon查看結果。

2、行業監控軟件對比

 

3、Open-Falcon架構

Open-Falcon是一個比較大的分佈式系統,有十幾個組件。按照功能,這十幾個組件能夠劃分爲 基礎組件、做圖鏈路組件和報警鏈路組件,其安裝部署的架構以下圖所示,

 

4、Open-Falcon部署

一、單機部署

分爲前端(客戶端)和後端(服務端)

後端部署:

參考官方文檔: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

5、Open-Falcon相關連接

一、FAQ問題

  • Q: open-falcon v0.2 有管理員賬號嗎?
  • A: 能夠經過dashboard自行註冊新用戶,第一個用戶名爲root的賬號會被認爲是超級管理員,超級管理員能夠設置其餘用戶爲管理員。
  • Q: open-falcon v0.2 dashboard 能夠禁止用戶本身註冊嗎?
  • A: 能夠的,在api組件的配置文件中,將signup_disable配置項修改成true,重啓api便可。

二、相關連接

開發歷程:

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

相關文章
相關標籤/搜索