Open-falcon监控
https://book.open-falcon.org/zh_0_2/
本文档记录了CentOS7.4下open-falcon-v2监控系统的部署流程,以及一些需要注意的地方。
环境准备
安装Redis
0.InstallRedis3.2.sh redis-3.2.3.tar.gz
安装mysql
略
将root让全部访问设置为%,将/tmp/mysql.sock链接到/app/mysqldata/3306/mysql.sock,将参数bind_address=127.0.0.1
初始化MySQL表结构
cd /tmp/ && git clone git://github.com/open-falcon/falcon-plus.git
cd /tmp/falcon-plus/scripts/mysql/db_schema/
mysql -h 127.0.0.1 -uroot -pmsds007 < 1_uic-db-schema.sql
mysql -h 127.0.0.1 -uroot -pmsds007 < 2_portal-db-schema.sql
mysql -h 127.0.0.1 -uroot -pmsds007 < 3_dashboard-db-schema.sql
mysql -h 127.0.0.1 -uroot -pmsds007 < 4_graph-db-schema.sql
mysql -h 127.0.0.1 -uroot -pmsds007 < 5_alarms-db-schema.sql
rm -rf /tmp/falcon-plus/
启动后端
open-falcon-v0.2.1.tar.gz 二进制包
创建工作目录
export FALCON_HOME=/home/work
export WORKSPACE=$FALCON_HOME/open-falcon
mkdir -p $WORKSPACE
解压二进制包
tar -xzvf open-falcon-v0.2.1.tar.gz -C $WORKSPACE
在一台机器上启动所有的后端组件
修改配置文件,确认配置文件中数据库账号密码与实际相同
# cd $WORKSPACE
# grep -Ilr 3306 ./
./nodata/config/cfg.json
./graph/config/cfg.json
./hbs/config/cfg.json
./alarm/config/cfg.json
./aggregator/config/cfg.json
./api/config/cfg.json
部分模块依赖连接数据库,需要修改配置文件
vim /home/work/open-falcon/aggregator/config/cfg.json
vim /home/work/open-falcon/graph/config/cfg.json
vim /home/work/open-falcon/hbs/config/cfg.json
vim /home/work/open-falcon/nodata/config/cfg.json
vim /home/work/open-falcon/api/config/cfg.json
vim /home/work/open-falcon/alarm/config/cfg.json
启动
cd $WORKSPACE
./open-falcon start
# 检查所有模块的启动状况
./open-falcon check
falcon-graph UP 3962
falcon-hbs UP 3970
falcon-judge UP 3978
falcon-transfer UP 3984
falcon-nodata UP 3990
falcon-aggregator UP 3996
falcon-agent UP 4003
falcon-gateway UP 4009
falcon-api UP 4016
falcon-alarm UP 4024
安装前端
python2.7安装pip
# unzip setuptools-38.5.1.zip
# cd setuptools-38.5.1
# python setup.py install
# tar -zxvf pip-9.0.1.tar.gz
# cd pip-9.0.1
# python setup.py install
克隆前端组件代码
cd $WORKSPACE
git clone git://github.com/open-falcon/dashboard.git
安装依赖包
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
cd $WORKSPACE/dashboard/
virtualenv ./env
pip install -r pip_requirements.txt
ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.20
MySQL-python-1.2.5.zip会用到
修改配置
dashboard的配置文件为: '/home/work/open-falcon/dashboard/rrd/config.py',请根据实际情况修改
## API_ADDR 表示后端api组件的地址
API_ADDR = "http://127.0.0.1:8080/api/v1"
## 根据实际情况,修改PORTAL_DB_*, 默认用户名为root,默认密码为""
## 根据实际情况,修改ALARM_DB_*, 默认用户名为root,默认密码为""
在生产环境启动
bash control start
bash control tail
http://127.0.0.1:8081
系统初始化
前端用户需要注册,第一个注册的root账户就是管理员,所以第一件事就是先注册root用户密码123456

注册完root用户,最好把注册功能关闭,可以通过root创建其他用户。需要修改api模块的配置文件,signup_disable改为true就可以了
部署agent
将agent目录复制到要监控的主机上
scp -r /home/work/open-falcon/agent/ mydb2:/home/work/open-falcon
scp -r /home/work/open-falcon/agent/ mydb3:/home/work/open-falcon
将open-falcon复制到要监控的主机上
scp /home/work/open-falcon/open-falcon mydb2:/home/work/open-falcon
scp /home/work/open-falcon/open-falcon mydb3:/home/work/open-falcon
编辑配置文件
# cat cfg.json
{
"debug": true,
"hostname": "mydb2",
"ip": "192.168.1.102",
"plugin": {
"enabled": false,
"dir": "./plugin",
"git": "https://github.com/open-falcon/plugin.git",
"logs": "./logs"
},
"heartbeat": {
"enabled": true,
"addr": "192.168.1.101:6030",
"interval": 60,
"timeout": 1000
},
"transfer": {
"enabled": true,
"addrs": [
"192.168.1.101:8433"
],
"interval": 60,
"timeout": 1000
},
"http": {
"enabled": true,
"listen": ":1988",
"backdoor": false
},
"collector": {
"ifacePrefix": ["eth", "em"],
"mountPoint": []
},
"default_tags": {
},
"ignore": {
"cpu.busy": true,
"df.bytes.free": true,
"df.bytes.total": true,
"df.bytes.used": true,
"df.bytes.used.percent": true,
"df.inodes.total": true,
"df.inodes.free": true,
"df.inodes.used": true,
"df.inodes.used.percent": true,
"mem.memtotal": true,
"mem.memused": true,
"mem.memused.percent": true,
"mem.memfree": true,
"mem.swaptotal": true,
"mem.swapused": true,
"mem.swapfree": true
}
}
/home/work/open-falcon/open-falcon start agent 启动进程
/home/work/open-falcon/open-falcon stop agent 停止进程
/home/work/open-falcon/open-falcon monitor agent 查看日志
mydb1是单MySQL
mydb2,mydb3是复制
监控MySQL
# tar -zxvf mymon.tar.gz
修改配置文件
# cat mon.cfg
[default]
log_file=/soft/mymon.log
# Panic 0
# Fatal 1
# Error 2
# Warn 3
# Info 4
# Debug 5
log_level=5
falcon_client=http://127.0.0.1:1988/v1/push
#自定义endpoint
endpoint=mydb2
[mysql]
user=root
password=msds007
host=127.0.0.1
port=3306
# cat slavestatus.sh
#!/bin/bash
source /etc/profile
ts=`date +%s`;
MySql_CMD="/usr/local/mysql/bin/mysql"
User=root
passwd=msds007
LogLevel="error"
#LogLevel="debug"
Endpoint=`hostname`
Port=3306
Slave_IO_Metric="Slave_IO_Status"
Slave_SQL_Metric="Slave_SQL_Status"
Normal_Value=1
NonNormal_Value=0
CurrentPath=$(dirname $0)
Logfile=$CurrentPath/out.log
#Ip_Address=`ifconfig -a|grep "inet addr"|grep 10|awk '{print $2}'|cut -d : -f 2`
Ip_Address=127.0.0.1
IOSTATUS=`$MySql_CMD -u$User -p$passwd -S /app/mysqldata/3306/mysql.sock -e "show slave status \G "|grep Slave_IO_Running|cut -d ':' -f 2|sed -e 's/ //g'`
SQLSTATUS=`$MySql_CMD -u$User -p$passwd -S /app/mysqldata/3306/mysql.sock -e "show slave status \G "|grep Slave_SQL_Running:|cut -d ':' -f 2|sed -e 's/ //g'`
echo $IOSTATUS
echo $SQLSTATUS
if [ "$LogLevel" == "debug" ]; then
if [ "$IOSTATUS" == ""Yes ]; then
echo "curl -X POST -d "[{\"metric\": \"$Slave_IO_Metric\", \"endpoint\": \"$Endpoint\", \"timestamp\": $ts,\"step\": 60,\"value\": $Normal_Value,\"counterType\": \"GAUGE\",\"tags\": \"port=$Port\"}]" http://$Ip_Address:1988/v1/push" >> $Logfile
else
echo "curl -X POST -d "[{\"metric\": \"$Slave_IO_Metric\", \"endpoint\": \"$Endpoint\", \"timestamp\": $ts,\"step\": 60,\"value\": $NonNormal_Value,\"counterType\": \"GAUGE\",\"tags\": \"port=$Port\"}]" http://$Ip_Address:1988/v1/push" >> $Logfile
fi
if [ "$SQLSTATUS" == ""Yes ]; then
echo "curl -X POST -d "[{\"metric\": \"$Slave_SQL_Metric\", \"endpoint\": \"$Endpoint\", \"timestamp\": $ts,\"step\": 60,\"value\": $Normal_Value,\"counterType\": \"GAUGE\",\"tags\": \"port=$Port\"}]" http://$Ip_Address:1988/v1/push" >> $Logfile
else
echo "curl -X POST -d "[{\"metric\": \"$Slave_SQL_Metric\", \"endpoint\": \"$Endpoint\", \"timestamp\": $ts,\"step\": 60,\"value\": $NonNormal_Value,\"counterType\": \"GAUGE\",\"tags\": \"port=$Port\"}]" http://$Ip_Address:1988/v1/push" >> $Logfile
fi
else
if [ "$IOSTATUS" == ""Yes ]; then
curl -X POST -d "[{\"metric\": \"$Slave_IO_Metric\", \"endpoint\": \"$Endpoint\", \"timestamp\": $ts,\"step\": 60,\"value\": $Normal_Value,\"counterType\": \"GAUGE\",\"tags\": \"port=$Port\"}]" http://$Ip_Address:1988/v1/push
else
curl -X POST -d "[{\"metric\": \"$Slave_IO_Metric\", \"endpoint\": \"$Endpoint\", \"timestamp\": $ts,\"step\": 60,\"value\": $NonNormal_Value,\"counterType\": \"GAUGE\",\"tags\": \"port=$Port\"}]" http://$Ip_Address:1988/v1/push
fi
if [ "$SQLSTATUS" == ""Yes ]; then
curl -X POST -d "[{\"metric\": \"$Slave_SQL_Metric\", \"endpoint\": \"$Endpoint\", \"timestamp\": $ts,\"step\": 60,\"value\": $Normal_Value,\"counterType\": \"GAUGE\",\"tags\": \"port=$Port\"}]" http://$Ip_Address:1988/v1/push
else
curl -X POST -d "[{\"metric\": \"$Slave_SQL_Metric\", \"endpoint\": \"$Endpoint\", \"timestamp\": $ts,\"step\": 60,\"value\": $NonNormal_Value,\"counterType\": \"GAUGE\",\"tags\": \"port=$Port\"}]" http://$Ip_Address:1988/v1/push
fi
fi
crontab中
* * * * * /soft/mymon -c /soft/etc/mon.cfg
* * * * * sh /soft/etc/slavestatus.sh
添加模板,添加主机组,添加screen
模板








主机组

Screen->Graph部分

Com_delete/port=3309
Com_insert/port=3309
Com_select/port=3309
Com_update/port=3309
Innodb_row_lock_current_waits/port=3309
Innodb_row_lock_time/port=3309
Innodb_row_lock_time_avg/port=3309
Innodb_row_lock_time_max/port=3309
Innodb_row_lock_waits/port=3309
Innodb_rows_deleted/port=3309
Innodb_rows_inserted/port=3309
Innodb_rows_updated/port=3309
Queries/port=3309
Questions/port=3309
Seconds_Behind_Master/port=3309
Slave_IO_Status/port=3309
Slave_SQL_Status/port=3309
Slow_queries/port=3309
Threads_connected/port=3309
Threads_running/port=3309
cpu.idle
disk.io.read_bytes/device=sdb
disk.io.read_requests/device=sdb
disk.io.util/device=sdb
disk.io.write_bytes/device=sdb
disk.io.write_requests/device=sdb
innodb_autoinc_lock_mode/port=3309
innodb_lock_wait_timeout/port=3309
mem.memfree.percent
mem.swapfree.percent
mem.swapused.percent
Innodb_row_lock_current_waits:当前正在等待锁定的数量;
Innodb_row_lock_time :从系统启动到现在锁定的总时间长度,单位ms;
Innodb_row_lock_time_avg :每次等待所花平均时间;
Innodb_row_lock_time_max:从系统启动到现在等待最长的一次所花的时间;
Innodb_row_lock_waits :从系统启动到现在总共等待的次数
监控Redis
下载相关脚本
测试运行
根据实际部署情况,修改有注释位置附近的配置
测试: python redis-monitor.py
将脚本加入crontab执行即可
* * * * * /usr/bin/python /soft/redis-monitor.py
注意redis-cli全路径,修改redis-monitor.py
注意redis.conf全路径,修改redis-monitor.py
启动redis
/usr/local/redis/bin/redis-server /etc/redis/6379.conf
监控MongoDB
Python 2.6
PyYAML > 3.10
python-requests > 0.11
pip install pyyaml
pip install requests
pip install pymongo
解压目录到/soft/mongomon
配置当前服务器的MongoDB多实例(mongod,配置节点,mongos)信息,/soft/mongomon/conf/mongomon.conf 每行记录一个实例: 端口,用户名,密码
{port: 27017, user: "root",password: "abc123"}
配置crontab, 修改mongomon/conf/mongomon_cron文件中mongomon安装path; cp mongomon_cron /etc/cron.d/
几分钟后,可从open-falcon的dashboard中查看MongoDB metric
endpoint默认是hostname
启动MongoDB
/usr/local/mongodb/bin/mongod -f /app/mongodb/27017/mongodb.config
Open-falcon监控的更多相关文章
- falcon监控指标
mysql监控指标: 流量状态: Bytes_received/s #平均每秒从所有客户端接收到的字节数,单位KB Bytes_sent/s #平均每秒发送给所有客户端的字节数,单位KB
- [转]彻底征服 Spring AOP 之 实战篇
Spring AOP 实战 看了上面这么多的理论知识, 不知道大家有没有觉得枯燥哈. 不过不要急, 俗话说理论是实践的基础, 对 Spring AOP 有了基本的理论认识后, 我们来看一下下面几个具体 ...
- 161110、彻底征服 Spring AOP 之 实战篇
Spring AOP 实战 看了上面这么多的理论知识, 不知道大家有没有觉得枯燥哈. 不过不要急, 俗话说理论是实践的基础, 对 Spring AOP 有了基本的理论认识后, 我们来看一下下面几个具体 ...
- 彻底征服 Spring AOP 之 实战篇
Spring AOP 实战 看了上面这么多的理论知识, 不知道大家有没有觉得枯燥哈. 不过不要急, 俗话说理论是实践的基础, 对 Spring AOP 有了基本的理论认识后, 我们来看一下下面几个 ...
- python open-falcon docker.WEB developers---flask,---django.
http://www.verydemo.com/demo_c281_i2477.html (python Gevent – 高性能的Python并发框架) http://www.django-rest ...
- ELK初步指南
ELK的简单科普文章,加入了自己的一些理解. 内容包括ELK的基本介绍, 应用场景, 架构设计, 监控及自监控, 业界进展及推荐资料等. 用户故事 场景一 作为一个运维工程师, 某天虚拟机出现故障, ...
- Spring AOP 实战运用
Spring AOP 实战 看了上面这么多的理论知识, 不知道大家有没有觉得枯燥哈. 不过不要急, 俗话说理论是实践的基础, 对 Spring AOP 有了基本的理论认识后, 我们来看一下下面几个具体 ...
- Hive SQL 监控系统 - Hive Falcon
1.概述 在开发工作当中,提交 Hadoop 任务,任务的运行详情,这是我们所关心的,当业务并不复杂的时候,我们可以使用 Hadoop 提供的命令工具去管理 YARN 中的任务.在编写 Hive SQ ...
- Linux记录-JMX监控Tomcat上传到falcon
1.登录测试服务器xxxxxx xxxxxx su root输入xxxx 2.先修改Tomcat的启动脚本,(linux下为catalina.sh),添加以下内容: CATALINA_OPTS=&qu ...
- IT运维监控解决方案介绍
现状 •小公司/ 创业团队< 500台服务器规模 开源方案:Zabbix.Nagios.Cacti- 云服务提供商:监控宝.oneAlert等 •BAT级别> 10万台服务器 投 ...
随机推荐
- CodeForces 754C Vladik and chat ——(xjbg)
虽然是xjbg的题目,但是并不很好做. 题意不难理解.读入有点麻烦.做法是先正着推每段对话的?可能是谁说的,然后反过来选择即可.正推时,其中vis数组表示谁已经被用过了,cnt表示该组当前可以选择几个 ...
- java什么时候进行垃圾回收,垃圾回收的执行流程
java的垃圾回收分为 三个区域新生代 老年代 永久代 一个对象实例化时 先去看伊甸园有没有足够的空间如果有 不进行垃圾回收 ,对象直接在伊甸园存储.如果伊甸园内存已满,会进行一次minor gc然后 ...
- ci 框架中defined('BASEPATH') OR exit('No direct script access allowed');
作用: OR 就是前面的是true时,就不走后面了. 加这个是为了防止不是从index.php访问到的控制器
- 1.4 Go语言基础之流程控制
流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的"经脉". Go语言中最常用的流程控制有if和for,而switch和goto主要是为了简化代码. ...
- VC 实现程序只运行一个实例,并激活已运行的程序
转载:http://blog.sina.com.cn/s/blog_4b44e1c00100bh69.html 进程的互斥运行:CreateMutex函数实现只运行一个程序实例 正常情况下,一个进程的 ...
- go命令行参数
go命令行参数例子: package main import( "fmt" "os" "strings" ) func main(){ wh ...
- Ubuntu16.04.3安装并配置samba方法
目的:单个Linux用户可以在windows电脑上通过映射网络驱动器的方式来访问自己的工作目录. 方法如下: 1.安装smb服务器:apt-get install samba2.安装smb支持的文件系 ...
- Hibernate3核心API-SessionFactory接口
Configuration对象根据当前的配置信息生成 SessionFactory 对象.SessionFactory 对象一旦构造完毕,即被赋予特定的配置信息(SessionFactory 对象中保 ...
- 001-tomcat下载、解压、启动、开机启动
一.tomcat作用 Tomcat就是Servlet容器 下载解压 下载:找到合适版本下载使用即可 http://tomcat.apache.org/ window 下载zip解压 linux上使用 ...
- 侧方、s弯道、坡起相关
侧方: 方向盘上端对准路中箭头直行,当前面箭头头部尖角刚刚消失,停车,挂倒档,倒,当箭头尾部快要消失时右打死,侧身看左后视镜(这时可以稍微踩一下离合控制速度为低速),当出现库底角回正,坐直,当左侧第一 ...