监控指标的完备程度,是衡量一个监控系统优劣的重要因素。指标不仅是个名称+数值,更蕴含了目标监控对象的领域知识,理解指标,会加深对目标领域的认知。——晓辉说。

前言

很多用户来问,这个指标是什么意思,那个指标是什么意思,解释半天也解释不明白,核心原因是,用户对他要监控的目标本身就缺乏知识。比如Nightingale里的一个net.in.dropped指标,表示入方向的网卡每秒丢包量,如果你从来没有执行过ifconfig命令,对网络丢包不知道是咋回事,真的就很难理解这个指标的意思了。

下面会分别讲解一些常见指标的获取方式,让大家有个感性的认识,会带出部分Linux基础知识。坐好扶稳~

一、Linux相关指标举例

Linux下很多指标都是来自/proc目录下的一些信息,这个目录很特殊,从网上摘抄一段话给大家:

Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。

基于/proc文件系统如上所述的特殊性,其内的文件也常被称作虚拟文件,并具有一些独特的特点。例如,其中有些文件虽然使用查看命令查看时会返回大量信息,但文件本身的大小却会显示为0字节。此外,这些特殊文件中大多数文件的时间及日期属性通常为当前系统时间和日期,这跟它们随时会被刷新(存储于RAM中)有关。

为了查看及使用上的方便,这些文件通常会按照相关性进行分类存储于不同的目录甚至子目录中,如/proc/scsi目录中存储的就是当前系统上所有SCSI设备的相关信息,/proc/N中存储的则是系统当前正在运行的进程的相关信息,其中N为正在运行的进程(可以想象得到,在某进程结束后其相关目录则会消失)。

大多数虚拟文件可以使用文件查看命令如cat、more或者less进行查看,有些文件信息表述的内容可以一目了然,但也有文件的信息却不怎么具有可读性。不过,这些可读性较差的文件在使用一些命令如apm、free、lspci或top查看时却可以有着不错的表现。

我们挑一类简单的指标:最近1min、5min、15min的负载数据,这3个指标我们平时用的比较多,执行uptime命令就能看到,比如:

监控系统去采集的时候,并非是执行uptime命令,那就太low了,效率也差,实际上我们是从/proc/loadavg文件读取的,因为/proc的读取不涉及真实的硬盘IO所以效率是非常高的。看一眼这个文件的内容哈:

看完了负载的指标,再看个内存利用率,我们经常用free -h来看内存使用情况,实际内存数据是在/proc/meminfo文件,我们来看一眼:

MemTotal、MemFree、MemAvailable都有。

最后再看一下磁盘使用情况,这个要比上面两个都更难获取,不仅仅是读取/proc的内容了。Linux上面的命令就是df -h,可以看到各个挂载点的使用情况。监控系统实际在采集这个数据的时候,是分成两步。

第一步是读取/proc/mounts获取所有的挂载点,过滤掉一些虚拟挂载点,然后执行Statfs的一个系统调用才能得到这个分区的使用情况。

二、Redis相关指标举例

我这有一个redis实例,连上去执行一下info命令给大家看看输出:

看到了吧,各种指标都有,当我们谈到redis监控的时候,主要就是监控这些指标。

做得易用的监控,会允许你直接配置redis的连接地址,监控系统会自动连上去执行命令。如果没有提供页面配置方式,一般至少也会提供插件扩展方式,容许用户写脚本,用脚本去采集监控指标,然后将监控数据推给监控服务端。

三、应用业务层面指标监控

应用层面的监控主要是接口成功率、响应时长、QPS等,这些监控数据的采集,最好是能在统一的HTTP框架或RPC框架里搞定,或者在统一的七层接入里搞定,减少各业务接入成本。

如果要做trace监控或者业务层面的指标监控,那基本就只能埋点了,比如监控系统的数据接口模块,我想统计一下每秒接收多少个数据点,那就需要数据接收模块在代码里写相关的采集逻辑了。

通过日志提取指标,也是个典型手段,通常就是用ELK这种方案,把日志收集到中心,写查询语句去查询分析。但这种方式比较重,我们在Nightingale中引入了一种更轻量的方案供大家参考。核心逻辑是在服务端配置正则表达式,下发到agent侧,agent流式读取日志文件,每读到一行,就用正则匹配一下,看是否命中,如果命中,就可以从中提取出一些指标信息。

举例1:如果有程序OOM,通常会在/var/log/messages中打印 Out of memory 这样的关键字,我想在系统触发OOM的时候告警,那就可以写个正则去匹配/var/log/messages,计算最近1min有多少条日志命中,把命中的日志行数作为指标上报即可。

举例2:比如有个交易程序,每一笔订单都把交易金额打印到日志里,我们就可以写个正则从日志里提取这个金额,统计最近1min的交易总量或者平均交易单价之类的。

滴滴Logi日志服务套件

滴滴Logi日志服务套件在滴滴内部经过7年多的沉淀打磨,针对日志采集、日志存储、日志计算、日志检索、日志分析各个环节,在组件能力上PAAS化建设、在引擎稳定性与扩展性上进行了针对性的优化。

目前该套件已经开源了滴滴Logi-KafkaManager,后期还会陆续开源Logi-Agent、Logi-LogX、Logi-ElasticSearchManager各PAAS套件。

1、滴滴Logi-KafkaManager Github:https://z.didi.cn/4newP

2、快速体验地址:http://117.51.150.133:8080/kafka 账号密码 admin/admin

3、日常FAQ:https://github.com/didi/Logi-KafkaManager/blob/master/docs/user_guide/faq.md

4、升级手册:https://github.com/didi/Logi-KafkaManager/tree/master/docs/dev_guide/upgrade_manual

5、滴滴Logi-KafkaManager云平台建设总结:

https://mp.weixin.qq.com/s/9qSZIkqCnU6u9nLMvOOjIQ

6、系列视频教程:https://mp.weixin.qq.com/s/9X7gH0tptHPtfjPPSdGO8g

滴滴夜莺

滴滴夜莺是一套分布式高可用的运维监控系统,最大的特点是混合云支持,既可以支持传统物理机虚拟机的场景,也可以支持K8S容器的场景。同时,滴滴夜莺也不只是监控,还有一部分CMDB的能力、自动化运维的能力,很多公司都基于夜莺开发自己公司的运维平台。

Github:https://z.didi.cn/4WurZ

官方文档:https://n9e.didiyun.com

提问必读:https://gocn.vip/topics/10811

语音答疑:https://m.ximalaya.com/keji/45095827/

视频教程:https://m.bilibili.com/space/442531657

二次开发:https://xie.infoq.cn/article/30d37e98fbe52ff2a79fc04b4

如果大家在使用滴滴Logi-KafkaManager和夜莺的过程中出现问题,或者有疑问需要与开发者交流的,都可以扫描下方二维码进入滴滴Logi及夜莺的开源用户群,在群中提问。

群内有滴滴Logi-KafkaManager和夜莺项目负责人:滴滴高级专家工程师—张亮、秦晓辉等技术大咖,在线为大家解答问题,欢迎大家长按二维码加小助手进群。(需备注Kafka或夜莺)

滴滴高级专家工程师保姆级运维监控科普(二)相关推荐

  1. 运维技能定级标准第3篇——关于运维工程师岗位的运维监控与MySQL数据库技能级别设计

    运维工程师岗位工作技能的评定类别(3)和(4) 3.运维监控技术 级别0,什么都不懂 级别1,常见监控工具或软件系统的基本安装.配置.使用,照猫画虎会使用而已. 级别2,熟悉监控系统的基本原理和常用配 ...

  2. 基于SpringBoot+Bootstrap极简运维监控系统

    真正的大师,永远都怀着一颗学徒的心! 一.项目简介 基于SpringBoot+Bootstrap极简运维监控系统 二.实现功能 支持cpu使用率 支持cpu温度 支持内存使用率 支持磁盘容量 支持磁盘 ...

  3. Gopher China 2019 讲师专访-滴滴出行/R lab 高级专家工程师杜欢

    第五届 Gopher China 大会将于2019年4月26日-4月28日在北京市海淀区朗丽兹西山花园酒店举办,Gopher China 大会目前是国内最大规模,最专业的 Go 语言线下技术交流大会. ...

  4. 腾讯云高级运维工程师

    本套课程腾讯云高级运维工程师,共分为13个部分,适合从事云端系统维护的运维工程师学习: 课程通过理论精讲与上机实验相结合的方式,系统性的介绍如何在腾讯云平台上进行立体化监控.实现云上微服务.自动化运维 ...

  5. 滴滴全民拼车日背后的运维技术揭秘

    桔妹导读:抗击疫情,桔妹提醒大家出门带好口罩,勤洗手,多通风.武汉加油!中国加油!在大家开工之际,桔妹邀您阅读滴滴全民拼车日背后的运维技术揭秘. 滴滴在2019年12月举办了空前盛大的全民拼车日活动, ...

  6. java运维工程师做什么_网络工程师和网络运维工程师有什么不同?

    其实网络工程师和网络运维工程师,每个地方可能对于这个岗位的叫法不同,最大的区别就是,网络运维工程师一般确认工作后,就一直在一个地方工作,比如政府单位,大型企业,都是需要运维工程师一直在那守着的,如果你 ...

  7. 深圳云计算学习:运维工程师中桌面运维需要会哪些技能?

    深圳云计算学习:运维工程师中桌面运维需要会哪些技能? 桌面运维岗位职责: 1.公司计算机网络合理规划和配置,负责计算机网络.信息管理及应用系统.数据库以及办公设备的管理,保证办公设施和服务器正常工作: ...

  8. 运维工程师主要做什么_网络工程师和网络运维工程师到底有什么不同?

    前言: 大家好,我是薛哥.网络工程师和网络运维工程师是一样的,其实二者有着很大的区别,下面给大家介绍一下 正文: 一.工作内容不同 1.网络工程师 1)负责机房内的网络联接及网络间的系统配置. 2)负 ...

  9. 网络工程师和网络运维工程师有什么不同?

    其实网络工程师和网络运维工程师,每个地方可能对于这个岗位的叫法不同,最大的区别就是,网络运维工程师一般确认工作后,就一直在一个地方工作,比如政府单位,大型企业,都是需要运维工程师一直在那守着的,如果你 ...

最新文章

  1. 2万长文,一文搞懂Kafka
  2. 惹女友生气了不用慌用python做一个3D立体花朵送女友
  3. “优化都不懂,你还想做机器学习?”
  4. 无处不在的 AWS 云计算
  5. 什么样 信号_深圳停止商务公寓用地审批释放着什么样的信号,会引起房价下跌吗...
  6. Visual Studio 技能GET
  7. Method Not Allowed一例
  8. 【渝粤教育】国家开放大学2018年秋季 1320T关系营销 参考试题
  9. Python萌新笔记
  10. mitmproxy抓包 | Python实时生成接口自动化用例
  11. 2015第36周日每天进步1%
  12. iPhone - 少一点自恋,多一点现实 !
  13. maven安装配置之后mvn命令仍然无效的解决办法
  14. Aruba7010 默认密码_收藏 | 各大品牌的变频器默认密码、万能密码、超级密码汇总...
  15. Cannot create file C:\Users\Administrator\AppData\Local\Temp\EditorLineEnds.ttr
  16. CNTV获首张互联网电视牌照
  17. 向量叉乘判断顺时针还是逆时针
  18. PATA1034题解
  19. 线索二叉树和中序非递归遍历线索化后的二叉树
  20. AWS知识图谱大赛之python数据处理和图数据库导入

热门文章

  1. C++学习笔记(二)字符型变量、ASCII、转义字符、字符串型、布尔类型、数据输入、算术运算符、前后置递增减、赋值运算符、比较运算符、逻辑运算符
  2. video增加中间播放按钮
  3. MinGW离线安装包安装教程
  4. Python基本语法之面向对象
  5. 传送门骑士无限物品的服务器,传送门骑士怎么无限刷资源 无限资源获得方法...
  6. H5 唤醒APP小记
  7. 家有千金不如一技傍身
  8. Unity制作360全景图
  9. [转] 女人其实嫁谁都会后悔
  10. docker中修改mysql最大连接数及配置文件