标签: statsd

StatsD 和 CollectD 有什么关系?

StatsD 和 CollectD 有什么关系?

  • 是 StatsD 还是 CollectD 的替代品
  • StatsD 是否用于聚合来自 CollectD(可能还有其他工具)的指标
  • 完全不同的东西。如果是什么?

collectd statsd

44
推荐指数
1
解决办法
3万
查看次数

statsd 和 Graphite 的高可用、Web 可访问和可扩展部署

我想设置 statsd/graphite,以便我可以记录在 HTML 设备上运行的 JS 应用程序(即不在包含的 LAN 环境中,并且可能有大量我无法直接控制的传入数据)。

我的限制:

  • 入口点必须说 HTTP:这是通过一个简单的 HTTP-to-UDP-statsd 代理解决的(例如 github 上的 httpstatsd)
  • 必须抵抗单个服务器的故障(与墨菲定律作斗争:)
  • 必须是水平可扩展的:webscale,宝贝!:)
  • 架构应该尽可能简单(和便宜)
  • 我的服务器是虚拟机
  • 数据文件将存储在文件管理器设备上(使用 NFS)
  • 我可以使用 tcp/udp 硬件负载平衡器

总之,数据路径:[client] -(http)-> [http2statsd] -(udp)-> [statsd] -(tcp)-> [graphite] -(nfs)-> [filer]

到目前为止我的发现:

  • 扩展 http2statsd 部分很容易(无状态守护进程)
  • 缩放 statsd 部分似乎并不简单(我想我最终会在石墨中得到不连贯的值,例如 sum、avg、min、max ...)。除非 HTTP 守护进程进行一致的散列以对密钥进行分片。也许是一个想法......(但接下来是 HA 问题)
  • 缩放石墨部分可以通过分片(使用碳继电器)来完成(但这也不能解决 HA 问题)。显然,多个耳语实例不应写入相同的 NFS 文件。
  • 缩放文件管理器部分不是问题的一部分(但 IO 越少越好:)
  • 扩展 webapp 似乎很明显(虽然我没有测试过),因为它们只读取共享的 NFS 数据

所以我想知道是否有人有经验和最佳实践可以分享一个可靠的 statsd/graphite 部署?

http scalability high-availability graphite statsd

17
推荐指数
1
解决办法
1034
查看次数

nc (netcat) 挂起,等待更多数据,UDP 模式。

我正在尝试通过读取块内的 nc 向 statsd 发送一个小字符串:

while read line; do
    printf "folder.counter:value|1c" | nc -q 0 -u $host $port
done
Run Code Online (Sandbox Code Playgroud)

不幸的是,在 UDP 模式下, nc 似乎想无限期地等待,即使我已经指定了-q 0,手册页说这将使程序在 EOF 后立即退出。

我试过 pass -w 1,但是如果我发送的数据每秒超过一行,数据就会缓冲起来,我会丢失实时统计数据(更不用说冒某种缓冲区溢出的风险了)。

是否可以用 netcat 做我想要做的事情,还是我需要用具有 statsd 库的语言编写一些东西?

shell netcat statsd

16
推荐指数
2
解决办法
2万
查看次数

如何删除石墨耳语中的计数器?

我有一个柜台,stats.message.foo想把它移到stats.messages.foo

我已经更新了我的代码来填充新的计数器,但是旧的仍然存在。

我已经阅读了从石墨中删除统计数据所需要做的所有事情就是删除磁盘上适当的耳语文件,但是似乎在删除后几秒钟内wsp它会重新生成(没有数据)。

如果我想重命名存储数据的密钥,这很麻烦,因为我需要记住哪个密钥是正确的。

有谁知道如何永久删除旧计数器?

graphite statsd

14
推荐指数
2
解决办法
1万
查看次数

etsy/statsd 的替代品

有没有 etsy 的statsd 的替代品?甚至是一个完整的类似仪表板的解决方案?我的研究只发现了专有的 SaaS 解决方案。

对于那些不知道的人:statsd 是一个守护进程,它通过 UDP 收集应用程序和系统指标并将它们发送到 Graphite 以生成或多或少漂亮的图。有一个适用于所有重要语言的 API。

我需要:

  • 必须在没有第三方收集数据的情况下在我的服务器上运行
  • 应该能够从系统、Java 和 Perl 收集数据
  • 应该轻便灵活
  • 自由开放源码软件
  • 可能需要额外的编程,可能只是一个框架

monitoring system-monitoring statsd

13
推荐指数
2
解决办法
5905
查看次数

tcpdump 提高 udp 性能

我正在运行一组负载测试以确定以下设置的性能:

Node.js test suite (client) --> StatsD (server) --> Graphite (server)
Run Code Online (Sandbox Code Playgroud)

简而言之,node.js 测试套件每 x 秒向位于另一台服务器上的 StatsD 实例发送一定数量的指标。然后 StatsD 每秒将指标刷新到位于同一服务器上的 Graphite 实例。然后,我查看测试套件实际发送了多少指标以及 Graphite 接收了多少指标,以确定测试套件和 Graphite 之间的丢包率。

但是我注意到我有时会遇到非常大的丢包率(请注意,它是通过 UDP 协议发送的),范围为 20-50%。所以那是我开始调查这些数据包被丢弃的地方的时候,认为这可能是 StatsD 的一些性能问题。所以我开始记录系统每个部分的指标,以追踪发生这种下降的地方。这就是事情变得奇怪的地方。

我正在使用tcpdump创建一个捕获文件,在测试运行完成后我会检查该文件。但是每当我在运行 tcpdump 的情况下运行测试时,几乎不存在丢包!看起来 tcpdump 以某种方式提高了我的测试的性能,我无法弄清楚它为什么以及如何做到这一点。我正在运行以下命令来记录服务器和客户端上的 tcpdump 消息:

tcpdump -i any -n port 8125 -w test.cap
Run Code Online (Sandbox Code Playgroud)

在一个特定的测试案例中,我发送 40000 个指标/秒。运行tcpdump的测试有4%左右的丢包,没有的时候有20%左右的丢包

两个系统都作为 Xen VM 运行,具有以下设置:

  • 英特尔至强 E5-2630 v2 @ 2.60GHz
  • 2GB 内存
  • Ubuntu 14.04 x86_64

我已经检查过潜在原因的事情:

  • 增加 UDP 缓冲区接收/发送大小。
  • CPU 负载影响测试。(最大负载 40-50%,客户端和服务器端)
  • 在特定接口而不是“任何”上运行 tcpdump。
  • 使用“-p”运行 tcpdump 以禁用混杂模式。
  • 仅在服务器上运行 tcpdump。这导致发生 20% …

performance udp tcpdump graphite statsd

13
推荐指数
2
解决办法
2009
查看次数

启动 node.js 服务的正确方法是什么?

我正在statsdCentOS 6 上运行 node.js 服务 ( )。守护和启动此类服务的正确方法是什么?

潜在的守护进程——守护进程应该是特定于语言的还是通用的?:

服务启动器——它们应该来自系统/发行版,还是应该来自诸如 monit 之类的监控工具?:

不幸的是,我是新手——我在哪里可以阅读最标准、最经典、最可靠的方法?

centos service node.js statsd

6
推荐指数
1
解决办法
1577
查看次数

Statsd、Graphite 和图表

我已经设置了 Graphite 和 statsd,两者都运行良好。我正在使用graphite/examples 中的example-client.py 来测量负载值,这没问题。
我开始用 statsd 做测试,起初看起来还可以,因为它生成了一些图表,但现在看起来不太好。

首先,这是我的storage-schema.conf

priority = 100
pattern = .*
retentions = 1m:395d
Run Code Online (Sandbox Code Playgroud)

我正在使用此命令将数据发送到 statsd:

echo 'ssh.invalid_users:1|c'| nc -w 1 -u localhost 8126
Run Code Online (Sandbox Code Playgroud)

它执行,我在 Graphite Web 界面中单击 Update Graph,它生成一条线,再次点击 Update 并且该线消失。像this1this2
如果我执行以前的命令5次,图线将达到2和它实际上将保存。再次运行相同的命令两次,图形线到达 2 并消失。
我找不到我配置错误的内容。

预期用途是这样的:

tail -n 0 -f /var/log/auth.log|grep --line-buffered "Invalid user" | while read line; do echo "ssh.invalid_users:1|c" | nc -w 1 -u localhost 8126; done
Run Code Online (Sandbox Code Playgroud)

编辑:
在一个全新的系统上,我使用最新版本的石墨、碳、nodejs、statsd 重新安装,它的作用相同。
尾随 /opt/graphite/storage/log/carbon-cache/carbon-cache-a/query.log 时,我得到:
cache query …

graphite statsd

4
推荐指数
1
解决办法
2891
查看次数

如何将 UDP 数据包从 Docker 容器转发到主机 127.0.0.1?

我有一个带有 StatsD 守护进程的主机 (A) 在 127.0.0.1:8125 监听:

root@A# netstat -uln
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
udp        0      0 127.0.0.1:8125          0.0.0.0:*                          
Run Code Online (Sandbox Code Playgroud)

一个 docker 容器 (B) 在主机 A 上启动,具有桥接网络:

root@A# docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "02b013615710b375744975ff74bdd0b5dcc8c25debba4fa23ad8f53da2c684e3",
        "Created": "2017-04-21T08:13:04.389253904Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Containers": {
            "e1fde895c871504f64627c88531a380269ee9fe8a9fa5237a98c81500fa47a7a": {
                "Name": "B",
                "EndpointID": "4e4a8758e811bb48cecec67d339c182c60e1d955126506cddb7d451e818c5535",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": …
Run Code Online (Sandbox Code Playgroud)

linux iptables statsd docker

4
推荐指数
1
解决办法
5742
查看次数