首页 > 技术文章 > 一、自动化监控利器-Zabbix

studyhub 2021-09-08 23:32 原文

1. 监控的作用

1.1 为何需要监控系统

监控系统是整个运维环节,乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供详细的数据用于追查定位问题;

为了及时掌握基础环境和业务应用系统的可用性,需要获取各个组件的运行状态,如CPU的利用率、系统的复制、服务的运行、端口的连通、带宽流量、网站访问状态码等信息。而这一切都离不开监控系统;

1.2 监控系统的实现

一个监控系统的组成大体可以分为两部分:数据采集部分(客户端)和数据存储分析报警部分(服务器端),这两部分构成了监控系统的基本模型;

数据采集的工作模式可以分为被动模式(服务端到客户端采集数据)和主动模式(客户端主动上报数据到服务器端)。通常,大多数监控系统应该能同时支持这两种模式。被动模式对服务器的开销较大,适合小规模的监控环境:主动模式对服务器的开销较小,适合大规模的监控环境;

1.3 常用的监控软件

MRTG:是一套可用来绘制网络流量图的软件,由瑞士奥尔滕的Tobias Oetiker与Dave Rand所开发;

Cacti:(英文含义为仙人掌)是一套基于PHP、MySQL、SNMP和RRDtool开发的网络流量监测图形分析工具;

Smokeping:Smokeping主要用于监视网络性能,包括常规的ping、www服务器性能、DNS查询性能、SSH性能等;

Nagios:Nagios是一个企业级的个系统,可监控服务的运行状态和网络信息等,并能监视所指定的本地或远程主机参数以及服务,同时提供异常告警通知功能等;

Zabbix:Zabbix是一个分布式监控系统,支持多种采集方式和采集客户端,有专用的Agent代理,也支持SNMP、IPMI、JMX、Telnet、SSH等多种协议,它将采集到的数据存放到数据库,然后对其进行分析整理,达到条件触发告警。其灵活的扩展性和丰富的功能是其他监控系统所不能比的;

2. Zabbix简介

zabbix([`zæbiks])是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案;

zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题;

Zabbix适合中小型企业、大中型企业的用户使用。单个Server节点可以支持上万台设备,每秒可以处理1.5万次请求,理论上可以支持5万台设备;

2.1 选择Zabbix的理由

  1. Zabbix是一个自由开发源代码的产品,用户可以对源代码进行任意修改和二次开发。Zabbix采用GNU General Public License (GPL) Version2开源协议;

  2. 安装和配置简单,用户仅仅需要一些简单的学习,即可完成监控的搭建工作;

  3. 搭建环境简单,基于开源软件构建平台,仅需要Linux、Apache/Nginx、MySQL/PostgreSQL/Oracle、PHP即可,无须专用操作系统支持,也无须专用硬件;

  4. Zabbix-Agent完全支持Linux、UNIX、Windows、AIX、BSD和Solaris的监控,Server和Agent都采用C语言编码,对系统的资源占用非常小,数据采集的性能和速度非常快;

  5. 将数据采集持久存储到数据库,便于对监控数据的二次分析;

  6. 非常丰富的扩展能力,很轻松地自定义监控项和实现数据采集,几乎能监控所有的数据。例如:可以监控网站的访问次数,监控UPS和天气温度等;

  7. 开源社区的运作模式,有各种论坛、邮件列表、IM及时沟通等,发现问题及时解决;

2.2 Zabbix的功能特性

Zabbix有常见的商业监控软件所具备的功能,如主机的性能监控、网络设备性能监控、数据库性能监控、FTP等通用协议监控、多种告警方式、详细的报表图表绘制、分布式、可扩展能力、API等;

  • 数据收集
  • 灵活的触发器
  • 高度可定制的告警
  • 实时的绘图功能
  • Web监控能力
  • 多种可视化的展示
  • 历史数据的存储
  • 配置非常容易
  • 使用模板
  • 快速的访问接口
  • API功能
  • 系统权限
  • 大型环境的支持

3. Zabbix安装与部署

3.1 配置Zabbix-server

[root@zabbix-server ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm  # 安装Zabbix官方源

[root@zabbix-server ~]# yum install -y  zabbix-server-mysql zabbix-web-mysql zabbix-agent  mariadb-server  # 安装服务端,由于服务端也是需要监控的,故而一并安装Zabbix-agent

1. 创建Zabbix数据库

# 1.启动mariadb数据库,并加入开机自启
[root@zabbix-server ~]# systemctl start mariadb
[root@zabbix-server ~]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

# 2.登录数据库
[root@zabbix-server ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

# 3.配置数据库信息
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;  # 这一步一定不能少,不然会报错
Query OK, 1 row affected (0.01 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit
Bye


# 4.导入数据
[root@zabbix-server ~]# cd /usr/share/doc/zabbix-server-mysql-4.0.33/
[root@zabbix-server zabbix-server-mysql-4.0.33]# zcat create.sql.gz | mysql -uroot zabbix

2. 启动Zabbix

# 修改配置文件,让Zabbix连接数据库
[root@zabbix-server ~]# vi /etc/zabbix/zabbix_server.conf 
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix  #基本上就要修改这一项

# 启动服务,并加入开机自启
[root@zabbix-server ~]# systemctl start zabbix-server
[root@zabbix-server ~]# systemctl enable zabbix-server
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.

# 检测10051端口是否起来---->这里要注意,关闭防火墙和selinux服务,不然Zabbix起不来
[root@zabbix-server ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      9272/zabbix_server  
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      2217/mysqld         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1037/sshd           

3. 修改 vim /etc/httpd/conf.d/zabbix.conf 前端时区

[root@zabbix-server ~]# vi /etc/httpd/conf.d/zabbix.conf
#
# Zabbix monitoring system php web frontend
#

Alias /zabbix /usr/share/zabbix

<Directory "/usr/share/zabbix">
    Options FollowSymLinks
    AllowOverride None
    Require all granted

    <IfModule mod_php5.c>
        php_value max_execution_time 300
        php_value memory_limit 128M
        php_value post_max_size 16M
        php_value upload_max_filesize 2M
        php_value max_input_time 300
        php_value max_input_vars 10000
        php_value always_populate_raw_post_data -1
        # php_value date.timezone Europe/Riga      # 修改这个位置为:php_value date.timezone Asia/shanghai
    </IfModule>
....

4. 启动httpd服务,并加入开机自启

[root@zabbix-server ~]# systemctl start httpd 
[root@zabbix-server ~]# systemctl enable httpd 
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

5. 打开web页面测试Zabbix是否安装成功

进入到zabbix web页面

到此,zabbix服务端就安装完毕了!

3.2 配置Zabbix-client

配置zabbix-client,就不用那么麻烦了,我们直接在第三方的镜像源安装
https://mirrors.aliyun.com/zabbix/zabbix/
选择自己对应得版本就可以了

1. 下载安装包

# 这里推荐用rpm安装,因为我们下载的就是一个rpm包
[root@web-01 ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.33-1.el7.x86_64.rpm

2. 配置zabbix

# 先查看一下zabbix-agent 的配置文件
[root@web-01 ~]# rpm -qc zabbix-agent
/etc/logrotate.d/zabbix-agent
/etc/zabbix/zabbix_agentd.conf  # zabbix-agent 的配置文件位置
/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

# 修改配置文件:这里只要改一个位置就可以了
[root@web-01 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.10.134  # 这里改成zabbix-server端的ip地址

# 启动zabbix-agent服务,并加入开机自启
[root@web-01 ~]# systemctl start zabbix-agent
[root@web-01 ~]# systemctl enable zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.

# 检测agent服务端口是否启动,监听的端口为10050
[root@web-01 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1080/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1257/master         
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      1437/zabbix_agentd  
tcp6       0      0 :::22                   :::*                    LISTEN      1080/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1257/master         
tcp6       0      0 :::10050                :::*                    LISTEN

3.3 如何监控服务?

1. 首先登录服务的zabbix web界面

2. 添加一个主机

给被监控主机添加一个模板

推荐阅读