Zabbix 是一个企业级分布式开源监控解决方案。
数据采集
灵活的阀值定义
高度可配化的报警
实时图形
Web监控功能
丰富的可视化选项
历史数据存储
配置简单
使用模板
网络发现
快捷的web界面
Zabbix api
权限管理系统
功能强大且易于扩展的Zabbix Agent
二进制守护进程
适应更复杂的环境
Zabbix server 是 Zabbix软件的核心组件,agent 向其报告可用性、系统完整性信息和统计信息。server也是存储所有配置信息、统计信息和操作信息的核心存储库。
所有配置信息以及 Zabbix 采集到的数据都被存储在数据库中。
为了从任何地方和任何平台轻松访问 Zabbix ,我们提供了基于 web 的界面。该界面是 Zabbix server 的一部分,通常(但不一定)和 Zabbix server 运行在同一台物理机器上。
Zabbix proxy 可以代替 Zabbix server采集性能和可用性数据。Zabbix proxy在Zabbix的部署是可选部分;但是proxy的部署可以很好的分担单个Zabbix server的负载。
Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix server。
另外,回过头来整体的了解下 Zabbix 内部的数据流对Zabbix的使用也很重要。首先,为了创建一个采集数据的监控项,您就必须先创建主机。其次,在任务的另外一端,必须要有监控项才能创建触发器(trigger),必须要有触发器来创建动作(action)。因此,如果您想要收到类似“X个server上CPU负载过高”这样的告警,您必须首先为 Server X 创建一个主机条目,其次创建一个用于监控其 CPU的监控项,最后创建一个触发器,用来触发 CPU负载过高这个动作,并将其发送到您的邮箱里。虽然这些步骤看起来很繁琐,但是使用模板的话,实际操作非常简单。也正是由于这种设计,使得 Zabbix 的配置变得更加灵活易用。
环境:
首先安装zabbix的server端和php软件,这里通过lftp方式传到zabbix1
yum install 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
zabbix还需要http和数据库服务
yum install httpd mariadb-server -y
对mysql数据库进行一个安全初始化并进行授权,导入zabbix的数据
systemctl start mariadb
mysql_secure_installation ##设置密码为westos
mysql -pwestos
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
MariaDB [(none)]> quit
zcat /usr/share/doc/zabbix-server-mysql-4.0.5/create.sql.gz |mysql -uzabbix -p zabbix
然后修改zabbix-server的设置文件
vim /etc/zabbix/zabbix_server.conf ##修改以下内容
124 DBPassword=zabbix
修改http的php设置
vim /etc/httpd/conf.d/zabbix.conf ##去掉注释
20 php_value date.timezone Europe/Riga
开启服务
systemctl start httpd
systemctl start zabbix-agent
systemctl start zabbix-server
然后打开firefox浏览器进行设置,输入zabbix1的ip加zabbix,我这里是172.25.1.1/zabbix
点击下一步
点加下一步,密码要输入之前授权的那个密码,也就是zabbix
下一步,Name可以写自己想要的
下一步
设置完毕,点击finish
试着登陆一下,帐号Admin,密码zabbix
至此,zabbix-server端就设置完毕了
zabbix2需要安装agent服务
yum install zabbix-agent-4.0.5-1.el7.x86_64.rpm -y
接下来修改设置
vim /etc/zabbix/zabbix_agentd.conf ##修改如下
98 Server=172.25.1.1
139 ServerActive=172.25.1.1
150 Hostname=zabbix2
启动zabbix-agent服务
systemctl start zabbix-agent
此时,发现我的zabbix-server不能启动,查看日志发现是数据库密码错误,修改后成功启动
在zabbix-server端的web端进行添加
1.点加添加主机
2.接下来进行设置主机和模板,如下图所示
主机设置
3.模板设置,注必须要先点击链接指示器下方的添加,将该模板添加到“链接的模板”,然后点加蓝色的添加
然后等待一会,ZBX变成绿色即成功
首先删除刚才手动添加的主机,这里最好是先开启动作,然后开启自动发现,这样可以在自动发现开启的时候,就执行了动作
1.点击配置里面的动作,此处不需要修改任何设置,这里只是点开查看设置
然后让这个动作运行起来,点击红色的停用的,就可以运行起来
如下图
2.然后点击配置里面的自动发现,修改下列设置,将发现的范围修改为自己的ip范围,也可以u修改自动发现的间隔时间
点击“停用的”开启自动发现
3.上述步骤添加完毕之后,等待就可以自动添加了,如果等待很长时间还没有自动添加上,可以查看日志是否有报错,如果没有报错,建议重启zabbix服务尝试,如下图,发现成功
首先停用之前的自动发现并删除主机zabbix2,然后点击配置里面的动作,时间源要选自动注册
1.点击创建动作,然后创建动作,动作修改为下图
操作修改为下图
2.重启zabbix服务,等待一会,会发现已经自动注册了
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
在linux中,用户编程接口API遵循了UNIX中最流行的应用编程界面标准---POSIX标准。POSIX标准是由IEEE和ISO/IEC共同开发的标准系统。该标准基于当时现有的UNIX实践和经验,描述了操作系统的系统调用编程接口API,用于保证应用程序可以在源程序一级上在多种操作系统上移植运行。这些系统调用编程接口主要是通过C库(LIBC)来实现的。
API 接口属于一种操作系统或程序接口,GUI接口属于一种图形操作系统。两者都属于直接用户接口。有时公司会将 API 作为其公共开放系统。也就是说,公司制定自己的系统接口标准,当需要执行系统整合、自定义和程序应用等操作时,公司所有成员都可以通过该接口标准调用源代码,该接口标准被称之为开放式API。
在zabbix1新建文件zabbix_api
只有获取了令牌,才可以使用json进行数据交换。
什么是json呢?
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
获取令牌的指令如下
curl -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.1.1/zabbix/api_jsonrpc.php | python -m json.tool
接下里就可以使用令牌 06d1e48492bed8b58198ddf4e31e1938
curl -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": "06d1e48492bed8b58198ddf4e31e1938"
}' http://172.25.1.1/zabbix/api_jsonrpc.php | python -m json.tool
执行后的果为下图,查到了群组中主机的信息
curl -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10265"
],
"id": 2,
"auth": "06d1e48492bed8b58198ddf4e31e1938"
}' http://172.25.1.1/zabbix/api_jsonrpc.php | python -m json.tool
反馈如下
在web端查看
还有很多的api接口,大家可以访问官网自行查看
https://www.zabbix.com/documentation/4.0/manual/api
ok~