前言:
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
实验环境:
server1 | 172.25.75.1 | zabbix-server zabbix-agent |
---|---|---|
server2 | 172.25.75.2 | zabbix-agent |
server3 | 172.25.75.3 | zabbix-agent |
一、Zabbix-server环境的搭建
先给大家介绍两个搜索下载各种rpm包的网站,方便大家下载依赖包。
pbone:http://rpm.pbone.net/
pkgs:https://pkgs.org/
我们实验中所用到的依赖包,可以在这两个网站下载哈!!!
1、安装zabbix
[root@server1 ~]# ls
fping-3.10-1.el7.x86_64.rpm
iksemel-1.4-2.el7.centos.x86_64.rpm
php-bcmath-5.4.16-42.el7.x86_64.rpm
php-mbstring-5.4.16-42.el7.x86_64.rpm
zabbix-agent-4.0.5-1.el7.x86_64.rpm
zabbix-get-4.0.5-1.el7.x86_64.rpm
zabbix-java-gateway-4.0.5-1.el7.x86_64.rpm
zabbix-proxy-mysql-4.0.5-1.el7.x86_64.rpm
zabbix-sender-4.0.5-1.el7.x86_64.rpm
zabbix-server-mysql-4.0.5-1.el7.x86_64.rpm
zabbix-web-4.0.5-1.el7.noarch.rpm
zabbix-web-mysql-4.0.5-1.el7.noarch.rpm
[root@server1 ~]# yum install -y fping-3.10-1.el7.x86_64.rpm iksemel-1.4-2.el7.centos.x86_64.rpm zabbix-server-mysql-4.0.5-1.el7.x86_64.rpm zabbix-web-mysql-4.0.5-1.el7.noarch.rpm zabbix-web-4.0.5-1.el7.noarch.rpm php-bcmath-5.4.16-42.el7.x86_64.rpm php-mbstring-5.4.16-42.el7.x86_64.rpm
2、下载mysql,初始化
[root@server1 ~]# yum install mariadb-server -y
[root@server1 mysql]# systemctl start mariadb
[root@server1 mysql]# mysql_secure_installation
3、安装zabbix客户端,可以监控自己。
[root@server1 ~]# yum install zabbix-agent-4.0.5-1.el7.x86_64.rpm -y
4、创建zabbix用户,授权
[root@server1 ~]# mysql -p
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'redhat';
5、导入数据
[root@server1 ~]# zcat /usr/share/doc/zabbix-server-mysql-4.0.5/create.sql.gz | mysql -uzabbix -p zabbix
进入mysql查看是否导入成功
6、更改服务端配置文件,启动服务
[root@server1 ~]# vim /etc/zabbix/zabbix_server.conf
124 DBPassword=redhat
开启zabbix:
[root@server1 ~]# systemctl start zabbix-server
[root@server1 ~]# systemctl start zabbix-agent
[root@server1 ~]# netstat -tnlp
7、更改httpd的zabbix配置文件,启动http
[root@server1 ~]# vim /etc/httpd/conf.d/zabbix.conf
20 php_value date.timezone Asia/Shanghai
[root@server1 ~]# systemctl start httpd
[root@server1 ~]# netstat -tnlp
8、浏览器前端配置
在客户端浏览器输入:172.25.75.1/zabbix/
Next
这里必须全为OK才可以继续!!!
输入数据库的密码!(我是redhat)
Name名字可以随意取
点击Next。
最后点击Finish。完成基本设置。
这里可以输入帐号和密码,我们输入管理员帐号和密码(帐号Admin,密码zabbix)
zabbix是支持中文的,可以点加右上角的头像,选择chinese。
二、添加agent节点
1、在server2上安装zabbix-agent
[root@server2 ~]# ls
zabbix-agent-4.0.5-1.el7.x86_64.rpm
[root@server2 ~]# rpm -ivh zabbix-agent-4.0.5-1.el7.x86_64.rpm
warning: zabbix-agent-4.0.5-1.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:zabbix-agent-4.0.5-1.el7 ################################# [100%]
2、更改zabbix-agent的配置文件,配置zabbix-server端
[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf
98 Server=172.25.75.1
139 ServerActive=172.25.75.1
150 Hostname=server2
[root@server2 ~]# systemctl start zabbix-agent
[root@server2 ~]# cat /var/log/zabbix/zabbix_agentd.log
3、手动在web界面添加节点
点击创建主机。
我们先监控我们的Linux系统,这里模板就选择Linux系统就可以了!
然后配置主机:
填入我们server2的相关信息,后点击添加!
这里如果可用性么有的话,耐心等待一段时间后,就会更新到可用了!!!
这就是手动添加的步骤了,那么如果有几百台主机的话,一台一台的操作实在效率太低了。我们有自动发现和自动注册动作可以完美解决这个问题哈!
4、配置自动发现动作
我们先把我们手动添加的主机删掉。
点击动作!
点击事件源,选择自动发现
点击名称!更改自动发现动作的触发条件
这里可以选择很多的条件,我们的条件是包含server,然后点击触发条件下面的添加。
点击更新。
点击停用,启用该动作!
然后点击自动发现!
点击名称。
更改IP范围和更新间隔后,更新,并且启用。
我们再次切换到主机,发现主机已经自动添加到列表里了
5、配置自动注册动作
1、停用自动发现动作,并且配置server3的agent相关配置
2、web端配置
在动作中选择自动注册,然后创建动作。
填入动作名称,和设置触发条件。后设置操作
操作,添加主机,添加到主机群组,链接模板。后点加添加
我们切换到主机,查看动作是否成功!
我们发现server3已经成功添加到我们的主机列表中了!
6、自动发现和自动注册的区别
zabbix的server端是根据agent的主机名为标识来添加主机的。 这句话的意思是说,如果agent和server在网络上打通,server是通过agent的主机名来区分不同主机的。这个agent的主机名是在zabbix_agent.conf配置文件中来设定的。所以有时你会发现两台agent ip一样,但是主机名不一样,也是没有问题的。
自动发现:是zabbix-server主动去添加主机。在web上创建自动发现的规则后,zabbix-server会在一个ip地址范围内去扫描agent主机,并将agent主机添加到web端。Zabbix-server的操作,会增加server的压力。
自动注册:zabbix-agent主动发送注册信息到server端,然后agent主机会被添加到web端。这是agent端的操作,会降低server端的负载。但前提是agent端一定要安装了zabbix-agent程序
三、使用API管理主机
在访问Zabbix的任何数据之前,需要登录并且获取身份令牌,我们使用标准Zabbix Admin用户身份登录,那么我们的JSON请求如下所示:
1、登录并且获取身份令牌
[root@server1 ~]# vim zabbix-api
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}' http://172.25.75.1/zabbix/api_jsonrpc.php | python -m json.tool #ip为zabbix的server端的ip
[root@server1 ~]# chmod +x zabbix-api
[root@server1 ~]# ./zabbix-api
{
"id": 1,
"jsonrpc": "2.0",
"result": "9cc8178a9cf275fb17028813078d6dda" #这就是身份令牌
}
2、编辑api文件,实现列出主机列表
[root@server1 ~]# vim zabbix-api
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": "9cc8178a9cf275fb17028813078d6dda" #这里的身份令牌是我们生成的
}' http://172.25.75.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# ./zabbix-api #查看主机列表
3、使用api完成删除主机
在实验前,停用我们之前的自动注册和自动发现动作。
[root@server1 ~]# vim zabbix-api
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10265" #这里删除10265也就是我们查看时的server3
],
"id": 2,
"auth": "9cc8178a9cf275fb17028813078d6dda"
}' http://172.25.75.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# ./zabbix-api
我们查看我们的web界面。
server3的确被删掉了!!!
4、使用api实现添加主机
[root@server1 ~]# vim zabbix-api
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "server3",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "172.25.75.3",
"dns": "",
"port": "10050" #zabbix-agent服务的端口
}
],
"groups": [
{
"groupid": "2" #groupid号
}
],
"templates": [
{
"templateid": "10001" #模板号
}
]
},
"id": 2,
"auth": "9cc8178a9cf275fb17028813078d6dda"
}' http://172.25.75.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# ./zabbix-api
成功使用api添加主机!!!