vlambda博客
学习文章列表

监控日志 - 2.Zabbix 监控(上)

百度百科介绍:

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等平台上。



  • 安装服务端

1)安装数据库

[root@node1 ~]# yum install -y mysql-community-server...略[root@node1 ~]# systemctl start mysqld[root@node1 ~]# grep password /var/log/mysqld.log 2020-07-30T03:45:32.132025Z 1 [Note] A temporary password is generated for root@localhost: jq;M<KxkP7b=[root@node1 ~]# mysql_secure_installation...略[root@node1 ~]# mysql -u root -pEnter password:...略mysql> create database zabbix character set utf8 collate utf8_bin;Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'Zabbix111!';Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> exitBye


2)安装zabbix服务端

[root@node1 ~]# yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent...略# 初始化数据库[root@node1 ~]# zcat /usr/share/doc/zabbix-server-mysql-4.4.10/create.sql.gz | mysql -u zabbix -p zabbixEnter password:[root@node1 ~]# vim /etc/httpd/conf.d/zabbix.conf +20[root@node1 ~]# grep timezone /etc/httpd/conf.d/zabbix.conf php_value date.timezone Asia/Shanghai[root@node1 ~]# vim /etc/zabbix/zabbix_server.conf[root@node1 ~]# cat /etc/zabbix/zabbix_server.conf...略DBHost=localhost...略DBPassword=Zabbix111!...略[root@node1 ~]# systemctl start httpd zabbix-server zabbix-agent[root@node1 ~]# systemctl enable httpd zabbix-server zabbix-agent


3)Web 页面安装

访问http://10.0.0.11/zabbix/



下一步,检查前提条件

监控日志 - 2.Zabbix 监控(上)



下一步,配置数据库连接

监控日志 - 2.Zabbix 监控(上)


下一步,下一步,完成

监控日志 - 2.Zabbix 监控(上)



登陆,默认用户名/密码:Admin/zabbix

监控日志 - 2.Zabbix 监控(上)


  • 手动添加一个客户端

Zabbix agent分为主动和被动模式,默认是被动模式,应答server的数据请求;

如果将配置文件里的StartAgents参数设置成0,就是主动模式,主动模式的agent首先从sever索取监控项列表以进行独立处理,然后会定期发送采集到的新值给server。


1)客户端安装agent

[root@node2 ~]# yum install -y zabbix-agent...略[root@node2 ~]# vim /etc/zabbix/zabbix_agentd.conf[root@node2 ~]# cat /etc/zabbix/zabbix_agentd.conf...略StartAgents=0...略Server=10.0.0.11...略ServerActive=10.0.0.11...略Hostname=node2...略[root@node2 ~]# systemctl start zabbix-agent[root@node2 ~]# systemctl enable zabbix-agent


2)Web 页面添加客户端node2

创建一个Host group

监控日志 - 2.Zabbix 监控(上)



创建一个Host

监控日志 - 2.Zabbix 监控(上)



链接Template OS Linux by Zabbix agent active模板

监控日志 - 2.Zabbix 监控(上)



查看主机

监控日志 - 2.Zabbix 监控(上)



查看node2的有效内存图表

监控日志 - 2.Zabbix 监控(上)



  • 自动化添加客户端

1)agent自动注册

以node3为例

[root@node3 ~]# yum install -y zabbix-agent...略[root@node3 ~]# vim /etc/zabbix/zabbix_agentd.conf[root@node3 ~]# cat /etc/zabbix/zabbix_agentd.conf...略Server=10.0.0.11...略ServerActive=10.0.0.11...略Hostname=node3...略HostMetadataItem=system.uname...略[root@node3 ~]# systemctl start zabbix-agent[root@node3 ~]# systemctl enable zabbix-agent


Web 页面设置

创建一个Action,注意Event source要选择Auto registration

监控日志 - 2.Zabbix 监控(上)


监控日志 - 2.Zabbix 监控(上)


添加Operations:Add host、Add to host groups、Link to templates

监控日志 - 2.Zabbix 监控(上)



等一会就可以看到node3已经注册了

监控日志 - 2.Zabbix 监控(上)



查看node3的cpu图表

监控日志 - 2.Zabbix 监控(上)



2)网络发现

首先关闭自动注册

监控日志 - 2.Zabbix 监控(上)


下面通过网络发现添加一台处于主动模式的客户端node4

[root@node4 ~]# yum install -y zabbix-agent...略[root@node4 ~]# vim /etc/zabbix/zabbix_agentd.conf[root@node4 ~]# cat /etc/zabbix/zabbix_agentd.conf...略Server=10.0.0.11...略ServerActive=10.0.0.11...略Hostname=node4...略HostMetadataItem=system.uname...略[root@node4 ~]# systemctl start zabbix-agent[root@node4 ~]# systemctl enable zabbix-agent


Web 页面设置

配置发现规则

监控日志 - 2.Zabbix 监控(上)



创建一个Action,注意Event source要选择Discovery

监控日志 - 2.Zabbix 监控(上)


添加条件

监控日志 - 2.Zabbix 监控(上)



添加Operations:Add host、Add to host groups、Link to templates

监控日志 - 2.Zabbix 监控(上)



等一会查看node4是否注册

监控日志 - 2.Zabbix 监控(上)



查看node4的图表

监控日志 - 2.Zabbix 监控(上)



  • 用Zabbix API 添加主机

Zabbix 的所有操作都可以通过请求API完成,这里只介绍添加主机;

关于API的用法,可以参考官网:
https://www.zabbix.com/documentation/4.4/manual/api


以添加node4为例,

先要关闭网络发现及动作

监控日志 - 2.Zabbix 监控(上)


监控日志 - 2.Zabbix 监控(上)



删除已经注册的node4

监控日志 - 2.Zabbix 监控(上)


查看API版本

[root@node4 ~]# curl -s -X POST -H 'Content-Type:application/json' -d '{"jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth":null,"params":{}}' http://10.0.0.11/zabbix/api_jsonrpc.php | python -m json.tool{ "id": 1, "jsonrpc": "2.0", "result": "4.4.10"}


获取认证的session id,后面的请求都要带上这个id

[root@node4 ~]# vim auth.json [root@node4 ~]# cat auth.json { "jsonrpc": "2.0", "method": "user.login", "params": { "user": "Admin", "password": "zabbix" }, "id": 1, "auth": null}[root@node4 ~]# curl -s -X POST -H 'Content-Type:application/json' -d @auth.json http://10.0.0.11/zabbix/api_jsonrpc.php | python -m json.tool{ "id": 1, "jsonrpc": "2.0", "result": "7ae3bcee13a43ffb01cd22e1bfc3e91d"}


获取当前主机信息

[root@node4 ~]# vim get_hostid.json [root@node4 ~]# cat get_hostid.json { "jsonrpc": "2.0", "method": "host.get", "params": { "output": [ "hostid", "host" ], "selectInterfaces": [ "interfaceid", "ip" ] }, "id": 2, "auth": "7ae3bcee13a43ffb01cd22e1bfc3e91d"}[root@node4 ~]# curl -s -X POST -H 'Content-Type:application/json' -d @get_hostid.json http://10.0.0.11/zabbix/api_jsonrpc.php | python -m json.tool{ "id": 2, "jsonrpc": "2.0", "result": [ { "host": "Zabbix server", "hostid": "10084", "interfaces": [ { "interfaceid": "1", "ip": "127.0.0.1" } ] }, { "host": "node2", "hostid": "10318", "interfaces": [ { "interfaceid": "2", "ip": "10.0.0.12" } ] }, { "host": "node3", "hostid": "10319", "interfaces": [ { "interfaceid": "3", "ip": "10.0.0.13" } ] } ]}


获取Host groups demo的ID

[root@node4 ~]# vim get_groupid.json[root@node4 ~]# cat get_groupid.json{ "jsonrpc": "2.0", "method": "hostgroup.get", "params": { "output": "extend", "filter": { "name": [ "demo" ] } }, "auth": "7ae3bcee13a43ffb01cd22e1bfc3e91d", "id": 3}[root@node4 ~]# curl -s -X POST -H 'Content-Type:application/json' -d @get_groupid.json http://10.0.0.11/zabbix/api_jsonrpc.php | python -m json.tool{ "id": 3, "jsonrpc": "2.0", "result": [ { "flags": "0", "groupid": "15", "internal": "0", "name": "demo" } ]}


获取Template OS Linux by Zabbix agent模板的ID

[root@node4 ~]# vim get_templateid.json[root@node4 ~]# cat get_templateid.json{ "jsonrpc": "2.0", "method": "template.get", "params": { "output": "extend", "filter": { "host": [ "Template OS Linux by Zabbix agent" ] } }, "auth": "7ae3bcee13a43ffb01cd22e1bfc3e91d", "id": 4}[root@node4 ~]# curl -s -X POST -H 'Content-Type:application/json' -d @get_templateid.json http://10.0.0.11/zabbix/api_jsonrpc.php | python -m json.tool | grep templateid "templateid": "10001",


添加node4

[root@node4 ~]# vim create_host.json[root@node4 ~]# cat create_host.json{ "jsonrpc": "2.0", "method": "host.create", "params": { "host": "node4", "interfaces": [ { "type": 1, "main": 1, "useip": 1, "ip": "10.0.0.14", "dns": "", "port": "10050" } ], "groups": [ { "groupid": "15" } ], "templates": [ { "templateid": "10001" } ] }, "auth": "7ae3bcee13a43ffb01cd22e1bfc3e91d", "id": 5}[root@node4 ~]# curl -s -X POST -H 'Content-Type:application/json' -d @create_host.json http://10.0.0.11/zabbix/api_jsonrpc.php | python -m json.tool{ "id": 5, "jsonrpc": "2.0", "result": { "hostids": [ "10321" ] }}


查看是否已创建


查看其内存图表



开源Ops 发起了一个读者讨论 各位有建议或者疑问都可在此讨论