标签:ntp 恢复 png 初始化 txt 插件 init.d 转发 来讲
监控系统是整个运维环节,乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供翔实的数据用于追查定位问题。监控系统作为一个成熟的运维产品,业界有很多开源的实现可供选择。当公司刚刚起步,业务规模较小,运维团队也刚刚建立的初期,选择一款开源的监控系统,是一个省时省力,效率最高的方案。之后,随着业务规模的持续快速增长,监控的对象也越来越多,越来越复杂,监控系统的使用对象也从最初少数的几个SRE,扩大为更多的DEVS,SRE。这时候,监控系统的容量和用户的“使用效率”成了最为突出的问题。
监控系统业界有很多杰出的开源监控系统。我们在早期,一直在用zabbix,不过随着业务的快速发展,以及互联网公司特有的一些需求,现有的开源的监控系统在性能、扩展性、和用户的使用效率方面,已经无法支撑了。
因此,我们在过去的一年里,从互联网公司的一些需求出发,从各位SRE、SA、DEVS的使用经验和反馈出发,结合业界的一些大的互联网公司做监控,用监控的一些思考出发,设计开发了小米的监控系统:Open-Falcon。
备注:虚线所在的aggregator组件还在设计开发阶段。
每台服务器,都有安装falcon-agent,falcon-agent是一个golang开发的daemon程序,用于自发现的采集单机的各种数据和指标,这些指标包括不限于以下几个方面,共计200多项指标。
只要安装了falcon-agent的机器,就会自动开始采集各项指标,主动上报,不需要用户在server做任何配置(这和zabbix有很大的不同),这样做的好处,就是用户维护方便,覆盖率高。当然这样做也会server端造成较大的压力,不过open-falcon的服务端组件单机性能足够高,同时都可以水平扩展,所以自动多采集足够多的数据,反而是一件好事情,对于SRE和DEV来讲,事后追查问题,不再是难题。
另外,falcon-agent提供了一个proxy-gateway,用户可以方便的通过http接口,push数据到本机的gateway,gateway会帮忙高效率的转发到server端。
falcon-agent,可以在github上找到:https://github.com/open-falcon/agent
系统环境:CentOS 7
[root@Open-falcon ~]# hostname Open-falcon
[root@Open-falcon ~]# cd /etc/yum.repos.d/
[root@Open-falcon yum.repos.d]# mkdir bak && mv * ./bak
[root@Open-falcon yum.repos.d]# curl -O
http://mirrors.aliyun.com/repo/Centos-7.repo
[root@Open-falcon yum.repos.d]# yum clean all
[root@Open-falcon yum.repos.d]# yum makecache
[root@Open-falcon yum.repos.d]# yum -y update //更新所有包
[root@Open-falcon ~]# yum -y install epel-release //因为官方yum和阿里yum都没有go的安装包,故只能通过fedora的epel仓库来安装
[root@Open-falcon ~]# yum -y install go
#安装之后确认安装后的版本是不是>=1.6版本(官方需求)
[root@Open-falcon ~]# go version
go version go1.8.3 linux/amd64
由于部署go时已经安装了epel,故直接执行下面的安装命令。
[root@Open-falcon ~]# yum -y install redis
[root@Open-falcon ~]# systemctl start redis
[root@Open-falcon ~]# systemctl enable redis //开机启动
[root@Open-falcon ~]# systemctl status redis //查看状态
redis.service - Redis persistent key-value database
Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/redis.service.d
└─limit.conf
Active: active (running) since Sun 2018-04-29 09:30:00 EDT; 2h 24min ago
Main PID: 35732 (redis-server)
CGroup: /system.slice/redis.service
└─35732 /usr/bin/redis-server 127.0.0.1:6379
包名:mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz(331MB)
[root@Open-falcon ~]# tar xf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
[root@Open-falcon ~]# cp -r mysql-5.6.40-linux-glibc2.12-x86_64 -C /usr/local/mysql
[root@Open-falcon ~]# useradd -M -s /sbin/nologin mysql
[root@Open-falcon ~]# chown mysql:mysql /usr/local/mysql/ -R
[root@Open-falcon ~]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
[root@Open-falcon ~]# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
[root@Open-falcon ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@Open-falcon ~]# chmod +x /etc/init.d/mysqld
[root@Open-falcon ~]# /etc/init.d/mysqld start
[root@Open-falcon ~]# netstat -antup | grep :::3306
tcp6 0 0 :::3306 :::* LISTEN 60648/mysqld
[root@Open-falcon ~]# mkdir falcon-plus
[root@Open-falcon ~]# cd falcon-plus
[root@Open-falcon falcon-plus]# unzip falcon-plus-master.zip
[root@Open-falcon falcon-plus]# cd falcon-plus-master/scripts/mysql/db_schema/
[root@Open-falcon db_schema]# ll
total 24
-rw-r--r--. 1 root root 1952 Apr 8 02:44 1_uic-db-schema.sql
-rw-r--r--. 1 root root 7573 Apr 8 02:44 2_portal-db-schema.sql
-rw-r--r--. 1 root root 3391 Apr 8 02:44 3_dashboard-db-schema.sql
-rw-r--r--. 1 root root 1807 Apr 8 02:44 4_graph-db-schema.sql
-rw-r--r--. 1 root root 2560 Apr 8 02:44 5_alarms-db-schema.sql
[root@Open-falcon db_schema]# mysql -u root -p < 1_uic-db-schema.sql
[root@Open-falcon db_schema]# mysql -u root -p < 2_portal-db-schema.sql
[root@Open-falcon db_schema]# mysql -u root -p < 3_dashboard-db-schema.sql
[root@Open-falcon db_schema]# mysql -u root -p < 4_graph-db-schema.sql
[root@Open-falcon db_schema]# mysql -u root -p < 5_alarms-db-schema.sql
[root@Open-falcon db_schema]# mysql -uroot -e ‘show databases‘
+--------------------+
| Database |
+--------------------+
| information_schema |
| alarms |
| dashboard |
| falcon_portal |
| graph |
| mysql |
| performance_schema |
| test |
| uic |
+--------------------+
6. 安装Open-falcon(两种安装方式)
a. 源码安装
参考:
https://book.open-falcon.org/zh_0_2/quick_install/prepare.html
b. 二进制版本安装
[root@Open-falcon ~]# WORKSPACE=/opt/work/
[root@Open-falcon ~]# mkdir $WORKSPACE
[root@Open-falcon ~]# cd /opt/work/
[root@Open-falcon work]# tar xf open-falcon-v0.2.1.tar.gz
[root@Open-falcon work]# rm -f open-falcon-v0.2.1.tar.gz
[root@Open-falcon work]# vim aggregator/config/cfg.json
"addr": "root:@tcp(127.0.0.1:3306)/falcon_portal?loc=Local&parseTime=true",
检查以上内容的 root:password(如果没有密码就去掉password),服务器IP地址及端口
检查的模块配置文件列表如下:
模块 |
配置文件所在路径 |
aggregator |
/opt/work/aggregator/config/cfg.json |
graph |
/opt/work/graph/config/cfg.json |
hbs |
/opt/work/hbs/config/cfg.json |
nodata |
/opt/work/nodata/config/cfg.json |
api |
/opt/work/api/config/cfg.json |
alarm |
/opt/work/alarm/config/cfg.json |
[root@Open-falcon work]# ./open-falcon
Usage:
open-falcon [flags]
open-falcon [command]
Available Commands:
check Check the status of Open-Falcon modules
help Help about any command
monitor Display an Open-Falcon module‘s log
reload Reload an Open-Falcon module‘s configuration file
restart Restart Open-Falcon modules
start Start Open-Falcon modules
stop Stop Open-Falcon modules
[root@Open-falcon ~]# export FRONTSPACE=/opt/front/open-falcon [root@Open-falcon ~]# mkdir -p $FRONTSPACE
[root@Open-falcon open-falcon]# unzip dashboard-master.zip
[root@Open-falcon open-falcon]# mv dashboard-master dashboard && rm -f dashboard-master.zip
[root@Open-falcon open-falcon]# yum install -y python-virtualenv
[root@Open-falcon open-falcon]# yum install -y python-devel
[root@Open-falcon open-falcon]# yum install -y openldap-devel
[root@Open-falcon open-falcon]# yum install -y mysql-devel
[root@Open-falcon open-falcon]# yum -y groupinstall "Development tools"
[root@Open-falcon open-falcon]# cd dashboard/
[root@Open-falcon dashboard]# virtualenv ./env
[root@Open-falcon dashboard]# ./env/bin/pip install -r pip_requirements.txt
dashboard的配置文件在/opt/front/open-falcon/dashboard/rrd/config.py,需要根据实际情况对内部配置进行修改。
由于前端后台搭在一台服务器里,且暂时不接入LDAP,且数据库root的密码为空,故先不修改配置文件。
[root@Open-falcon dashboard]# bash control # 以下参数
start|stop|restart|status|tail|kill9|version|pack
[root@Open-falcon dashboard]# ./env/bin/python wsgi.py
dashbord没有默认创建任何账号包括管理账号,需要你通过页面进行注册账号。
想拥有管理全局的超级管理员账号,需要手动注册用户名为root的账号(第一个帐号名称为root的用户会被自动设置为超级管理员)。
超级管理员可以给普通用户分配权限管理。
小提示:注册账号能够被任何打开dashboard页面的人注册,所以当给相关的人注册完账号后,需要去关闭注册账号功能。只需要去修改api组件的配置文件cfg.json,将signup_disable配置项修改为true,重启api即可。当需要给人开账号的时候,再将配置选项改回去,用完再关掉即可。
falcon的报警接收人不是一个具体的手机号,也不是一个具体的邮箱,因为手机号、邮箱都是容易发生变化的,如果变化了去修改所有相关配置那就太麻烦了。我们把用户的联系信息维护在一个叫 帐户/Profile 里,以后如果要修改手机号、邮箱,只要修改自己的帐户信息即可。报警接收人也不是单个的人,而是一个组(Teams),比如falcon这个系统的任何组件出问题了,都应该发报警给falcon的运维和开发人员,发给falcon这个团队,这样一来,新员工入职只要加入falcon这个Team即可;员工离职,只要从falcon这个Team删掉即可。
浏览器访问UIC,如果启用了LDAP,那就用LDAP账号登陆,如果没有启用,那就注册一个或者找管理员帮忙开通。创建一个Team,名称姑且叫falcon,把自己加进去,待会用来做测试。
首先修改帐户信息,保证邮箱和手机号正确 然后添加报警组,添加成员。
比如我们要对falcon-judge这个组件做端口监控,那首先创建一个HostGroup,把所有部署了falcon-judge这个模块的机器都塞进去,以后要扩容或下线机器的时候直接从这个HostGroup增删机器即可,报警策略会自动生效、失效。咱们为这个HostGroup取名为:sa.dev.falcon.judge,这个名称有讲究,sa是我们部门,dev是我们组,falcon是项目名,judge是组件名,传达出了很多信息,这样命名比较容易管理,推荐大家这么做。
在往组里加机器的时候如果报错,需要检查portal的数据库中host表,看里边是否有相关机器。那host表中的机器从哪里来呢?agent有个heartbeat(hbs)的配置,agent每分钟会发心跳给hbs,把自己的ip、hostname、agent version等信息告诉hbs,hbs负责写入host表。如果host表中没数据,需要检查这条链路是否通畅。
portal最上面有个Templates链接,这就是策略模板管理的入口。我们进去之后创建一个模板,名称姑且也叫:sa.dev.falcon.judge.tpl,与HostGroup名称相同,在里边配置一个端口监控,通常进程监控有两种手段,一个是进程本身是否存活,一个是端口是否在监听,此处我们使用端口监控。
右上角那个加号按钮是用于增加策略的,一个模板中可以有多个策略,此处我们只添加了一个。下面可以配置报警接收人,此处填写的是falcon,这是之前在UIC中创建的Team。
一个模板是可以绑定到多个HostGroup的,现在我们重新回到HostGroups页面,找到sa.dev.falcon.judge这个HostGroup,右侧有几个超链接,点击【templates】进入一个新页面,输入模板名称,绑定一下就行了。
上面步骤做完了,也就配置完了。如果judge组件宕机,端口不再监听了,就会报警。不过大家不要为了测试报警效果,直接把judge组件给干掉了,因为judge本身就是负责判断报警的,把它干掉了,那就没法判断了……所以说falcon现在并不完善,没法用来监控本身的组件。为了测试,大家可以修改一下端口监控的策略配置,改成一个没有在监听的端口,这样就触发报警了。
上面的策略只是对falcon-judge做了端口监控,那如果我们要对falcon这个项目的所有机器加一些负载监控,应该如何做呢?
附:sa.dev.falcon.common的配置样例
大家可能不知道各个指标分别叫什么,自己push的数据肯定知道自己的metric了,agent push的数据可以参考:https://github.com/open-falcon/agent/tree/master/funcs
策略表达式,即expression,具体可以参考 HostGroup与Tags设计理念,这里只是举个例子:
上例中的配置传达出的意思是:endpoint=aggregator 并且 metric=cpu.busy 的所有的监控指标,只要连续3次 >= 0.5 则报警给falcon-test1这个报警组。
expression无需绑定到HostGroup,enjoy it
标签:ntp 恢复 png 初始化 txt 插件 init.d 转发 来讲
原文地址:https://www.cnblogs.com/msl23/p/9045486.html