Nginx监控利器Ngxtop 不指定

kangyang , 2014/08/14 11:12 , WEB技术 , 评论(0) , 阅读(6692) , Via 本站原创 | |
nginx监控利器ngxtop
Nginx网站服务器在生产环境中运行的时候需要进行实时监控。实际上,诸如Nagios, Zabbix, Munin 的网络监控软件是支持 Nginx 监控的。
如果你不需要以上软件提供的综合性报告或者长期数据统计功能,只是需要一种快速简便的办法去监控 Nginx 服务器的请求的话,我建议你采用一个叫 ngxtop 的命令行工具。
你马上就会发现 ngxtop 从界面和名称都借鉴了著名的top命令。ngxtop 是通过分析 Nginx 或者其他的日志文件,使用类似 top 命令的界面实时展示出来的。你可以说你知道的其他高端监控工具,但是在简洁这方面 ngxtop 无疑是最好的。简单就意味着不可替代。

安装部署ngxtop
1、安装pip
网址:https://pypi.python.org/packages/source/p/pip/
下载
wget https://pypi.python.org/packages/source/p/pip/pip-1.5.6.tar.gz --no-check-certificate

#由于下载pip是基于https协议的,故需要在wget url后面加上--no-check-certificate,否则不能下载
tar zxvf pip-1.5.6.tar.gz
cd pip-1.5.6
python setup.py install


2、安装ngxtop
pip install ngxtop

3、ngxtop 使用
基本语法:
ngxtop [options]
ngxtop [options] (print|top|avg|sum) <var>
ngxtop info

-l : 指定日志文件的完整路径 (Nginx 或 Apache2)
-f : 日志格式
--no-follow: 处理当前已经写入的日志文件,而不是实时处理新添加到日志文件的日志
-t : 更新频率
-n : 显示行号
-o : 排序规则(默认是访问计数)
-a ..., --a ...: 添加表达式(一般是聚合表达式如: sum, avg, min, max 等)到输出中。
-v: 输出详细信息
-i : 只处理符合规则的记录

内置变量
bodybytessend
http_referer
httpuseragent
remote_addr
remote_user
request
status
time_local


#ngxtop    ----列出10个nginx服务器,按请求数量排序
#ngxtop -n 20 ----显示前20个最频繁的请求
#ngxtop info  ----获取nginx基本信息
#ngxtop print request http_user_agent remote_addr  ---以自定义显示的变量,简单列出需要显示的变量。使用 "print" 命令显示自定义请求。
#ngxtop top remote_addr   ----显示请求最多的客户端IP地址
#ngxtop -i 'status == 404' print request status    ----显示状态码是404的请求

除了Nginx,ngtop 还可以处理其他的日志文件,比如 Apache 的访问文件。使用以下命令监控 Apache 服务器:
#tail -f /var/log/httpd/access.log | ngxtop -f common



安装过程遇到的错误:
(1)执行ngxtop会报如下错误:ImportError: No module named _sqlite3
# /usr/local/bin/ngxtop --help
Traceback (most recent call last):
  File "/usr/local/bin/ngxtop", line 7, in
    from ngxtop.ngxtop import main
  File "/usr/local/lib/python2.7/site-packages/ngxtop/ngxtop.py", line 60, in
    import sqlite3
  File "/usr/local/lib/python2.7/sqlite3/__init__.py", line 24, in
    from dbapi2 import *
  File "/usr/local/lib/python2.7/sqlite3/dbapi2.py", line 27, in
    from _sqlite3 import *
ImportError: No module named _sqlite3

解决方案:编辑Python-2.7.3/Modules/_sqlite/connection.c加入如下44-57行,然后重新编译python2.7。configure && make && make install
[root@ Python-2.7.3]# vim Modules/_sqlite/connection.c
  38 #if SQLITE_VERSION_NUMBER >= 3003008
  39 #ifndef SQLITE_OMIT_LOAD_EXTENSION
  40 #define HAVE_LOAD_EXTENSION
  41 #endif
  42 #endif
  43
  44 /*** add by lai for **/
  45 #ifdef SQLITE_INT64_TYPE
  46 typedef SQLITE_INT64_TYPE sqlite_int64;
  47 typedef unsigned SQLITE_INT64_TYPE sqlite_uint64;
  48 #elif defined(_MSC_VER) || defined(__BORLANDC__)
  49 typedef __int64 sqlite_int64;
  50 typedef unsigned __int64 sqlite_uint64;
  51 #else
  52 typedef long long int sqlite_int64;
  53 typedef unsigned long long int sqlite_uint64;
  54 #endif
  55 typedef sqlite_int64 sqlite3_int64;
  56 typedef sqlite_uint64 sqlite3_uint64;
  57 /*** end ***/
  58
  59
  60 static int pysqlite_connection_set_isolation_level(pysqlite_Connection* self, PyObject* isolation_level);
  61 static void _pysqlite_drop_unused_cursor_references(pysqlite_Connection* self);
  62


(2)[root@ Python-2.7.3]# ngxtop -n 20
Error: Access log file or format was not set and nginx config file cannot be detected. Perhaps nginx is not in your PATH?

解决办法:
    1.软连接
      ln -s /usr/local/nginx/nginx /usr/bin/nginx
    2.修改环境变量加入到path里面
      vi /etc/profile
      PATH=$JAVA_HOME/bin:/usr/local/php/bin:/usr/local/nginx:$PATH
      source /etc/profile
    3.指定配置文件
      ngxtop -c /usr/local/nginx/nginx.conf
Tags: , ,
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]