AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 829995
Accepted
Antwane
Antwane
Asked: 2017-02-02 13:09:32 +0800 CST2017-02-02 13:09:32 +0800 CST 2017-02-02 13:09:32 +0800 CST

为 gunicorn 指标配置 datadog-agent

  • 772

我的 Debian 8 服务器上安装了 datadog-agent。它已经配置好并且可以很好地报告有关 postgres、nginx、系统等的指标。

我想监控我的 gunicorn 守护进程(我在这台服务器上有 2 个 Django 网站)。据我了解,datadog-agent 已经集成了一个 statsd 服务器,所以我不必安装一个:

# ps ax | grep datadog
18816 ?        Ss     0:00 /opt/datadog-agent/embedded/bin/python /opt/datadog-agent/bin/supervisord -c /etc/dd-agent/supervisor.conf
18822 ?        Sl     0:01 /opt/datadog-agent/embedded/bin/python /opt/datadog-agent/agent/dogstatsd.py --use-local-forwarder
18824 ?        S      0:01 /opt/datadog-agent/embedded/bin/python /opt/datadog-agent/agent/ddagent.py
18825 ?        S      0:01 /opt/datadog-agent/embedded/bin/python /opt/datadog-agent/agent/agent.py foreground --use-local-forwarder

我认为“dogstatsd.py”是 statsd 服务器,但也许我错了?

然后,我修改了我的 gunicorn 启动脚本以集成--name选项来为我的进程设置名称并--statsd-host指示将指标发送到何处。

# ps ax | grep gunicorn
18588 ?        Ss     0:00 /var/projects/my_project/venv/bin/python3 /var/projects/my_project/venv/bin/gunicorn --name my_project --statsd-host=localhost:8125 --workers 2 --bind unix:/var/tmp/my_project.sock core.wsgi:application
18630 ?        S      0:00 /var/projects/my_project/venv/bin/python3 /var/projects/my_project/venv/bin/gunicorn --name my_project --statsd-host=localhost:8125 --workers 2 --bind unix:/var/tmp/my_project.sock core.wsgi:application
18632 ?        S      0:00 /var/projects/my_project/venv/bin/python3 /var/projects/my_project/venv/bin/gunicorn --name my_project --statsd-host=localhost:8125 --workers 2 --bind unix:/var/tmp/my_project.sock core.wsgi:application

现在我从 /etc/dd-agent/conf.d/ 中的示例创建 gunicorn.yaml 如下

# NB: This check requires the python environment on which gunicorn runs to
# have the `setproctitle` module installed (https://pypi.python.org/pypi/setproctitle/)

init_config:

instances:
  # The name of the gunicorn process. For the following gunicorn server ...
  #
  #    gunicorn --name my_web_app my_web_app_config.ini
  #
  #  ... we'd use the name `my_web_app`.
  #
  - proc_name: my_project

重新启动代理后,我等待几秒钟并检查其状态:

# sudo service datadog-agent info
# [...]
  Checks
  ======

    gunicorn
    --------
      - instance #0 [ERROR]: 'Found no master process with name: gunicorn: master [my_project]'
      - Collected 0 metrics, 0 events & 1 service check
      - Dependencies:
          - psutil: 4.4.1

我找不到我无法配置它的地方。有人可以帮助我吗?

linux web-server gunicorn wsgi datadog
  • 2 2 个回答
  • 1344 Views

2 个回答

  • Voted
  1. Best Answer
    Antwane
    2017-02-02T23:20:01+08:002017-02-02T23:20:01+08:00

    连接到 Datadog IRC 后,有人解释说 gunicorn 进程应该有一个漂亮的打印名称。解决方案是setproctitle在与 gunicorn 相同的 venv 中使用 pip 进行安装。

    显然,答案就在“gunicorn.yaml”文件顶部的问题中:

    注意:此检查需要运行 gunicorn 的 python 环境来setproctitle安装模块(https://pypi.python.org/pypi/setproctitle/)

    • 2
  2. Tomas Pytel
    2019-11-05T01:27:00+08:002019-11-05T01:27:00+08:00

    您必须将setproctitle软件包安装到您的应用程序:

    # ps aux|grep gunicorn
    user 919 0.2 0.2 004 672 0:00 gunicorn --name my_app app:app --workers 5 --bind 
    127.0.0.1:5000 --log-level info
    user 925 0.6 0.6 052 688 0:01 gunicorn --name my_app app:app --workers 5 --bind 
    127.0.0.1:5000 --log-level info
    user 926 0.7 0.6 308 032 0:01 gunicorn --name my_app app:app --workers 5 --bind                 
    127.0.0.1:5000 --log-level info
    user 927 0.4 0.6 884 404 0:00 gunicorn --name my_app app:app --workers 5 --bind 
    127.0.0.1:5000 --log-level info
    
    # cd my_app
    # source ./venv/bin/activate
    # pip install setproctitle
    # systemctl restart gunicorn
    
    # ps aux|grep gunicorn
    user 468 0.1 0.2 068 712 0:00 gunicorn: master [my_app]
    user 471 0.4 0.6 376 852 0:00 gunicorn: worker [my_app]
    user 472 0.4 0.6 120 844 0:00 gunicorn: worker [my_app]
    user 473 0.4 0.6 944 372 0:00 gunicorn: worker [my_app]
    user 474 0.5 0.6 384 976 0:01 gunicorn: worker [my_app]
    user 475 0.5 0.6 396 992 0:01 gunicorn: worker [my_app]
    

    您可以看到第一个 ps 没有主人,只有工人可见。在pip install setproctitle我的应用程序环境之后,gunicorn 进程现在可以通过主/工作人员名称看到。您可以使用以下命令进行检查:sudo -u dd-agent -- datadog-agent check gunicorn

    • 1

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve