為 gunicorn 指標配置 datadog-agent
我的 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”文件頂部的問題中:
注意:此檢查需要執行 gunicorn 的 python 環境來
setproctitle
安裝模組(https://pypi.python.org/pypi/setproctitle/)
您必須將
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