关键词:
1. zabbix 介绍
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
- 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代理服务器。
- Zabbix的工作流程:
(1)Agent获取被监控端数据,发送给Server。
(2)Server记录所接收到的数据,存储在Database中并按照策略进行相应操作。
(3)Web Interface将收集到的数据和操作信息显示给用户。
- zabbix的主要特点:
- 安装与配置简单,学习成本低
- 支持多语言(包括中文)
- 免费开源
- 自动发现服务器与网络设备
- 分布式监视以及WEB集中管理功能
- 可以无agent监视
- 用户安全认证和柔软的授权方式
- 通过WEB界面设置或查看监视结果
- email等通知功能
- 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 前端所做的任何更改需要花费两分钟左右才能显示在最新的数据段的原因。
- 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
从日志信息和监控页面可以看到,此时虽然开启了对应的端口,但是监控端并没有发现被监控端的信息,下来就需要对监控主机进行添加。
监控主机的添加分为三种
- 手动添加
如图所示,点击右上角添加主机:
然后写入主机名,选择群组;看所要监控的归到那个组里面;然后天入IP;
按提示创建模板:模板中可以选择预设的监控项,如监控硬盘/CPU的选项等等。如果没有,可以手动创建模板;此处选择操作系统的监控;
- 自动发现
先添加动作,启用动作,再配置并启动自动发现
添加动作并启用动作:
然后配置自动发现:
开一台虚拟机,下载所需要的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 ,等待时间到了之后便会被自动发现;
以上过程一定要先设定并启用动作,否则一旦被启动自动发现没有动作,后面再添加就显得比较麻烦。
- 自动注册
在做这个的时候,先将自动发现停用,否则会冲突;
此处不想在开更多的主机,将之前自动发现的主机删除;然后来做自动注册;
然后设置自动注册:
此时完成之后当有新的符合条件的主机时,便会自动添加近来。
[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
- 登陆并获取身份验证令牌
[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值。
- 获取主机列表
可以将其用一个脚本来写入,然后调用脚本来查看:
[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"
]
]
企业运维之zabbix监控部署--监控应用(代码片段)
企业运维之zabbix监控部署--监控应用1.Apache监控2.Nginx监控3.Mysql监控4.zabbix监控Tomcat在前面的博客中介绍了如何部署企业级监控,以及监控主机时的几种发现方式,以及对于API接口的管理做了简单的介绍和操作演示;接... 查看详情
企业运维之zabbix监控部署--监控应用(代码片段)
企业运维之zabbix监控部署--监控应用1.Apache监控2.Nginx监控3.Mysql监控4.zabbix监控Tomcat在前面的博客中介绍了如何部署企业级监控,以及监控主机时的几种发现方式,以及对于API接口的管理做了简单的介绍和操作演示;接... 查看详情
企业运维之zabbix监控--报警平台与分布式(代码片段)
企业运维之zabbix监控--报警平台与分布式1.报警平台的使用2.Agent主动模式3.proxy分布式1.报警平台的使用此处选择和睿象云结合来实现报警平台的搭建;注册链接:link进行注册;注册完成之后,点击左侧的CA进入告警平台... 查看详情
企业运维之zabbix监控--报警平台与分布式(代码片段)
企业运维之zabbix监控--报警平台与分布式1.报警平台的使用2.Agent主动模式3.proxy分布式1.报警平台的使用此处选择和睿象云结合来实现报警平台的搭建;注册链接:link进行注册;注册完成之后,点击左侧的CA进入告警平台... 查看详情
2021-10-15②企业级zabbix监控安装部署全网最细(代码片段)
文章目录Zabbix企业监控系统搭建安装安装设置数据库:配置server端配置webGUI浏览器访问并进行初始化设置配置agent端安装zabbix修改配置文件监控过程详解创建主机及主机群组监控项(items)①介绍②定义一个不带参数的监控项③... 查看详情
zabbix监控部署!(代码片段)
...署Server端部署Client端部署Zabbix概述Zabbix是一个高度集成的企业级开源网络监控解决方案,与Cacti、Nagios类似,提供分布式监控以及集中的Web管理界面,它具备的主要功能有:主机性能监控、网络设备性能监控、数... 查看详情
运维之监控系统实践
一、监控的分类基础资源监控系统:zabbixopen-falconn9e(夜莺)prometheus(CNCF)cactinagionsganglia应用程序监控(APM):Pingpoint,Twitter的Zipkin,美团的CAT商业化厂商:听云日志监控:ES/自研二、监控系统(我们在用什么?)open-falconzabbix... 查看详情
zabbix监控部署!(代码片段)
...署Server端部署Client端部署Zabbix概述Zabbix是一个高度集成的企业级开源网络监控解决方案,与Cacti、Nagios类似,提供分布式监控以及集中的Web管理界面,它具备的主要功能有:主机性能监控、网络设备性能监控、数... 查看详情
轻松部署zabbix集中监控系统(代码片段)
...个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题。zabbix功能主机性... 查看详情
部署zabbix4.0监控系统(代码片段)
Zabbix是一个高度集成的企业级开源网络监控解决方案,与Cacti、Nagios并称监控三剑客,提供分布式监控以及集中的WEB管理界面。被监控对象只要支持SNMP协议或者运行Zabbix_agents即可。Zabbix具备创建商业监控软件所具备的功能,例... 查看详情
企业运维之服务管理--promethues(代码片段)
企业运维之服务管理--peomethues1.promethues简介2.promethues的部署1.promethues简介prometheus是由谷歌研发的一款开源的监控软件,它通过安装在远程机器上的exporter,通过HTTP协议从远程的机器收集数据并存储在本地的时序数据库上... 查看详情
zabbix监控orace(代码片段)
...法就是zabbix-agentUserparameter自定义监控。鉴于目前python在运维方面很火,用python自己写一个脚本去抓取数据,通过zabbix-agentUserparameter调用脚本获取oracle的数据,这样的方案一来可以提升一下自己写python的能力,二来需要监控那些... 查看详情
企业运维之七层负载均衡--haproxy(代码片段)
企业运维之七层负载均衡--Haproxy1.基础介绍2.负载均衡的类型3.Haproxy的部署3.1Haproxy实现负载均衡和监控3.2日志采集3.3调度算法3.5设定备机4.Haproxy的访问控制4.1通过调度器访问不同后端4.2用户访问黑白名单设置4.3读写分离5.haproxy的... 查看详情
开源监控系统中zabbix和nagios哪个更好
...册主机,自动添加模板,自动添加分组,是天生的自动化运维利器的首选,当然于自动化运维工具搭配,puppet+zabbix,或者saltstack+zabbix,那是如鱼得水。3.自定义监控比较方便,自定义监控项非常简单,支持变量,支持lowleveldiscov... 查看详情
zabbix3.0入门到企业实战三(zabbix监控主机-基础监控配置)(
一:Zabbix监控主机-基础监控配置1.1配置监控主机 创建主机(先找到配置在找到主机,在创建主机) 点击-->>配置-->>主机 主机配置如下:注意勾选以启用 1.2给主机添加自带的监控内置模板 ... 查看详情
运维监控zabbix可以做哪些监控
...个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。zabbix由2部分构成,zabbixserver与可选组... 查看详情
企业级分布式监控zabbix部署+安装排错解决本地无法登录问题+测试邮件报警(代码片段)
...-----------------概述----------------------Zabbix是一个高度集成的企业级开源网络监控解决方案,与Caci、Nagios类似,提供分布式监控以及集中的Web管理界面。被监控对象只要支持SNMP协议或者运行Zabbix_agents代理程序即可,Zabbix的官方网址... 查看详情
linux12企业实战--16修改zabbix监控的主机名称
文章目录一、修改zabbix主机名称二、登录zabbix监控的机器三、输入需修改的主机ip四、完成修改五、通知用户一、修改zabbix主机名称需求:Zabbix里st_mc_es_ksprd_开头命名的主机,麻烦改成st_sellout_es_ksprd_二、登录zabbix监控的机器http:... 查看详情