我的 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
我找不到我无法配置它的地方。有人可以帮助我吗?
连接到 Datadog IRC 后,有人解释说 gunicorn 进程应该有一个漂亮的打印名称。解决方案是
setproctitle
在与 gunicorn 相同的 venv 中使用 pip 进行安装。显然,答案就在“gunicorn.yaml”文件顶部的问题中:
您必须将
setproctitle
软件包安装到您的应用程序:您可以看到第一个 ps 没有主人,只有工人可见。在
pip install setproctitle
我的应用程序环境之后,gunicorn 进程现在可以通过主/工作人员名称看到。您可以使用以下命令进行检查:sudo -u dd-agent -- datadog-agent check gunicorn