1.Zabbix的介绍:
(1)zabbix是什么?
Zabbix 由 Alexei Vladishev 创建,目前由其成立的公司—— Zabbix SIA 积极的持续开发更新维护, 并为用户提供技术支持服务。
Zabbix 是一个企业级分布式开源监控解决方案
Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。这些功能使得 Zabbix 成为容量规划的理想选择
Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用
(2)zabbix的搭建环境:
要想搭建一个Zabbix的工作环境,需要从服务器入手。与服务器通信,管理员需要使用一个Zabbix前端界面,与Zabbix服务器和数据库进行通信。三个关键(界面、服务器和数据库)可以安装在同一台服务器上,但是如果你拥有一个更大更复杂的环境,将它们安装在不同的主机上也是一个选项。Zabbix服务器能够直接监控到同一网络中的设备,如果其他网络的设备也需要被监控,那还需要一台Zabbix代理服务器。
(3)zabbix-agent:
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
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方式)。
(4)工作原理:
一个监控系统运行的大概的流程是这样的:
zabbix agent需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agent收集数据分为主动和被动两种模式:
主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。
2.Zabbix的搭建:
在开始正式搭建之前,首先封装7.3/7.5的虚拟机,然后创建三个虚拟机使用。本次搭建选择使用server1(ip:172.25.33.1)作为zabbix界面、zabbix服务器和数据库,即搭建所需的三者都在server1中。封装过程可以参考我的博文:虚拟机封装为母盘,利用母盘批量创建虚拟机,正式搭建过程如下:
(1)首先修改server1的yum仓库,将需要的软件挂在自己的http目录下,让自己的虚拟机使用
[root@server1 yum.repos.d]# vim zabbix.repo
[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.
westos | 4.1 kB 00:00
zabbix | 2.9 kB 00:00
(1/3): westos/group_gz | 136 kB 00:00
(2/3): zabbix/primary_db | 9.5 kB 00:00
(3/3): westos/primary_db | 3.9 MB 00:00
repo id repo name status
westos westos 4,751
zabbix 4.0 12
repolist: 4,763
(2)server1下载所需软件
yum install -y zabbix-server-mysql ##zabbix服务端
yum install zabbix-web-mysql ##前端界面
yum install -y mariadb-server ##数据库
systemctl start mariadb.service ##开启数据库
systemctl enable mariadb.service ##设置数据库开机自启
(3)数据库安全初始化
mysql_secure_installation
(4)创建zabbix数据库以及zabbix用户,并给zabbix用户授权
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'westos';
(5)将压缩包中的数据导入数据库
[root@server1 ~]# cd /usr/share/doc/zabbix-server-mysql-4.0.5/
[root@server1 zabbix-server-mysql-4.0.5]# pwd
/usr/share/doc/zabbix-server-mysql-4.0.5
[root@server1 zabbix-server-mysql-4.0.5]# ls
AUTHORS ChangeLog COPYING create.sql.gz NEWS README
[root@server1 zabbix-server-mysql-4.0.5]# zcat create.sql.gz | mysql -p zabbix
Enter password:
(6)修改zabbix_server的配置文件:修改数据库密码
[root@server1 zabbix-server-mysql-4.0.5]# cd /etc/zabbix
[root@server1 zabbix]# ls
web zabbix_server.conf
[root@server1 zabbix]# vim zabbix_server.conf
124 DBPassword=westos
(7)启动zabbix服务端并设置开机自启
[root@server1 zabbix]# systemctl start zabbix-server
[root@server1 zabbix]# systemctl enable zabbix-server
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /
(8)要知道:zabbix的日志所在
[root@server1 zabbix]# cd /var/log
[root@server1 log]# cd zabbix/
[root@server1 zabbix]# ls
zabbix_server.log
em/zabbix-server.service.
(9)修改关于httpd的zabbix的配置文件,并启动Httpd
[root@server1 zabbix]# cd /etc/httpd
[root@server1 httpd]# cd 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
<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 Asia/shanghai
</IfModule>
</Directory>
[root@server1 conf.d]# systemctl start httpd
[root@server1 conf.d]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@server1 conf.d]#
(10)浏览器访问:
http://172.25.33.1/zabbix/setup.php
(11)server1安装代理服务端:zabbix-agent
[root@server1 conf.d]#yum install zabbix-agent -y
[root@server1 conf.d]# systemctl start zabbix-agent
[root@server1 conf.d]# 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.
[root@server1 conf.d]# netstat -tnlp #查看端口,zabbix-agent使用10050端口
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:3306 0.0.0.0:* LISTEN 11407/mysqld
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 617/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 845/master
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 11751/zabbix_agentd
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 11558/zabbix_server
tcp6 0 0 :::80 :::* LISTEN 11660/httpd
tcp6 0 0 :::22 :::* LISTEN 617/sshd
tcp6 0 0 ::1:25 :::* LISTEN 845/master
tcp6 0 0 :::10050 :::* LISTEN 11751/zabbix_agentd
tcp6 0 0 :::10051 :::* LISTEN 11558/zabbix_server
3.监控主机的添加
(1)手动添加监控主机
目的:手动添加主机server2
首先先在server2上进行设置:
(1) 配置yum仓库,下载zabbix-agent,并修改代理配置文件
[root@server1 yum.repos.d]# ls
redhat.repo westos.repo zabbix.repo
[root@server1 yum.repos.d]# scp zabbix.repo root@172.25.33.2:/etc/yum.repos.d
The authenticity of host '172.25.33.2 (172.25.33.2)' can't be established.
ECDSA key fingerprint is 75:95:da:07:65:8f:01:97:87:e0:3f:cc:bc:85:44:a6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.25.33.2' (ECDSA) to the list of known hosts.
root@172.25.33.2's password:
zabbix.repo 100% 61 0.1KB/s 00:00
[root@server2 yum.repos.d]# yum install zabbix-agent -y ##下载代理端
[root@server2 yum.repos.d]# cd /etc/zabbix/
[root@server2 zabbix]# ls
zabbix_agentd.conf zabbix_agentd.d
[root@server2 zabbix]# vim zabbix_agentd.conf ##修改代理的监控配置文件
98 Server=172.25.33.1 #被动发现服务器ip
139 ServerActive=172.25.33.1 #主动发现服务器ip
150 Hostname=server2 #主机名,因为已经做过解析
[root@server2 zabbix]# systemctl start zabbix-agent
[root@server2 zabbix]# 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.
[root@server2 zabbix]# netstat -antlp
Active Internet connections (servers and established)
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 835/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 885/master
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 10680/zabbix_agentd
tcp 0 0 172.25.4.2:22 172.25.4.250:39000 ESTABLISHED 1205/sshd: root@pts
tcp6 0 0 :::22 :::* LISTEN 835/sshd
tcp6 0 0 ::1:25 :::* LISTEN 885/master
tcp6 0 0 :::10050 :::* LISTEN 10680/zabbix_agentd
其次:
在监控页面中选择配置-->主机-->创建主机
主机名称:server2
群组:linux servers
Ip地址:172.25.33.2
然后点击模板,选择template 0s linux
最后点击添加
可以在主机中看到server2已经添加成功
手动添加时会存在一定的弊端,当代理端数量较多时,则手动添加比较困难,我们可以采用自动发现以及自动注册
(2)自动发现监控主机(针对大批量主机 有相同特性)
目的:自动发现server2并添加
<1>先将上一步已经添加的server2主机删除,在配置中点击事件源:自动发现,然后选择动作 必须先启用动作才能创建自动发现规则
<2>点击自动发现,创建自动发现规则 名称:local network
ip范围:172.25.4.1-254
检查内的内容为zabbix客户端“system.uname”
然后点击已启用
然后在最上面点击监控 点击自动发现 会发现已经发现设备server2
(3)自动注册
目的:通过自动注册发现server3
开启server3,过程和手动发现监控主机中server2前面的过程一样
<1>在监控界面 监控中将存在的动作删除,在动作中选择自动注册
添加新的动作,名称:auto_reg(随意)
选择主机名称包含server3
在动作中还要添加操作(添加主机 添加主机群组linux servers 链接到模板template os linux),点击启用
<2>然后在配置中主机中可以发现添加server3添加进来了
4.通过API接口管理Zabbix所监控主机
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
(1)查看zabbix监控系统的api接口
[root@server1 ~]# vim zabbix-api
curl -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}' http://172.25.33.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# chmod +x zabbix-api
[root@server1 ~]# ./zabbix-api
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 229 100 68 100 161 560 1327 --:--:-- --:--:-- --:--:-- 1437
{
"id": 1,
"jsonrpc": "2.0",
"result": "1a02d0d7367ccef9a713e7c3a1ec97ed"
}
(2)查看主机信息
[root@server1 ~]# vim zabbix-api
curl -s -XPOST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"filter": {
"host":[
"Zabbix server",
"server2",
"server3"
]
}
},
"auth": "1a02d0d7367ccef9a713e7c3a1ec97ed",
"id": 1
}' http://172.25.33.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# ./zabbix-api
(3)删除主机
[root@server1 ~]# vim zabbix-api
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10265" ##要删除主机的hostid,在监控界面上点击对应的主机,在url可以看到hostid
],
"auth": "5e8ad3bef69ff4695f58771dac1e016e",
"id": 1
}' http://172.25.33.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# ./zabbix-api
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10265"
]
}
}
(4)添加主机
[root@server1 ~]# vim zabbix-api
curl -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "server2",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "172.25.33.2",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2" ##所要加入群组的id
}
],
"template": [
{
"templateid": "10001" ##所要链接
}
]
},
"auth": "5e8ad3bef69ff4695f58771dac1e016e",
"id": 1
}' http://172.25.33.1/zabbix/api_jsonrpc.php | python -m json.tool