1.什么是zabbix?
- zabbix([`zæbiks])是一个基于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等平台上。
2.如何安装使用: - 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)等配合使用
3.搭建Zabbix监控环境
要想搭建一个Zabbix的工作环境,需要从服务器入手。与服务器通信,管理员需要使用一个Zabbix前端界面,与Zabbix服务器和数据库进行通信。三个关键(界面、服务器和数据库)可以安装在同一台服务器上,但是如果你拥有一个更大更复杂的环境,将它们安装在不同的主机上也是一个选项。Zabbix服务器能够直接监控到同一网络中的设备,如果其他网络的设备也需要被监控,那还需要一台Zabbix代理服务器。
4.zabbix的主要特点: - 安装与配置简单,学习成本低
- 支持多语言(包括中文)
- 免费开源
- 自动发现服务器与网络设备
- 分布式监视以及WEB集中管理功能
- 可以无agent监视
- 用户安全认证和柔软的授权方式
- 通过WEB界面设置或查看监视结果
- email等通知功能
等等
Zabbix主要功能: - CPU负荷
- 内存使用
-磁盘使用 - 网络状况
- 端口监视
- 日志监视
zabbix的官方文档:
https://www.zabbix.com
####zabbix部署####
1.)添加 Zabbix 软件仓库
安装软件仓库配置包,这个包包含了 yum(软件包管理器)的配置文件
前端安装的先决条件
Zabbix 前端需要额外的基础安装包。 您需要在运行 Zabbix 前端的系统中启用可选 rpms 的软件仓库:
[root@server1 ~]# cd 4.0/ ##这个包的软件为解决依赖性
[root@server1 4.0]# 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
repodata
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 ~]# cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=zabbix
baseurl=file:///root/4.0
gpgcheck=0
[root@server1 ~]# cat /etc/yum.repos.d/yum.repo
[rhel7.3]
name=rhel7.3
baseurl=http://172.25.46.250/westos
gpgcheck=0
[root@server1 ~]# yum repolist
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
repo id repo name status
rhel7.3 rhel7.3 4,751
zabbix zabbix 12
repolist: 4,763
2.)安装 Server/mariadb/前端
[root@server1 ~]# yum install -y zabbix-server-mysql zabbix-web-mysql #安装 Zabbix 前端 Server
[root@server1 ~]# yum install -y mariadb-server #安装数据库
[root@server1 ~]# systemctl start mariadb #打开数据库
[root@server1 ~]# systemctl enable mariadb ##设置开机自启
[root@server1 ~]# mysql_secure_installation ##初始化数据库,设置密码
3.)创建数据库
[root@server1 ~]# mysql -uroot -pwestos
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'westos'; # 授予zabbix上的所有特权发送到“”标识的zabbix@localhost
Query OK, 0 rows affected (0.00 sec)
create database zabbix character set utf8 collate utf8_bin; #创建数据库zabbix字符集可以包含中文
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> quit
Bye
4.)导入数据
[root@server1 doc]# cd /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 /usr/share/doc/zabbix-server-mysql-4.0.5/create.sql.gz | mysql -p zabbix
[root@server1 zabbix-server-mysql-4.0.5]# mysql -p ##查看导入数据
Enter password:
MariaDB [(none)]> use zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [zabbix]> show tables;
+----------------------------+
| Tables_in_zabbix |
+----------------------------+
| acknowledges |
| actions |
| alerts |
| application_discovery |
5.)为 Zabbix server 配置数据库编辑 zabbix_server.conf 文件以使用已创建的数据库
[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 #在 DBPassword 参数中输入由 Mysql 创建的 Zabbix 数据库密码
100 DBName=zabbix
116 DBUser=zabbix
124 DBPassword=westos
6.)启动 Zabbix server 进程
[root@server1 zabbix]# systemctl start zabbix-server
[root@server1 zabbix]# systemctl enable zabbix-server ##设置开机自启
[root@server1 zabbix]# ps aux ##查看zabbix运行
7.)开启httpd
[root@server1 zabbix]# systemctl start httpd
[root@server1 zabbix]# systemctl enable httpd
[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 restart httpd
8.)以此 前端安装步骤 来完成 Zabbix 前端的安装,并访问新安装的 Zabbix 前端页面
查看端口:
[root@server1 conf.d]# netstat -antlp
##配置主机和主机组###
1.配置一台主机(手动配置)
[root@server1 conf.d]# yum install -y zabbix-agent
[root@server1 conf.d]# systemctl start zabbix-agent
[root@server1 conf.d]# systemctl enable zabbix-agent
[root@server1 conf.d]# netstat -antlp
server2:
[root@server2 ~]# yum install -y zabbix-agent
[root@server2 ~]# cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=zabbix
baseurl=file:///root/4.0
gpgcheck=0
[root@server2 ~]# hostnamectl
Static hostname: server2
Icon name: computer-vm
Chassis: vm
[root@server2 ~]# cd /etc/zabbix/
[root@server2 zabbix]# vim zabbix_agentd.conf
98 Server=172.25.46.1
138 ServerActive=172.25.46.1
149 Hostname=server2
[root@server2 zabbix]# systemctl start zabbix-agent
[root@server2 zabbix]# systemctl enable zabbix-agent
进入:配置 → 主机
在右侧点击 创建主机 (或者在主机名上编辑一台已有的主机)
在表单中输入主机的相关参数
###自动发现###
删除之前手动添加的server2
进入:动作 → 事件源 :自动发现
在右侧点击 创建动作 -->Auto discoverty.Linux Server
在表单中输入主机的相关参数
自动发现->创建规则->local network
可以在监测中看到自动发现的添加主机,并且配置中主机也自动添加监测到的主机:
####自动注册####
删除之前自动添加的server2,并且禁用自动发现规则
动作->自动注册->创建动作
server2重启agent服务:
[root@server2 zabbix]# systemctl restart zabbix-agent
自动注册成功:
####API####
1.什么是API
-
API(Application Programming Interface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定 。目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问原码,或理解内部工作机制的细节。
-
操作系统是用户与计算机硬件系统之间的接口,用户通过操作系统的帮助,可以快速、有效和安全、可靠地操纵计算机系统中的各类资源,以处理自己的程序。为使用户能方便地使用操作系统,OS 又向用户提供了如下两类接口:
-
Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。它广泛用于:
创建新的应用程序以使用Zabbix;
将Zabbix与第三方软件集成;
自动执行常规任务。 -
Zabbix API是基于Web的API,作为Web前端的一部分提供。它使用JSON-RPC 2.0协议,这意味着两件事:
该API包含一组独立的方法;
客户端和API之间的请求和响应使用JSON格式进行编码。
Action 动作
这个类用于操作Action(动作)
可用方法:
action.create - 创建动作
action.delete - 删除动作
action.get - 检索动作
action.update - 更新动作
1.远程登陆,编写脚本查看 zabbix监控系统api接口:
[root@server1 ~]# vim zabbix.api
[root@server1 ~]# cat zabbix.api
curl -XPOST -H 'Content-Type:application/json-rpc' -d ' ##用curl命令模拟json格式的post请求
{
"jsonrpc": "2.0", ##这是标准的JSON RPC参数以标示协议版本,所有的请求都保持不变
"method": "user.login", ##用用户登陆的方式获得API
"params": {
"user":"Admin", #zabbix监控系统的用户和秘密
"password":"zabbix"
},
"auth": null, ##用户认证令牌; 因为我们还没有一个,它的设置null
"id": 1 ###请求的任意标识符,绑定JSON的请求和响应,响应会跟请求有相同的'id',
}' http://172.25.46.1/zabbix/api_jsonrpc.php| python -m json.tool #采用POST方法向http://172.25.46.1/zabbix/api_jsonrpc.php发送JSON http://172.25.46.1/zabbix是zabbix的前端地址,
[root@server1 ~]# chmod +x zabbix.api ##给脚本执行权
[root@server1 ~]# ./zabbix.api ##运行脚本,返回验证的值
/{"jsonrpc":"2.0",##JSON-RPC协议的版本
"result":"4bf4b961d48e053f6b5fae75034c2d85",##返回的数据;
"id":1}##相应请求的标识符
注:请求的 Content-Type 头部必须设置为以下值之一: application/json-rpc, application/json 或 application/jsonrequest。
2. 检索主机
在上一个脚本中可以获得一个用户认证令牌,那就可以使用该用户访问Zabbix中数据和被检控的数据。可以使用 host.get 方法检索所有已配置主机ID,主机名和接口 。
[root@server1 ~]# vim zabbix.api
curl -s -XPOST -H 'Content-Type:application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "host.get", #通过host.get方法
"params": {
"output": [
"hostid", #获得主机名
"host" #获得主机名
],
"selectInterfaces": [
"interfaceid", ##接口
"ip"
]
},
"id":2,
"auth":"4bf4b961d48e053f6b5fae75034c2d85" ##用户认证码,上一个脚本认证得到的
}' http://172.25.46.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# ./zabbix.api #运行脚本
相应的消息:
{
"id": 2, ##请求标示符
"jsonrpc": "2.0",##版本号
"result": [
{
"host": "Zabbix server", ##主机名
"hostid": "10084", #监控的号
"interfaces": [
{
"interfaceid": "1", ##api接口号
"ip": "127.0.0.1" ##ip.监控的ip
}
]
},
{
"host": "server2", #主机名
"hostid": "10266",
"interfaces": [
{
"interfaceid": "5",##api接口号
"ip": "172.25.46.2" #监控主机的ip
}
]
}
]
}
删除主机:
[root@server1 ~]# cat zabbix.api
curl -s -XPOST -H 'Content-Type:application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "host.delete", #调用host.delete方法
"params": [
"10266" ##上一个脚本返回的被监控的主机hostid
],
"id":2,
"auth":"4bf4b961d48e053f6b5fae75034c2d85"
}' http://172.25.46.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# ./zabbix.api
{
"id": 2,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10266"
]
}
}
图形界面中,server2会被删除
添加主机:
[root@server1 ~]#vim zatbix.api
curl -s -XPOST -H 'Content-Type:application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "host.create", #调用host.create 方法
"params": {
"host": "server2", #监控的主机名
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "172.25.46.2", #被监控的主机ip
"dns": "",
"port": "10050" #zabbix-agent端口
}
],
"groups": [
{
"groupid": "2" #建立的主机加入的群组id
}
],
"templates": [
{
"templateid": "10001" ##建立的主机使用的模版id
}
]
},
"id":2,
"auth":"4bf4b961d48e053f6b5fae75034c2d85"
}' http://172.25.46.1/zabbix/api_jsonrpc.php | python -m json.tool
执行脚本
[root@server1 ~]# ./zabbix.api
{
"id": 2,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10268"
]
}
}
- 补充:
-在zabbix的web界面 获取groupid的方法,在最上层地址栏
-在zabbix的web界面 获取templateid的方法
在主机中查看,有server2表示成功