企业运维之 zabbix 监控部署--监控主机

Posted 123坤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了企业运维之 zabbix 监控部署--监控主机相关的知识,希望对你有一定的参考价值。

企业运维之 zabbix 监控部署

1. zabbix 介绍

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

  1. zabbix的组成:
    zabbix由两部分构成,zabbix server与可选组件zabbix agent。
    zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
    zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。zabbix agent可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD, OS X, Tru64/OSF1, Windows NT4.0, Windows (2000/2003/XP/Vista)等系统之上。
    zabbix server可以单独监视远程服务器的服务状态;同时也可以与zabbix agent配合,可以轮询zabbix agent主动接收监视数据(agent方式),同时还可被动接收zabbix agent发送的数据(trapping方式)。
    另外zabbix server还支持SNMP (v1,v2),可以与SNMP软件(例如:net-snmp)等配合使用。

要想搭建一个Zabbix的工作环境,需要从服务器入手。与服务器通信,管理员需要使用一个Zabbix前端界面,与Zabbix服务器和数据库进行通信。三个关键(界面、服务器和数据库)可以安装在同一台服务器上,但是如果你拥有一个更大更复杂的环境,将它们安装在不同的主机上也是一个选项。Zabbix服务器能够直接监控到同一网络中的设备,如果其他网络的设备也需要被监控,那还需要一台Zabbix代理服务器。

  1. Zabbix的工作流程:

(1)Agent获取被监控端数据,发送给Server。
(2)Server记录所接收到的数据,存储在Database中并按照策略进行相应操作。
(3)Web Interface将收集到的数据和操作信息显示给用户。

  1. zabbix的主要特点:
  • 安装与配置简单,学习成本低
  • 支持多语言(包括中文)
  • 免费开源
  • 自动发现服务器与网络设备
  • 分布式监视以及WEB集中管理功能
  • 可以无agent监视
  • 用户安全认证和柔软的授权方式
  • 通过WEB界面设置或查看监视结果
  • email等通知功能
  1. Zabbix主要功能:
  • CPU负荷
  • 内存使用
    -磁盘使用
  • 网络状况
  • 端口监视
  • 日志监视。

zabbix的发行版分为标准版和LTS版本

zabbix LTS与zabbix标准发行版本的生命周期有区别,普通版本6个月开发发行,支持6个月无限制支持,外加一个月有限制支持。
LTS为Long Term Support的简写,zabbix将为客户提供5年的支持服务。前三年完全支持与后两年有限制支持。前三年包括一般、关键、安全性问题解决,后两年包括关键、安全性问题解决。超出时间不提供技术支持服务。

2. 部署zabbix

参考文档:https://www.zabbix.com/documentation/4.0/zh/manual

稳定起见使用LTS长期支持版本.

环境:三台虚拟机主机名/ip/角色如下所示

server1	172.25.25.1	zabbix-server,zabbix-web,mariadb-server监控方
server2	172.25.25.2	zabbix-agent(1)被监控方
server3	172.25.25.3	zabbix-agent(2)被监控方

2.1 server 端部署

Zabbix server 是整个 Zabbix 软件的核心程序。

Zabbix Server 负责执行数据的主动轮询和被动获取,计算触发器条件,向用户发送通知。它是 Zabbix Agent 和 Proxy 报告系统可用性和完整性数据的核心组件。Server 自身可以通过简单服务远程检查网络服务(如Web服务器和邮件服务器)。

Zabbix Server是所有配置、统计和操作数据的中央存储中心,也是Zabbix监控系统的告警中心。在监控的系统中出现任何异常,将被发出通知给管理员。

基本的 Zabbix Server 的功能分解成为三个不同的组件。他们是:Zabbix server、Web前端和数据库。

Zabbix 的所有配置信息都存储在 Server 和Web前端进行交互的数据库中。例如,当你通过Web前端(或者API)新增一个监控项时,它会被添加到数据库的监控项表里。然后,Zabbix server 以每分钟一次的频率查询监控项表中的有效项,接着将它存储在 Zabbix server 中的缓存里。这就是为什么 Zabbix 前端所做的任何更改需要花费两分钟左右才能显示在最新的数据段的原因。

  1. server端

下载zabbix的官方软件包,将其放在宿主机的发布目录下,然后依次配置几个节点的yum源;

[root@westos html]# cd zabbix/
[root@westos zabbix]# ls
fping-3.10-1.el7.x86_64.rpm            php-pdo-5.4.16-46.el7.x86_64.rpm
iksemel-1.4-2.el7.centos.x86_64.rpm    php-xml-5.4.16-46.el7.x86_64.rpm
php-5.4.16-46.el7.x86_64.rpm           repodata
php-bcmath-5.4.16-42.el7.x86_64.rpm    zabbix-agent-4.0.5-1.el7.x86_64.rpm
php-bcmath-5.4.16-46.el7.x86_64.rpm    zabbix-get-4.0.5-1.el7.x86_64.rpm
php-cli-5.4.16-46.el7.x86_64.rpm       zabbix-java-gateway-4.0.5-1.el7.x86_64.rpm
php-common-5.4.16-46.el7.x86_64.rpm    zabbix-proxy-mysql-4.0.5-1.el7.x86_64.rpm
php-gd-5.4.16-46.el7.x86_64.rpm        zabbix-sender-4.0.5-1.el7.x86_64.rpm
php-ldap-5.4.16-46.el7.x86_64.rpm      zabbix-server-mysql-4.0.5-1.el7.x86_64.rpm
php-mbstring-5.4.16-42.el7.x86_64.rpm  zabbix-web-4.0.5-1.el7.noarch.rpm
php-mbstring-5.4.16-46.el7.x86_64.rpm  zabbix-web-mysql-4.0.5-1.el7.noarch.rpm
php-mysql-5.4.16-46.el7.x86_64.rpm

[root@server1 yum.repos.d]# cat zabbix.repo 
[zabbix]
name=zabbix
baseurl=http://172.25.25.250/zabbix
gpgcheck=0
[root@server1 yum.repos.d]# yum repolist
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
dvd                                                                                         | 4.3 kB  00:00:00     
zabbix                                                                                      | 2.9 kB  00:00:00     
(1/3): dvd/group_gz                                                                         | 146 kB  00:00:00     
(2/3): dvd/primary_db                                                                       | 4.2 MB  00:00:00     
(3/3): zabbix/primary_db                                                                    |  18 kB  00:00:00     
repo id                                               repo name                                              status
dvd                                                   rhel7.6                                                5,152
zabbix                                                zabbix                                                    22
repolist: 5,174
[root@server1 yum.repos.d]# scp zabbix.repo server2:/etc/yum.repos.d/
[root@server1 yum.repos.d]# scp zabbix.repo server3:/etc/yum.repos.d/
zabbix-agent.:zabbix客户端,用来收集客户端各种参数
zabbix-get:zabbix的一个工具,用来检查是否可以获取服务器信息(一般服务端要安装)
zabbix-java-gateway:用于监控JMX应用的程序,它把收集到的信息发送给zabbix-server(这个看需求安装,我暂时没装)
zabbix-proxy:zabbix proxy可以代替zabbix server检索客户端的数据,然后把数据汇报给zabbix server,并且在一定程度上分担了zabbix server的压力。zabbix proxy可以非常简便的实现了集中式、分布式监控。
zabbix-release:会生成一个zabbix的yum源,可以直接下载相关软件包。
zabbix-sender:用于发送数据给server或者proxy。
zabbix-web:zabbix要使用web界面,这个包是用来处理Apache和PHP,mysql等之间的依赖关系。
zabbix-web-mysql:这个是zabbix前段支持mysql的
zabbix-web-japanese:支持日语

1)在server1上安装客户端、agent 和前端支持的mysql

[root@server1 yum.repos.d]# yum install -y zabbix-server-mysql.x86_64 zabbix-agent.x86_64 zabbix-web-mysql.noarch

2)创建初始数据库

[root@server1 zabbix]# yum install -y mariadb-server	#安装数据库
[root@server1 zabbix]# systemctl enbale --now mariadb
[root@server1 ~]#  mysql_secure_installation	#设置密码
[root@server1 zabbix]# mysql -p
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;	#创建zabbix库
MariaDB [(none)]> create user zabbix@localhost identified by 'westos';	#创建zabbix用户
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;	#给zabbix用户授予所有权限
MariaDB [(none)]> quit
Bye

导入初始架构和数据,系统将提示输入新创建的密码。

[root@server1 ~]# zcat /usr/share/doc/zabbix-server-mysql-4.0.5/create.sql.gz | mysql -uzabbix -pwestos zabbix
#等待导入完毕
[root@server1 ~]# mysql -p

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| zabbix             |
+--------------------+
4 rows in set (0.00 sec)
#此时进入数据库,查看表的信息是否已经ok

3)配置zabbix并开启:

[root@server1 ~]# cd /etc/zabbix/
[root@server1 zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.d  zabbix_server.conf
#安装完会会生成相应的配置信息
[root@server1 zabbix]# vim zabbix_server.conf
#此处数据库的名称和用户都已经设定好了
125 DBPassword=westos

[root@server1 zabbix]# cd /etc/httpd/conf.d/
[root@server1 conf.d]# ls
autoindex.conf  php.conf  README  userdir.conf  welcome.conf  zabbix.conf
[root@server1 conf.d]# vim zabbix.conf 

 20         php_value date.timezone Asia/Shanghai
#改时区
[root@server1 conf.d]# systemctl enable --now httpd
[root@server1 zabbix]# systemctl enable --now zabbix-server
[root@server1 zabbix]# ps ax
#当查看到多个时zabbix的相关信息时,就说明server端已经配置成功。
[root@server1 conf.d]# cat /var/log/zabbix/zabbix_server.log 
#也可以查看日志信息

4)server默认会监控本机,直接启动agent

[root@server1 zabbix]# systemctl enable --now zabbix-agent

此时网页访问:http://172.25.25.1/zabbix/setup.php说明前面配置没有问题;


点击Next step来输入连接数据库密码:


设置访问名称,可以随便起:

输入初始账号密码进入zabbix监控web界面,初始账号为Admin(A大写),密码为zabbix;


进入后查看已经配置的主机:


将界面调整成中文的方便阅读,点击右上角的用户标识:


配置主机:点击配置-主机可以看到 sever 的状态是可用的,如果是红的可能是因为没有开启zabbix-agent;

2.2 中文字体乱码设置

以上在用中文查看图形时,页面信息会是乱码的情况;可以通过以下设置来将其调整完整;

[root@server1 fonts]# ls
graphfont.ttf
[root@server1 fonts]# pwd
/usr/share/zabbix/fonts
[root@server1 fonts]# ls
graphfont.ttf  simkai.ttf	#下载中文字体配置
[root@server1 fonts]# rm -fr graphfont.ttf
[root@server1 fonts]# ln -s simkai.ttf graphfont.ttf
[root@server1 fonts]# ll	#重新做个链接
total 4040
lrwxrwxrwx 1 root root      10 Jul 25 11:08 graphfont.ttf -> simkai.ttf
-rw-r--r-- 1 root root 4135804 Jul 25 11:08 simkai.ttf

此时再次查看:

2.3 agent 端部署

Zabbix agent 部署在被监控目标上,以主动监控本地资源和应用程序(硬盘、内存、处理器统计信息等)。
Zabbix agent 收集本地的操作信息并将数据报告给 Zabbix server 用于进一步处理。一旦出现异常 (例如硬盘空间已满或者有崩溃的服务进程),Zabbix server 会主动警告管理员指定机器上的异常。
Zabbix agents 的极高效率缘于它可以利用本地系统调用来完成统计数据的采集。

前面在server2和server3上已经配置了软件仓库,此处直接下载agent所需的软件包即可,然后进行相应的配置;

先来配置server2上,然后启动服务:

[root@server2 ~]# yum install -y zabbix-agent
[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf
 98 Server=172.25.25.1		#服务的地址
139 ServerActive=172.25.25.1
150 Hostname=server2		#告知连接的主机名,要有解析
[root@server2 ~]# systemctl enable --now zabbix-agent
[root@server2 ~]# cat /var/log/zabbix/zabbix_agentd.log 
 13896:20210725:092118.502 Starting Zabbix Agent [server2]. Zabbix 4.0.5 (revision 90164).
 13896:20210725:092118.502 **** Enabled features ****
 13896:20210725:092118.503 IPv6 support:          YES
 13896:20210725:092118.503 TLS support:           YES
 13896:20210725:092118.503 **************************
 13896:20210725:092118.503 using configuration file: /etc/zabbix/zabbix_agentd.conf
 13896:20210725:092118.503 agent #0 started [main process]
 13897:20210725:092118.504 agent #1 started [collector]
 13899:20210725:092118.506 agent #3 started [listener #2]
 13898:20210725:092118.506 agent #2 started [listener #1]
 13901:20210725:092118.508 agent #5 started [active checks #1]
 13900:20210725:092118.508 agent #4 started [listener #3]
 13901:20210725:092118.512 no active checks on server [172.25.25.1:10051]: host [server2] not found
[root@server2 ~]# netstat -antlp |grep :10050
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      13896/zabbix_agentd 
tcp6       0      0 :::10050                :::*                    LISTEN      13896/zabbix_agentd 

从日志信息和监控页面可以看到,此时虽然开启了对应的端口,但是监控端并没有发现被监控端的信息,下来就需要对监控主机进行添加。

监控主机的添加分为三种

  1. 手动添加

如图所示,点击右上角添加主机:


然后写入主机名,选择群组;看所要监控的归到那个组里面;然后天入IP;


按提示创建模板:模板中可以选择预设的监控项,如监控硬盘/CPU的选项等等。如果没有,可以手动创建模板;此处选择操作系统的监控;

  1. 自动发现
    先添加动作,启用动作,再配置并启动自动发现

添加动作并启用动作:


然后配置自动发现:


开一台虚拟机,下载所需要的agent信息,并配置agent信息如下所示:

[root@server3 ~]# yum install -y zabbix-agent
[root@server3 ~]# vim /etc/zabbix/zabbix_agentd.conf 

 98 Server=172.25.25.1
139 ServerActive=172.25.25.1
150 Hostname=server3
[root@server3 ~]# systemctl enable --now zabbix-agent

由于刚才设置的时间过长,此时可能需要等待一定的时间才能被发现;并被检测。此时可以将其改为10s ,等待时间到了之后便会被自动发现;


以上过程一定要先设定并启用动作,否则一旦被启动自动发现没有动作,后面再添加就显得比较麻烦。

  1. 自动注册

在做这个的时候,先将自动发现停用,否则会冲突;

此处不想在开更多的主机,将之前自动发现的主机删除;然后来做自动注册;

然后设置自动注册:


此时完成之后当有新的符合条件的主机时,便会自动添加近来。

[root@server3 ~]# systemctl restart zabbix-agent

3. Zabbix API方式配置

Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。它广泛用于:

创建新的应用程序以使用Zabbix;
将Zabbix与第三方软件集成;
自动执行常规任务。

Zabbix API是基于Web的API,作为Web前端的一部分提供。它使用JSON-RPC 2.0协议,这意味着两件事:

该API包含一组独立的方法;
客户端和API之间的请求和响应使用JSON格式进行编码。

Zabbix API由许多名义上分组的独立API方法组成。每个方法执行一个特定任务。例如,方法 host.create 隶属于 host 这个API分组 ,用于创建新主机。历史上,API分组有时被称为“类”。

大多数API至少包含四种方法: get, create, update 和 delete ,分别是检索,创建,更新和删除数据,但是某些API提供一套完全不同的一组方法。

根据官方文档来查看:

https://www.zabbix.com/documentation/4.0/zh/manual/api

  1. 登陆并获取身份验证令牌
[root@westos ~]# curl -s -XPOST http://172.25.25.1/zabbix/api_jsonrpc.php -H 'Content-Type: application/json-rpc' -d '

    "jsonrpc": "2.0",
    "method": "user.login",	#被调用的API方法名;
    "params": 				#将被传递给API方法的参数;
        "user": "Admin",
        "password": "zabbix"
    ,
    "id": 1,				#请求的任意标识符;
    "auth": null			#用户认证令牌; 如果没有的话可以设置为null
' | python3 -m json.tool

    "jsonrpc": "2.0",	#API使用的JSON-RPC协议的版本; Zabbix API实现的JSON-RPC版本是2.0
    "result": "751824a76bddfccbf1ea87d1f9e62ca0",	#方法返回的数据
    "id": 1

可以看到请求的返回值包含一个751824a76bddfccbf1ea87d1f9e62ca0,后续增删改查就需要该token值。

  1. 获取主机列表

可以将其用一个脚本来写入,然后调用脚本来查看:

[root@server1 ~]# cat zabbix_api.sh 
curl -s -XPOST http://172.25.25.1/zabbix/api_jsonrpc.php -H 'Content-Type: application/json-rpc' -d '

    "jsonrpc": "2.0",
    "method": "host.get",
    "params": 
        "output": [
            "hostid",
            "host"
        ],
        "selectInterfaces": [
            "interfaceid",
            "ip"
        ]
    ,
    "id": 2,
    "auth": "751824a76bddfccbf1ea87d1f9e62ca0"
' | python2 -m json.tool

执行脚本之后如下所示:

[root@server1 ~]# sh zabbix_api.sh 

    "id": 2,
    "jsonrpc": "2.0",
    "result": [
        
            "host": "Zabbix server",
            "hostid": "10084",
            "interfaces": [
                
                    "interfaceid": "1",
                    "ip": "127.0.0.1"
                
            ]
        ,
        
            "host": "server2",
            "hostid": "10266",
            "interfaces": [
                
                    "interfaceid": "5",
                    "ip": "172.25.25.2"
                
            ]
        ,
        
            "host": "server3",
            "hostid": "10269",
            "interfaces": [
                
                    "interfaceid": "8",
                    "ip": "172.25.25.3"
                
            ]
        
    ]

  1. 删除主机

修改脚本内容如下所示:

[root@server1 ~以上是关于企业运维之 zabbix 监控部署--监控主机的主要内容,如果未能解决你的问题,请参考以下文章

企业运维之 zabbix 监控部署--监控应用

企业运维之 zabbix 监控部署--监控应用

企业运维之 zabbix 监控--报警平台与分布式

企业运维之 zabbix 监控--报警平台与分布式

linux运维之zabbix监控windows服务器

开源监控系统中 Zabbix 和 Nagios 哪个更好