open-falcon学习总结

两盒软妹~` 提交于 2019-11-29 05:38:33

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

  1. Dashboard页面:监控机列表及监控数据查看

    查看当前openfalcon服务端监控的实体(Endpoints)和对应的指标(Counters)。

  2. Screen页面:自定义看板

    创建和管理监控指标的看板。分别创建看板组合看板画面,可配置单个看板的监控实体、监控指标、展示样式。

  3. Hostgroup页面:监控机组

    创建和管理监控实体组。openfalcon有监控组的概念,报警时不针对单个的实体,而是根据组来报警。

    在Hostgroup页面,可创建和编辑每个组的基本信息、配置组成员、配置组报警策略、配置组插件等。

    plugins参考:官方文档博客

  1. Template页面:监控报警策略模板

    查看和管理报警策略。可以根据需求创建和管理报警信息,

    报警对象:一个实体组(Hostgroup)或者一个实体(Endpoint)

    报警指标:自定义指标及报警值

    给谁报警:一个用户组(Team)

    报警回调:可设置一个URL,当报警被触发时,openfalcon会以get方式回调这个URL,回调时可发送提醒和结果

  2. Expression页面:监控报警策略表达式

    查看和管理表达式。

  3. Nodata页面:无数据报警

    查看和管理无数据上报时的报警。可根据实体组和实体来报警,选择无数据的周期,即可在无数据的时候报警。

  4. Alarm-Dashboard页面:报警仪表盘

    报警信息展示。

  5. 用户管理

    1. Profile页面:登录用户信息管理

      管理当前登录用户的信息

    2. Users页面:用户管理

      查看当前系统的所有用户

    1. 用户组管理

      当前用户组管理。用户组与报警相关。

组件的关系

绘图组件

组件名称 用途 服务端口 备注
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监控机

  1. 获取监控数据

    新增一个监控机

    根据监控物的不同而不同,可参考下面的各种监控配置或者官方文档

  2. 查看监控数据

    在Dashboard菜单查看刚刚配置的监控机,选择这个监控机可查看指标

  3. 配置监控组

    在HostGroup菜单将监控机配置到组中,可新增组或者点击hosts将当前的机器加到指定的组中

  4. 配置报警策略

    在Template菜单配置报警策略

    在HostGroup菜单找到指定的组,点击template将报警策略与监控组绑定

  5. 配置无数据报警

    在Nodata菜单配置无数据报警

  6. 配置报警方式

    参考下面的【openfalcon配置报警方式】

  7. 查看指标或者查看报警

    在Dashboard中查看监控指标

    在Screen中配置一个看板

    在Alarm-Dashboard中查看报警信息(配置了报警方式的话可以收到报警信息)

通过open-falcon查看监控机的指标信息

  1. 访问open-falcon服务端

    默认是8081端口。

  2. 选择需要查看指标的监控机(可搜索、多选)

  3. 点击【刷新counter列表】按钮

  4. 点击指标可查看单个指标的动态图

  5. 选择多个指标后,点击【看图】按钮,选择对应的视角,可同时查看多个指标(视角介绍见下方Q&A)

通过open-falcon创建指标看板

  1. 访问open-falcon服务端,进入screen菜单

  2. 点击screen首页,在弹出的下拉画面中可搜索已有的看板组或直接新建组

  3. 点击【+导航】,在打开的画面中输入组名称,点击【新增】即可新建一个卡板组

  4. 新增组之后,即可新增看板画面。选择对应的组,点击【选择】【+screen】即可进入看板新增页面

  5. 进入看板新增页面,填写相关信息即可新增看板

    Graph标题:看板名称

    Endpoints列表:看板展示的机器列表,一行一个

    Counters列表:看板展示的指标列表,一行一个

    默认时间跨度:看板展示指标的时间跨度,即展示多久的数据

    视角:看板数据的展示视角

    是否加和:是否对数据进行加和运算并将和展示出来(与指标信息相同的方法展示)

通过open-falcon管理机器组

openfalcon对机器的管理是以组的形式进行的,报警策略配置是按照机器组来的,可根据需要将不同的机器进行编组,再进行管理。

  1. 访问open-falcon服务端,进入Hostgroup菜单

  2. 在页面中展示了机器组列表,可进行搜索

  3. 输入名称后点击右上角的+可新增组

  4. 在组列表中,可配置该组的报警策略、组成员机器、组插件等信息


通过open-falcon管理报警信息

配置报警策略

  1. 访问open-falcon服务端,进入Template菜单

  2. 在页面中展示了报警策略列表,可进行搜索

  3. 输入名称后点击右上角的+可进入新增报警策略页面

  4. 设置相应的信息即可新增报警策略

    模板基本信息

    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

详见下面的配置报警方式。

配置无数据报警

  1. 访问open-falcon服务端,进入Nodata菜单

  2. 在页面中展示了无数据报警列表,可进行搜索

  3. 输入名称后点击右上角的+可进入新增无数据报警页面

  4. 设置相应的信息即可新增无数据报警

    name:无数据报警的名称

    endpoint选择:设置无数据报警的机器,可设置机器组或者机器,一行一个

    metric:监测指标

    tags:监控指标的tag

    type:监控指标的值类型

    周期(秒):数据上报的周期,需要与监控项上报数据的step一致

    数据上报中断时, 补发如下值:无数据上报时补发的值

查看报警内容

  1. 访问open-falcon服务端,进入Alarm-Dashboard菜单
  2. 在页面中展示了报警信息列表
  3. 配置了短信、邮件等报警方式时,会收到报警信息

open-falcon监控指标说明(主机)

其他具体内容,请参考:

官方文档0.1官方文档0.2

Satori官方文档

博客

组件相关

指标名称 指标说明
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

短信、电话报警

官方适配了灵犀云的短信和电话接口,可直接使用。

  1. 注册灵犀云

  2. 在灵犀云中创建应用

  3. 在灵犀云中获取token

  4. 修改alarm/config/cfg.json配置文件

    "sms": "https://www.linkedsee.com/alarm/falcon_sms/自己的token"
    
  5. 灵犀云电话和短信均免费10次,剩下的需要付费购买

邮件报警

mail-provider组件:https://github.com/open-falcon/mail-provider

  1. 下载编译好的二进制文件

    cd /apps/open-falcon-msg/mail
    
    wget https://dl.cactifans.com/open-falcon/falcon-mail-provider.tar.gz
    
  2. 解压安装

    cd /apps/open-falcon-msg/mail
    
    mkdir -p falcon-mail-provider
    
    tar zxvf falcon-mail-provider.tar.gz
    
    cd falcon-mail-provider
    
  3. 修改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
        }
    }
    
  4. 修改open-falcon alarm组件的配置文件

    vim /apps/open-falcon-beckend/alarm/config/cfg.json
    
    "api": {
       "mail": "http://127.0.0.1:4000/sender/mail",
    },
    
  5. 启动服务

    启动服务

    cd /apps/open-falcon-msg/mail/falcon-mail-provider
    ./control start
    

    查看日志

    cd /apps/open-falcon-msg/mail/falcon-mail-provider
    ./control tail
    
  6. 测试使用

    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

  1. 克隆代码

    cd /apps/open-falcon-msg/wechart
    git clone https://www.github.com/yanjunhui/chat.git
    
  2. 修改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
    
  3. 修改open-falcon alarm组件配置文件

    "api": {
     "im": "http://yanjunhui.com:4567/send",
    },
    
  4. 启动服务

    cd /apps/open-falcon-msg/wechart/chat
    ./control.sh start
    
  5. 查看服务状态

    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

  1. 安装好openfalcon服务器

  2. 选择合适的Windows监控程序(这里选择windows-agent:另一个 go 语言实现的 windows-agent。支持端口,进程监控,支持后台服务运行。)

  3. 下载已经编译好的版本

    https://github.com/freedomkk-qfeng/windows-agent/releases

  4. 解压压缩包(windows-agent-release-1.0.3和里面的nssm-2.24都要解压)

  5. 修改配置文件内容

    找到cfg.example.json文件,复制一份到windows-agent.exe同级目录(根据自己的机器选择x64和x86)

    1566810430444

    修改配置文件内容

    {
        "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
        }
    }
    
    
  6. 以管理员身份运行CMD

  7. CD到解压目录

    cd H:\tmp\windows-agent-release-1.0.3\x64
    
  8. CD到包含windows-agent.exe的文件夹下运行命令

    windows-agent.exe
    
  9. 输出正常后使用 nssm 注册为 Windows 服务

    CD到nssm解压目录中包含nssm.exe的文件夹根据自己的机器选择win32和win64)

    执行命令

    nssm.exe install windows-agent
    

    输入或选择windows-agent.exe文件的绝对路径,以及其上一级目录

  10. 启动服务

    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

  1. 安装和配置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
    
  2. 克隆代码

    go get -u github.com/open-falcon/mymon
    
  3. 编译代码

    cd $GOPATH/src/github.com/open-falcon/mymon
    make
    
  4. 修改配置文件

    [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 
    
  5. 测试启动

    cd $GOPATH/src/github.com/open-falcon/mymon
    ./mymon -c etc/myMon.cfg
    
  6. 添加定时任务

    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
    
  7. 查看日志

    cd $GOPATH/src/github.com/open-falcon/mymon
    cat myMon.log
    

MySQL监控指标

open-falcon监控Redis

open-falcon监控Tomcat

官方文档

博客

Tomcat监控部署

  1. 安装和配置JDK(使用tar.gz文件)

    1. 解压JDK到指定的目录
    tar zxvf /tmp/jdk-8u221-linux-x64.tar.gz -C /tomcat
    
    1. 配置环境变量

      ## 配置环境变量
      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
      
    2. 刷新配置文件

      ## 刷新配置
      source ~/.bashrc
      
    3. 验证是否安装成功

      ## 查看java版本
      java -version
      
  2. 安装Tomcat

    tar zxvf /tmp/apache-tomcat-8.5.45.tar.gz -C /tomcat
    
  3. 修改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"
    
  4. 启动Tomcat

    ## 前往Tomcat的bin目录
    cd /tomcat/apache-tomcat-8.5.45/bin
    ## 启动Tomcat
    sh startup.sh
    
  5. 安装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
        }
    }
    
  6. 部署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
    
  7. 启动jmxmon服务

    cd /tomcat/jmxmon-v0.0.2
    sh control start
    
  8. 查看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监控项的类型有哪些?

  1. GAUGE:实测值,直接使用采集的原始数值,比如气温;
  2. COUNTER:记录连续增长的数据,只增不减。比如汽车行驶里程,网卡流出流量,cpu_idle等;
  3. 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个商值,只要有一个商值满足阈值则报警
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!