用于收集newrelic度量的基于python的代理

newrelic_plugin_agent的Python项目详细描述


NewRelic插件代理
=======


一个代理,它轮询支持的后端系统并将结果提交到NewRelic平台。当前支持的后端系统有:

-可选的php缓存
-apache http server
-couchdb
-elasticsearch
-haproxy
-memcached
-mongodb
-nginx
-pgbouncer
-php fpm
-postgresql
-rabbitmq
-redis
-riak
-uwsgi

需求
----
代理需要python 2.6或2.7和"pip"才能安装。单个插件后端可能需要额外的库,具体如下。

大多数非工作安装的票证都是由于配置文件格式错误造成的。请确保在提交票证之前正确格式化配置文件。yaml是一种依赖于空白的标记格式。有关编写正确的yaml的更多信息,请访问http://yaml.org.


安装说明
--------
1。通过``pip``安装:




$pip install newrelic plugin agent

*请参见http://www.pip-installer.org/en/latest/installing.html上的``pip``安装说明

2。将配置文件示例从`/opt/newrelic plugin agent/newrelic plugin agent.cfg``复制到`/etc/newrelic/newrelic plugin agent.cfg``并编辑该文件中的配置。

<3。创建一个`/var/log/newrelic``目录,并确保该目录可由配置文件中指定的用户写入。创建一个`/var/run/newrelic``目录,并确保该目录可由配置文件中指定的用户写入。运行应用程序:

::


$newrelic plugin agent-c path-to-conf-file[-f]

where``-f``将在前台运行,而不是作为守护进程运行。

对于APC监视。

对于pgbouncer或postgresql插件,必须安装"psycopg2"库。要轻松做到这一点,请确保安装了最新版本的"pip"(http://www.pip-installer.org/)。这应该在安装代理本身之后完成:




$pip install newrelic plugin agent[mongodb]

>或::

$pip install newrelic plugin agent[pgbouncer]

或::

$pip install newrelic plugin agent[postgresql]

为您工作,请确保运行的是"pip"的最新副本(>;=1.3)。


plugin configuration stanzas
--------
每个插件都可以支持从单个或多个目标收集数据。为了支持一个插件的多个目标,您可以创建一个目标节列表:

::


plugin-name:
-name:target-name
host:localhost
foo:bar
-name:target-name
host:localhost
foo:bar

为插件的配置节使用多目标格式,例如:

::


plugin-name:target-name
host:localhost
foo:bar


rget_name
host:localhost
foo:bar

plugin配置的字段可能因插件的配置要求而异。只有在插件中使用多个目标时,才需要每个节中的名称值。如果它只是一个目标,则名称将取自服务器的主机名。

apc安装说明
rp.php``脚本到可由web服务器或"php fpm"应用程序提供服务的目录。编辑"newrelic plugin agent"配置以指向适当的url。

apache httpd安装说明
--------
在默认虚拟主机中启用httpd服务器状态页。下面的apache httpd 2.2配置片段示例演示了如何执行此操作:

:::


<;location/server status>;
sethandler server status
order deny,allow
deny from all
allow from 127.0.0.1
<;/location>;

对于httpd 2.4,它应该类似于:

::

<;位置/服务器状态>;
sethandler服务器状态
需要IP 127.0.0.1
<;/location>;

如果在apache的图中没有看到任何度量,请验证是否已启用"extendedstatus",默认值为off,因此必须启用它。在全局apache http配置中,您需要使用:





证书验证。

《memcached安装说明》
——
memcached插件可以使用路径配置变量通过Unix域套接字进行通信,也可以使用主机和端口变量通过TCP/IP进行通信。不要同时包含这两个组件。

要为其收集度量值的每个数据库都必须在配置中枚举。

mongodb有两种配置节格式。你一定要用一个或另一个,它们不能混在一起。对于未经身份验证的轮询,您可以简单地将要从中获取统计信息的数据库枚举为列表:




名称:host name
主机:localhost
端口:27017
管理员用户名:foo
管理员密码:bar
#ssl:false
ssl_u keyfile:/path/to/keyfile
ssl戋u cert file:/path/to/certfile
-数据库名1
-数据库名2


主机:localhost
端口:27017
管理员用户名:foo
管理员密码:bar
ssl:false
ssl密钥文件:path/to/keyfile
ssl证书文件:path/to/certfile
可选,2对于ssl.cert需要
ssl-ca-certs:/path/to/cacerts文件
数据库:
数据库名1:
用户名:foo
密码:bar
数据库名2:
用户名:foo
密码:bar

nginx安装说明在配置的默认站点上启用nginx"存根状态"设置。nginx的以下示例配置片段演示了如何执行此操作:

:::


存根状态打开;
allow 127.0.0.1;
deny all;
}


se 'verify_ssl_cert``在httpd配置部分中的配置值,以禁用ssl证书验证。

----
指定的用户必须是stats用户。

----
默认情况下,指定的用户必须是super用户获取postgresql
目录列表。要跳过那些需要超级用户
权限的检查,请使用配置
文件中的"超级用户:false"设置。


有些检查需要O(n)时间,其中n是数据库中关系数
。如果需要在关系数非常大的数据库上使用这个,可以使用``relationship-stats:false``.


例如:






host:localhost
port:5432
user:newrelic
dbname:postgres
password:newrelic
superuser:false
relation_stats:false

--------
指定的用户必须有权访问您要监视的所有虚拟主机,并且应该有administrator标记或监视标记。

如果您通过https连接监视rabbitmq,则可以使用"verify\u ssl证书"配置要禁用SSL证书验证,请在httpd配置部分中输入操作值。

——
对于受密码保护的redis守护进程,请添加密码配置值,否则将忽略该值。redis配置部分允许多个redis服务器。轮询多个服务器的语法如下所示。

redis插件可以使用路径配置变量通过unix域套接字进行通信,也可以使用主机和端口变量通过tcp/ip进行通信。不要同时包含这两项。

RIAK安装说明
-
如果通过https连接监视RIAK,则可以使用httpd配置部分中的"verify_ssl_cert"配置值禁用SSL证书验证。

-
uwsgi插头in可以使用path配置变量通过unix域套接字进行通信,也可以使用主机和端口变量通过tcp/ip进行通信。请不要同时包含这两个项。

请确保已在uwsgi配置中启用"stats server
<;http://uwsgi docs.readthedocs.org/en/latest/statsserver.html>;``.



配置示例
----




%yaml 1.2
--
应用程序:
许可证密钥:用"real"密钥替换"u"
轮询间隔:60
newrelic_api_超时:10
代理:http://localhost:8080

apache_httpd:
-名称:hostname1
方案:http
主机:localhost
端口:80
路径:/服务器状态
验证SSL证书:true
-名称:hostname2
方案:http
主机:localhost
端口:80
路径:/服务器状态
验证SSL证书:真

couchdb:
-名称:localhost
主机:localhost
端口:5984
验证SSL证书:真
;用户名:foo
#密码:bar
-name:localhost
host:localhost
port:5984
代理:
名称:我的haproxy服务器
主机:localhost
端口:80
路径:/haproxy?csv
方案:http
mongodb:
名称:host name
主机:localhost
端口:27017
管理员用户名:foo
管理员密码:bar
数据库:
数据库名称1:
用户名:foo
密码:bar
数据库名称2:
用户名:foo
密码:password:bar

memcached:
-name:localhost
host:localhost
port:11211
path:/path/to/unix/socket
-name:localhost
host:localhost
port:11211
path:/path/to/unix/socket

nginx:
-name:hostname
主机:localhost
端口:80
路径:nginx存根状态
rt:6000
用户:stats

php apc:
方案:http
主机:localhost
端口:80
路径:apc nrp.php
用户名:foo
密码:bar
验证ssl证书:t

php fpm:
-名称:fpm池
方案:https
主机:localhost
port:443
path:/fpm_status
query:json

postgresql:
-host:localhost
port:5432
user:postgres
dbname:postgres
superuser:true

rabbitmq:
-name:rabbitmq@localhost
主机:localhost
端口:15672
用户名:guest
密码:guest
#路径:/var/run/redis/redis.sock
-name:localhost
host:localhost
port:6380
db-count:16
password:foobar
y_s s l_cert:true

user:newrelic
pidfile:/var/run/newrelic/newrelic plugin agent.pid


logging:
格式化程序:
详细:
格式:"(levelname)-10s%(asctime)s%(process)-6d%(process name)-15s%(threadname)-10s%(name)-25s%(funcname)-25s l%(lineno)-6d:%(messag)e)s'
处理程序:
文件:
类:日志记录。处理程序。rotatingfilehandler
格式化程序:verbose
文件名/var/log/newrelic/newrelic插件代理。log
最大字节数:10485760
备份计数:3
日志记录程序:
newrelic插件代理:
级别:info
propagate:true
处理程序:[console,file]
请求:
级别:错误
propagate:true
处理程序:[console,file]

疑难解答
----
-如果安装程序未在`/usr/bin``中安装``newrelic plugin agent`应用程序,则很可能"setuptools"或"distribute"不是最新的。可以运行以下命令来安装用于安装应用程序的"distribute"和"pip":

::


$curl http://python-distribute.org/distribute_setup.py_python
$curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py_python

-如果应用程序已安装但似乎没有提交如果默认的示例loggi使用NG配置。
-如果代理启动但在确保配置文件的守护程序部分中指定的同一用户可以写入`/var/log/newrelic``和`/var/run/newrelic``后不久死亡。
-如果代理已死亡且不会重新启动,请删除在``/var/run/newrelic/``
-如果使用apache http插件并且您的状态为空,请确保extendedstatus指令处于打开状态。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaCenter是JavaFX2中不可执行的窗格   java Docker将容器连接到本地数据库   java无法通过Spring从Redis获得正确的值   java为什么要将数组转换为列表再转换为数组   Java泛型在方法中放入字符串或整数参数   在Cloud Bigtable SDK中找不到java类   java Mavensiteplugin无法加载生成的源(Jaxb)   java GWT序列化和Appengine通道Api   PrintWriter out=new PrintWriter(sWriter)和PrintWriter out=response之间的java差异。getWriter()   空手道DSL中的javascript,在java参数调用中传递变量时如何转义单引号   windows 64位java可以与32位tomcat一起使用   为for循环| Java输入参数   java您可以更改SWT选项卡项的背景和/或前景颜色吗?   用java生成6位pin码   java如何从另一个通量中排除通量中的所有元素   java无法调用“javafx.scene.control.ComboBox.getItems()”,因为“Controller.getMyBox()”的返回值为null   将Java字符串与数组匹配时出现问题   java如何使用HttpsUrlConnection对SSL连接使用代理身份验证?   java如何检查XML元素是否包含CDATA?