Zabbix简介:
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由zabbix server与可选组件zabbix agent两部门组成。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视。
zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。
Zabbix的系统组成:
Zabbix Server:负责接收Agent发送的报告信息,组织所有配置、数据和操作。 Database
Storage:存储配置信息以及收集到的数据。 Web Interface:Zabbix的GUI接口,通常与Server运行在同一台机器上。
Proxy:可选组件,常用于分布式监控环境中。
Agent:部署在被监控主机上,负责收集数据发送给Server。
Zabbix主要功能:
CPU负荷,内存使用,磁盘使用,网络状况,端口监视,日志监视
实验环境:
server5(192.168.34.6)作为Zabbix Server
server3(192.168.34.4)作为zabbix agent
zabbix的安装
server5:
1.安装zabbix监控所需软件
[root@server5 ~]# cd zabbix/
[root@server5 zabbix]# ls
4.0 percona-zabbix-templates-1.1.8-1.noarch.rpm
apache-tomcat-8.5.24.tar.gz simkai.ttf
jdk-8u121-linux-x64.rpm zbx_percona_mysql_template.xml
oneitsm_zabbix_release-1.2.0.tar.gz
[root@server5 zabbix]# cd 4.0/
[root@server5 4.0]# ls
fping-3.10-1.el7.x86_64.rpm zabbix-java-gateway-4.0.5-1.el7.x86_64.rpm
iksemel-1.4-2.el7.centos.x86_64.rpm zabbix-proxy-mysql-4.0.5-1.el7.x86_64.rpm
php-bcmath-5.4.16-42.el7.x86_64.rpm zabbix-sender-4.0.5-1.el7.x86_64.rpm
php-mbstring-5.4.16-42.el7.x86_64.rpm zabbix-server-mysql-4.0.5-1.el7.x86_64.rpm
zabbix-agent-4.0.5-1.el7.x86_64.rpm zabbix-web-4.0.5-1.el7.noarch.rpm
zabbix-get-4.0.5-1.el7.x86_64.rpm zabbix-web-mysql-4.0.5-1.el7.noarch.rpm
[root@server5 4.0]# yum install -y 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 zabbix-agent-4.0.5-1.el7.x86_64.rpm php-mbstring-5.4.16-42.el7.x86_64.rpm php-bcmath-5.4.16-42.el7.x86_64.rpm fping-3.10-1.el7.x86_64.rpm iksemel-1.4-2.el7.centos.x86_64.rpm -y
2.安装并配置mariadb数据库
mariadb安装过了不再演示,如果之前没有安装过,安装之后进行初始化,直接mysql_secure_installation ,不用像之前的mysql数据库一样在日志中查看默认密码
[root@server5 4.0]# yum install mariadb-server
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.
Package 1:mariadb-server-5.5.52-1.el7.x86_64 already installed and latest version
Nothing to do
[root@server5 4.0]# systemctl start mariadb
进入到数据库中允许使用utf-8编码并对用户授权
[root@server5 4.0]# mysql -uroot -p
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';
Query OK, 0 rows affected (0.00 sec) ##授权
3.导入zabbix数据库
[root@server5 doc]# cd /usr/share/doc/zabbix-server-mysql-4.0.5/
[root@server5 zabbix-server-mysql-4.0.5]# ls
AUTHORS ChangeLog COPYING create.sql.gz NEWS README
[root@server5 zabbix-server-mysql-4.0.5]# zcat create.sql.gz | mysql -uzabbix -p zabbix ##zabbix的默认密码zabbix
Enter password: ##数据库密码
登陆数据库查看导入的数据库show databases; show tables;
4.编辑zabbix的配置文件,修改数据库密码,修改时区
[root@server5 zabbix-server-mysql-4.0.5]# vim /etc/zabbix/zabbix_server.conf
124 DBPassword=westos
[root@server5 zabbix-server-mysql-4.0.5]# vim /etc/httpd/conf.d/zabbix.conf
20 php_value date.timezone Asia/Shanghai
5.启动 zabbix server、zabbix agent、httpd
[root@server5 zabbix-server-mysql-4.0.5]# systemctl start zabbix-server
[root@server5 zabbix-server-mysql-4.0.5]# systemctl start zabbix-agent
[root@server5 zabbix-server-mysql-4.0.5]# systemctl start httpd
浏览器输入172.25.34.6/zabbix/,进行zabbix的web界面配置
输入默认用户Admin默认密码zabbix
进入zabbix的web管理界面
点击人物头像,切换为汉语,也可以重启设置密码,设置完成点击更新
二、 添加agent主机
server3:
在被监控端(server3)安装软件包,安装zabbix-agent
[root@server3 ~]# cd zabbix/
[root@server3 zabbix]# ls
4.0 percona-zabbix-templates-1.1.8-1.noarch.rpm
apache-tomcat-8.5.24.tar.gz simkai.ttf
jdk-8u121-linux-x64.rpm zbx_percona_mysql_template.xml
oneitsm_zabbix_release-1.2.0.tar.gz
[root@server3 zabbix]# cd 4.0/
[root@server3 4.0]# ls
fping-3.10-1.el7.x86_64.rpm zabbix-java-gateway-4.0.5-1.el7.x86_64.rpm
iksemel-1.4-2.el7.centos.x86_64.rpm zabbix-proxy-mysql-4.0.5-1.el7.x86_64.rpm
php-bcmath-5.4.16-42.el7.x86_64.rpm zabbix-sender-4.0.5-1.el7.x86_64.rpm
php-mbstring-5.4.16-42.el7.x86_64.rpm zabbix-server-mysql-4.0.5-1.el7.x86_64.rpm
zabbix-agent-4.0.5-1.el7.x86_64.rpm zabbix-web-4.0.5-1.el7.noarch.rpm
zabbix-get-4.0.5-1.el7.x86_64.rpm zabbix-web-mysql-4.0.5-1.el7.noarch.rpm
[root@server3 4.0]# rpm -ivh zabbix-agent-4.0.5-1.el7.x86_64.rpm
更改配置文件
[root@server3 4.0]# vim /etc/zabbix/zabbix_agentd.conf
98 Server=172.25.34.6
139 ServerActive=172.25.34.6
150 Hostname=server3
[root@server3 4.0]# systemctl start zabbix-agent
在服务器端(zabbix web )添加监控:有三种方式
(1) 手动创建主机 (2) (3)
手动添加:
配置—创建主机—主机名称----设置群组—agent代理ip地址–勾选启用—添加(回到配置页面)—点击下方server3—模板—连接指示器中选择—添加(添加到连接的模板)–添加
主机名称写为server3!!
添加完成后ZBX是灰色,刷新一下页面,可以看到ZBX变绿。
自动发现:
删除原来的server3
动作----事件源(自动发现)—创建动作—操作—更新----配置—自动发现(创建发现规则)—设置发现的IP范围—更新
创建完发现规则之后
点击 配置->主机 可以看到新发现的主机
自动注册:
首先,删除刚才自动添加的server3主机
并禁用自动发现
设置触发条件
重启agent服务(server3上)
[root@server3 include]# systemctl restart zabbix-server
刷新页面,自动注册成功
什么是API:
API(Application ProgrammingInterface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。简单的说,API就是对外的接口,利用API可以直接到达软件硬件内部来进行操作….
zabbix中API的作用:
Zabbix API为批量操作、第三方软件集成以及其他作用提供可编程接口。
API的大致工作流如下:
(1)API
采用JSON-RPC实现。这意味着调用任何函数,都需要发送POST请求,输入输出数据都是以JSON格式
(2)准备JSON对象,它描述了你想要做什么(创建主机,获取图像,更新监控项等)。
(3)获取JSON格式响应。
在做实验前,把zabbix监控的自动发现和自动注册的相应配置都关掉(读者如果没有添加过则不用配置)
这里就利用API获得主机信息,添加主机删除主机做以展示
server5
编写脚本:查看zabbix监控系统的api接口:
[root@server5 ~]# vim zabbix-api
url -s -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"
},
"id": 1, # 这个字段用于绑定JSON请求和响应。响应会跟请求有相同的"id"。在一次性发送多个请求时很有用,这些也不需要唯一或者连续
"auth": null
}' http://172.25.34.6/zabbix/api_jsonrpc.php | python -m json.tool
# 采用POST方法向http://example.com/zabbix/api_jsonrpc.php发送此JSON对象. http://example.com/zabbix/是Zabbix前端地址。
# api_jsonrpc.php是调用API的PHP脚本。可在安装可视化前端的目录下找到。
[root@server5 ~]# chmod +x zabbix-api
[root@server5 ~]# ./zabbix-api
{
"id": 1,
"jsonrpc": "2.0",
"result": "bc5e6f0477f2bdbc94130bb212399dab" ##获得# zabbix监控的API(令牌)
}
查看zabbix主机和被监控主机信息
[root@server5 ~]# 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": "bc5e6f0477f2bdbc94130bb212399dab"
}' http://172.25.34.6/zabbix/api_jsonrpc.php | python -m json.tool
[root@server5 ~]# ./zabbix-api
{
"id": 2,
"jsonrpc": "2.0",
"result": [
{
"host": "Zabbix server",
"hostid": "10084",
"interfaces": [
{
"interfaceid": "1",
"ip": "127.0.0.1"
}
]
},
{
"host": "server3",
"hostid": "10264",
"interfaces": [
{
"interfaceid": "3",
"ip": "172.25.34.4"
}
]
},
{
"host": "server4",
"hostid": "10265",
"interfaces": [
{
"interfaceid": "4",
"ip": "172.25.34.5"
}
]
}
]
}
执行脚本获取被监控的主机信息
删除zabbix监控中的主机
[root@server5 ~]# vim zabbix-api
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.delete", # 调用host.delete方法
"params": [
"10264" # 上一步返回的被监控主机hostid号
],
"id": 2,
"auth": "bc5e6f0477f2bdbc94130bb212399dab"
}' http://172.25.34.6/zabbix/api_jsonrpc.php | python -m json.tool
[root@server5 ~]# ./zabbix-api
{
"id": 2,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10264"
]
}
}
浏览器发现对应主机已经删除了
添加主机:
[root@server5 ~]# vim zabbix-api
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.create", # 调用host.create方法
"params": {
"host": "server5",# 被监控的主机名
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "172.25.34.6",# 被监控主机的ip
"dns": "",
"port": "10050" # zabbix-agent的端口号
}
],
"groups": [
{
"groupid": "2"# 建立的主机加入的群组id
}
],
"templates": [
{
"templates":"10001"# 建立的主机使用的模版id
}
]
},
"id": 2,
"auth": "bc5e6f0477f2bdbc94130bb212399dab"
}' http://172.25.34.6/zabbix/api_jsonrpc.php | python -m json.tool
[root@server5 ~]# ./zabbix-api
{
"id": 2,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10267"
]
}
}
刷新页面就显示server5已经添加成功了