open-falcon学习总结
open-falcon安装
直接安装openfalcon
(略,见docker学习总结-openfalcon镜像的制作和打包或下面的链接)
https://book.open-falcon.org/zh_0_2/quick_install/prepare.html
https://www.cnblogs.com/nulige/p/7741580.html
使用自定义镜像部署openfalcon
获取openfalcon的docker镜像
可通过移动硬盘获取镜像的tar包或者直接从远程仓库获取
运行openfalcon容器
运行容器时需要映射四个端口,其中8081是openfalcon的Dashboard界面访问端口,1988(Agent组件 数据上报)、6030(HBS服务 心跳服务)、8433(Transfer组件 数据接收)在监控时需要用到。
docker run -dit --name 容器名称n -p Dashboard组件映射端口:8081 -p Agent组件映射端口:1988 -p HBS服务映射端口:6030 -p Transfer组件映射端口:8433 openfalcon镜像名称:openfalcon镜像tag /bin/bash
## 示例
docker run -dit --name my_openfalcon -p 10101:8081 -p 10102:1988 -p 10103:6030 -p 10104:8433 my_openfalcon:0.1 /bin/bash
进入openfalcon容器
## 查看运行中的容器,获取openfalcon对应容器的编号
docker ps
## 以交互方式进入容器内部
docker exec -it 容器编号 /bin/bash
修改openfalcon容器中MySQL的配置
因为新创建容器之后MySQL没有对应的pid文件,会出现无法启动的情况,所有需要创建对应的pid文件,并配置相应的权限,使得MySQL可以访问到它。
## 前往MySQL安装目录
cd /apps/mysql-5.7.27/data
## 创建当前容器对应的MySQL的pid文件
touch 容器编号.pid
## 修改创建的pid文件的权限
cd ..
chown -R mysql:mysql data
chmod -R 755 data
修改openfalcon容器中的配置文件
检查一下openfalcon的agent组件的配置文件是否正确。
## 前往openfalcon后端agent组件安装目录
cd /apps/open-falcon-beckend/agent/config
## 编辑配置文件
vim ./cfg.json
修改cfg.json文件的以下内容:
//修改HBS服务的IP地址和端口号,这里改成openfalcon安装宿主机的ip和容器内6030端口对应宿主机映射的端口号(docker run时设置的),本机的话可以直接设置成127.0.0.1:6030
"heartbeat": {
"addr": "47.96.72.151:10103",
},
//修改Transfer组件的IP地址和端口号,这里改成openfalcon安装宿主机的ip和容器内8433端口对应宿主机映射的端口号(docker run时设置的),本机的话可以直接设置成127.0.0.1:8433
"transfer": {
"addrs": [
"47.96.72.151:10104"
],
},
//修改Agent组件的IP地址的端口号,这里改成容器内1988端口对应宿主机映射的端口号(docker run时设置的),本机的话可以直接设置成127.0.0.1:1988
"http": {
"listen": ":10102",
},
运行脚本文件,开启服务
运行sh文件,开启服务。
当出现文件运行完成,容器自动停止的情况时,可编辑/apps/start.sh文件,在最后面加上【while true; do echo openfalconRuning; sleep 1; done】再重新运行start.sh文件,运行成功后直接关闭该ssh连接即可。
## 前往openfalcon软件安装根目录
cd /apps
## 运行脚本文件
./start.sh
查看open-falcon服务端界面是否可以正常访问
访问【宿主机IP地址:Dashboard组件映射端口】即可访问open-falcon服务端,默认为8081端口
open-falcon简介
画面介绍
访问
IP地址:8081(默认)
![](https://img2018.cnblogs.com/blog/1592246/201909/1592246-20190904084154901-1332843973.png)
界面
官方说明:https://book.open-falcon.org/zh_0_2/usage/getting-started.html
-
Dashboard页面:监控机列表及监控数据查看
查看当前openfalcon服务端监控的实体(Endpoints)和对应的指标(Counters)。
-
Screen页面:自定义看板
创建和管理监控指标的看板。分别创建看板组合看板画面,可配置单个看板的监控实体、监控指标、展示样式。
-
Hostgroup页面:监控机组
创建和管理监控实体组。openfalcon有监控组的概念,报警时不针对单个的实体,而是根据组来报警。
在Hostgroup页面,可创建和编辑每个组的基本信息、配置组成员、配置组报警策略、配置组插件等。
-
Template页面:监控报警策略模板
查看和管理报警策略。可以根据需求创建和管理报警信息,
报警对象:一个实体组(Hostgroup)或者一个实体(Endpoint)
报警指标:自定义指标及报警值
给谁报警:一个用户组(Team)
报警回调:可设置一个URL,当报警被触发时,openfalcon会以get方式回调这个URL,回调时可发送提醒和结果
-
Expression页面:监控报警策略表达式
查看和管理表达式。
-
Nodata页面:无数据报警
查看和管理无数据上报时的报警。可根据实体组和实体来报警,选择无数据的周期,即可在无数据的时候报警。
-
Alarm-Dashboard页面:报警仪表盘
报警信息展示。
-
用户管理
-
Profile页面:登录用户信息管理
管理当前登录用户的信息
-
Users页面:用户管理
查看当前系统的所有用户
-
用户组管理
当前用户组管理。用户组与报警相关。
-
组件的关系
绘图组件
组件名称 | 用途 | 服务端口 | 备注 |
---|---|---|---|
Agent | 部署在目标机器采集机器监控项 | http: 1988 | |
Transfer | 数据接收端,转发数据到后端Graph和Judge | http: 6060 rpc: 8433 socket: 4444 | |
Graph | 操作rrd文件存储监控数据 | http: 6070 rpc: 6071 | 1.可部署多实例做集群 2.需要连接数据库graph |
Query | 查询各个Graph数据,提供统一http查询接口 | http: 9966 | |
Dashboard | 查询监控历史趋势图的web端 | http: 8081 | 1.需要python虚拟环境 2.需要连接数据库dashborad、graph |
Task | 负责一些定时任务,索引全量更新、垃圾索引清理、自身组件监控等 | http: 8002 | 1.需要连接数据库graph |
报警组件
组件名称 | 用途 | 服务端口 | 备注 |
---|---|---|---|
Nodata | 检测监控数据的上报异常 | http: 6090 | 1.需要连接数据库:falcon_portal |
Portal | 配置报警策略,管理机器分组的web端 | http: 5050 | 1.需要连接数据库:falcon_portal 2.需要python虚拟环境 |
Judge | 报警判断模块 | http: 6081 rpc: 6080 | 1.可部署多实例 |
Alarm | 报警事件处理器 | http: 9912 | |
Sender | 报警发送模块,控制并发度,提供发送的缓冲queue | http: 6066 | |
mail-provider | 报警邮件http api | http: 4000 | 小米提供 |
sms-provider | 报警短信http api | http: 4040 | 自行编写 |
Links | 报警合并依赖的web端,存放报警详情 | http: 5090 | 1.需要连接数据库:falcon_links 2.需要python虚拟环境 |
HBS | HeartBeat Server,心跳服务器 | http: 6031rpc: 6030 | 1.需要连接数据库:falcon_portal |
UIC(fe) | 用户组管理,单点登录 | http: 80 | 1.需要连接数据库:uic |
Aggregator | 集群聚合模块——聚合某集群下的所有机器的某个指标的值,提供一种集群视角的监控体验。 | http: 6055 | 1.需要连接数据库:falcon_portal |
组件关系
架构图
https://blog.csdn.net/beta_xiyan/article/details/81911653
https://blog.51cto.com/chenguomin/1865550
open-falcon系统的使用
配置一个open-falcon监控机
-
获取监控数据
新增一个监控机
根据监控物的不同而不同,可参考下面的各种监控配置或者官方文档
-
查看监控数据
在Dashboard菜单查看刚刚配置的监控机,选择这个监控机可查看指标
-
配置监控组
在HostGroup菜单将监控机配置到组中,可新增组或者点击hosts将当前的机器加到指定的组中
-
配置报警策略
在Template菜单配置报警策略
在HostGroup菜单找到指定的组,点击template将报警策略与监控组绑定
-
配置无数据报警
在Nodata菜单配置无数据报警
-
配置报警方式
参考下面的【openfalcon配置报警方式】
-
查看指标或者查看报警
在Dashboard中查看监控指标
在Screen中配置一个看板
在Alarm-Dashboard中查看报警信息(配置了报警方式的话可以收到报警信息)
通过open-falcon查看监控机的指标信息
-
访问open-falcon服务端
默认是8081端口。
-
选择需要查看指标的监控机(可搜索、多选)
-
点击【刷新counter列表】按钮
-
点击指标可查看单个指标的动态图
-
选择多个指标后,点击【看图】按钮,选择对应的视角,可同时查看多个指标(视角介绍见下方Q&A)
通过open-falcon创建指标看板
-
访问open-falcon服务端,进入screen菜单
-
点击screen首页,在弹出的下拉画面中可搜索已有的看板组或直接新建组
-
点击【+导航】,在打开的画面中输入组名称,点击【新增】即可新建一个卡板组
-
新增组之后,即可新增看板画面。选择对应的组,点击【选择】【+screen】即可进入看板新增页面
-
进入看板新增页面,填写相关信息即可新增看板
Graph标题:看板名称
Endpoints列表:看板展示的机器列表,一行一个
Counters列表:看板展示的指标列表,一行一个
默认时间跨度:看板展示指标的时间跨度,即展示多久的数据
视角:看板数据的展示视角
是否加和:是否对数据进行加和运算并将和展示出来(与指标信息相同的方法展示)
通过open-falcon管理机器组
openfalcon对机器的管理是以组的形式进行的,报警策略配置是按照机器组来的,可根据需要将不同的机器进行编组,再进行管理。
-
访问open-falcon服务端,进入Hostgroup菜单
-
在页面中展示了机器组列表,可进行搜索
-
输入名称后点击右上角的+可新增组
-
在组列表中,可配置该组的报警策略、组成员机器、组插件等信息
通过open-falcon管理报警信息
配置报警策略
-
访问open-falcon服务端,进入Template菜单
-
在页面中展示了报警策略列表,可进行搜索
-
输入名称后点击右上角的+可进入新增报警策略页面
-
设置相应的信息即可新增报警策略
模板基本信息:
name:模板名称
parent:父级模板名称
该模板中的策略列表:
metric/tags[note]:指标名称
condition:报警条件
max:最大报警次数
P:报警级别(<3时既发短信也发邮件 , >=3时只发邮件)
run:报警时间(默认全天)
模板报警配置:
报警接收组:报警信息的接收人组(openfalcon的用户组)
callback地址:报警之后回调的URL(GET方法回调),并可配置回调前的提醒和回调之后的结果通知
配置报警方式
在openfalcon的Alarm-Dashboard菜单中可查看报警信息,如果需要短信、电话、邮箱、微信等方式报警,需要自己配置,可以使用官方的控件也可以自己写接口实现,主要是修改【后端-Alarm-config-cfg.json】文件,docker镜像中为【/apps/open-falcon-beckend/alarm/config/cfg.json】。
修改其中的api部分:
"api": {
//im报警接口URL,如微信,对应openfalcon用户中的IM
"im": "http://127.0.0.1:10086/wechat",
//短信、电话报警接口URL,对应openfalcon用户中的手机
"sms": "http://127.0.0.1:10086/sms",
//邮件报警接口URL,对应openfalcon用户中的邮箱
"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"
},
官方说明文档:https://book.open-falcon.org/zh_0_2/distributed_install/mail-sms.html
详见下面的配置报警方式。
配置无数据报警
-
访问open-falcon服务端,进入Nodata菜单
-
在页面中展示了无数据报警列表,可进行搜索
-
输入名称后点击右上角的+可进入新增无数据报警页面
-
设置相应的信息即可新增无数据报警
name:无数据报警的名称
endpoint选择:设置无数据报警的机器,可设置机器组或者机器,一行一个
metric:监测指标
tags:监控指标的tag
type:监控指标的值类型
周期(秒):数据上报的周期,需要与监控项上报数据的step一致
数据上报中断时, 补发如下值:无数据上报时补发的值
查看报警内容
- 访问open-falcon服务端,进入Alarm-Dashboard菜单
- 在页面中展示了报警信息列表
- 配置了短信、邮件等报警方式时,会收到报警信息
open-falcon监控指标说明(主机)
其他具体内容,请参考:
组件相关
指标名称 | 指标说明 |
---|---|
agent.alive | agent存活(存活时为1) |
CPU相关
参考博客:https://blog.51cto.com/asinego/1949715
指标名称 | 指标说明 |
---|---|
cpu.idle | CPU空闲时间,不包括等待I/O的时间 |
cpu.iowait | 等待I/O的CPU时间 |
cpu.switches | cpu上下文切换次数(计数器类型) |
cpu.system | 内核态CPU时间 |
cpu.user | 用户态CPU时间 |
cpu.nice | 低优先级用户态CPU时间,也就是进程nice值被调整为1-19之间的CPU时间 |
cpu.irq | 处理硬中断的CPU时间 |
cpu.softirq | 处理软中断的CPU时间 |
cpu.guest | 运行虚拟机的CPU时间 |
cpu.steal | 系统运行在虚拟机中的时候,被其他虚拟机占用的CPU时间 |
内存相关
参考博客:https://blog.51cto.com/asinego/1905622
指标 | 说明 |
---|---|
mem.memtotal | 内存总大小 |
mem.memused | 内存使用量 |
mem.memused.percent | 内存使用百分比 |
mem.memfree | 内存剩余量 |
mem.memfree.percent | 内存剩余百分比 |
mem.swaptotal | swap总量 |
mem.swapused | sqap使用量 |
mem.swapused.percent | swap使用百分比 |
mem.swapfree | swap剩余量 |
mem.swapfree.percent | swap剩余百分比 |
磁盘相关
参考博客:https://blog.51cto.com/asinego/1902213
指标名称 | 指标说明 |
---|---|
df.statistics.total | 磁盘总量 |
df.statistics.used | 磁盘使用总量 |
df.statistics.used.percent | 磁盘使用百分比 |
df.bytes.used | 磁盘使用量 |
df.bytes.used.percent | 磁盘使用百分比 |
df.bytes.free | 磁盘可用量 |
df.bytes.free.percent | 磁盘可用百分比 |
df.inodes.free.percent | 磁盘可用inode占比 |
IO相关
指标名称 | 指标说明 |
---|---|
disk.io.util | 在统计时间内所有处理IO时间,除以总共统计时间 |
disk.io.svctm | 表示平均每次设备I/O操作的服务时间 |
disk.io.avgqu-sz | 平均请求队列的长度 |
disk.io.avgrq_sz | 平均请求扇区的大小 |
disk.io.await | 每一个IO请求的处理的平均时间(毫秒) |
disk.io.ios_in_progress | 当前正在运行的实际I / O请求数 |
disk.io.msec_read | 所有读取所花费的总时间(毫秒) |
disk.io.msec_write | 所有写入所花费的总时间(毫秒) |
disk.io.read_bytes | 读取字节数,单位是byte的数字 |
disk.io.read_merged | 相邻的读取请求合并在单个请求中 |
disk.io.read_requests | 成功读取完成的总次数 |
disk.io.read_sectors | 成功读取的扇区总数 |
disk.io.write_bytes | 写入字节数,单位是byte的数字 |
disk.io.write_merged | 相邻的写入请求合并在单个请求中 |
disk.io.write_requests | 成功写入磁盘的总次数 |
disk.io.write_sectors | 成功写入扇区数的总次数 |
disk.io.msec_total | ios_in_progress> = 1的时间量 |
disk.io.msec_weighted_total | 统计最近的I/O完成时间和积压 |
机器内核配置
指标 | 说明 |
---|---|
kernel.files.allocated | 读取的/proc/sys/fs/file-nr第一个Field |
kernel.files.left | 值=kernel.maxfiles-kernel.files.allocated |
kernel.maxfiles | 读取的/proc/sys/fs/file-max |
kernel.maxproc | 读取的/proc/sys/kernel/pid_max |
机器负载相关
指标 | 说明 |
---|---|
load.15min | 15min系统平均load average(load average <= CPU核数 *0.7) |
load.5min | 5min系统平均load average |
load.1min | 1min系统平均load average |
通信相关
参考博客:https://satori-monitoring.readthedocs.io/zh/latest/builtin-metrics/net.html
指标 | 说明 |
---|---|
net.if.in.bits | 网络io流入位数(1字节/byte=8位/bit) |
net.if.in.bytes | 网络io流入字节数 |
net.if.in.packets | 网络io流入包数 |
net.if.in.compressed | 网络io流入压缩包数 |
net.if.in.multicast | 网络io流入多播包数 |
net.if.in.dropped | 网络io流入丢弃数 |
net.if.in.errors | 网络io流入出错数 |
net.if.in.fifo.errs | 因接收缓冲区满丢掉的包数 |
net.if.in.frame.errs | 网络io流入错误帧数 |
open-falcon配置报警方式
在openfalcon的Alarm-Dashboard菜单中可查看报警信息,如果需要短信、电话、邮箱、微信等方式报警,需要自己配置,可以使用官方的控件也可以自己写接口实现,主要是修改【后端-Alarm-config-cfg.json】文件,docker镜像中为【/apps/open-falcon-beckend/alarm/config/cfg.json】。
配置文件:
openfalcon后端安装目录/alarm/config/cfg.json
"api": {
//微信发送网关地址
"im": "http://127.0.0.1:10086/wechat",
//短信发送网关地址
"sms": "http://127.0.0.1:10086/sms",
//邮件发送网关地址
"mail": "http://127.0.0.1:10086/mail",
//dashboard模块的运行地址
"dashboard": "http://127.0.0.1:8081",
//falcon-plus api模块的运行地址
"plus_api":"http://127.0.0.1:8080",
//用于和falcon-plus api模块服务端之间的通信认证token
"plus_api_token": "default-token-used-in-server-side"
}
官方说明文档:https://book.open-falcon.org/zh_0_2/distributed_install/mail-sms.html
短信、电话报警
官方适配了灵犀云的短信和电话接口,可直接使用。
-
注册灵犀云
-
在灵犀云中创建应用
-
在灵犀云中获取token
-
修改alarm/config/cfg.json配置文件
"sms": "https://www.linkedsee.com/alarm/falcon_sms/自己的token"
-
灵犀云电话和短信均免费10次,剩下的需要付费购买
邮件报警
mail-provider组件:https://github.com/open-falcon/mail-provider
-
下载编译好的二进制文件
cd /apps/open-falcon-msg/mail wget https://dl.cactifans.com/open-falcon/falcon-mail-provider.tar.gz
-
解压安装
cd /apps/open-falcon-msg/mail mkdir -p falcon-mail-provider tar zxvf falcon-mail-provider.tar.gz cd falcon-mail-provider
-
修改falcon-mail-provider的配置文件
vim /apps/open-falcon-msg/mail/falcon-mail-provider/cfg.json
{ "debug": true, "http": { "listen": "0.0.0.0:4000", "token": "" }, "smtp": { //发件服务器地址 "addr": "mail.example.com:25", //发件人邮箱 "username": "falcon@example.com", //发件人邮箱密码 "password": "123456", //发件人邮箱 "from": "falcon@example.com", "tls":false, "anonymous":false, "skipVerify":true } }
-
修改open-falcon alarm组件的配置文件
vim /apps/open-falcon-beckend/alarm/config/cfg.json
"api": { "mail": "http://127.0.0.1:4000/sender/mail", },
-
启动服务
启动服务
cd /apps/open-falcon-msg/mail/falcon-mail-provider ./control start
查看日志
cd /apps/open-falcon-msg/mail/falcon-mail-provider ./control tail
-
测试使用
curl http://127.0.0.1:4000/sender/mail -d "tos=收件人&subject=邮件标题&content=邮件内容" ## 示例 curl http://127.0.0.1:4000/sender/mail -d "tos=a@a.com,b@b.com&subject=openfalcon报警&content=测试邮件"
微信报警
chat组件:https://github.com/yanjunhui/chat
-
克隆代码
cd /apps/open-falcon-msg/wechart git clone https://www.github.com/yanjunhui/chat.git
-
修改chat配置文件
cd /apps/open-falcon-msg/wechart/chat vim config.conf
#http 服务端口 [http] #默认为0.0.0.0, 可根据需要修改成自己的IP或者想使用本地地址修改为: 127.0.0.1 address = 0.0.0.0 port = 4567 #微信接口信息 [weixin] CorpID = ww6424d33203e90e20 AgentId = 1000002 Secret = FoST_8RQSTjZwH_CN3aQW6UKksjCSI9mizFqD7HKhrw
-
修改open-falcon alarm组件配置文件
"api": { "im": "http://yanjunhui.com:4567/send", },
-
启动服务
cd /apps/open-falcon-msg/wechart/chat ./control.sh start
-
查看服务状态
cd /apps/open-falcon-msg/wechart/chat ./control.sh status
open-falcon组件说明
绘图相关
Agent:部署在目标机器采集机器监控项
Transfer:数据接收端,转发数据到后端Graph和Judge
Graph:操作rrd文件存储监控数据
Query:查询各个Graph数据,提供统一的http查询接口
Dashboard:查询监控历史趋势图的web端
Task:负责一些定时任务,所有全量更新、垃圾索引清理、自身组件监控等
报警相关
Sender:报警发送模块,控制并发度,提供发送的缓冲queue
UIC(FE):用户组管理,单点登录
Portal(python):配置报警策略,管理机器分组的web端
HBC:Hearbeat Server,心跳服务器
Judge:报警判断模块
Links:报警合并依赖的web端,存放报警详情
Alarm:报警事件处理器
open-falcon监控Windows
https://blog.51cto.com/zhuyuanpo/1775108
-
安装好openfalcon服务器
-
选择合适的Windows监控程序(这里选择windows-agent:另一个 go 语言实现的 windows-agent。支持端口,进程监控,支持后台服务运行。)
-
下载已经编译好的版本
-
解压压缩包(windows-agent-release-1.0.3和里面的nssm-2.24都要解压)
-
修改配置文件内容
找到cfg.example.json文件,复制一份到windows-agent.exe同级目录(根据自己的机器选择x64和x86)
修改配置文件内容
{ "debug": true, "logfile": "windows.log", //给这台机器取个名字,在openfalcon中就是显示的这个名字 "hostname": "hutianyao.windows.test", //修改IP地址为本机的IP地址 "ip": "47.96.72.151", "iis":{ "enabled": false, "websites": [ "Default Web Site" ] }, //本机数据库配置 "mssql":{ "enabled": false, "addr":"127.0.0.1", "port":3306, "username":"sa", "password":"123456", "encrypt":"disable", "instance": [ "test" ] }, "heartbeat": { "enabled": true, //修改为openfalcon服务端的IP:端口号,默认是6030,这里映射到了10103 "addr": "47.96.72.151:10103", "interval": 60, "timeout": 1000 }, "transfer": { "enabled": true, //修改为openfalcon服务端的IP:端口号,默认是8433,这里映射到了10104 "addrs": [ "47.96.72.151:10104" ], "interval": 60, "timeout": 1000 }, "http": { "enabled": true, //修改为openfalcon服务端的IP:端口号,默认是1988,这里映射到了10102 "listen": ":10102", "backdoor": false }, "collector": { "ifacePrefix": ["网络"] }, "default_tags": { }, "ignore": { "cpu.busy": true } }
-
以管理员身份运行CMD
-
CD到解压目录
cd H:\tmp\windows-agent-release-1.0.3\x64
-
CD到包含windows-agent.exe的文件夹下运行命令
windows-agent.exe
-
输出正常后使用 nssm 注册为 Windows 服务
CD到nssm解压目录中包含nssm.exe的文件夹根据自己的机器选择win32和win64)
执行命令
nssm.exe install windows-agent
输入或选择windows-agent.exe文件的绝对路径,以及其上一级目录
-
启动服务
nssm.exe start windows-agent
open-falcon监控Linux
https://www.cnblogs.com/yinzhengjie/p/10111390.html
open-falcon监控MySQL
MySQL监控部署
https://github.com/open-falcon/mymon
-
安装和配置go环境
## 下载go安装包 https://golang.google.cn/dl/ ## 解压安装包到指定位置 cd /apps && mkdir go tar -C /apps/go -xzf go1.12.9.linux-amd64.tar.gz ## 配置环境变量 export GOROOT=/apps/go/go export GOPATH=/apps/go/goWork export PATH=$PATH:/apps/go/go/bin ## 测试是否安装成功 go version
-
克隆代码
go get -u github.com/open-falcon/mymon
-
编译代码
cd $GOPATH/src/github.com/open-falcon/mymon make
-
修改配置文件
[default] ## 工作目录 basedir = . ## 日志目录,默认日志文件为myMon.log,旧版本有log_file项,如果同时设置了,会优先采用log_file log_dir = ./fixtures ## 配置忽略的metric项 ignore_file = ./falconignore ## 保存快照(process, innodb status)的目录 snapshot_dir = ./snapshot ## 保存快照的时间(日) snapshot_day = 10 ## 日志级别[RFC5424] log_level = 5 # 0 LevelEmergency # 1 LevelAlert # 2 LevelCritical # 3 LevelError # 4 LevelWarning # 5 LevelNotice # 6 LevelInformational # 7 LevelDebug # falcon agent连接地址 falcon_client=http://127.0.0.1:1988/v1/push [mysql] ## 数据库用户名 user=root ## 数据库密码 password=1tIsB1g3rt ## 数据库连接地址 host=127.0.0.1 ## 数据库端口 port=3306
-
测试启动
cd $GOPATH/src/github.com/open-falcon/mymon ./mymon -c etc/myMon.cfg
-
添加定时任务
echo '* * * * * cd mymon编译目录 && ./mymon -c etc/myMon.cfg' > /etc/cron.d/mymon ##示例 echo '* * * * * cd /apps/go/goWork/src/github.com/open-falcon/mymon && ./mymon -c etc/myMon.cfg' > /etc/cron.d/mymon
注:可能需要安装crontabs(定时任务)服务
## 安装crontabs yum -y install crontabs ## 开机自启动crontabs ## 配置定时任务 vim /etc/crontab ## 在文件中加上(/1表示每分钟执行一次) */1 * * * * cd /apps/go/goWork/src/github.com/open-falcon/mymon && ./mymon -c etc/myMon.cfg ## 保存定时任务 crontab /etc/crontab ## 查看定时任务 crontab -l
当在docker容器中运行时,可直接在启动容器时添加参数:
docker exec -it 容器编号 crond restart ## 或者 docker exec -it 容器编号 /usr/sbin/crond -i ## 示例 docker exec -it 315e4af50cbd crond restart
-
查看日志
cd $GOPATH/src/github.com/open-falcon/mymon cat myMon.log
MySQL监控指标
open-falcon监控Redis
open-falcon监控Tomcat
Tomcat监控部署
-
安装和配置JDK(使用tar.gz文件)
- 解压JDK到指定的目录
tar zxvf /tmp/jdk-8u221-linux-x64.tar.gz -C /tomcat
-
配置环境变量
## 配置环境变量 vi ~/.bashrc
## 在文件最后添加 export JAVA_HOME=jdk安装目录 export PATH=$JAVA_HOME/bin:$PATH ## 示例 export JAVA_HOME=/tomcat/jdk1.8.0_211 export PATH=$JAVA_HOME/bin:$PATH
-
刷新配置文件
## 刷新配置 source ~/.bashrc
-
验证是否安装成功
## 查看java版本 java -version
-
安装Tomcat
tar zxvf /tmp/apache-tomcat-8.5.45.tar.gz -C /tomcat
-
修改Tomcat启动文件
## 前往Tomcat的bin目录 cd /tomcat/apache-tomcat-8.5.45/bin ## 修改配置文件 vi catalina.sh
catalina.sh中需要添加的内容(可使用/CATALINA_OPTS搜索位置)
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote //开启jmxremote -Djava.rmi.server.hostname=tomcat所在机器的IP(默认是本机的IP) -Dcom.sun.management.jmxremote.port=jmxremote使用的端口号 -Dcom.sun.management.jmxremote.ssl=是否开启ssl通信 -Dcom.sun.management.jmxremote.authenticate=是否需要鉴权" ## 示例 CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
-
启动Tomcat
## 前往Tomcat的bin目录 cd /tomcat/apache-tomcat-8.5.45/bin ## 启动Tomcat sh startup.sh
-
安装openfalcon的Agent组件
## 安装Agent组件 tar xvf /tmp/agent.tar -C /tomcat ## 修改Agent配置文件(修改其中上报数据的IP地址和端口号) cd /tomcat/agent/config/cfg.json ## 启动Agent服务 nohup /tomcat/agent/bin/falcon-agent -c /tomcat/agent/config/cfg.json ## 检查服务是否开启 netstat -antp | grep 1988 ps -ef | grep -i "falcon"
agent配置文件说明
{ "debug": true, //这里是本机在openfalcon中显示的名称 "hostname": "", "ip": "", "plugin": { "enabled": false, "dir": "./plugin", "git": "https://github.com/open-falcon/plugin.git", "logs": "./logs" }, "heartbeat": { "enabled": true, //这里是openfalcon的heartbeat模块的URL,默认端口号为6030 "addr": "47.96.72.151:10104", "interval": 60, "timeout": 1000 }, "transfer": { "enabled": true, //这里是openfalcon的transfer模块的URL,默认端口号为8433 "addrs": [ "47.96.72.151:10105" ], "interval": 60, "timeout": 1000 }, "http": { "enabled": true, //这里是openfalcon的agent模块的URL,默认端口号为1988 "listen": ":10103", "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 } }
-
部署jmxmon
## 获取jmxmon cd /tmp wget https://github.com/toomanyopenfiles/jmxmon/releases/download/v0.0.2/jmxmon-v0.0.2.tar.gz ## 解压jmxmon tar zxvf /tmp/jmxmon-v0.0.2.tar.gz -C /tomcat ## 修改jmxmon配置文件 cd /tomcat/jmxmon-v0.0.2 cp conf.example.properties conf.properties vi conf.properties
conf.properties文件说明
## 监听端口号(和上面Tomcat启动文件中的port一致) jmx.ports=8999 ## 上报的URL(openfalcon服务端1988端口) agent.posturl=http://47.96.72.151:10102/v1/push ## openfalcon中显示的当前监控Tomcat的名称 hostname=hutianyao.tomcat.test
-
启动jmxmon服务
cd /tomcat/jmxmon-v0.0.2 sh control start
-
查看jmxmon日志
cd /tomcat/jmxmon-v0.0.2 cat var/app.log
Tomcat监控指标
指标名称 | 指标说明 |
---|---|
parnew.gc.avg.time | 一分钟内,每次YoungGC(parnew)的平均耗时 |
concurrentmarksweep.gc.avg.time | 一分钟内,每次CMSGC的平均耗时 |
parnew.gc.count | 一分钟内,YoungGC(parnew)的总次数 |
concurrentmarksweep.gc.count | 一分钟内,CMSGC的总次数 |
gc.throughput | GC的总吞吐率(应用运行时间/进程总运行时间) |
new.gen.promotion | 一分钟内,新生代的内存晋升总大小 |
new.gen.avg.promotion | 一分钟内,平均每次YoungGC的新生代内存晋升大小 |
old.gen.mem.used | 老年代的内存使用量 |
old.gen.mem.ratio | 老年代的内存使用率 |
thread.active.count | 当前活跃线程数 |
thread.peak.count | 峰值线程数 |
Q&A
Endpoint视角、Counter视角和组合视角有什么区别?
Endpoint视角:按指标展示数据,不同监控机得相同指标,在一个图表中展示。
图表为指标,线为机器。
Counter视角:按监控机展示数据,一个监控机的所有数据(选择的指标)展示在一个图表中。
图表是机器,线是指标。
组合视角:所有的数据,展示在一个图表中。
一个图表,线是一个机器的一个指标。
open-falcon监控项的上报数据格式是怎么样的?
{
// 监控项名称
metric: cpu.busy,
// 目标服务器的主机名
endpoint: open-falcon-host,
// tag标签,作用是聚合和归类,在配报警策略时会比较方便。
tags: srv=falcon,group=az1,
// 监控项数值
value: 10,
// 采集时间
timestamp: `date +%s`,
// 监控项类型。
counterType: GAUGE,
// 采集间隔(秒)。
step: 60
}
open-falcon监控项的类型有哪些?
- GAUGE:实测值,直接使用采集的原始数值,比如气温;
- COUNTER:记录连续增长的数据,只增不减。比如汽车行驶里程,网卡流出流量,cpu_idle等;
- DERIVE:变化率,类似COUNTER ,但是可增可减。
open-facon的报警函数有哪些?
- all(#3): 最新的3个点都满足阈值条件则报警
- max(#3): 对于最新的3个点,其最大值满足阈值条件则报警
- min(#3): 对于最新的3个点,其最小值满足阈值条件则报警
- sum(#3): 对于最新的3个点,其和满足阈值条件则报警
- avg(#3): 对于最新的3个点,其平均值满足阈值条件则报警
- diff(#3): 拿最新push上来的点(被减数),与历史最新的3个点(3个减数)相减,得到3个差,只要有一个差满足阈值条件则报警
- pdiff(#3): 拿最新push上来的点,与历史最新的3个点相减,得到3个差,再将3个差值分别除以减数,得到3个商值,只要有一个商值满足阈值则报警