一、zabbix的基础知识
1、什么是zabbix
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案,zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix是由两部分构成,zabbix server与可选组件zabbix agent;zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集的功能
2、zabbix的主要特点
- 安装与配置简单,学习成本低
- 支持多语言,免费开源
- 自动发现服务器与网络设备
- 分布式监视以及WEB集中管理功能,可以无agent监视
- 用户安全认证和柔软的授权方式
- 通过WEB界面设置或查看监视结果
- E-mail等通知功能
3、zabbix的主要功能
- 数据收集
- 可用性和性能检查
- 支持SNMP(包括主动轮询和被动获取),IPMI,JMX,VMware
- 通过server/proxy+agents来执行
- 高度可配置化的警告
- 可根据递增机制,接收方和媒介类型自定义发送告警通知
- 使用宏变量可以使告警通知更加高效有用
- 自动相应动作可包含远程命令
- WEB监控功能
- Zabbix可以追踪模拟鼠标在Web网站上的点击操作,来检查Web的功能和响应时间
- 丰富的可视化选项
- 支持创建自定义的图表,一个试图集中展现多个监控项
- 网络拓扑图
- 以仪表盘的样式自定义大屏展现和幻灯片轮询播放
- 监控内容的高级(业务)视图
- 内存使用、磁盘使用、网络状况、端口监视、日志监视
二、zabbix安装配置
实验环境: redhat7.3 172.25.66.11 zabbix-server
redhat6.5 172.25.66.3 zabbix-agent
firewalld和selinux需关闭
1、安装zabbix监控所需软件
- 安装zabbix及所需依赖包
[root@rhel7 ~]# yum install -y 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-3.4.6-1.el7.x86_64.rpm zabbix-server-mysql-3.4.6-1.el7.x86_64.rpm zabbix-web-3.4.6-1.el7.noarch.rpm zabbix-web-mysql-3.4.6-1.el7.noarch.rpm
- 安装并打开数据库
[root@rhel7 ~]# yum install -y mariadb-server
[root@rhel7 ~]# systemctl start mariadb
- 创建utf8编码并对用户授权
[root@rhel7 ~]# mysql
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)
MariaDB [(none)]> Bye
2、导入zabbix数据库
[root@rhel7 ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.6/
[root@rhel7 zabbix-server-mysql-3.4.6]# ls
AUTHORS ChangeLog COPYING create.sql.gz NEWS README
[root@rhel7 zabbix-server-mysql-3.4.6]# zcat create.sql.gz | mysql zabbix #这里不要ctrl+c,以防数据不完整
登录数据库,查看导入的数据库
show databases; #可以看到有5个数据库
show tables; #可以看到有140个表
3、编辑zabbix的配置文件
[root@rhel7 zabbix-server-mysql-3.4.6]# cd /etc/zabbix/
[root@rhel7 zabbix]# ls
web zabbix_agentd.conf zabbix_agentd.d zabbix_server.conf
[root@rhel7 zabbix]# vim zabbix_server.conf
117 DBUser=zabbix
125 DBPassword=westos
132 DBSocket=/var/lib/mysql/mysql.sock
[root@rhel7 zabbix]# systemctl start zabbix-server
[root@rhel7 zabbix]# cd /etc/httpd/conf.d/
[root@rhel7 conf.d]# vim zabbix.conf
19 php_value date.timezone Asia/Shanghai
[root@rhel7 conf.d]# systemctl start httpd
4、在浏览器中输入172.25.66.11/zabbix进行web界面的配置
(1)进入zabbix界面
(2)将zabbix与数据库连接,密码是设置的mariadb数据库密码
(3)登录zabbix监控平台,密码是导入zabbix数据库时导入的密码
(4)成功登录zabbix监控平台
(5)登录zabbix(用户名 Admin;密码:zabbix。这个是zabbix配置文件中写的)
(6)进入zabbix平台后,可以修改监控语言(右上角的人头标志就可以修改)
(7)开启zabbix-server服务,在浏览器中测试
三、利用zabbix监控平台监控server3(rhel6.5)主机
1、在server3上安装zabbix-agent
[root@server3 ~]# rpm -ivh zabbix-agent-3.4.6-1.el6.x86_64.rpm
warning: zabbix-agent-3.4.6-1.el6.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing... ########################################### [100%]
1:zabbix-agent ########################################### [100%]
[root@server3 ~]# vim /etc/zabbix/zabbix_agentd.conf
97 Server=172.25.66.11
138 ServerActive=172.25.66.11
149 Hostname=server3
[root@server3 ~]# /etc/init.d/zabbix-agent start
Starting Zabbix agent: [ OK ]
2、手动添加被监控的主机server3
添加主机
添加模版
添加成功后的结果
3、自动发现
删除之前手动添加的server3,启用自动发现规则
设置自动发现的动作和规则开启,然后重新开启agent和server,就会自动发现主机
4、自动注册
先删除自动发现的server3,然后关闭自动发现的规则和动作。
选自动注册,创建一个动作
添加一个操作
设置自动注册开启 ,在server3上重新开启zabbix-agent
设置成功,结果如下
5、利用API接口在zabbix监控系统中查看,创建以及删除监控主机
(1)API的基础知识
- API的概念
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码 ,或理解内部工作机制的细节。简单的说,API就是对外的接口,利用API可以直接到达软件硬件内部来进行操作 - zabbix中API的作用
zabbix API为批量操作、第三方软件集成以及其他作用提供可编程接口
(2)查看zabbix监控系统的api接口
[root@rhel7 ~]# vim zabbix-api.sh
curl -s -X POST -H 'Content-Type: application/json' -d ' #利用curl命令模拟json格式的post请求
{
"jsonrpc": "2.0", # 这是标准的JSON RPC参数以标示协议版本。所有的请求都会保持不变
"method": "user.login", # 利用用户登陆的方式获取API
"params": {
"user": "Admin",
"password": "zabbix" # zabbix监控系统的用户名和密码
},
"id": 1, # 这个字段用于绑定JSON请求和响应。响应会跟请求有相同的"id"。在一次性发送多个请求时很有用,这些也不需要唯一或者连续
"auth": null
}
' http://172.25.66.11/zabbix/api_jsonrpc.php | python -m json.tool # 采用POST方法向http://example.com/zabbix/api_jsonrpc.php发送此JSON对象. http://example.com/zabbix/是Zabbix前端地址。
[root@rhel7 ~]# chmod +x zabbix-api.sh #给脚本加执行权限
[root@rhel7 ~]# ./zabbix-api.sh #运行脚本
(3)查看zabbix主机和被监控主机信息
[root@rhel7 ~]# vim zabbix-api.sh
curl -s -X POST -H 'Content-Type: application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["host"]
},
"id": 1,
"auth": "9b1d3c281f1272d122fb84b871428b0a"
}
' http://172.25.66.11/zabbix/api_jsonrpc.php | python -m json.tool
(4)删除zabbix监控中的主机
[root@rhel7 ~]# vim zabbix-api.sh
curl -s -X POST -H 'Content-Type: application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.delete", #调用host.delete方法
"params": [
"10258" #输入被监控主机的host号
],
"id": 1,
"auth": "9b1d3c281f1272d122fb84b871428b0a"
}
' http://172.25.66.11/zabbix/api_jsonrpc.php | python -m json.tool
(5)在zabbix监控中创建被监控主机
curl -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create", #调用host.create方法
"params": {
"host": "server3", #要被监控的主机名,用vim /etc/sysconfig/network可以查看到
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "172.25.66.3", #要添加监控主机的ip
"dns": "",
"port": "10050" #zabbix-agent的端口号
}
],
"groups": [
{
"groupid": "0" #建立主机加入的群组。可以在zabbix的web界面中打开一个主机的模版, 可以在上面的地址栏中得到
}
],
"templates": [
{
"templateid": "10001"
}
],
},
"auth": "9b1d3c281f1272d122fb84b871428b0a",
"id": 1
}' http://172.25.66.11/zabbix/api_jsonrpc.php | python -m json.tool
这时在zabbix的web界面也可以查看到,server3主机已经出现