理解 Zabbix

原文:https://hackernoon.com/understanding-zabbix-f2a83eeb1221

监控所有服务器基础设施。

背景

在为我们的产品设置基础设施时http://bit.ly/use-highlights我正在寻找用于服务器基础设施监控的开源工具,而不是藏着一颗炸弹(译者按:不监控大概就是藏着一颗炸弹吧),并且可以随着我们改进(服务架构)帮助我们自定义化。 两个主要的竞争者是Nagios和Zabbix。 我读了几篇比较两者的帖子,但是https://www.comparitech.com/net-admin/nagios-vs-zabbix/?lphiltid=5bfd07b68e39bb080950ca0b是我最喜欢的文章,因为我觉得它非常客观和详细。 我对Nagios的一个主要优势是你可以使用现有的设置升级到Nagios ** Nagios XI **。 但是对于我们的场景,我们觉得Zabbix绰绰有余。 所以就使用Zabbix吧。

这不是详细的"HowTo"博客。 但这将是我的学习总结,链接到适用于我的相关安装指南,链接到详细的"TODO"文章和我的经验法则。

安装前的一些基础知识

Zabbix有三个主要组件。 Zabbix Server,保存...(译者按:意思为保存数据) Zabbix Agent和Zabbix Web Interface。 Zabbix Server是从您要监视的服务器收集所有相关数据的服务器。 要监视的服务器称为“Agent”。 您可以在没有Zabbix Web部件的情况下监控服务器。 但我建议使用它,因为它可以让体验变得更好。

如果您只想在安装任何内容之前了解用户界面,请访问https://zabbix.org/zabbix/index.php并“以访客身份登录”。 您将没有“配置”和“管理”选项卡,但可以查看“监视”,“清单”和“报告”部分。

安装

我将在此处跳过详细信息,因为您可以从互联网上找到“HOWTO”文章。 我们使用的是Ubuntu服务器,https://twitter.com/tecadmin的以下文章非常方便。

  1. 安装Zabbix Server -- https://tecadmin.net/install-zabbix-on-ubuntu/
  2. 安装Zabbix Agent -- https://tecadmin.net/install-zabbix-agent-on-ubuntu-and-debian
  3. 将主机(host)添加到 Zabbix Server中以便监控 -- https://tecadmin.net/add-host-zabbix-server-monitor

默认情况下,Zabbix Web Interface使用apache。 如果您不想在其位置使用Nginx,请在您的nginx中添加以下配置(译者按:配置内容为译者补充)。

server {
  listen      80 default;
  root        /data/www/default;
  index       index.php index.html;

  include     /etc/nginx/conf.d/default-*.conf;
  include     /data/conf/nginx/conf.d/default-*.conf;

  # PHP backend is not in the default-*.conf file set,
  # as some vhost might not want to include it.
  include     /etc/nginx/conf.d/php-location.conf;

  # Import configuration files for status pages for Nginx and PHP-FPM
  include /etc/nginx/conf.d/stub-status.conf;
  include /etc/nginx/conf.d/fpm-status.conf;

}

可参考Dockbix的Nginx配置(译者按:译者补充,monitoringartist/dockbix-xxl包含了具有启迪意义的代码,代码涉及到Dockerfile的分层思路、supervisor、inotify-util和脚本配合,从容器环境变量可选择性地启动容器的功能等,在代码结构上也层次分明,具有通用性。)

经验法则

从主机组,用户组和模板这些方面,考虑您要进行监控的所有操作。

快速词汇表

  • Zabbix Server

    这是监控所有内容的主服务器。 如需安装,请点击此链接。
    通常,Web Interface也仅安装在此服务器上。 我个人觉得(不太确定)最好将它与需要监控的其他服务器分开。
    这样,即使实际的服务器群体停机,我们也能够至少监控停机时间以及它们可能已经停机的原因。

  • Zabbix Agent

    这是一个软件,可以帮助将数据从被监控的服务器发送到Zabbix Server。 如果您还要监视Zabbix服务器,也可以在该服务器中安装Zabbix Agent。

  • Zabbix Host

    Host是您需要监控的服务器。 因此,如果您需要监视三个不同的服务器,则在所有这些服务器上安装Zabbix Agent。

  • 在Zabbix Server中添加Host

    在各自的服务器中安装Zabbix Server和Agent后,还需要在Zabbix Server中添加主机。

  • Host Groups

    主机组可以作为分类或标记。 我觉得在主机组的使用上想得自由一点比较有益。
    以下是我创建的一些主机组#LearningPaths,#staging,#live,#database,#mongodb,#appserver,#search。
    使用模板或“创建”操作时,这些主机组将非常方便。

  • Templates

    将模板视为可应用于各种主机组的监控模板。 根据经验,我总是将模板应用于主机组。
    如果想要删除主机或仅将模板应用于一个主机,这是我的指导标准,我可以重新设置主机组或添加符合当前条件的新主机组。
    这为我节省了很多时间。 我在其他标准之前提到模板,因为我认为从模板和组的角度思考一切是非常重要的。

  • Template OS Linux

    默认情况下安装Zabbix完就存在。 这提供了其他监视服务中通常可用的大多数参数,如CPU使用率,CPU负载,内存使用量等。
    这已经配置了数据指标,对于服务器级别监控来说已经足够了。 我们更改了平均CPU负载的触发器,因为它引发了太多错误警报。
    我们目前正在配置以下两个(模板)。 如果你有幸安装这两个,请发表评论。 我能够获得所有相关数据,但我无法将其推送到Zabbix服务器(指Zabbix官网·社区)。
    我认为它与trap设置有关。 我还在搞清楚。

    • Zabbix MongoDB Template — https://github.com/omni-lchen/zabbix-mongodb
    • Zabbix Elastic Search Templates — https://github.com/zarplata/zabbix-agent-extension-elasticsearch

定制化

正如我之前提到的,我发现总是在Templates和Host Groups方面进行思考是有用的。
因此,如果您计划创建任何新项目/触发器,请确保将它们添加到相关模板中,然后关联到主机组。

首先为要跟踪的每个数据点创建一个项目。 您可以按照这些步骤
https://www.zabbix.com/documentation/3.4/manual/config/items/item中的步骤操作

然后,您可以根据这些项目值创建触发器。 您可以按照
https://www.zabbix.com/documentation/3.4/manual/config/triggers/trigger
中的步骤创建触发器。

调试

虽然Web Interface挺好的,但是我觉得对于调试来说,用控制台会更好。

在监控者服务器上

  • 检查您可以通过10050端口连接上Agent。

    telnet 10050

  • 使用zabbix-get

    [root@8a11e51b8ddb nginx]# zabbix_get
    usage:
      zabbix_get -s host-name-or-IP [-p port-number] [-I IP-address] -k item-key
      zabbix_get -s host-name-or-IP [-p port-number] [-I IP-address]
                    --tls-connect cert --tls-ca-file CA-file
                    [--tls-crl-file CRL-file] [--tls-agent-cert-issuer cert-issuer]
                    [--tls-agent-cert-subject cert-subject]
                    --tls-cert-file cert-file --tls-key-file key-file -k item-key
      zabbix_get -s host-name-or-IP [-p port-number] [-I IP-address]
                    --tls-connect psk --tls-psk-identity PSK-identity
                    --tls-psk-file PSK-file -k item-key
      zabbix_get -h
      zabbix_get -V
    [root@8a11e51b8ddb nginx]# zabbix_get -s 192.168.79.128 -k agent.ping
    1
    [root@8a11e51b8ddb nginx]# zabbix_get -s 192.168.79.128 -k agent.hostname
    k8s-master-01.local
    [root@8a11e51b8ddb nginx]#
    
    

在需要被监控的服务器/客户端上

在基本配置(Passive Agent)中,监控者服务器将询问数据。 因此,如果您的服务器可以与代理进行通信,那就足够了。
但如果使用Active Agent模式,那么您需要保证您的Agent可以连接您的监控者服务器并且可以推送数据。(编者按:监控者服务器指Zabbix Server所在的服务器)

  • 检查您可以连接到服务器端的10050端口。

    telnet 10050

  • 检查是否有安装zabbix-sender,没有的话安装它。

    sudo apt-get install zabbix-sender

  • 当Zabbix sender安装好后您可以运行以下命令

    zabbix_sender -vv -z [serverIp] -p 10051 -s [clientName] -k traptest -o "Test value"

在Active Agent配置中请注意,推送到服务器的所有数据都应该是Item类型trapper。
因此,在上面的示例中,您应该在服务器上使用密钥traptest创建了一个trapper类型的项目。
还要确保在服务器上创建项目时,您发送的数据是指定的类型。

报告

仪表板是可自定义的。 所以你可以改变它以列出的所有相关问题。 我个人喜欢的另一个功能是屏幕。 我们添加了服务器的所有心跳图,我们可以像这样跟踪它们的数据。

Zabbix screens

通知

我认为Zabbix中的通知很棒,因为它是高度可配置的。
我们使用结合sendgrid使用Zabbix。Zabbix UI中的默认通知对我们来说效果不佳。
所以我们使用了脚本路由。我们使用了库https://github.com/mkgin/sendgrid_zabbix_alert。
Zabbix通知的调试可能有点刺激。 我刚刚创建了一个草稿,当我有时间的时候会更新。

你可能感兴趣的:(理解 Zabbix)