蓝鲸-监控告警

运维管理 专栏收录该内容
32 篇文章 3 订阅

目前覆盖的监控对象包含主机层、组件层、服务拨测,对于无法开箱即用的监控对象可以使用脚本采集、日志采集以及组件二次开发,通过仪表盘实现自定义可视化视图呈现,基于iPaaS的产品设计(关联CMDB、作业执行、数据平台等)天然打破"竖井式"产品设计理念,依托于故障自愈实现告警的无人值守!

主机监控

支持以主机为单元的基础性能指标查看、告警策略配置、告警记录等功能。指标支持CPU、内存、磁盘、网络、进程、系统、事件(corefile、主机重启等)等7类共30~40项指标。

指标定义

指标类型单位含义采集方法(Linux)采集方法(Windows)   
5分钟平均负载CPU%五分钟内同时处于就绪状态的平均进程数awk '{print $2}' /proc/loadavgN/A   
cpu总使用率CPU%当前消耗的总CPU百分比delta(busy) / delta(total) * 100 busy = user + sys + nice + iowait + irq + softirq + steal + guest + guestnice + stolen total = busy + idlefor /f "tokens=1,2,* delims==" %i in ('wmic path Win32_PerfFormattedData_Counters_ProcessorInformation where "Name='_Total'" get PercentIdleTime/value \findstr PercentIdleTime') do (set /a 100-%j)  
cpu单核使用率CPU%当前单个CPU消耗的百分比delta(busy) / delta(total) * 100 busy = user + sys + nice + iowait + irq + softirq + steal + guest + guestnice + stolen total = busy + idlefor /f "tokens=1,2,* delims==" %i in ('wmic path Win32_PerfFormattedData_Counters_ProcessorInformation where "not name like '%Total%'" get PercentIdleTime/value \findstr PercentIdleTime') do (set /a 100-%j)  
接收字节流量网络KB/s网卡每秒接收的比特数,即网卡的上行带宽读取/proc/net/dev文件 第1项SpeedRecv = delta(new.BytesRecv, old.BytesRecv) / intervalwmic path Win32_PerfRawData_Tcpip_NetworkInterface get BytesReceivedPersec/value \findstr BytesReceivedPersec  
发送字节流量网络KB/s网卡每秒发送的比特数,即网卡的下行带宽读取/proc/net/dev文件第9项SpeedSent = delta(new.BytesSent, old.BytesSent) / intervalwmic path Win32_PerfRawData_Tcpip_NetworkInterface get BytesSentPersec/value \findstr BytesSentPersec  
发送包速率网络个/s网卡每秒接收的数据包数读取/proc/net/dev文件 第10项 SpeedPacketsSent = (counterDiff(once.Stat[i].PacketsSent, val.PacketsSent, NetCoutnerMaxSize)) / intervalwmic path Win32_PerfRawData_Tcpip_NetworkInterface get PacketsSentPersec/value \findstr PacketsSentPersec  
接收包速率网络个/s网卡每秒发送的数据包数读取/proc/net/dev文件 第2项 SpeedPacketsRecv = delta(new.PacketsRecv, old.PacketsRecv) / intervalwmic path Win32_PerfRawData_Tcpip_NetworkInterface get PacketsReceivedPersec/value | findstr PacketsReceivedPersec   
established连接数网络当前服务器下TCP链接处于ESTABLISHED状态的连接数系统netlink实现 验证方法netstat -pant\grep ESTABLISHEDnetstat -ano -p tcp | more +4 | find " ESTABLISHED "  
time_wait连接数网络当前服务器下TCP链接处于TIME_WAIT状态的连接数系统netlink实现 验证方法netstat -pant\grep TIME_WAITnetstat -ano -p tcp | more +4 | find " TIME_WAIT "  
listen连接数网络当前服务器下TCP链接处于LISTEN状态的连接数系统netlink实现 验证方法netstat -pant\grep LISTENnetstat -ano -p tcp | more +4 | find " LISTENING "  
last_ack连接数网络当前服务器下TCP链接处于LAST_ACK状态的连接数系统netlink实现 验证方法netstat -pant\grep LAST_ACKnetstat -ano -p tcp | more +4 | find " LAST_ACK "  
syn_recv连接数网络当前服务器下TCP链接处于SYN_RECV状态的连接数系统netlink实现 验证方法netstat -pant\grep SYNC_RECVnetstat -ano -p tcp | more +4 | find " SYN_RECV "  
syn_sent连接数网络当前服务器下TCP链接处于SYN_SENT状态的连接数系统netlink实现 验证方法netstat -pant\grep SYNC_SENTnetstat -ano -p tcp | more +4 | find " SYN_SENT "  
fin_wait1连接数网络当前服务器下TCP链接处于FIN_WAIT1状态的连接数系统netlink实现 验证方法netstat -pant\grep FIN_WAIT1netstat -ano -p tcp | more +4 | find " FIN_WAIT_1 "  
fin_wait2连接数网络当前服务器下TCP链接处于FIN_WAIT2状态的连接数系统netlink实现 验证方法netstat -pant\grep FIN_WAIT2netstat -ano -p tcp | more +4 | find " FIN_WAIT_2 "  
closing连接数网络当前服务器下TCP链接处于CLOSING状态的连接数系统netlink实现 验证方法netstat -pant\grep CLOSINGnetstat -ano -p tcp | more +4 | find " CLOSING "  
closed状态连接数网络当前服务器下TCP链接处于CLOSED状态的连接数系统netlink实现 验证方法netstat -pant\grep CLOSEDnetstat -ano -p tcp | more +4 | find " CLOSE "  
UDP接收包量网络UDP包接受数读取 /proc/net/snmp 文件 InDatagrams项 cat /proc/net/snmp\grep Udp:\grep -v 'InDatagrams'\awk '{print $2}'wmic path Win32_PerfFormattedData_Tcpip_UDPv4 get DatagramsReceivedPersec/value
UDP发送包量网络UDP包发送数读取 /proc/net/snmp 文件 OutDatagrams项 cat /proc/net/snmp\grep Udp:\grep -v 'InDatagrams'\awk '{print $5}'读取/proc/net/dev文件 第2项 SpeedPacketsRecv = delta(new.PacketsRecv, old.PacketsRecv) / interval
可用物理内存内存MB可用内存容量读取 /proc/meminfo 文件 MemTotal字段*1024 cat /proc/meminfo \grep 'MemTotal'\awk -F ':' '{print $2}'\awk '{print $1}'\awk '{print $1 * 1024}'
交换分区已用量内存MB交换分区使用容量读取 /proc/meminfo 文件 golang系统调用syscall.Sysinfo sysinfo.Totalswap - sysinfo.Freeswap 验证方法free -mwmic os get TotalSwapSpaceSize/value   
物理内存使用率内存%内存使用百分比读取 /proc/meminfo 文件[MemTotal-MemFree]/MemTotal*100.0wmic os get FreePhysicalMemory,TotalVisibleMemorySize/valuefindstr "FreePhysicalMemory TotalVisibleMemorySize"  
物理内存使用量内存MB已经使用的内存容量读取 /proc/meminfo 文件[MemTotal-MemFree]*1024wmic os get FreePhysicalMemory,TotalVisibleMemorySize/value \findstr "FreePhysicalMemory TotalVisibleMemorySize"  
应用内存使用量内存MB应用进程使用的内存量读取 /proc/meminfo 文件 如果有MemAvailable字段(不同系统版本有差异)(MemTotal-MemAvailable)/1024,如果没有该字段,MemAvailable=MemFree+Buffers+CachedN/A   
应用内存使用率内存%应用进程内存量占总内存的百分比读取 /proc/meminfo 文件 (MemTotal-MemAvailable)/(MemTotal*100.0),如果没有MemAvailable字段,则MemAvailable=MemFree+Buffers+CachedN/A   
磁盘使用率磁盘%磁盘已用空间的百分占比golang 系统调用syscall.Statfs 相当于dffor /f "tokens=1,2,* delims==" %i in ('wmic path Win32_PerfFormattedData_PerfDisk_LogicalDisk where "name like '%:%'" get PercentFreeSpace/value \findstr PercentFreeSpace') do (set /a 100-%j)  
读速率磁盘次/s磁盘每秒输出次数读取 /proc/diskstats 每一行的第四项 float64((new_stat.ReadCount - stat.ReadCount)) / 60 只上报逻辑分区wmic path Win32_PerfFormattedData_PerfDisk_LogicalDisk get DiskReadsPersec/value   
写速率磁盘次/s磁盘每秒写入次数读取 /proc/diskstats第8项 float64((new_stat.WriteCount - stat.WriteCount)) / 60 只上报逻辑分区wmic path Win32_PerfFormattedData_PerfDisk_LogicalDisk get DiskWritesPersec/value   
磁盘IO使用率磁盘%磁盘处于活动时间的百分比读取 /proc/diskstats 文件读取 /proc/diskstats第13项 (new_stat.IoTime - stat.IoTime)/60.0 / 1000.0for /f "tokens=1,2,* delims==" %i in ('wmic path Win32_PerfFormattedData_PerfDisk_LogicalDisk where "Name='_Total'" get PercentIdleTime/value \findstr PercentIdleTime') do (set /a 100-%j)  
系统进程数进程系统已启动进程数量抓取/proc 目录下所有子目录数量wmic path win32_process get ProcessId/valuefindstr ProcessId  
Agent心跳丢失-GSE事件 监测GSE的Agent是否正常N/AN/A   
磁盘只读-GSE事件 监测磁盘状态N/AN/A   
磁盘写满-GSE事件 监测磁盘状态N/AN/A   
Corefile产生-GSE事件 监测/proc/sys/kernel/core_pattern中目录内文件的变化N/AN/A   
PING不可达告警-GSE事件 监测PING不可达事件告警N/AN/A   
进程端口事件 进程对应端口N/Awmic path win32_process get */value 和 netstat -ano   
自定义字符型事件 N/AN/AN/A   
系统启动时间异常事件 监测系统启动异常告警N/AN/A   
         

进程资源

采集 应用程序 所占用系统资源,主要用于开发监测单个程序占用的资源。

适用于 LinuxWindows

监控指标

指标单位具体含义备注
Process.CPU%CPU使用率cpu utilization of the process in "##.#" format. Currently, it is the CPU time used divided by the time the process has been running (cputime/realtime ratio),expressed as a percentage.
Process.Mem%内存使用率ratio of the process’s resident set size to the physical memory on the machine, expressed as a percentage.
Process.FileDescriptor文件句柄数lsof -p ${pid} 来获取单个进程占用的文件句柄数
Process.RESMB物理内存resident set size, the non-swapped physical memory that a task has used . (alias rssize, rsz).
Process.VIRTMB虚拟内存virtual memory size of the process. Device mappings are currently excluded.

FAQ

  1. 问:一个二进制程序启动多个进程,仅pid不同,可以监控吗?

    答: 监控先识别进程二进制文件名称,然后匹配出该名称下所有进程

    组件监控

  2. 组件监控

    监控常见开源组件及商业中间件的性能指标,比如Nginx的每分钟客户端请求数(req_per_min)、等待中的连接数(waiting)等,或Oracle的并发等待时间( CONCURRENCY_WAIT_TIME)等。 图1. 组件监控

    图2. Nginx关键性能指标监控

    图3. Oracle关键性能指标监控

    蓝鲸监控除内置组件性能指标的采集能力,同时兼容Prometheus Exporter的导入及开发能力,全面覆盖组件的采集能力。

    采集指标

  3. 指标单位具体含义
    jvm_buffer_pool_used_bytesMB已使用缓冲池的大小
    jvm_buffer_pool_capacity_bytesMB缓冲池的字节容量
    jvm_buffer_pool_used_buffers已经使用的缓冲数量
    jmx_config_reload_success_total已成功重新加载配置的次数
    jvm_threads_current当前线程数
    jvm_threads_daemon当前后台线程数
    jvm_threads_peak当前峰值线程数
    jvm_threads_started_total已经启动的线程计数
    jvm_threads_deadlocked等待获取对象监视器或自己的同步器的死锁线程数
    jvm_threads_deadlocked_monitor等待获取对象监视器的死锁线程数
    jmx_scrape_duration_secondsscrape的时间
    jmx_scrape_errorscrape失败次数
    jvm_classes_loaded当前加载的类数量
    jvm_classes_loaded_total从JVM开始执行以来已经加载的类的总数
    jvm_classes_unloaded_total从JVM开始执行以来未加载的类的总数
    jvm_infoJVM版本信息
    jvm_memory_bytes_usedMB已经使用的内存
    jvm_memory_bytes_committedMB已经提交的内存
    jvm_memory_bytes_maxMB最大内存
    jvm_memory_bytes_initMB初始化内存
    jvm_memory_pool_bytes_usedMB内存池中已经使用的内存
    jvm_memory_pool_bytes_committedMB内存池中已经提交的内存
    jvm_memory_pool_bytes_maxMB内存池中最大内存
    jvm_memory_pool_bytes_initMB内存池中初始化内存
    jmx_config_reload_failure_total配置reload失败的次数
    jvm_gc_collection_seconds_count

    gc时间

自定义监控

当你需要对业务指标或蓝鲸监控未内置的监控对象做监控时,通过自定义监控可实现你的监控需求。

大屏展示

通过仪表盘功能可以对当前业务下的监控对象做可视化分析,实现你的个性化展示和监控需求. 

告警自动化处理

监控的告警自动处理能力依托于PaaS上的故障自愈上,请在访问故障自愈的在线文档了解详情。

图1. 故障自愈执行列表

图2. 单个告警执行故障自愈详情

告警检测和收敛

告警检测和收敛是监控的核心能力之一,监控支持静态阈值、同比、环比等多种检测算法,其中同比、环比更适合周期性时间序列数据的检测。

通过X分钟内满足Y次检测算法实现告警防抖动。

此外检测算法的组合策略,可设置同时满足多种检测算法才触发告警。

操作审计

记录采集、监控策略、视图以及其他设置的新建、修改、删除操作,追溯每一条变更。

权限管理

监控的权限体系分2个层面:业务隔离业务下角色隔离,均是基于配置平台(CMDB)实现.

提供了 谁能访问该业务谁可查看或变更该业务配置 的功能。

业务隔离

配置平台业务间的权限通过业务中的运维人员、产品人员、测试人员、开发人员以实现业务隔离(不同业务,拥有对应业务权限的人员才能访问)

monitor在配置中心拥有 蓝鲸业务3的业务权限  

他在监控中也只有这2个业务的权限,因为监控继承了CMDB权限。

业务下角色隔离

分为 查询变更 权限,基于配置平台(CMDB)针对单个业务可设置运维测试开发产品权限。

默认运维拥有 查询变更 权限,其他人员拥有 查询 权限。

根据实际使用场景,可以针对单个角色做权限调整。

  • 7
    点赞
  • 7
    评论
  • 37
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论 7 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页

打赏作者

程序员杂谈

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值