监控系统的应用与开发
文章平均质量分 73
介绍笔者在工作过程积累的监控系统的使用心得与开发过程
洒满阳光的午后
学习不追求快,慢才是快。
展开
-
如何解决Prometheus场景中的nodata告警问题
我们知道,prometheus会为所有的target生成一个up指标,可以使用这个指标来判断exporter但是在某些特殊场景下,例如等架构中,prometheus承担的角色是pullexporter指标并到远程端点。因此当某个Prometheus节点因为某些原因(如网络故障、prometheus节点本身故障等)离线,而无法向发送数据时(也即nodata场景),该节点所承载的监控数据(如}等)将全部丢失,并且监控系统无法感知该事件。在prometheus节点较少的情况下,我们可以通过枚举方法,配置。原创 2023-02-16 15:40:52 · 1681 阅读 · 2 评论 -
大规模Prometheus监控系统实践
刚毕业的几年,我的主攻方向是以zabbix为核心的监控系统构建与监控模板制作,那时候公司的基础设施形态以传统的裸金属集群为主,涵盖各种型号的服务器、交换机、防火墙、存储设施、专用设备等等。21年入职新司后,无缘再接触这些嗡嗡作响的大家伙,新司的基础设施则以虚拟机、云上服务、docker/k8s为主,主攻方向也由zabbix转向prometheus。两者孰优孰劣,网络上一直都有讨论。原创 2023-02-08 17:57:02 · 1312 阅读 · 0 评论 -
如何解决Prometheus的数据回填问题
去年10月底的时候,我们的监控系统因为一个偶然的网络离线问题,出乎意料地发生了重大的故障,这次故障暴露了当前监控系统存在的一下重大隐患,即无法处理Prometheus的数据回填,本文对该问题进行详细分析,并给出优化方案。原创 2023-01-18 18:03:57 · 3260 阅读 · 0 评论 -
如何监控NVIDIA GPU服务器?
可使用NVIDIA官方提供的dcgm-exporter监控GPU,项目地址:https://github.com/NVIDIA/dcgm-exporter,推荐使用docker安装:需要使用高版本docker,低版本docker无法使用参数。如上述镜像无法拉取,可使用我存在阿里云的镜像:指标地址为:Grafana dashboard:指标释义如下:指标释义可参看:原创 2022-12-05 17:21:28 · 1362 阅读 · 0 评论 -
可观测性入门
可观测性是指可以在不了解系统内部运行机理的情况下,从外部诊断系统运行情况。它使我们能够轻松定位和处理新问题,并帮助我们了解为什么会发生这些问题。为了实现这个目标,必须正确地检测应用程序,也就是说应用程序代码必须发出调用链(trace)、指标(metric)和日志(log)。应用程序能够被正确检测,意味着开发人员不再需要添加更多的检测来解决问题,因为其已拥有所有的信息。原创 2022-10-19 11:27:30 · 666 阅读 · 0 评论 -
监控系统解决方案Thanos与VictoriaMetrics对比研究
目前主流的Prometheus长期存储及集群解决方案,包括Thanos、Cortex、VictoriaMetrics以及Grafana近期发布的Mimir,出现大一统趋势,其中以Thanos(receive模式)、Cortex、Mimir为代表的S3存储解决方案,架构、功能可以说基本一致。本文将从读写性能、资源成本、维护成本三个角度,简单对比Thanos与VictoriaMetrics的差异与优劣。原创 2022-10-12 16:31:45 · 2033 阅读 · 0 评论 -
process-exporter中namedprocess_namegroup_states指标的正确含义是什么
注意:process-exporter在计算指标namedprocess_namegroup_states时,会将进程名相同的进程合并(例如多个java进程),因此上述公式在这种情况下也是不准的。这个指标通过process-exporter采集,原意是计算节点上sleeping进程的数量,表面看起来没什么问题,实际上得出的结果却是完全错误的。这个指标的含义为处于Sleeping状态的进程sshd线程数为7,可以通过/proc/{pid}/status查看进程的状态及线程数。...原创 2022-08-30 17:06:43 · 967 阅读 · 0 评论 -
关于Postgres主从复制延迟监控的错误告警问题
在使用Prometheus监控的Postgres数据库时, 会发生主从复制延迟产生告警,但实际上数据库正常的问题,我们使用的exporter为https://github.com/prometheus-community/postgres_exporter,告警表达式为:pg_replication_lag > 300这个指标的说明如下:# HELP pg_replication_lag Replication lag behind master in seconds# TYPE pg_r原创 2022-04-22 17:50:36 · 1989 阅读 · 0 评论 -
Thanos如何为不同租户配置不同的数据保留时长
在之前的实践中我们已经实现了prometheus的多租户读写:Prometheus和Thanos Receiver的“写多租户”实现_洒满阳光的午后的博客-CSDN博客新的需求是要为不同的租户配置不同的数据保留时长。目前compactor组件天然是不具备多租户能力的,但是它有一个参数--selector.relabel-config=<content> Alternative to 'selector.relabel-co原创 2022-04-20 17:45:18 · 648 阅读 · 0 评论 -
prometheus告警记录持久化(历史告警保存与统计)
前段时间碰到一个需求:将Prometheus的历史告警进行持久化保存,一遍进行分析统计。在尝试了一些工具后,最终选用了alertsnitch+grafana的方案。原创 2022-03-02 17:06:54 · 5899 阅读 · 18 评论 -
k8s安装kube-prometheus后,kube top命令没有数据的排查思路
最近碰到的一个问题,安装完kube-prometheus后,kubectl top node显示metrics not available yet,但kubectl top po可以使用:原创 2022-03-02 15:23:35 · 2534 阅读 · 0 评论 -
Prometheus监控influxdb的方法及指标释义
配置方法influxdb本身自带metrics(http://$ip:8086/metrics),但内容有限,需借助telegraf来扩展监控内容。wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.8.x86_64.rpmyum localinstall influxdb-1.7.8.x86_64.rpmtelegraf在这里作为指标收集器,有两种使用方法:1、不使用influxdb_exporter,直接将tel原创 2022-02-21 17:03:06 · 4847 阅读 · 1 评论 -
Alertmanager重复/缺失告警现象探究及两个关键参数group_wait和group_interval的释义
生产中使用webhook对历史告警进行统计时发现,有些resolved消息没有对应的firing消息、有些的firing消息没有对应的resolved消息、有些resolved消息发送了多次、有些firing消息没有按照repeat_interval间隔重复且短时间内发送了多次。这些问题主要由group_wait和group_interval两个参数引起。原创 2022-01-21 16:54:06 · 8458 阅读 · 6 评论 -
Prometheus的relabel_configs和metric_relabel_configs解释及用法示例
先看两个配置的所处位置:global: ......# A list of scrape configurations.scrape_configs: # The job name assigned to scraped metrics by default. - job_name: <job_name> ........ # List of target relabel configurations. relabel_configs:原创 2021-11-29 11:06:04 · 2404 阅读 · 0 评论 -
Prometheus和Thanos Receiver的“写多租户”实现
Thanos Receiver的所谓“多租户”,主要体现在为不同的租户分配不同的Receiver(限制能向Receiver发送数据的来源),以及为不同的租户再实例本地创建不同的TSDB。Thanos Receiver组件接收Prometheus的remote_write请求,将数据写入本地TSDB,并定期将TSDB block上传到对象存储。Receiver组件同时还暴露Store API给Querer组件以实现指标实时查询。Thanos Receiver支持多租户,它从remote_write.原创 2021-11-24 16:39:28 · 1198 阅读 · 0 评论 -
使用prom-label-proxy实现Prometheus Thanos的基于标签的多租户读
Go安装go env -w GOPROXY=https://goproxy.cngo get github.com/prometheus-community/prom-label-proxycd ~/go/bin./prom-label-proxy --help原创 2021-11-24 11:40:21 · 1117 阅读 · 0 评论 -
Prometheus Thanos与Cortex组件比较
关于告警能力的配置:Thanos推荐除非有全局告警的特殊需求,否则应当使用Prometheus原生的告警能力。Cortex Thanos Distributor 接收Prometheus remote_write数据,进行验证并分发给Ingester Receiver 接收Prometheus remote_write数据,写入本地TSDB,并定期2h上传block到对象存储。 内部实现哈希环,不依赖外部存储。 Inges原创 2021-11-23 10:29:26 · 957 阅读 · 0 评论 -
Prometheus Thanos快速指南
Thanos系统构建于Prometheus之上,用于扩展Prometheus功能,提供了全局查询、高可用支持、历史数据备份到对象存储等核心能力。Prometheus在架构中扮演数据收集角色,告警功能仍然推荐使用各个Prometheus节点的本地数据及告警能力。Thanos组件Sidecar:连接到Prometheus,读取其数据并上传到对象存储。Store-gateway:提供对象存储中指标的查询能力。Compactor:对对象存储的数据进行压缩、降采样及配置保留时长。Receiver:原创 2021-11-22 15:34:11 · 2329 阅读 · 0 评论 -
Prometheus Cortex多租户读写的实现
Cortex的所有组件会从每个请求header的X-Scope-OrgID中获取租户ID。此处的租户表示的是一组数据的拥有者,它向Cortex写入数据,并拥有该数据的查询权限。所有的Cortex组件都会无条件信任带X-Scope-OrgID的请求,因此如果希望保护Cortex免受恶意调用,需要自行添加一个保护层。注意查询和写入请求的租户ID必须一致,否则无法查询到所需数据。启用多租户特性通过在配置文件中添加auth.enabled=true,或者命令行-auth.enabled=true启用多租原创 2021-11-19 15:02:41 · 953 阅读 · 0 评论 -
Prometheus Cortex使用Block存储时的相关问题
架构概述(必看)使用Block存储的相关问题使用Block存储时,需要运行额外两个服务,store-gateway和compactor。store-gateway负责查询block并被querier调用。compactor负责合并、去重block(因为replication factor的原因,同一序列会被N个Ingester存储N份,因此需要去重)。Ingester会被原创 2021-11-18 14:49:56 · 598 阅读 · 0 评论 -
Prometheus Cortex架构概述(水平可扩展、高可用、多租户、长期存储)
Cortex包含一系列可水平扩展的微服务。每个微服务采用了最合适的技术来实现水平拓展;大部分是无状态的,可以处理任意用户的请求,也有一些如ingesters则是半有状态的,依赖一致性哈希。这篇文档提供了Cortex的架构概览。原创 2021-11-17 13:55:31 · 1917 阅读 · 0 评论 -
Thanos Compact组件测试总结(处理历史数据)
参考文档官方文档:Thanos - Highly available Prometheus setup with long term storage capabilities译文及注解:https://zhangrongjie.blog.csdn.net/article/details/120976651组件作用总结compactor组件只与对象存储交互,是唯一拥有删除对象存储数据权限的组件。主要有两个作用:压缩block(将多个block合并成一个)、降采样(可禁用,5m/1h采样数据)。原创 2021-10-28 10:06:57 · 1510 阅读 · 0 评论 -
Thanos Compactor组件使用
注:compaction,在本文档中有些地方意译为压缩。原文:Thanos - Highly available Prometheus setup with long term storage capabilitiesthanos compact命令运用Prometheus 2.0存储引擎的compaction过程处理存储在对象存储中数据。Compactor组件通常不是并发安全的,因此必须作为单例部署。Compactor还负责数据的降采样:为超过40小时(2d,2w)的blocks创建5分钟原创 2021-10-26 17:25:41 · 2916 阅读 · 0 评论 -
Zabbix告警调用呼叫接口
#!/usr/bin/python# coding=utf-8# author:zhangrongjieimport requestsimport jsonimport sysimport datetimedef printToLog(file, info): with open(file, 'a+') as f: logtime = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S ") f.原创 2020-12-25 16:03:58 · 918 阅读 · 0 评论 -
关于Zabbix使用的一些经验性思考
1、Zabbix是什么?首先是定性,zabbix提供了全套的监控解决方案,即采集数据——存储和展示数据——定义告警触发条件——触发告警,这样一个完整的监控流程(在zabbix里对应的术语,也及配置流程为:主机——监控项——触发器——动作,zabbix中的主机是个泛称,泛指任意类型的被监控对象)。在一些基本场景下,可以做到拿来就用。但zabbix并不死板,在上述四个阶段都可以灵活定制。我自己亲身经历的从nagios迁移到zabbix的过程,让我深刻体会到这是一个既灵活又简单的系统。Nagios社区的所原创 2020-06-12 16:23:20 · 896 阅读 · 0 评论 -
Zabbix对接Grafana
1、安装grafana:[root@zabbix ~]# rpm -ivh grafana-6.7.3-1.x86_64.rpm warning: grafana-6.7.3-1.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 24098cb6: NOKEYPreparing... ################################# [100%]Updating / insta原创 2020-06-03 15:41:41 · 760 阅读 · 0 评论 -
Windows下的端口转发及其当作zabbix proxy跳板的用法示例
从XP(2001)开始,Windows就内置了网络端口转发功能,传入本地计算机端口的任何TCP连接(IPV4/IPV6),都可以被转发到本地或远程计算机的另一个端口,而无需本地计算机真的运行一个监听该端口的服务。在Linux中,使用iptables可以很轻易地实现这一功能,而在Windows中,则由Routing and Remote Access服务(RRAS)来配置端口转发,但还有一种更简...翻译 2020-01-14 14:47:52 · 908 阅读 · 0 评论 -
在Zabbix中使用Orabbix插件监控Oracle数据库的配置方法
简介参考文档:http://www.smartmarmot.com/wiki/index.php?title=OrabbixOrabbix是一个与Zabbix配合使用的插件,可提供Oracle数据库的多重性能指标与可用性监控。Orabbix可安装在任意一台与Oracle数据库和zabbix server/proxy互通的服务器上,并监控多套数据库,可以利用Zabbix来收集这些数据,并为相...原创 2019-12-30 16:56:12 · 1140 阅读 · 0 评论 -
AIX操作系统的CPU、Memory、Filesystem、Paging、I/O监控
项目地址:https://github.com/zhangrj/Aix-Monitor1、CPU使用率CPU使用率 = 100% – CPU idle timeCPU ilde time可取4秒内的平均值。例如:root@**:/ # vmstat 1 4System configuration: lcpu=32 mem=63488MBkthr memory ...原创 2019-12-30 15:01:08 · 832 阅读 · 0 评论 -
Hp服务器iLO IML硬件日志收集与远程巡检
项目地址:https://github.com/zhangrj/HP-iLO-Log-Collector惠普服务器的iLO模块,可用于远程控制服务器电源、开启远程控制台、检查服务器健康状态等,其中IML( Integrated Management Log )是排查硬件故障的重要手段,这套小程序就是用来批量收集Hp服务器的IML日志,可写入本地文件并以邮件形式发送巡检报告。python-...原创 2019-12-27 16:04:49 · 4693 阅读 · 0 评论 -
一套监控EMC VNX存储的小脚本(可用于Zabbix)
项目地址:https://github.com/zhangrj/EMC-VNX-Storage-Zabbix-Monitor开发背景EMC VNX5500存储是公司最核心的存储设备,一旦出问题,整个平台就会陷入瘫痪。在我到来之前,EMC存储的巡检完全依赖人工远程与现场代维,今年5月份的时候,我开始着手解决这个问题。最先想到的监控方法肯定是SNMP/SNMPTRAP,但很不幸的是,我找...原创 2019-12-26 14:27:16 · 4246 阅读 · 1 评论 -
华为Sx900存储的监控(使用Zabbix)
项目地址:https://github.com/zhangrj/HUAWEI-OceanStor-Sx900-Monitor开发背景公司使用的两套华为S3900存储,缺乏监控手段,十分依赖人工巡检。通过OceanStor ISM可以直观的检查磁阵的状态。在系统配置->事件日志中,可以配置TRAP IP及事件通知(邮件、短信、Syslog等),这是必须配置的,也是非常有用的。但是从监...原创 2019-12-23 17:21:04 · 2716 阅读 · 0 评论 -
Zabbix发送每周未处理告警小程序
项目地址:https://github.com/zhangrj/zabbix-send-unhandled-problem-weekly,其中“send_issues_wekkly-表格带样式版.py”对稍微美化了一下表格。这个小脚本的作用是用来汇总zabbix监控系统的当前告警,并形成邮件,可定期发送运维人员起到提醒作用。程序本需逻辑很简单,不再多讲废话,为其设置一个定时任务即可。用...原创 2019-12-23 15:39:27 · 362 阅读 · 0 评论 -
Zabbix使用hanotify接口监控HA状态,及从浮动地址监控双机进程
公司使用的高可用软件中有一种是Skybility HA,其实HA软件本身非常稳定,实没有监控的必要,否则也不能叫HA了,但既然领导有需要,工作还是要做的。我查阅了相关文档,发现Skybility HA本身带有用户接口:Skybility HA Service为了更好的方便用户监控,提供了用户报警的接口,您可以通过编辑/opt/ha/bin/hanotify来实现在发生故障时的报警机制。简单的报...原创 2019-10-25 15:42:10 · 364 阅读 · 0 评论 -
Zabbix监控进程/服务的方法(以NFS服务为例)
监控的层级我认为可分为四个层次:硬件层、操作系统层、应用程序层、业务层。对于应用程序的监控,首先需要判断应用进程是否存在,端口是否可连接,以NFS服务为例,可监控如下项目:监控项 键值 类型 nfsd TCP端口监控 net.tcp.listen[2049] Zabbix 客户端 nfsd UDP端口监控 net.udp.listen[2049] ...原创 2019-10-25 15:23:55 · 946 阅读 · 0 评论 -
Zabbix简易周期报告的制作和发送-邮件发送每周未处理告警
项目地址:https://github.com/zhangrj/zabbix-weekly-report-unhandled-issues这个脚本的作用是用来汇总当前监控系统中的未处理告警,可采用每周发送一次的方式,设置如下定时任务:35 17 * * 5 /usr/bin/python /root/send_issues_weekly/current_issues.py > /...原创 2019-10-25 13:56:35 · 901 阅读 · 0 评论 -
Zabbix监控Oracle数据库的方法
项目地址:https://github.com/zhangrj/Check-Oracle-Health介绍这套脚本是去年一位厂家同事给我用的,我在应用中主要发现如下问题:原zabbix模板使用的是SSH监控方式,部分数据库数据获取超时,zabbix可配置的最大监控项数据获取时间为30秒,我这边有些数据库查询则超过了1分钟。 表空间的告警内容显示略显混乱。 通过当前可用连接数为0或...原创 2019-10-25 11:34:07 · 1529 阅读 · 0 评论 -
zabbix-agent自动安装脚本
项目地址:https://github.com/zhangrj/auto-install-zabbix-agent一、背景前段时间给公司部署zabbix时用的,我们这边操作系统大致只有三类,RHEL/SLES/Windows Server,公司没有自动化运维工具,我用这个脚本大概装了两百多台服务器,包括CentOS5/6/7、SUSE Linux Enterprise Server 9/...原创 2019-07-11 17:09:42 · 926 阅读 · 0 评论 -
CentOS7安装zabbix分布式监控软件
以下为在同一台机器(localhost)上安装zabbix-server、zabbix-agent,均使用部署包安装。一、配置LAMP环境# yum install httpd httpd-devel mariadb mariadb-server mariadb-devel php php-devel php-mysql -y# systemctl restart httpd# ...原创 2018-10-08 15:56:00 · 390 阅读 · 0 评论 -
Zabbix Top10页面的制作
github项目地址:https://github.com/zhangrj/Zabbix-Top10备注:该项目代码粗糙,实现方式(sql查询+数据展示)粗暴危险,不要用于对外开放的生产环境中。以后有时间我再进行改进。1、项目结构及文件用途TOP10--include------menu.inc.php.sample(web页面添加二级菜单的示例配置文件)--js-----...原创 2019-07-09 11:27:05 · 2052 阅读 · 0 评论