statsd

#研发解决方案介绍#基于StatsD+Graphite的智能监控解决方案

自作多情 提交于 2019-12-02 14:41:33
郑昀 基于李丹和刘奎的文档 创建于2014/12/5 关键词: 监控 、dashboard、PHP、graphite、statsd、whisper、carbon、grafana、influxdb、Python 本文档适用人员:研发和运维员工 提纲: 监控平台要做到什么程度?为什么要自己做? 几个通用技术问题 绘图所依赖的数据如何收集?如何加工?如何存储? 图形如何绘制,各种指标如何叠加? 拓扑关系如何绘制? 技术选型哲学 最终选了statsd+graphite 数据的采集 数据存储的粒度 天机的技术选型 一,监控平台要做到什么程度?为什么要自己做? 运维监控满满都是着各种开源系统以及它们的 Dashboard: Zabbix Nagios Centreon Logstash Ganglia+Cacti 以及各种业务指标趋势的 Dashboard。 我们认为,监控不能只是各种数据的采集和罗列,不仅仅是弄若干个报表并进一步配置成仪表盘, 而是有一定智能,仿照我们日常的排查问题思路,建立一定规则,自动检查,深度检查,友情提示 。 随手举一个例子: 规则:模仿我们发现问题后先检查数据库主从同步是否有问题的习惯 天机系统发现成单金额或验证券数或短信发送条数环比大幅下降后,启动检查规则, 自动逐一检查各种从库的主从同步情况。 如果发现主从延迟超过阈值,则天机 DashBoard

#研发解决方案介绍#基于StatsD+Graphite的智能监控解决方案

一曲冷凌霜 提交于 2019-12-02 14:41:10
关键词: 监控 、dashboard、PHP、graphite、statsd、whisper、carbon、grafana、influxdb、Python 本文档适用人员:研发和运维员工 提纲: 监控平台要做到什么程度?为什么要自己做? 几个通用技术问题 绘图所依赖的数据如何收集?如何加工?如何存储? 图形如何绘制,各种指标如何叠加? 拓扑关系如何绘制? 技术选型哲学 最终选了statsd+graphite 数据的采集 数据存储的粒度 天机的技术选型 一,监控平台要做到什么程度?为什么要自己做? 运维监控满满都是着各种开源系统以及它们的 Dashboard: Zabbix Nagios Centreon Logstash Ganglia+Cacti 以及各种业务指标趋势的 Dashboard。 我们认为,监控不能只是各种数据的采集和罗列,不仅仅是弄若干个报表并进一步配置成仪表盘, 而是有一定智能,仿照我们日常的排查问题思路,建立一定规则,自动检查,深度检查,友情提示 。 随手举一个例子: 规则:模仿我们发现问题后先检查数据库主从同步是否有问题的习惯 天机系统发现成单金额或验证券数或短信发送条数环比大幅下降后,启动检查规则, 自动逐一检查各种从库的主从同步情况。 如果发现主从延迟超过阈值,则天机 DashBoard 应浮出两条红色警告提示(可点击进入): 5分钟销售数据环比下降50%

how to get least possible count on graphite graph

白昼怎懂夜的黑 提交于 2019-12-01 12:22:10
问题 require 'statsd' statsd = Statsd.new('localhost', 8125).tap{|sd| sd.namespace = 'account'} 1.times do statsd.increment 'hitcount4' end sleep 5 5.times do statsd.increment 'hitcount4' end sleep 10 10.times do statsd.increment 'hitcount4' end i am using ruby gem statsd-ruby i ran the above script it executes successfully, and the graph appears but i can just see the a line over the x-axis and nothing (no value for y-axis), how to get the graph for above script? i want to record each increment

how to get least possible count on graphite graph

情到浓时终转凉″ 提交于 2019-12-01 12:19:41
require 'statsd' statsd = Statsd.new('localhost', 8125).tap{|sd| sd.namespace = 'account'} 1.times do statsd.increment 'hitcount4' end sleep 5 5.times do statsd.increment 'hitcount4' end sleep 10 10.times do statsd.increment 'hitcount4' end i am using ruby gem statsd-ruby i ran the above script it executes successfully, and the graph appears but i can just see the a line over the x-axis and nothing (no value for y-axis), how to get the graph for above script? i want to record each increment call. contents of /opt/graphite/statsd/local.js { graphitePort: 2003 , graphiteHost: "127.0.0.1" , port:

Naming pattern in graphite and statsd

℡╲_俬逩灬. 提交于 2019-12-01 09:05:48
Problem Description: I have module which does following thing. delete/folder delete/file move/folder move/file This application is running on multiple host. I am not able to find better namespace pattern for storing it in statsd: I have thought about following patterns: <env>.<app>.<action>.<object>.<host>.exec_time <env>.<app>.<action>.<object>.<host>.failed <env>.<app>.<action>.<object>.<host>.succeeded Second pattern I am thinking is: <env>.<app>.<object>.<action>.<host>.exec_time <env>.<app>.<object>.<action>.<host>.failed <env>.<app>.<object>.<action>.<host>.succeeded I can have some more

go监控方案(1) -- 概述

血红的双手。 提交于 2019-12-01 06:26:35
概述 为什么需要监控 在编写应用程序的时候,通常会记录日志以便事后分析,在很多情况下是产生了问题之后,再去查看日志,是一种事后的静态分析。 在很多时候,我们可能需要了解整个系统在当前,或者某一时刻运行的情况,比如当前系统中对外提供了多少次服务,这些服务的响应时间是多少, 随时间变化的情况是什么样的,系统出错的频率是多少。这些动态的准实时信息对于监控整个系统的运行健康状况来说很重要。 由于业务系统数量大,每天都会产生大量的系统日志和业务日志,单流式业务的一台服务器产生的日志达400M 想直接查看内容打开可能几分钟, 而且内容之多根本无法查看,给开发和运维带来诸多不便,现业务都是分布式的,日志也是分布在每台服务器上, 所以查看日志和统计更是效率低下。实时收集分布在不同节点或机器上的日志,供离线或在线查阅及分析来提升工作效率的需求异常迫切, 这些动态的准实时信息对于监控整个系统的运行健康状况来说很重要。 Profiling特别重要。如果能有一个特别强大的Profiling系统,就知道整个系统在哪个地方,哪台机器上,花了多少CPU、内存、磁盘IO或者网络带宽等资源,才能知道优化什么地方效益最大。 监控需要的信息从哪里获得? 这些信息需要数据作为基础直接获得或者计算获得,那么实时数据怎么去获取,什么标准来作为测量标准。也就是信息采集的时候,怎么去获得。如下面这些实时数据如何获得 响应时间

go监控方案(7) -- 实现

我的未来我决定 提交于 2019-12-01 06:26:22
metrics 客户端 数据采集使用 go-metrics 传输使用UDP, 仿StatsD上传采集数据, InfluxDB进行数据存储, Grafana进行展示。 实现github 地址 https://github.com/solate/metrics 该地址有已经改好的配置文件可以直接使用。 使用的all-in-one : git docker-statsd-influxdb-grafana docker hub 地址 数据封装 //挂载配置文件,已修改statsd模版 docker run --ulimit nofile=66000:66000 -v /root/telegraf.conf:/etc/telegraf/telegraf.conf -d --name docker-statsd-influxdb-grafana -p 3003:3003 -p 3004:8888 -p 8086:8086 -p 8125:8125/udp samuelebistoletti/docker-statsd-influxdb-grafana:latest register register 使用的name 必须是不同的 telegraf 配置修改 将 [[inputs.statsd]] 部分配置打开, 修改templates为: templates = [ "*

go监控方案(3) -- statsd

五迷三道 提交于 2019-12-01 06:26:08
statsd statsd也是一款数据采集工具。 statsd狭义来讲,其实就是一个监听UDP(默认)或者TCP的守护程序,根据简单的协议收集statsd客户端发送来的数据,聚合之后,定时推送给后端,如graphite和influxdb等,再通过grafana等展示。 statsd 其实也有很多第三方包用来收集数据,但是statsd支持的类型较少,度量只有四种,所以我只用statsd作为传输协议进行数据传输。所以没有直接使用下面介绍的这4个第三方包 git 官方介绍了4种,地址: https://github.com/statsd/statsd/wiki#client-implementations statsd statsd: https://github.com/alexcesaro/statsd statsd: https://github.com/quipo/statsd g2s : https://github.com/peterbourgon/g2s go-statsd-client: https://github.com/cactus/go-statsd-client (直接使用推荐这个) 协议 <bucket>:<value>|<type>[|@sample_rate] bucket是一个metric的标识,可以看成一个metric的变量。 value:

Naming pattern in graphite and statsd

前提是你 提交于 2019-12-01 05:38:36
问题 Problem Description: I have module which does following thing. delete/folder delete/file move/folder move/file This application is running on multiple host. I am not able to find better namespace pattern for storing it in statsd: I have thought about following patterns: <env>.<app>.<action>.<object>.<host>.exec_time <env>.<app>.<action>.<object>.<host>.failed <env>.<app>.<action>.<object>.<host>.succeeded Second pattern I am thinking is: <env>.<app>.<object>.<action>.<host>.exec_time <env>.

datadog agent not reachable from inside docker container

浪子不回头ぞ 提交于 2019-11-30 09:17:43
I installed dd-agent on Amazon linux ec2. If I run my python script directly on the host machine (I used the SDK named "dogstatsd-python"), all the metrics can be sent to datadog (I logged in to datadoghq.com and saw the metrics there). the script is something like: from statsd import statsd statsd.connect('localhost', 8125) statsd.increment('mymetrics') However, I launched a docker container and run the same script from inside the container: from statsd import statsd statsd.connect('172.14.0.1', 8125) statsd.increment('my metrics') '172.14.0.1' is the IP of the host, which was extracted with