Centos7部署open-falcon 0.2
参考:
https://www.cnblogs.com/straycats/p/7199209.html
http://book.open-falcon.org/zh_0_2/quick_install/prepare.html
更新说明:
2017/12/06: 由于open-falcon已有0.2.1,增加文字说明,避免命令一路执行下来出现问题(例如“2.2 解压二进制包”)。
===============================================
我也是因为工作需要刚刚接触linux,有些内容也是一知半解无法描述清楚,只能日后再进行补充。
官方和github上都有教程,但是对于我来说有的部署内容较为陌生,有点错误官方也未在教程中说明,故在此记录方便以后快速部署,本文部署的时间是2017/7/18。
虽然open-falcon是采用了前后端分离的架构,但是为了方便部署,服务端的后端与前端均部署在同一个虚拟机内,本记录是从centos刚刚装完后的初始环境开始部署,安装全程选择的用户为root。
一、环境准备
操作系统:centos7(minimal,www.centos.org下载的包是CentOS-7-x86_64-Minimal-1611.iso)
1.1 更换阿里yum(个人习惯)
步骤:
1)下载wget
yum install -y wget
2)备份默认的yum
mv /etc/yum.repos.d /etc/yum.repos.d.backup
3)设置新的yum目录
mkdir /etc/yum.repos.d
4)下载阿里yum配置到该目录中
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
5)重建缓存
yum clean all
yum makecache
6)升级所有包(改变软件设置和系统设置,系统版本内核都升级,故需要几分钟耐心等待)
yum update -y
1.2 安装vim(个人习惯)
yum install -y vim
1.3 安装git
yum install -y git
安装结束后安全起见,确认是否满足官方要求的Git >= 1.7.5
git version
1.4 安装go语言环境(因为官方yum和阿里yum都没有go的安装包,故只能通过fedora的epel仓库来安装)
yum install -y epel-release
yum install golang -y
安装结束后安全起见,确认是否满足官方要求的Go >= 1.6
go version
1.5 安装redis
由于部署go时已经安装了epel,故直接执行下面的安装命令(如果没有装epel,会提示No package redis available,也就是没有安装包可用,因为官方yum和阿里yum都没有redis,故只能通过fedora的epel仓库来安装)
yum install redis -y
启动redis
systemctl start redis
设置redis开机启动
systemctl enable redis
可以用下面的语句查看redis是否开启
systemctl status redis
1.6 安装mysql
步骤:
1)下载repo源
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
2)安装该rpm包(安装这个包后,会获得两个mysql的yum repo源:/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo)
rpm -ivh mysql-community-release-el7-5.noarch.rpm
3)安装mysql
yum install mysql-server -y
4)启动mysql
systemctl start mysql
可以用下面的语句查看mysql是否开启
systemctl status mysql
1.7 设置环境变量GOROOT和GOPATH
export GOROOT=/usr/lib/golang
export GOPATH=/home
1.8 将open-falcon的源码从github上get下来
步骤:
1)创建GOPATH下的一个本地的路径
mkdir -p $GOPATH/src/github.com/open-falcon
2)进入该路径
cd $GOPATH/src/github.com/open-falcon
3)将源码get到本地
git clone https://github.com/open-falcon/falcon-plus.git
1.9 初始化数据库
cd $GOPATH/src/github.com/open-falcon/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
再运行“mysql -h..................”时会提示“Enter password”,如果mysql的root没有设置密码,回车即可。
1.10 编译源码并打包
步骤:
1)进入本地源码路径下
cd $GOPATH/src/github.com/open-falcon/falcon-plus/
2)使用go get获取rrdtool工具包(make过程卡壳的一个点)
go get github.com/open-falcon/rrdlite
这一步是官方教程没有提到的内容,如果不获取该工具包make的时候会报错。
3)编译所有模块
make all
4)打包
make pack
在$GOPATH/src/github.com/open-falcon/falcon-plus/目录下就多了刚才的压缩包“open-falcon-v0.2.0.tar.gz”。
1.11 官方提供的安装包
https://book.open-falcon.org/zh_0_2/quick_install/prepare.html中官方有提供编译包,如果编译过程不顺利可以直接下载编译包。
二、部署后端
2.1 创建工作目录
export WORKSPACE=/home/work
mkdir -p $WORKSPACE
2.2 解压二进制包(包名根据实际进行修改)
由于我是根据本教程编译源码获得的压缩包,故需要切换到“$GOPATH/src/github.com/open-falcon/falcon-plus/”路径下。
包名由于make pack的时候就是open-falcon-v0.2.0.tar.gz,具体根据实际情况(17/12/6再部署时发现官方已有0.2.1)。
cd $GOPATH/src/github.com/open-falcon/falcon-plus/
tar -xzvf open-falcon-v0.2.0.tar.gz -C $WORKSPACE
2.3 修改配置文件cfg.json
猜测部分模块依赖连接数据库,因为如果不修改配置文件,aggregator模块会出现无法启动,graph、hbs、nodata、api、alarm模块会出现开启不报错但是状态为开启失败的情况。(个人认为这块的设计值得作为open-falcon优化的一个点,连接本机mysql如果失败是可以收到错误提示的,第一时间有报错提示总比什么都不显示或显示开启但实际开启失败强,如果别人服务都不知道怎么开起来,系统功能再强大有多少人硬着头皮部署下去而不是选择换个系统试试呢)
如果需要每个模块都能正常启动,需要将上面模块的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”。
2.4 启动后端模块
cd $WORKSPACE
./open-falcon start
可以用下面的命令检查各个模块的启动情况
./open-falcon check
更多命令的用法(命令的例子是启动agent模块)
# ./open-falcon [start|stop|restart|check|monitor|reload] module
./open-falcon start agent
./open-falcon check
falcon-graph UP 53007
falcon-hbs UP 53014
falcon-judge UP 53020
falcon-transfer UP 53026
falcon-nodata UP 53032
falcon-aggregator UP 53038
falcon-agent UP 53044
falcon-gateway UP 53050
falcon-api UP 53056
falcon-alarm UP 53063
For debugging , You can check $WorkDir/$moduleName/log/logs/xxx.log
三、部署前端
3.1 创建工作目录
export FRONTSPACE=/home/front/open-falcon
mkdir -p $FRONTSPACE
3.2 获取前端代码
cd $FRONTSPACE
git clone https://github.com/open-falcon/dashboard.git
3.3 安装依赖包
yum install -y python-devel
yum install -y openldap-devel
yum install -y mysql-devel
yum groupinstall "Development tools" -y cd $FRONTSPACE/dashboard/
virtualenv ./env 安装并升级pip:
方法一:
yum -y install epel-release
yum install python-pip
pip install --upgrade pippip install -r pip_requirements.txt -i https://pypi.douban.com/simple 方法二: yum -y install epel-release
yum install python-pip
./env/bin/pip install --upgrade pip
./env/bin/pip install -r pip_requirements.txt -i https://pypi.douban.com/simple
方法三:
wget https://files.pythonhosted.org/packages/69/81/52b68d0a4de760a2f1979b0931ba7889202f302072cc7a0d614211bc7579/pip-18.0.tar.gz
tar zxvf pip-18.0.tar.gz
cd
pip-18.0.tar.gz
python setup.py install
3.4 修改配置
根据本次记录的配置,dashboard的配置文件在/home/front/open-falcon/dashboard/rrd/config.py,需要根据实际情况对内部配置进行修改。
由于前端后台搭在一台虚拟机里,且暂时不接入LDAP,且数据库root的密码为空,故先不修改配置文件。
3.5 开启8081端口
1)防火墙添加8081端口永久开放
firewall-cmd --add-port=8081/tcp --permanent
2)重新载入防火墙配置
firewall-cmd --reload
3.6 在生产环境启动
bash control start
由于虚拟机ip配置为192.168.3.1,故在浏览器中输入192.168.3.1:8081后跳转。
3.7 以开发者模式启动
./env/bin/python wsgi.py
四:open-falcon 部署 agent(远程被监控端为Centos7)
4.1参照第三步配置前端项目:
4.1.1 创建工作目录 export FRONTSPACE=/home/front/open-falcon
mkdir -p $FRONTSPACE 4.1.2 获取前端代码 cd $FRONTSPACE
git clone https://github.com/open-falcon/dashboard.git 4.1.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 cd $FRONTSPACE/dashboard/
virtualenv ./env 安装并升级pip:
方法一:
yum -y install epel-release
yum install python-pip
pip install --upgrade pip
pip install -r pip_requirements.txt -i https://pypi.douban.com/simple
yum clean all
方法二:
yum -y install epel-release yum install python-pip
./env/bin/pip install --upgrade pip
./env/bin/pip install -r pip_requirements.txt -i https://pypi.douban.com/simpl
yum clean all 方法三:
wget https://files.pythonhosted.org/packages/69/81/52b68d0a4de760a2f1979b0931ba7889202f302072cc7a0d614211bc7579/pip-18.0.tar.gz
tar -zxvfpip-18.0.tar.gz
cd pip-18.0.tar.gz
python setup.py install
4.1.4 修改配置 根据本次记录的配置,dashboard的配置文件在/home/front/open-falcon/dashboard/rrd/config.py,需要根据实际情况对内部配置进行修改。 由于前端后台搭在一台虚拟机里,且暂时不接入LDAP,且数据库root的密码为空,故先不修改配置文件。
# Falcon+ API 172.16.8.63 为监控服务器IP
API_ADDR = os.environ.get("API_ADDR","http://172.16.8.63:8080/api/v1")
# portal database
# TODO: read from api instead of db
PORTAL_DB_HOST = os.environ.get("PORTAL_DB_HOST","172.16.8.63")
PORTAL_DB_PORT = int(os.environ.get("PORTAL_DB_PORT",3306))
PORTAL_DB_USER = os.environ.get("PORTAL_DB_USER","root")
PORTAL_DB_PASS = os.environ.get("PORTAL_DB_PASS","密码")
PORTAL_DB_NAME = os.environ.get("PORTAL_DB_NAME","falcon_portal")
# alarm database
# TODO: read from api instead of db
ALARM_DB_HOST = os.environ.get("ALARM_DB_HOST","172.16.8.63")
ALARM_DB_PORT = int(os.environ.get("ALARM_DB_PORT",3306))
ALARM_DB_USER = os.environ.get("ALARM_DB_USER","root")
ALARM_DB_PASS = os.environ.get("ALARM_DB_PASS","密码")
ALARM_DB_NAME = os.environ.get("ALARM_DB_NAME","alarms")
4.1.5 开启端口
1)防火墙添加8081端口永久开放
firewall-cmd --add-port=8081/tcp --permanent 4.1.6 在生产环境启动 bash control start
由于虚拟机ip配置为192.168.3.1,故在浏览器中输入192.168.3.1:8081后跳转。 4.1.7 以开发者模式启动 ./env/bin/python wsgi.py
方法三:
wget https://files.pythonhosted.org/packages/69/81/52b68d0a4de760a2f1979b0931ba7889202f302072cc7a0d614211bc7579/pip-18.0.tar.gz
tar -zxvfpip-18.0.tar.gz
cd pip-18.0.tar.gz
python setup.py install
开放其他端口:
heartbeat:
firewall-cmd --zone=public --add-port=6030/tcp --permanent
transfer:
firewall-cmd --zone=public --add-port=8433/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports
4.2、 介绍agent
agent用于采集机器负载监控指标,比如cpu.idle、load.1min、disk.io.util等等,每隔60秒push给Transfer。agent与Transfer建立了长连接,数据发送速度比较快,agent提供了一个http接口/v1/push用于接收用户手工push的一些数据,然后通过长连接迅速转发给Transfer。
4.3、 部署agent
- agent需要部署到所有要被监控的机器上,比如公司有10万台机器,那就要部署10万个agent。agent本身资源消耗很少,不用担心。
- 首先找到之前后端服务的解压目录:
/home/work/open-falcon/
- 拷贝agent到需要监控的服务器上面
scp -r open-falcon root@172.16.8.64:/usr/local/work
拷贝open-falcon到需要监控的服务器上面
scp -r open-falcon root@dst1:/home/work/open-falcon
修改配置文件:
- 配置文件必须叫cfg.json,如下参照修改:
{
"debug": true, # 控制一些debug信息的输出,生产环境通常设置为false
"hostname": "", # agent采集了数据发给transfer,endpoint就设置为了hostname,默认通过`hostname`获取,如果配置中配置了hostname,就用配置中的
"ip": "", # agent与hbs心跳的时候会把自己的ip地址发给hbs,agent会自动探测本机ip,如果不想让agent自动探测,可以手工修改该配置
"plugin": {
"enabled": false, # 默认不开启插件机制
"dir": "./plugin", # 把放置插件脚本的git repo clone到这个目录
"git": "https://github.com/open-falcon/plugin.git", # 放置插件脚本的git repo地址
"logs": "./logs" # 插件执行的log,如果插件执行有问题,可以去这个目录看log
},
"heartbeat": {
"enabled": true, # 此处enabled要设置为true
"addr": "127.0.0.1:6030", # hbs的地址,端口是hbs的rpc端口
"interval": 60, # 心跳周期,单位是秒
"timeout": 1000 # 连接hbs的超时时间,单位是毫秒
},
"transfer": {
"enabled": true,
"addrs": [
"127.0.0.1:18433"
], # transfer的地址,端口是transfer的rpc端口, 可以支持写多个transfer的地址,agent会保证HA
"interval": 60, # 采集周期,单位是秒,即agent一分钟采集一次数据发给transfer
"timeout": 1000 # 连接transfer的超时时间,单位是毫秒
},
"http": {
"enabled": true, # 是否要监听http端口
"listen": ":1988",
"backdoor": false
},
"collector": {
"ifacePrefix": ["eth", "em"], # 默认配置只会采集网卡名称前缀是eth、em的网卡流量,配置为空就会采集所有的,lo的也会采集。可以从/proc/net/dev看到各个网卡的流量信息
"mountPoint": []
},
"default_tags": {
},
"ignore": { # 默认采集了200多个metric,可以通过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
}
}
4.4、 启动agent
./open-falcon start agent 启动进程
./open-falcon stop agent 停止进程
./open-falcon monitor agent 查看日志
看var目录下的log是否正常,或者浏览器访问其1988端口。另外agent提供了一个--check参数,可以检查agent是否可以正常跑在当前机器上./falcon-agent --check
五:open-falcon 部署 agent(远程被监控端为windows10)
http://book.open-falcon.org/zh_0_2/usage/win.html
- windows_collect:python脚本
- windows-agent: go 语言实现的 agent
- Windows-Agent:汽车之家开源的作为Windows Service运行的Agent,python实现。
- windows-agent:另一个 go 语言实现的 windows-agent。支持端口,进程监控,支持后台服务运行。
5.1windows_collect方法:
5.2环境准备:
5.2.1、安装python
版本:2.7.11
直接网上下载,然后点击安装就行了,非常简单
然后设置环境变量,自行百度即可。
Python2.7.11: https://www.python.org/ftp/python/2.7.11/python-2.7.11.amd64.msi
安装路径”C:\Python27\”
在环境变量path中加入python路径:
我的电脑-右键-属性-高级系统设置-环境变量-Path-新建-C:\Python27
以管理员身份运行cmd
更新pip
python -m pip install -U pip //此命令在cmd下执行,无路径要求
我的电脑-右键-属性-高级系统设置-环境变量-Path-新建-C:\Python27\Scripts
安装依赖库
pip install psutil //此命令在cmd下执行,无路径要求
pip install requests //此命令在cmd下执行,无路径要求
开启逻辑和物理磁盘计数器功能
在cmd中手动运行 ‘diskperf -y’ //此命令在cmd下执行,无路径要求
部署脚本windows_collect.py 拷贝以下代码到C:\open-falcon\work\agent目录并建立.py文件
#coding=utf8
import psutil
import time
import json
import requests
import copy cpu_interval =
push_interval =
zh_decode = "gbk"
endpoint = "YOUR_HOSTNAME"
ignore_interface = ["Loopback","Teredo Tunneling","isatap","6TO4 Adapter"]
push_url = "http://agent_host:1988/v1/push" ####################################################### def main(): ts = int(time.time())
payload = []
data = {"endpoint":endpoint,"metric":"","timestamp":ts,"step":push_interval,"value":"","counterType":"","tags":""} cpu_status = psutil.cpu_times_percent(interval=cpu_interval)
mem_status = psutil.virtual_memory()
swap_status = psutil.swap_memory()
disk_io_status = psutil.disk_io_counters(perdisk=True)
net_io_status = psutil.net_io_counters(pernic=True) data["metric"] = "cpu.user"
data["value"] = cpu_status.user
data["counterType"] = "GAUGE"
payload.append(copy.copy(data)) data["metric"] = "cpu.system"
data["value"] = cpu_status.system
payload.append(copy.copy(data)) data["metric"] = "cpu.idle"
data["value"] = cpu_status.idle
payload.append(copy.copy(data)) data["metric"] = "mem.memused.percent"
data["value"] = mem_status.percent
payload.append(copy.copy(data)) data["metric"] = "mem.swapused.percent"
data["value"] = swap_status.percent
payload.append(copy.copy(data)) disk_status = psutil.disk_partitions()
for disk in disk_status:
if 'cdrom' in disk.opts or disk.fstype == '':
continue
disk_info = psutil.disk_usage(disk.mountpoint) data["metric"] = "df.used.percent"
data["value"] = disk_info.percent
data["tags"] = "disk=" + disk.device.split(":")[]
payload.append(copy.copy(data)) data["metric"] = "df.byte.total"
data["value"] = disk_info.total
payload.append(copy.copy(data)) data["metric"] = "df.byte.used"
data["value"] = disk_info.used
payload.append(copy.copy(data)) data["metric"] = "df.byte.free"
data["value"] = disk_info.free
payload.append(copy.copy(data)) for key in disk_io_status:
#print "device_name = %s" % key
data["metric"] = "disk.io.read_count"
data["value"] = disk_io_status[key].read_count
data["tags"] = "device=" + key
data["counterType"] = "COUNTER"
payload.append(copy.copy(data)) data["metric"] = "disk.io.write_count"
data["value"] = disk_io_status[key].write_count
payload.append(copy.copy(data)) data["metric"] = "disk.io.read_bytes"
data["value"] = disk_io_status[key].read_bytes
payload.append(copy.copy(data)) data["metric"] = "disk.io.write_bytes"
data["value"] = disk_io_status[key].write_bytes
payload.append(copy.copy(data)) data["metric"] = "disk.io.read_time"
data["value"] = disk_io_status[key].read_time
payload.append(copy.copy(data)) data["metric"] = "disk.io.write_time"
data["value"] = disk_io_status[key].write_time
payload.append(copy.copy(data)) for key in net_io_status:
if is_interface_ignore(key) == True:
continue data["metric"] = "net.if.in.bytes"
data["value"] = net_io_status[key].bytes_recv
data["tags"] = "interface=" + key.decode(zh_decode)
payload.append(copy.copy(data)) data["metric"] = "net.if.out.bytes"
data["value"] = net_io_status[key].bytes_sent
payload.append(copy.copy(data)) data["metric"] = "net.if.in.packets"
data["value"] = net_io_status[key].packets_recv
payload.append(copy.copy(data)) data["metric"] = "net.if.out.packets"
data["value"] = net_io_status[key].packets_sent
payload.append(copy.copy(data)) data["metric"] = "net.if.in.error"
data["value"] = net_io_status[key].errin
payload.append(copy.copy(data)) data["metric"] = "net.if.out.error"
data["value"] = net_io_status[key].errout
payload.append(copy.copy(data)) data["metric"] = "net.if.in.drop"
data["value"] = net_io_status[key].dropin
payload.append(copy.copy(data)) data["metric"] = "net.if.out.drop"
data["value"] = net_io_status[key].dropout
payload.append(copy.copy(data))
#print json.dumps(payload,indent=)
r = requests.post(push_url, data=json.dumps(payload))
#print r.text def is_interface_ignore(key):
for ignore_key in ignore_interface:
if ignore_key in key:
return True if __name__ == "__main__":
main()
5.2.2:脚本部署及修改
脚本名称:windows_collect.py
脚本位置:C:\open-falcon\work\agent (此目录自己指定)
此脚本的主要监控项在github里面都有说明,这里就说一下需要修改的地方。
cpu_interval = 60
push_interval = 300
push_interval_agent = 60
zh_decode = "gbk"
endpoint = "******"
ignore_interface = ["Loopback","Teredo Tunneling","isatap","6TO4 Adapter"]
push_url = "
push_interval = 300
这是推送间隔,默认的是300秒
push_interval_agent = 60
这个是我自己设置的推送agent.alive的间隔,用于主机存活监测,会推送一个值为1,不需要可忽略。
endpoint = “***”
这是给该机器的配的名称,自己指定
push_url = "http://172.16.8.63:1988/v1/push"
这是推送接口,因为本身是脚本获取系统信息,需要借用其他的agent的接口来将信息推送到服务器端,这个第一次很难理解,我也是想了好久。
cpu_interval = 60
push_interval = 300
zh_decode = "gbk"
#endpoint = "YOUR_HOSTNAME"
endpoint = "logistics-01" 显示名称
ignore_interface = ["Loopback","Teredo Tunneling","isatap","6TO4 Adapter"]
#push_url = "http://agent_host:1988/v1/push" 内网
push_url = "http://110.80.23.186:1988/v1/push" 外网
增加agent.alive 主机存活的监控:
windows_collect.py脚本里并无agent.alive的监控项,但是我们如果需要监控机器的存活的话,
那么可以用一下的方法:
1、定时推送agent.alive的值到ope-falcon的服务器端
2、如果没有数据推送,在Nodata里面将agent.alive的数据设置为-1
3、配置报警规则,如果agent.alive 的值小于0,那么发送报警。
需要在脚本里增加一个推送agent.alive的函数,单独来推送
def agent_alive():
ts = int(time.time())
payload = []
data = {"endpoint":endpoint,"metric":"","timestamp":ts,"step":push_interval_agent,"value":"","counterType":"","tags":""}
data["metric"] = "agent.alive"
data["value"] = "1" 推送一个值为1
data["counterType"] = "GAUGE"
payload.append(copy.copy(data))
为什么要单独来推送呢?
因为在测试中发现,如果将agent.alive和其他的系统数据一起推送的话,推送间隔很难协调。如果设置为300秒,那么间隔太长,会触发主机存活报警,如果将设置调小的话,那么获取的其他系统数据都不完整了,所以将他们都分开来推送,agent_alive 单独设置为60秒,其他数据保持300秒。也就是最上面配置的那个
push_interval = 300
push_interval_agent = 60
最后,在main()函数执行之后,再执行agent_alive函数。
if __name__ == "__main__":
main()
agent_alive()
修改完成之后,在windows终端里面执行以下,如果没有报错,那么就没有问题,可以配置计划任务了。
第三步:配置计划任务
将脚本修改完毕之后,需要放到计划任务中执行,设置为1分钟执行一次,
1、首先建立一个批处理文件,里面就一句话
C:\Python27\python.exe C:\open-falcon\workspace\agent\windows_collect.py
2、新建计划任务
控制面板--管理工具--任务计划程序
点击创建基本任务:
填上名称
指定程序位置,也就是我们刚建立的bat文件,还要把起始于也填上,也就是bat的路径
3、修改计划任务属性
修改完毕之后,将计划任务打开就行了。
以上,windows机器的open-falcon监控就完成了,可以去web端配置报警规则以及screen了。
六:短信报警配置(使用灵犀报警平台,感谢灵犀团队!)
6.1:配置open-falcon alarm 报警模块
6.1.1:使用灵犀云通道需要配置alarm模块
vim /usr/local/work/open-falcon/alarm/config/cfg.json
灵犀token获取方法:
进入灵犀首页
https://www.linkedsee.com/
控制台-云通道-我的应用-新建应用-新建后页面上有token(注意云通道和云告警token不一样)
"api": {
"im": "http://127.0.0.1:10086/wechat",
"sms": "https://www.linkedsee.com/alarm/falcon_sms/灵犀token/alarm_sms",
"mail": "http://127.0.0.1:10086/mail",
"dashboard": "http://127.0.0.1:8081",
"plus_api":"http://127.0.0.1:8080",
"plus_api_token": "default-token-used-in-server-side"
6.1.2:使用灵犀云告警请配置open-falcon的web界面中callback地址,两个方法token不一样,请再次注意,此方法暂未测试
Open-Falcon微信告警组件
在此
感谢 @laiwei 的https://github.com/open-falcon/mail-provider 项目代码支持
感谢 @chanxuehong 老司机的微信SDK支持
申请微信企业号
在https://work.weixin.qq.com/ 注册微信企业号,不需要认证即可
配置企业号
在企业号里建立应用,依此点击:企业应用-创建应用。可见范围里添加成员 获取企业ID:点击我的企业--获取企业ID 获取应用AgentId及应用Secret
部署Falcon-wechat
Falcon-wechat可部署在Falcon-Alarm机器,也可部署在独立机器,使用以下命令部署
mkdir -p /usr/local/falcon-wechat
cd /usr/local/falcon-wechat
wget https://dl.cactifans.com/open-falcon/falcon-wechat-0.0.1.tar.gz
tar zxvf falcon-wechat-0.0.1.tar.gz
修改配置文件cfg.json配置文件,将corpid修改为你的企业ID,secret修改为你应用的secret,agentid修改为你的AgentId,并保存
{
"debug": true,
"http": {
"listen": "0.0.0.0:9527",
"token": ""
},
"wechat": {
"corpid": "wxa7c63522727b6bf0",
"secret": "d5S-_XGVd-5HA0o9bkvMMK5Wh1qwCC-YQei4WcL9hSM",
"agentid": 1
}
}
启动falcon-wechat
./control start
启动信息
falcon-wechat started..., pid=13875
启动之后可使用以下命令测试是否成功
curl -d "tos=zhanghao&content=内容" "http://127.0.0.1:9527/wechat"
tos 后面为用户账号
content 后面为内容
如看到success表示发送成功,如遇到错误可使用以下命令查看日志
./control tail
如看到以下信息表示成功
2018/07/19 14:44:28 config.go:64: load configuration file cfg.json successfully 2018/07/19 14:44:28 http.go:25: http listening 0.0.0.0:9527
常用命令
./control start 启动程序
./control stop 停止程序
./control build 从源码编译程序
./control pack 打包程序
配置Open-Falcon
配置Alarm组件
修改Open-Falcon的Alarm组件config目录下的配置文件cfg.json,将IM段修改为以下内容
"im": "http://127.0.0.1:9527/wechat",
如果你修改了falcon-wechat的默认端口,请注意修改。如falcon-wechat和Alarm组件为不同机器,注意修改IP地址。 修改之后重启Alarm服务,使其生效
配置IM信息
在Dashboard里,为用户配置IM账号为户用户账号!用户账号! 用户账号 不是微信号,重要事情说三遍!
用户账号
效果
告警
微信
注意事项
1.由于使用企业微信发送消息接口实现,接口调用速率有限制。注意控制消息发送频率,目前每次发消息都会请求一次Access_token,后续优化。
2.由于未认证企业发送消息数量与人员有关,建议控制频率。具体查看官网API文档https://work.weixin.qq.com/api/doc#10785
参考资料:
1.https://book.open-falcon.org/zh_0_2/quick_install/index.html
2.http://www.cnblogs.com/comexchan/p/5815869.html
3.http://www.jiloc.com/42528.html
4.http://www.cnblogs.com/lanblogs/p/6104834.html
5:微信配置 https://github.com/canghai908/falcon-wechat
Centos7部署open-falcon 0.2的更多相关文章
- CentOS7部署.Net Core2.0站点(上)
其实类似的教程网上已经有很多了,之所以要写,是应为发现在使用最新的centos7和.netcore2.1版本时还是遇到了不少坑,所以记录下,以后希望大家能少走弯路. 一.安装CentOS7 我是用虚拟 ...
- CentOS7部署HDP3.1.0.0
Apache Ambari是一个基于Web的支持Apache Hadoop集群的供应.管理和监控的开源工具,Ambari已支持大多数Hadoop组件,包括HDFS.MapReduce.Hive.Pig ...
- 云服务器 Centos7 部署 Elasticsearch 8.0 + Kibana 8.0 指南
文章转载自:https://mp.weixin.qq.com/s/iPfh9Mkwxf5lieiqt6ltxQ 服务器是命令行模式登录,没法以浏览器方式访问.而官方推荐的快捷部署方式,在kibana ...
- CentOS7部署.Net Core2.0站点(中)
继续上篇的内容,本篇来学习下nginx的配置和守护进程supervisor的使用. 一.Nginx安装及配置 (1)安装nginx sudo yum install epel-release #添加源 ...
- 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 ...
- CentOS7+ApacheServer2.4+MariaDB10.0+PHP7.0+禅道项目管理软件8.0环境部署
CentOS7+ApacheServer2.4+MariaDB10.0+PHP7.0+禅道项目管理软件8.0环境部署 by:授客 QQ:1033553122 目录 一. 二. 三. 四. 五. 六. ...
- centos7 部署 open-falcon 0.2.0
=============================================== 2019/4/29_第3次修改 ccb_warlock 更新 ...
- CentOS7安装CDH 第五章:CDH的安装和部署-CDH5.7.0
相关文章链接 CentOS7安装CDH 第一章:CentOS7系统安装 CentOS7安装CDH 第二章:CentOS7各个软件安装和启动 CentOS7安装CDH 第三章:CDH中的问题和解决方法 ...
- 手动编译部署LNMP环境(CentOS7.5+Nginx-1.18.0+MySQL-5.7.30+PHP-7.4.14)
在平时运维工作中,经常需要用到LNMP应用框架.LNMP环境是指在Linux系统下,由Nginx + MySQL + PHP组成的网站服务器架构. 可参考前面的文章: 如何在CentOS 7上搭建LA ...
- 阿里云CentOS7部署MySql8.0
本文主要介绍了阿里云CentOS7如何安装MySql8.0,并对所踩的坑加以记录; 环境.工具.准备工作 服务器:阿里云CentOS 7.4.1708版本; 客户端:Windows 10; SFTP客 ...
随机推荐
- chmod 没有x权限怎么办
解决方法1: # /lib64/ld-linux-x86-64.so.2 /bin/chmod 755 /bin/chmod //linux动态命令库 解决方法2:方法2提到的两种方法形 ...
- MySQL补充
1.mysql限制显示条目数:Limit, offset 图片网址:https://sqlbolt.com/lesson/filtering_sorting_query_results 实例: SEL ...
- HTML(form标签)、CSS选择器一
一.表单标签<form> 功能:表单用于向服务器传输数据,从而实现用户与Web服务器的交互. 表单能够包含input系列标签,比如文本字段.复选框.单选框.提交按钮等等. 表单还可以包含t ...
- kolla-ansible 一键安装openstack
官网地址https://docs.openstack.org/kolla-ansible/latest/user/quickstart.html 参考:https://www.jianshu.com/ ...
- leetcode-algorithms-24 Swap Nodes in Pairs
leetcode-algorithms-24 Swap Nodes in Pairs Given a linked list, swap every two adjacent nodes and re ...
- python中类的概念
在Python中,所有数据类型都可以视为对象,也可以自定义对象.自定义的对象即面向对象中的类(Class)的概念. class Student(object): def __init__(self, ...
- hadoop -- fsck
hadoop -- fsck shell命令: hdfs fsck /1708a1 -files -blocks -locations -racks /1708a1:是hdfs 中的文件 查看hdfs ...
- PHPCMS V9完全开发介绍
PHPCMS V9 文件目录结构: 根目录 | – api 接口文件目录 | – caches 缓存文件目录 | – configs 系统配置文件目录 | – caches_* 系统缓存目录 | – ...
- kali-rolling安装openvas 9并创建扫描任务教程
一. 前置说明 官方:漏洞扫描中最常用和强大的是某个”N“开头的漏洞扫描器(nessus),但由于许可证限制,kali中并未安装该漏洞扫描器.取而代之安装了nessus收费之后发起的开源版本openv ...
- OWASP TOP 10 2017中文译文
说明:owasp top 10其实有中文官方版本:本文是按着英文版进行翻译而成. 官方中文版:http://www.owasp.org.cn/owasp-project/OWASPTop102017v ...