【Falcon】Falcon-Agent基础数据采集

下面列出的采集项都是falcon-agent直接支持的,每隔一段时间(目前是60s)采集汇报一次

CPU相关采集项

计算方法:每秒采集一次/proc/stat,计算差值。都是GAUGE类型的。

  • cpu.idle 是个百分比的数字,比如80.3
  • cpu.busy 与cpu.idle相对=100-cpu.idle
  • cpu.guest guest时间占比
  • cpu.iowait iowait时间占比
  • cpu.irq irq时间占比
  • cpu.softirq softirq时间占比
  • cpu.nice nice时间占比
  • cpu.steal steal时间占比
  • cpu.system system时间占比
  • cpu.user user时间占比
  • cpu.cnt cpu核数
  • cpu.switches cpu上下文切换次数,COUNTER类型

磁盘相关采集项

计算方法:先读取/proc/mounts拿到所有挂载点,然后通过syscall.Statfs_t拿到blocks和inode的使用情况,都是GAUGE类型的。
每个metric都会有个tag:mount=mount,fstype=fstype,mount是挂载点,fstype是文件系统,比如ext4

  • df.bytes.free 是个integer,表示free的block数目
  • df.bytes.free.percent 是个float,表示free的block数目占总的block数目的百分比,比如32.1
  • df.bytes.total 是个integer,表示block总数
  • df.bytes.used 不解释
  • df.bytes.used.percent 不解释
  • df.inodes.total 是个integer,表示inode总数
  • df.inodes.free 是个integer,表示free的inode数目
  • df.inodes.free.percent 是个float,表示free的inode占比
  • df.inodes.used 不解释
  • df.inodes.used.percent 不解释

LSI RAID
使用 megacli 工具读取 RAID 相关信息,10分钟采集一次,tag 表明所属 PD 或者 VD:

PD=Enclosure_ID:SLOT_ID,如 PD=32:0 表明第一块磁盘

VD=0 表明第一个逻辑磁盘

  • sys.disk.lsiraid.pd.Media_Error_Count 这个及以下三个指标目前仅作为数据收集,不一定意味磁盘损坏(概率变大)
  • sys.disk.lsiraid.pd.Other_Error_Count
  • sys.disk.lsiraid.pd.Predictive_Failure_Count
  • sys.disk.lsiraid.pd.Drive_Temperature
  • sys.disk.lsiraid.pd.Firmware_state 如果值不为0,则此物理磁盘出现问题
  • sys.disk.lsiraid.vd.cache_policy 如果值不为0,表示此逻辑磁盘缓存策略和设置不符
  • sys.disk.lsiraid.vd.state 如果值不为0,表示此逻辑磁盘出现问题

SMART
使用 smartctl 工具读取磁盘 SMART 信息,10分钟采集一次,目前所有指标仅作为数据收集,不一定意味磁盘损坏(概率变大),tag 表明盘符,device=/dev/sda

  • sys.disk.smart.Reallocated_Sector_Ct
  • sys.disk.smart.Spin_Retry_Count
  • sys.disk.smart.Reallocated_Event_Count
  • sys.disk.smart.Current_Pending_Sector
  • sys.disk.smart.Offline_Uncorrectable
  • sys.disk.smart.Temperature_Celsius

分区读写监控
测试所有已挂载分区是否可读写,1分钟采集一次,tag 表明挂载点,mount=/home

  • sys.disk.rw 如果值不为0,表明此分区读写出现问题

IO相关采集项

计算方法:每秒采集一次/proc/diskstats,计算差值,都是COUNTER类型的。
每个metric都会有个tag: device=$device,表示设备,比如sda1、sdb

下面各个采集项都是Integer,意思用中文表达不好说,直接给英文doc

  • disk.io.ios_in_progress Number of actual I/O requests currently in flight.
  • disk.io.msec_read Total number of ms spent by all reads.
  • disk.io.msec_total Amount of time during which ios_in_progress >= 1.
  • disk.io.msec_weighted_total Measure of recent I/O completion time and backlog.
  • disk.io.msec_write Total number of ms spent by all writes.
  • disk.io.read_merged Adjacent read requests merged in a single req.
  • disk.io.read_requests Total number of reads completed successfully.
  • disk.io.read_sectors Total number of sectors read successfully.
  • disk.io.write_merged Adjacent write requests merged in a single req.
  • disk.io.write_requests total number of writes completed successfully.
  • disk.io.write_sectors total number of sectors written successfully.
  • disk.io.read_bytes 单位是byte的数字
  • disk.io.write_bytes 单位是byte的数字
  • disk.io.avgrq_sz 下面几个值就是iostat -x 1看到的值
  • disk.io.avgqu-sz
  • disk.io.await
  • disk.io.svctm
  • disk.io.util 是个百分数,比如56.43,表示56.43%

机器负载相关采集项

计算方法:读取/proc/loadavg,都是GAUGE类型的。没啥好解释的,metric名称如下:

  • load.1min
  • load.5min
  • load.15min

网络相关采集项

计算方法:读取/proc/net/dev,每秒采集一次,计算差值,都是Integer类型,都是COUNTER类型的。
每个metric都对应一个tag: iface=$iface,比如eth0

metric中带有in的表示流入情况,out表示流出情况,total是总量in+out,支持的metric如下:

  • net.if.in.bytes
  • net.if.in.compressed
  • net.if.in.dropped
  • net.if.in.errors
  • net.if.in.fifo.errs
  • net.if.in.frame.errs
  • net.if.in.multicast
  • net.if.in.packets
  • net.if.out.bytes
  • net.if.out.carrier.errs
  • net.if.out.collisions
  • net.if.out.compressed
  • net.if.out.dropped
  • net.if.out.errors
  • net.if.out.fifo.errs
  • net.if.out.packets
  • net.if.total.bytes
  • net.if.total.dropped
  • net.if.total.errors
  • net.if.total.packets

端口采集项

计算方法:ss -ln,获取里边正在处于listen状态的端口。GAUGE类型,值要么是1:代表在监听,要么是0,代表没有在监听

每个metric有tag:port=port,port就是端口

更新说明 最新版本不会把所有端口都上报,用户在portal上配置监控策略,对某些端口做监控,配置了哪些端口就汇报哪些端口

  • net.port.listen

机器内核配置

都是GUAGE类型

  • kernel.maxfiles 读取的/proc/sys/fs/file-max
  • kernel.files.allocated 读取的/proc/sys/fs/file-nr第一个Field
  • kernel.files.left 值=kernel.maxfiles-kernel.files.allocated
  • kernel.maxproc 读取的/proc/sys/kernel/pid_max

ntp采集项

使用 ntpq -pn 获取本机时间相对于 ntp 服务器的 offset,10分钟采集一次

  • sys.ntp.offset 本机偏移时间,单位为ms,值过大或者为0则表明有异常,需要报警

进程监控

  • proc.num 进程数目,可以通过tag指定具体指哪个进程,比如name=sshd,如果是Java的应用进程名可能都是java,没法做区分,此时可以配置cmdline,比如cmdline=./falcon_agent-c./cfg.ini

其他采集项

  • agent.alive 只有一个值,就是1,可以配合nodata(600)来做机器是否宕机的辅助判断依据

/proc/net/netstat中的部分采集项,TcpExt.拼接上下面各个字段就是metric,比如TcpExt.PruneCalled

  • PruneCalled 慢速路径中,如果不能将数据直接复制到user space,需要加入到sk_receive_queue前,会检- 查receiver side memory是否允许,如果rcv_buf不足就可能prune ofo queue。此时计数器加1
  • LockDroppedIcmps tcp_v4_err(): 接收到ICMP错误报文,但tcp socket被user锁住
  • ArpFilter 在三手握手时的SYN_RECV状态中接收到RST或者SYN的次数
  • TW inet_twdr_do_twkill_work(): TIME_WAIT超时的socket数量(timeout >= 4s)
  • DelayedACKLocked ACK定时器因为user已经锁住而无法发送ACK的次数
  • ListenOverflows 三路握手最后一步完全之后,Accept queue队列超过上限时加1
  • ListenDrops 任何原因,包括Accept queue超限,创建新连接,继承端口失败等,加1
  • TCPPrequeueDropped 如果因为内存不足(ucopy.memory < sk->rcv_buf)而加入到prequeue失败,重新由backlog处理,计数器加1
  • TCPTSReorder Recovery状态时,接收到到部分确认(snd_una < high_seq)时但已经undo完成(undo_retrans == 0)的次数。 数量上与TCPPartialUndo相等。
  • TCPDSACKUndo Disorder状态下,undo完成(undo_retrans == 0)的次数
  • TCPLoss 丢包
  • TCPLostRetransmit 根据SACK数据推测出的重段包丢失计数器:在tcp_sacktag_write_queue()->tcp_mark_lost_retrans(), 如果发现tcp_highest_sack_seq(tp)超过某skb在重传时的snd_nxt(TCB->ack_seq),就认为这个重传包 已经丢失了,加1(加的不是段数)。tcp_highest_sack_seq(tp)是被SACK过的具有最高SEQ号的skb的seq
  • TCPLossFailures tcp_retransmit_timer(): icsk_retransmit==0(第一次进入重传状态)并且处于Loss状态下,计数器加1
  • TCPFastRetrans (非RTO timer)快速重传次数,即tcp_fastretrans_alert()/tcp_simple_retransmit()->tcp_xmit_retransmit_queue()中,如果不是LOSS状态,就加1
  • TCPTimeouts 在RTO timer中,从CWR/Open状态下第一次超时的次数,其余状态不计入这个计数器;SYN-ACK的超时次数
  • TCPSchedulerFailed tcp_delack_timer(): 在delay ACK处理功能内,如果prequeue中仍有数据,计数器就加1;加入到prequeue,本来是期待着userspace(使用tcp_recvmsg()之类的系统调用)尽快处理之。其中仍有数据,可能隐含着userspace行为不佳。
  • TCPAbortOnMemory 在执行tcp_close()/probe timer/keepalive timer时,orphan sockets数量和tcp_memory_allocated是否超过最大值的次数
  • TCPAbortOnTimeout RTO/probe/keepalive timer到达最大重试次数或者最长重试时间的次数
  • TCPAbortFailed tcp_send_active_reset(): alloc_skb()或者tcp_transmit_skb()失败。
  • TCPMemoryPressures tcp_enter_memory_pressure()在从“非压力状态”切换到“有压力状态”时计数器加1
  • TCPSpuriousRTOs tcp_process_frto(),如果frto_counter !=0 && frto_counter != 1加1
  • TCPBacklogDrop 如果socket被user锁住,后退一步内核会把包加到sk_backlog_queue,但如果因为sk_rcv_buf不足的原因入队失败,计数器加1
  • TCPMinTTLDrop 在接收到TCP报文或者TCP相关的ICMP报文时,检查IP TTL,如果小于socket option设置的一个阀值,就丢包

进程资源监控

威波写了一个插件,监控god启动进程占用的资源情况,大家可以用来监控服务进程的状态,并且继承god部署时使用tag,具体Metric如下:
1、process.cpu.all #进程和它的子进程使用的sys+user的cpu,单位是jiffies
2、process.cpu.sys #进程和它的子进程使用的sys cpu,单位是jiffies
3、process.cpu.user #进程和它的子进程使用的user cpu,单位是jiffies
4、process.swap #进程和它的子进程使用的swap,单位是page
5、process.fd #进程使用的文件描述符个数
6、process.mem #进程占用内存,单位byte

服务器 门神 管理口 状态监控

Metric 如下:
1、 xm.menshen # 服务器门神是否可用。值为整数类型,1 可用,其他不可用
2、xm.ipmi # 服务器管理接口是否可用。值为整数类型,1 可用,其他不可用

其他命令采集

ss -s

  • ss.orphaned
  • ss.closed
  • ss.timewait
  • ss.slabinfo.timewait
  • ss.synrecv
  • ss.estab

转载:http://git.n.xiaomi.com/falcon/doc/wikis/agent_metric_intro

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342