标签 监控 下的文章

如果你已经阅读了前面的如何监控 NGINX,你应该知道从你网络环境的几个指标中可以获取多少信息。而且你也看到了从 NGINX 特定的基础中收集指标是多么容易的。但要实现全面,持续的监控 NGINX,你需要一个强大的监控系统来存储并将指标可视化,当异常发生时能提醒你。在这篇文章中,我们将向你展示如何使用 Datadog 安装 NGINX 监控,以便你可以在定制的仪表盘中查看这些指标:

NGINX dashboard

Datadog 允许你以单个主机、服务、流程和度量来构建图形和警告,或者使用它们的几乎任何组合构建。例如,你可以监控你的所有主机,或者某个特定可用区域的所有NGINX主机,或者您可以监视具有特定标签的所有主机的一个关键指标。本文将告诉您如何:

  • 在 Datadog 仪表盘上监控 NGINX 指标,就像监控其他系统一样
  • 当一个关键指标急剧变化时设置自动警报来通知你

配置 NGINX

为了收集 NGINX 指标,首先需要确保 NGINX 已启用 status 模块和一个 报告 status 指标的 URL。一步步的配置开源 NGINXNGINX Plus 请参见之前的相关文章。

整合 Datadog 和 NGINX

安装 Datadog 代理

Datadog 代理是一个开源软件,它能收集和报告你主机的指标,这样就可以使用 Datadog 查看和监控他们。安装这个代理通常仅需要一个命令

只要你的代理启动并运行着,你会看到你主机的指标报告在你 Datadog 账号下

Datadog infrastructure list

配置 Agent

接下来,你需要为代理创建一个简单的 NGINX 配置文件。在你系统中代理的配置目录应该在这儿找到。

在目录里面的 conf.d/nginx.yaml.example 中,你会发现一个简单的配置文件,你可以编辑并提供 status URL 和可选的标签为每个NGINX 实例:

init_config:

instances:

    -   nginx_status_url: http://localhost/nginx_status/
        tags:
            -   instance:foo

当你提供了 status URL 和任意 tag,将配置文件保存为 conf.d/nginx.yaml。

重启代理

你必须重新启动代理程序来加载新的配置文件。重新启动命令在这里,根据平台的不同而不同。

检查配置文件

要检查 Datadog 和 NGINX 是否正确整合,运行 Datadog 的 info 命令。每个平台使用的命令看这儿

如果配置是正确的,你会看到这样的输出:

Checks
======

  [...]

  nginx
  -----
      - instance #0 [OK]
      - Collected 8 metrics & 0 events 

安装整合

最后,在你的 Datadog 帐户打开“Nginx 整合”。这非常简单,你只要在 NGINX 整合设置中点击“Install Integration”按钮。

Install integration

指标!

一旦代理开始报告 NGINX 指标,你会看到一个 NGINX 仪表盘出现在在你 Datadog 可用仪表盘的列表中。

基本的 NGINX 仪表盘显示有用的图表,囊括了几个我们的 NGINX 监控介绍中的关键指标。 (一些指标,特别是请求处理时间要求进行日志分析,Datadog 不支持。)

你可以通过增加 NGINX 之外的重要指标的图表来轻松创建一个全面的仪表盘,以监控你的整个网站设施。例如,你可能想监视你 NGINX 的主机级的指标,如系统负载。要构建一个自定义的仪表盘,只需点击靠近仪表盘的右上角的选项并选择“Clone Dash”来克隆一个默认的 NGINX 仪表盘。

Clone dash

你也可以使用 Datadog 的主机地图在更高层面监控你的 NGINX 实例,举个例子,用颜色标示你所有的 NGINX 主机的 CPU 使用率来辨别潜在热点。

NGINX 指标警告

一旦 Datadog 捕获并可视化你的指标,你可能会希望建立一些监控自动地密切关注你的指标,并当有问题提醒你。下面将介绍一个典型的例子:一个提醒你 NGINX 吞吐量突然下降时的指标监控器。

监控 NGINX 吞吐量

Datadog 指标警报可以是“基于吞吐量的”(当指标超过设定值会警报)或“基于变化幅度的”(当指标的变化超过一定范围会警报)。在这个例子里,我们会采取后一种方式,当每秒传入的请求急剧下降时会提醒我们。下降往往意味着有问题。

  1. 创建一个新的指标监控。从 Datadog 的“Monitors”下拉列表中选择“New Monitor”。选择“Metric”作为监视器类型。

NGINX metric monitor

  1. 定义你的指标监视器。我们想知道 NGINX 每秒总的请求量下降的数量,所以我们在基础设施中定义我们感兴趣的 nginx.net.requestpers 之和。

NGINX metric

  1. 设置指标警报条件。我们想要在变化时警报,而不是一个固定的值,所以我们选择“Change Alert”。我们设置监控为无论何时请求量下降了30%以上时警报。在这里,我们使用一个一分钟的数据窗口来表示 “now” 指标的值,对横跨该间隔内的平均变化和之前 10 分钟的指标值作比较。

NGINX metric change alert

  1. 自定义通知。如果 NGINX 的请求量下降,我们想要通知我们的团队。在这个例子中,我们将给 ops 团队的聊天室发送通知,并给值班工程师发送短信。在“Say what’s happening”中,我们会为监控器命名,并添加一个伴随该通知的短消息,建议首先开始调查的内容。我们会 @ ops 团队使用的 Slack,并 @pagerduty 将警告发给短信

NGINX metric notification

  1. 保存集成监控。点击页面底部的“Save”按钮。你现在在监控一个关键的 NGINX 工作指标,而当它快速下跌时会给值班工程师发短信。

结论

在这篇文章中,我们谈到了通过整合 NGINX 与 Datadog 来可视化你的关键指标,并当你的网络基础架构有问题时会通知你的团队。

如果你一直使用你自己的 Datadog 账号,你现在应该可以极大的提升你的 web 环境的可视化,也有能力对你的环境、你所使用的模式、和对你的组织最有价值的指标创建自动监控。

如果你还没有 Datadog 帐户,你可以注册免费试用,并开始监视你的基础架构,应用程序和现在的服务。


via: https://www.datadoghq.com/blog/how-to-monitor-nginx-with-datadog/

作者:K Young 译者:strugglingyouth 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Darkstat是一个简易的,基于网页的流量分析程序。它可以在主流的操作系统如Linux、Solaris、MAC、AIX上工作。它以守护进程的形式持续工作在后台,不断地嗅探网络数据,以简单易懂的形式展现在它的网页上。它可以为主机生成流量报告,识别特定的主机上哪些端口是打开的,它兼容IPv6。让我们看下如何在Linux中安装和配置它。

在Linux中安装配置Darkstat

在Fedora/CentOS/RHEL中安装Darkstat:

要在Fedora/RHEL和CentOS中安装,运行下面的命令。

sudo yum install darkstat

在Ubuntu/Debian中安装Darkstat:

运行下面的命令在Ubuntu和Debian中安装。

sudo apt-get install darkstat

恭喜你,Darkstat已经在你的Linux中安装了。

配置 Darkstat

为了正确运行这个程序,我们需要执行一些基本的配置。运行下面的命令用gedit编辑器打开/etc/darkstat/init.cfg文件。

sudo gedit /etc/darkstat/init.cfg

编辑 Darkstat

修改START\_DARKSTAT这个参数为yes,并在“INTERFACE”中提供你的网络接口。确保取消了DIR、PORT、BINDIP和LOCAL这些参数的注释。如果你希望绑定Darkstat到特定的IP,在BINDIP参数中提供它。

启动Darkstat守护进程

安装并配置完Darkstat后,运行下面的命令启动它的守护进程。

sudo /etc/init.d/darkstat start

Restarting Darkstat

你可以用下面的命令来在开机时启动Darkstat:

chkconfig darkstat on

打开浏览器并打开http://localhost:666,它会显示Darkstat的网页界面。使用这个工具来分析你的网络流量。

Darkstat

总结

它是一个占用很少内存的轻量级工具。这个工具流行的原因是简易、易于配置使用。这是一个对系统管理员而言必须拥有的程序。


via: http://linuxpitstop.com/install-darkstat-on-ubuntu-linux/

作者:Aun 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

NGINX 是什么?

NGINX (发音为 “engine X”) 是一种流行的 HTTP 和反向代理服务器。作为一个 HTTP 服务器,NGINX 可以使用较少的内存非常高效可靠地提供静态内容。作为反向代理,它可以用作多个后端服务器或类似缓存和负载平衡这样的其它应用的单一访问控制点。NGINX 是一个自由开源的产品,并有一个具备更全的功能的叫做 NGINX Plus 的商业版。

NGINX 也可以用作邮件代理和通用的 TCP 代理,但本文并不直接讨论 NGINX 的那些用例的监控。

NGINX 主要指标

通过监控 NGINX 可以 捕获到两类问题:NGINX 本身的资源问题,和出现在你的基础网络设施的其它问题。大多数 NGINX 用户会用到以下指标的监控,包括每秒请求数,它提供了一个由所有最终用户活动组成的上层视图;服务器错误率 ,这表明你的服务器已经多长没有处理看似有效的请求;还有请求处理时间,这说明你的服务器处理客户端请求的总共时长(并且可以看出性能降低或当前环境的其他问题)。

更一般地,至少有三个主要的指标类别来监视:

  • 基本活动指标
  • 错误指标
  • 性能指标

下面我们将分析在每个类别中最重要的 NGINX 指标,以及用一个相当普遍但是值得特别提到的案例来说明:使用 NGINX Plus 作反向代理。我们还将介绍如何使用图形工具或可选择的监控工具来监控所有的指标。

本文引用指标术语来自我们的“监控 101 系列”,,它提供了一个指标收集和警告框架。

基本活跃指标

无论你在怎样的情况下使用 NGINX,毫无疑问你要监视服务器接收多少客户端请求和如何处理这些请求。

NGINX Plus 上像开源 NGINX 一样可以报告基本活跃指标,但它也提供了略有不同的辅助模块。我们首先讨论开源的 NGINX,再来说明 NGINX Plus 提供的其他指标的功能。

NGINX

下图显示了一个客户端连接的过程,以及开源版本的 NGINX 如何在连接过程中收集指标。

connection, request states

Accepts(接受)、Handled(已处理)、Requests(请求数)是一直在增加的计数器。Active(活跃)、Waiting(等待)、Reading(读)、Writing(写)随着请求量而增减。

名称描述指标类型
Accepts(接受)NGINX 所接受的客户端连接数资源: 功能
Handled(已处理)成功的客户端连接数资源: 功能
Active(活跃)当前活跃的客户端连接数资源: 功能
Dropped(已丢弃,计算得出)丢弃的连接数(接受 - 已处理)工作:错误*
Requests(请求数)客户端请求数工作:吞吐量

*严格的来说,丢弃的连接是 一个资源饱和指标,但是因为饱和会导致 NGINX 停止服务(而不是延后该请求),所以,“已丢弃”视作 一个工作指标 比较合适。

NGINX worker 进程接受 OS 的连接请求时 Accepts 计数器增加,而Handled 是当实际的请求得到连接时(通过建立一个新的连接或重新使用一个空闲的)。这两个计数器的值通常都是相同的,如果它们有差别则表明连接被Dropped,往往这是由于资源限制,比如已经达到 NGINX 的worker\_connections的限制。

一旦 NGINX 成功处理一个连接时,连接会移动到Active状态,在这里对客户端请求进行处理:

Active状态

  • Waiting: 活跃的连接也可以处于 Waiting 子状态,如果有在此刻没有活跃请求的话。新连接可以绕过这个状态并直接变为到 Reading 状态,最常见的是在使用“accept filter(接受过滤器)” 和 “deferred accept(延迟接受)”时,在这种情况下,NGINX 不会接收 worker 进程的通知,直到它具有足够的数据才开始响应。如果连接设置为 keep-alive ,那么它在发送响应后将处于等待状态。
  • Reading: 当接收到请求时,连接离开 Waiting 状态,并且该请求本身使 Reading 状态计数增加。在这种状态下 NGINX 会读取客户端请求首部。请求首部是比较小的,因此这通常是一个快速的操作。
  • Writing: 请求被读取之后,其使 Writing 状态计数增加,并保持在该状态,直到响应返回给客户端。这意味着,该请求在 Writing 状态时, 一方面 NGINX 等待来自上游系统的结果(系统放在 NGINX “后面”),另外一方面,NGINX 也在同时响应。请求往往会在 Writing 状态花费大量的时间。

通常,一个连接在同一时间只接受一个请求。在这种情况下,Active 连接的数目 == Waiting 的连接 + Reading 请求 + Writing 。然而,较新的 SPDY 和 HTTP/2 协议允许多个并发请求/响应复用一个连接,所以 Active 可小于 Waiting 的连接、 Reading 请求、Writing 请求的总和。 (在撰写本文时,NGINX 不支持 HTTP/2,但预计到2015年期间将会支持。)

NGINX Plus

正如上面提到的,所有开源 NGINX 的指标在 NGINX Plus 中是可用的,但另外也提供其他的指标。本节仅说明了 NGINX Plus 可用的指标。

connection, request states

Accepted (已接受)、Dropped,总数是不断增加的计数器。Active、 Idle(空闲)和处于 Current(当前)处理阶段的各种状态下的连接或请​​求的当前数量随着请求量而增减。

名称描述指标类型
Accepted(已接受)NGINX 所接受的客户端连接数资源: 功能
Dropped(已丢弃)丢弃的连接数(接受 - 已处理)工作:错误*
Active(活跃)当前活跃的客户端连接数资源: 功能
Idle(空闲)没有当前请求的客户端连接资源: 功能
Total(全部请求数)客户端请求数工作:吞吐量

*严格的来说,丢弃的连接是 一个资源饱和指标,但是因为饱和会导致 NGINX 停止服务(而不是延后该请求),所以,“已丢弃”视作 一个工作指标 比较合适。

当 NGINX Plus worker 进程接受 OS 的连接请求时 Accepted 计数器递增。如果 worker 进程为请求建立连接失败(通过建立一个新的连接或重新使用一个空闲),则该连接被丢弃, Dropped 计数增加。通常连接被丢弃是因为资源限制,如 NGINX Plus 的worker\_connections的限制已经达到。

ActiveIdle如上所述的开源 NGINX 的“active” 和 “waiting”状态是相同的,但是有一点关键的不同:在开源 NGINX 上,“waiting”状态包括在“active”中,而在 NGINX Plus 上“idle”的连接被排除在“active” 计数外。Current 和开源 NGINX 是一样的也是由“reading + writing” 状态组成。

Total 为客户端请求的累积计数。请注意,单个客户端连接可涉及多个请求,所以这个数字可能会比连接的累计次数明显大。事实上,(total / accepted)是每个连接的平均请求数量。

开源 和 Plus 之间指标的不同

NGINX (开源)NGINX Plus
acceptsaccepted
dropped 通过计算得来dropped 直接得到
reading + writingcurrent
waitingidle
active (包括 “waiting”状态)active (排除 “idle” 状态)
requeststotal

提醒指标: 丢弃连接

被丢弃的连接数目等于 Accepts 和 Handled 之差(NGINX 中),或是可直接得到的标准指标(NGINX Plus 中)。在正常情况下,丢弃连接数应该是零。如果在每个单位时间内丢弃连接的速度开始上升,那么应该看看是否资源饱和了。

Dropped connections

提醒指标: 每秒请求数

按固定时间间隔采样你的请求数据(开源 NGINX 的requests或者 NGINX Plus 中total) 会提供给你单位时间内(通常是分钟或秒)所接受的请求数量。监测这个指标可以查看进入的 Web 流量尖峰,无论是合法的还是恶意的,或者突然的下降,这通常都代表着出现了问题。每秒请求数若发生急剧变化可以提醒你的环境出现问题了,即使它不能告诉你确切问题的位置所在。请注意,所有的请求都同样计数,无论 URL 是什么。

Requests per second

收集活跃指标

开源的 NGINX 提供了一个简单状态页面来显示基本的服务器指标。该状态信息以标准格式显示,实际上任何图形或监控工具可以被配置去解析这些相关数据,以用于分析、可视化、或提醒。NGINX Plus 提供一个 JSON 接口来供给更多的数据。阅读相关文章“NGINX 指标收集”来启用指标收集的功能。

错误指标

名称描述指标类型可用于
4xx 代码客户端错误计数工作:错误NGINX 日志, NGINX Plus
5xx 代码服务器端错误计数工作:错误NGINX 日志, NGINX Plus

NGINX 错误指标告诉你服务器是否经常返回错误而不是正常工作。客户端错误返回4XX状态码,服务器端错误返回5XX状态码。

提醒指标: 服务器错误率

服务器错误率等于在单位时间(通常为一到五分钟)内5xx错误状态代码的总数除以状态码(1XX,2XX,3XX,4XX,5XX)的总数。如果你的错误率随着时间的推移开始攀升,调查可能的原因。如果突然增加,可能需要采取紧急行动,因为客户端可能收到错误信息。

Server error rate

关于客户端错误的注意事项:虽然监控4XX是很有用的,但从该指标中你仅可以捕捉有限的信息,因为它只是衡量客户的行为而不捕捉任何特殊的 URL。换句话说,4xx出现的变化可能是一个信号,例如网络扫描器正在寻找你的网站漏洞时。

收集错误度量

虽然开源 NGINX 不能马上得到用于监测的错误率,但至少有两种方法可以得到:

  • 使用商业支持的 NGINX Plus 提供的扩展状态模块
  • 配置 NGINX 的日志模块将响应码写入访问日志

关于这两种方法,请阅读相关文章“NGINX 指标收集”。

性能指标

名称描述指标类型可用于
request time (请求处理时间)处理每个请求的时间,单位为秒工作:性能NGINX 日志

提醒指标: 请求处理时间

请求处理时间指标记录了 NGINX 处理每个请求的时间,从读到客户端的第一个请求字节到完成请求。较长的响应时间说明问题在上游。

收集处理时间指标

NGINX 和 NGINX Plus 用户可以通过添加 $request\_time 变量到访问日志格式中来捕​​捉处理时间数据。关于配置日志监控的更多细节在NGINX指标收集

反向代理指标

名称描述指标类型可用于
上游服务器的活跃链接当前活跃的客户端连接资源:功能NGINX Plus
上游服务器的 5xx 错误代码服务器错误工作:错误NGINX Plus
每个上游组的可用服务器服务器传递健康检查资源:可用性NGINX Plus

反向代理是 NGINX 最常见的使用方法之一。商业支持的 NGINX Plus 显示了大量有关后端(或“上游 upstream”)的服务器指标,这些与反向代理设置相关的。本节重点介绍了几个 NGINX Plus 用户可用的关键上游指标。

NGINX Plus 首先将它的上游指标按组分开,然后是针对单个服务器的。因此,例如,你的反向代理将请求分配到五个上游的 Web 服务器上,你可以一眼看出是否有单个服务器压力过大,也可以看出上游组中服务器的健康状况,以确保良好的响应时间。

活跃指标

每上游服务器的活跃连接的数量可以帮助你确认反向代理是否正确的分配工作到你的整个服务器组上。如果你正在使用 NGINX 作为负载均衡器,任何一台服务器处理的连接数的明显偏差都可能表明服务器正在努力消化请求,或者是你配置使用的负载均衡的方法(例如round-robin 或 IP hashing)不是最适合你流量模式的。

错误指标

错误指标,上面所说的高于5XX(服务器错误)状态码,是监控指标中有价值的一个,尤其是响应码部分。 NGINX Plus 允许你轻松地提取每个上游服务器的 5xx 错误代码的数量,以及响应的总数量,以此来确定某个特定服务器的错误率。

可用性指标

对于 web 服务器的运行状况,还有另一种角度,NGINX 可以通过每个组中当前可用服务器的总量很方便监控你的上游组的健康。在一个大的反向代理上,你可能不会非常关心其中一个服务器的当前状态,就像你只要有可用的服务器组能够处理当前的负载就行了。但监视上游组内的所有工作的服务器总量可为判断 Web 服务器的健康状况提供一个更高层面的视角。

收集上游指标

NGINX Plus 上游指标显示在内部 NGINX Plus 的监控仪表盘上,并且也可通过一个JSON 接口来服务于各种外部监控平台。在我们的相关文章“NGINX指标收集”中有个例子。

结论

在这篇文章中,我们已经谈到了一些有用的指标,你可以使用表格来监控 NGINX 服务器。如果你是刚开始使用 NGINX,监控下面提供的大部分或全部指标,可以让你很好的了解你的网络基础设施的健康和活跃程度:

最终,你会学到更多,更专业的衡量指标,尤其是关于你自己基础设施和使用情况的。当然,监控哪一项指标将取决于你可用的工具。参见相关的文章来逐步指导你的指标收集,不管你使用 NGINX 还是 NGINX Plus。

在 Datadog 中,我们已经集成了 NGINX 和 NGINX Plus,这样你就可以以最少的设置来收集和监控所有 Web 服务器的指标。 在本文中了解如何用 NGINX Datadog来监控,并开始免费试用 Datadog吧。

诚谢

在文章发表之前非常感谢 NGINX 团队审阅这篇,并提供重要的反馈和说明。


via: https://www.datadoghq.com/blog/how-to-monitor-nginx/

作者:K Young 译者:strugglingyouth 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Nagios内置了很多脚本来监控服务。本篇会使用其中一些来检查通用服务如MySql、Apache、DNS等等。

为了保证本篇集中在系统监控,我们不会在这里配置主机组或者模板,它们已经在 前面的教程中覆盖了,它们可以满足需要了。

在命令行中运行Nagios

通常建议在添加到Nagios前,先在命令行中运行Nagios服务检测脚本。它会给出执行是否成功以及脚本的输出将会看上去的样子。

这些脚本存储在 /etc/nagios-plugins/config/ ,可执行文件在 /usr/lib/nagios/plugins/。

下面就是该怎么做

root@nagios:~# cd /etc/nagios-plugins/config/

提供的脚本包含了语法帮助。示例包含了部分输出。

root@nagios:~# cat /etc/nagios-plugins/config/tcp_udp.cfg

# 'check_tcp' command definition
define command{
        command_name    check_tcp
        command_line    /usr/lib/nagios/plugins/check_tcp -H '$HOSTADDRESS$' -p '$ARG1$'

了解了语法,TCP 80端口可以用下面的方法检查。

root@nagios:~# /usr/lib/nagios/plugins/check_tcp -H 10.10.10.1 -p 80

TCP OK - 0.000 second response time on port 80|time=0.000222s;;;0.000000;10.000000

示例拓扑

本片中使用下面三台服务器。每台服务器运行多个通用服务。Nagios服务器现在运行的是Ubuntu。

  • Server 1 (10.10.10.1) : MySQL, Apache2
  • Server 2 (10.10.10.2) : Postfix, Apache2
  • Server 3 (10.10.10.3) : DNS

首先,这些服务器被定义在了Nagios中。

root@nagios:~# vim /etc/nagios3/conf.d/example.cfg

define host{
        use                     generic-host            
        host_name               test-server-1
        alias                   test-server-1
        address                 10.10.10.1
        }

define host{
        use                     generic-host            
        host_name               test-server-2
        alias                   test-server-2
        address                 10.10.10.2
        }

define host{
        use                     generic-host            
        host_name               test-server-3
        alias                   test-server-3
        address                 10.10.10.3
        }

监控MySQL服务

MySQL 监控需要

  • 通过检查3306端口来检测MySQL是否运行中。
  • 检测特定的数据库'testDB'是否可用。

MySQL 服务器设置

开始检测MySQL时,需要记住MySQL默认只监听回环接口127.0.0.1。这增加了数据库的安全。手动调节需要告诉MySQL该监听什么其他接口。下面是该怎么做。

这个设置要在所有的MySQL服务器上完成。

root@nagios:~# vim /etc/mysql/my.cnf

下面这行被注释掉以监听所有网络接口。

#bind-address           = 127.0.0.1

同样,MySQL也不会让任意主机来连接它。需要为localhost和“任意”主机创建MySQL用户‘nagios’,接着在所有的数据库中为这个用户授予ALL权限,会这将在会用在监控中。

下面的设置对所有的MySQL服务器都已经设置。

root@nagios:~# mysql -u root –p
## MySQL root 密码 ##

在MySQL服务器中创建'nagios@localhost'用户。

mysql> CREATE USER 'nagios'@'localhost' IDENTIFIED BY 'nagios-pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'nagios'@'localhost';

创建'nagios@任意主机'用户。(LCTT 译注:实际上这两个是同一个用户,只是分别授权给localhost和任意主机的访问;因为它们所用的密码的同一个,修改任何一个,另外一个也相应变化。)

mysql> CREATE USER 'nagios'@'%' IDENTIFIED BY 'nagios-pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'nagios'@'%';

mysql> FLUSH PRIVILEGES;

这使MySQL监听所有的网络接口,同样接受来自用户'nagios'的进入连接。

请注意,这种修改可能有安全隐患,所以需要提示几点:

  • 这个设置将会暴露MySQL给所有的接口,包括外网。确保只有合法的网络访问是非常重要的。应该使用防火墙和TCP wrapper等过滤器。
  • MySQL用户‘nagios’的密码应该非常强。如果只有几台Nagios服务器,那么应该创建'nagios@服务器名'用户而不是任意用户的'nagios@%'。

对MySQL的Nagios配置

按如下配置来做一些调整。

root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg

define service{
use         generic-service
host_name       test-server-1
;hostgroup can be used instead as well

service_description     Check MYSQL via TCP port
check_command           check_tcp!3306
        }

define service{
use             generic-service
host_name           test-server-1
;hostgroup can be used instead as well

service_description Check availability of database 'testDB'
check_command   check_mysql_database!nagios!nagios-pass!testDB
;check_mysql!userName!userPassword!databaseName
        }

这样,Nagios就可以同时监控MySQL服务器及其数据库的可用性。

监控Apache服务器

Nagios同样也可以监控Apache服务。

Apache监控需要

  • 监控apache服务是否可用

这个任务非常简单因为Nagios有一个内置命令。

root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg

define service{
use         generic-service
host_name       test-server-1, test-server-2
service_description Check Apache Web Server
check_command       check_http
        }

现在就非常简单了。

监控DNS服务

Nagios通过向DNS服务器查询一个完全限定域名(FQDN),或者使用dig工具来查询。默认用于查询的FQDN的是www.google.com,但是这个可以按需改变。按照下面的文件修改来完成这个任务。

root@nagios:~# vim /etc/nagios-plugins/config/dns.cfg

## The -H portion can be modified to replace Google ##
define command{
command_name    check_dns
command_line    /usr/lib/nagios/plugins/check_dns -H www.google.com -s '$HOSTADDRESS$'
}

编辑下面的行。

root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg

## Nagios asks server-3 to resolve the IP for google.com ##
define service{
use                             generic-service
host_name                       test-server-3
service_description     Check DNS
check_command           check_dns
        }

## Nagios asks server-3 to dig google.com ##
define service{
use                             generic-service
host_name                       test-server-3
service_description     Check DNS via dig
check_command           check_dig!www.google.com
        }

监控邮件服务器

Nagios可以监控不同的邮件服务组件如SMTP、POP、IMAP和mailq。之前提过,server-2设置了Postfix邮件服务。Nagios将被配置来监控SMTP和邮件队列。

root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg

define service{
use                     generic-service
host_name               test-server-2
service_description     Check SMTP
check_command           check_smtp
        }

define service{
use                     generic-service
host_name               test-server-2
service_description     Check Mail Queue
check_command           check_mailq_postfix!50!100
                    ;warning at 50, critical at 100
        }

下面的截屏显示了目前配置监控服务的概览。

基于端口自定义监控程序

让我们假设如下定制程序同样运行在网络中,监听着一个特定的端口。

  • 测试1号服务器:定制程序(TCP端口 12345)

做一些小的调整,Nagios也可以帮助我们监控这个程序。

root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg

define service{
use                     generic-service
host_name               test-server-1
service_description     Check server 1 custom application
check_command           check_tcp!12345
        }

在结束之前的提示,Nagios可以监控网络很多其他的方面。存储在/etc/nagios-plugins/config/中的脚本为Nagios提供了很棒的能力。

一些Nagios提供的脚本被仅限于本地服务器,比如,服务器负载、进程并发数量、登录用户数量等。这些检查可以提供Nagios服务器内有用的信息。

希望这篇文章对你有用。


via: http://xmodulo.com/monitor-common-services-nagios.html

作者:Sarmed Rahman 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

当今世界,人们的计算机都相互连接,互联互通。小到你的家庭局域网(LAN),大到最大的一个被我们称为互联网。当你管理一台联网的计算机时,你就是在管理最关键的组件之一。由于大多数开发出的应用程序都基于网络,网络就连接起了这些关键点。

这就是为什么我们需要网络监控工具。ntop 是最好的网络监控工具之一。来自维基百科的知识“ntop是一个网络探测器,它以与top显示进程般类似的方式显示网络使用率。在交互模式中,它显示了用户终端上的网络状态。在网页模式中,它作为网络服务器,创建网络状态的HTML转储文件。它支持NetFlow/sFlowemitter/collector,这是一个基于HTTP的客户端界面,用于创建ntop为中心的监控应用,并使用RRD来持续存储通信数据”。

15年后的今天,你将见到ntopng——下一代ntop。

ntopng是什么

Ntopng是一个基于网页的高速通信分析器和流量收集器。Ntopng基于ntop,它运行于所有Unix平台、MacOS X和Windows。

特性

ntopng网站上,我们可以看到他们说它有众多的特性。这里列出了其中一些:

  • 按各种协议对网络通信排序
  • 显示网络通信和IPv4/v6的激活主机
  • 持续不断以RRD格式存储定位主机的通信数据到磁盘
  • 通过nDPI,ntop的DPI框架,发现应用协议
  • 显示各种协议间的IP通信分布
  • 分析IP通信,并根据源/目的地址进行排序
  • 显示IP通信子网的矩阵(谁在和谁通信?)
  • 报告按协议类型排序的IP协议使用率
  • 生成HTML5/AJAX网络通信数据

安装的先决条件

Ntop为CentOS和基于64位Ubuntu预编译好了包,你可以在它们的下载页面找到这些包。对于32位操作系统,你必须从源代码编译。本文在CentOS 6.4 32位版本上测试过。但是,它也可以在其它基于CentOS/RedHat的Linux版本上工作。让我们开始吧。

开发工具

你必须确保你安装了编译ntopng所需的所有开发工具,要安装开发工具,你可以使用yum命令:

# yum groupinstall ‘Development Tools’

安装TCL

# yum install tcl

安装libpcap

# yum install libpcap libpcap-devel

安装Redis

# wget http://redis.googlecode.com/files/redis-2.6.13.tar.gz
# tar zxfv redis-2.6.13.tar.gz
# cd redis-2.6.13
# make 32bit
# make test
# make install

安装ntopng

方法 1 :

# wget http://sourceforge.net/projects/ntop/files/ntopng/ntopng-1.1_6932.tgz/download
# tar zxfv ntopng-1.1_6932.tgz
# cd ntopng-1.1_6932
# ./configure
# make
# make install 

方法 2 :

在我的CentOS 6.4上,我使用方法 1时收到了一个错误消息,错误消息内容如下:

./third-party/LuaJIT-2.0.2/src/libluajit.a : could not read symbols : File in wrong format

所以,我切换到了SVN来安装。对于此方法,需要联网,步骤如下:

# svn co https://svn.ntop.org/svn/ntop/trunk/ntopng/
# ./autogen.sh
# ./configure
# make
# make install

由于ntopng是一个基于网页的应用,你的系统必须安装有工作良好的 Web 服务器

为ntopng创建配置文件

如果一切都已安装完毕,那么我们该来运行它了。默认情况下,如果我们在./configure这一步没有明确修改安装文件夹的话,redis和ntopng将安装到/usr/local/文件夹。接下来,我们需要为ntopng创建配置文件。在本文中,我们使用vi作为文本编辑器。你也可以使用你所中意的文本编辑器来创建ntopng的配置文件。

# cd /usr/local/etc
# mkdir ntopng
# cd ntopng
# vi ntopng.start

放入这些行:

--local-network "10.0.2.0/24"
--interface 1

# vi ntopng.pid

放入该行:

-G=/var/run/ntopng.pid

保存这些文件,然后继续下一步。

运行ntopng

我们假定你已正确安装了网络服务器,那么下一步就是运行redis服务器。

# /usr/local/bin/redis-server

Starting Redis Server

然后,运行ntopng

# /usr/local/bin/ntopng

Starting Ntopng

测试ntopng

现在,你可以通过访问http://yourserver.name:3000来测试ntopng应用,你将会看到ntopng登录页面。首次登录,你可以使用用户‘admin’和密码‘admin’。

Ntop Login page

仪表盘相当简洁。当你登入后,你将看到关于最高流量通信者页面。

Ntopng Flow Talker

如果你点击右侧顶部的流量菜单,ntopng将会显示活动流量的更多细节。

Ntopng Flows

主机菜单上,你可以看到连接到流的所有主机。

Ntopng Hosts List

如果你点击主机 > 交互,ntop将显示一个漂亮的主机间的交互信息图表。

Ntopng Hosts Interaction

仪表盘菜单组成部分:

顶级主机(发送+接收)

Ntopng Hosts

顶级应用协议

Ntopng Apps

界面菜单将引领你进入更多内部菜单。包菜单将给你显示包的大小分布。

Ntopng packets

协议菜单将为你显示使用了多少协议及其使用百分比。

Ntopng protocol

Ntopng protocols - detail

你也可以通过使用历史活跃度菜单查看活跃度。

Ntopng Historical Activity

Ntopng Historical Activity detail

最后一项要点是,你也可以通过顶部右侧区域的设置菜单(齿轮图标的那一个)管理哪些用户可以访问ntopng。

Ntopng Users

Ntopng为你提供了一个范围宽广的时间线,从5分钟到1年都可以。你只需要点击你想要显示的时间线。图表本身是可以点击的,你可以点击它来进行缩放。

当然,ntopng能做的事比上面图片中展示的还要多得多。你也可以将定位和电子地图服务整合进来。在ntopng自己的网站上,有已付费的模块可供使用,如nprobe可以扩展ntopng可以提供给你的信息。更多关于ntopng的信息,你可以访问ntopng网站


via: http://linoxide.com/monitoring-2/ntopng-network-monitoring-tool/

作者:Pungki Arianto 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

系统管理员的任务真的很艰难,因为他/她必须监控服务器、用户、日志,还得创建备份,等等等等。对于大多数重复性的任务,大多数管理员都会写一个自动化脚本来日复一日地重复这些任务。这里,我们已经写了一个shell脚本给大家,用来自动化完成系统管理员所要完成的常规任务,这可能在多数情况下,尤其是对于新手而言十分有用,他们能通过该脚本获取到大多数的他们想要的信息,包括系统、网络、用户、负载、内存、主机、内部IP、外部IP、开机时间等。

我们已经注意并进行了格式化输出(在一定程度上哦)。此脚本不包含任何恶意内容,并且它能以普通用户帐号运行。事实上,我们也推荐你以普通用户运行该脚本,而不是root。

Linux Server Health Monitoring

监控Linux系统健康的Shell脚本

在保留Tecmint和脚本作者应得荣誉的前提下,可以自由使用/修改/再分发下面代码。我们已经试着在一定程度上自定义了输出结果,除了要求的输出内容外,其它内容都不会生成。我们也已经试着使用了那些Linux系统中通常不使用的变量,这些变量应该是可以随便用的。

最小系统要求

你所需要的一切,就是一台正常运转的Linux机器。

依赖性

对于一个标准的Linux发行版,使用此软件包不需任何依赖。此外,该脚本不需要root权限来执行。但是,如果你想要安装,则必须输入一次root密码。

安全性

我们也关注到了系统安全问题,所以在安装此包时,不需要安装任何额外包,也不需要root访问权限来运行。此外,源代码是采用Apache 2.0许可证发布的,这意味着只要你保留Tecmint的版权,你可以自由地编辑、修改并再分发该代码。

如何安装和运行脚本?

首先,使用wget命令下载监控脚本“tecmint_monitor.sh”,给它赋予合适的执行权限。

# wget http://tecmint.com/wp-content/scripts/tecmint_monitor.sh
# chmod 755 tecmint_monitor.sh

强烈建议你以普通用户身份安装该脚本,而不是root。安装过程中会询问root密码,并且在需要的时候安装必要的组件。

要安装“tecmint_monitor.sh”脚本,只需像下面这样使用-i(安装)选项就可以了。

./tecmint_monitor.sh -i 

在提示你输入root密码时输入该密码。如果一切顺利,你会看到像下面这样的安装成功信息。

Password: 
Congratulations! Script Installed, now run monitor Command

安装完毕后,你可以在任何位置,以任何用户调用命令‘monitor’来运行该脚本。如果你不喜欢安装,你需要在每次运行时输入路径。

# ./Path/to/script/tecmint_monitor.sh

现在,以任何用户从任何地方运行monitor命令,就是这么简单:

$ monitor

TecMint Monitor Script in Action

你运行命令就会获得下面这些各种各样和系统相关的信息:

  • 互联网连通性
  • 操作系统类型
  • 操作系统名称
  • 操作系统版本
  • 架构
  • 内核版本
  • 主机名
  • 内部IP
  • 外部IP
  • 域名服务器
  • 已登录用户
  • 内存使用率
  • 交换分区使用率
  • 磁盘使用率
  • 平均负载
  • 系统开机时间

使用-v(版本)开关来检查安装的脚本的版本。

$ monitor -v

tecmint_monitor version 0.1
Designed by Tecmint.com
Released Under Apache 2.0 License

小结

该脚本在一些机器上可以开机即用,这一点我已经检查过。相信对于你而言,它也会正常工作。如果你们发现了什么毛病,可以在评论中告诉我。这个脚本还不完善,这仅仅是个开始。从这里开始,你可以将它改进到任何程度。如果你想要编辑脚本,将它带入一个更深的层次,尽管随意去做吧,别忘了给我们应的的荣誉,也别忘了把你更新后的脚本拿出来和我们分享哦,这样,我们也会更新此文来给你应得的荣誉。

别忘了和我们分享你的想法或者脚本,我们会在这儿帮助你。谢谢你们给予的所有挚爱。继续浏览,不要走开哦。


via: http://www.tecmint.com/linux-server-health-monitoring-script/

作者:Avishek Kumar 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出