《运维--PlayBook》更新中.......!请访问: https://ops.cnmysql.com

Nginx监控利器Ngxtop 不指定

kangyang , 2014/08/14 11:12 , WEB技术 , 评论(0) , 阅读(6693) , 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: , ,

Nginx 访问控制 不指定

kangyang , 2014/08/13 18:07 , WEB技术 , 评论(0) , 阅读(2962) , Via 本站原创
Nginx 的访问控制模块默认就会安装…除非你without … 他的指令和使用方法也超级简单…

指令:
allow
语法:     allow address | CIDR | unix: | all;
默认值:     —
配置段:     http, server, location, limit_except
####
允许某个ip或者一个ip段访问.如果指定unix:,那将允许socket的访问.注意:unix在1.5.1中新加入的功能,如果你的版本比这个低,请不要使用这个方法。
####
deny
语法:     deny address | CIDR | unix: | all;
默认值:     —
配置段:     http, server, location, limit_except
####禁止某个ip或者一个ip段访问.如果指定unix:,那将禁止socket的访问.注意:unix在1.5.1中新加入的功能,如果你的版本比这个低,请不要使用这个方法。####


实际上应用:
  server
  {
    listen       8080;
    server_name  seo.xxx.com;
    index index.html index.htm index.php;
    root  /data/seo;
    allow 140.206.48.6/32;
    allow 58.247.43.226/32;
    deny all;
    ....省略


Nginx 用户访问控制
###使用httpd-devel 创建passwd###
[root@i-it seo]# yum install httpd-devel
[root@i-it seo]# mkdir htpasswd
[root@i-it seo]# htpasswd -c htpasswd/control i-it
New password:
Re-type new password:
Adding password for user i-it

###加入配置即可####
auth_basic              "LT-COUNT-Control";
#####file 这里要绝对路径####
auth_basic_user_file  /usr/local/nginx/conf/htpasswd/control ;  
Tags: , , ,
分页: 2/2 第一页 上页 1 2 最后页 [ 显示模式: 摘要 | 列表 ]