概述

  • Zabbix 是一个企业级分布式开源监控解决方案。
  • Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix
    使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix
    基于存储的数据提供出色的报表和数据可视化功能。这些功能使得 Zabbix 成为容量规划的理想选择。
  • Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于
    Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix
    可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用。

我们这里选择4.4版本的进行实验

yum install mariadb-server -y          安装zabbix所需要的初始化的数据库

安装下面这些rpm包,比较全面。

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_zabbix

启动

安全初始化mariadb:

mysql_secure_installation

登陆:

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;   创建zabbix的库
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'caoaoyuan';

#导入初始化的一些表和数据。
zcat /usr/share/doc/zabbix-server-mysql-4.4.1/create.sql.gz | mysql -uzabbix -p zabbix

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_mysql_02


zabbix 库的数据就导入进去了。

配置zabbix

vim /etc/zabbix/zabbix_server.conf

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_数据库_03

启动zabbix:

[root@server1 4.4]# systemctl start zabbix-server.service 
[root@server1 4.4]# systemctl start zabbix-agent.service     客户端

修改php配置:

vim /etc/httpd/conf.d/zabbix.conf

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_mysql_04

systemctl start httpd         启动apache

访问:

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_linux_05


进入到了开始界面,

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_数据库_06


zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_mysql_07


zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_监控类_08


zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_zabbix_09


登陆名称Admin ,密码zabbix。

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_zabbix_10


用户中心可以更改语言:

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_linux_11


zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_数据库_12


这里我们可以看到本机是因为我们安装了zabbix-agent,所以如果想加入进来,就安装agent服务。

我们现在加入server2 作为客户端。

scp zabbix-agent-4.4.1-1.el7.x86_64.rpm server2:
 yum install zabbix-agent-4.4.1-1.el7.x86_64.rpm -y

server1中点击创建主机:

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_zabbix_13

点击添加。

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_zabbix_14


添加一个模板。

在server2中配置一下agent:

[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=172.25.254.1
ServerActive=172.25.254.1   active时主动模式
Hostname=server2
systemctl start zabbix-agent.service       开启服务

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_数据库_15


就可用了,上面的可用性是空的,开启agent服务后,就可用了。

这样就把server2加入到集群中去了。

向监控中添加主机

在zabbix中添加主机有几种方法,一种就是上面介绍的,点击添加新主机,这样是比较慢的,所以我们可以:

自动发现

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_数据库_16


我们先删除上面的server2主机。

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_数据库_17


设置动作为自动发现,并确认已经激活,右下角本来是停用,点一下旧成以启用了,

然后点击做端的 Auto discovery,Linux servers 进行条件设置:

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_数据库_18


启用自动发现规则:

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_数据库_19


点击local network配置自动发现规则:

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_linux_20


保证我们的server2山的agent服务是开启的,然后我们等待30s:

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_linux_21


就自动把server2添加进去了。

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_linux_22


而且是可用的,

自动注册

自动发现,是server主动把一个网段ip的主机加入进来,自动注册不同于自动发现的是server被动接收gent客户机的加入请求,agent是主动的。使用自动发现,必须先禁用自动发现

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_zabbix_23

我们开启server3主机,
server3上安装agent

yum install zabbix-agent-4.4.1-1.el7.x86_64.rpm -y

配置文件:

Server=172.25.254.1
ServerActive=172.25.254.1
Hostname=server3

启动客户端。
检查确认这时server3没有被自动发现加进去。

禁用当前动作,创建自动注册新动作。

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_linux_24


zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_zabbix_25


添加动作,添加操作:

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_数据库_26


zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_mysql_27


点击添加。

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_数据库_28


就启用了,重启服务端和客户端。

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_数据库_29


就添加进来了。

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_mysql_30


并且可用。

使用API接口

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_zabbix_31


你就可以使用远程HTTP请求来调用API.

编写脚本,执行api请求:

vim zabbix-api
chmod +x zabbixapi
curl -s -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.254.1/zabbix/api_jsonrpc.php  |  python -m json.tool      #以json格式输出

-H 头     -s忽略详细信息       -d 具体内通

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_zabbix_32


执行:API返回的响应将包含用户身份验证令牌:

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_mysql_33


zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_linux_34

检索主机

我们现在有一个有效的用户身份验证令牌,可以用来访问Zabbix中的数据。 例如,让我们使用 host.get 方法检索所有已配置主机的ID,主机名和接口 :

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": "deeda641a01c0e21dc7f67b107927aba"            #这里为上面生成的令牌
}' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_linux_35


就检索到了我们当前zabbix里面的主机信息。

删除一个主机

vim zabbix-api

rl -s XPOST -H "Content-Type: application/json-rpc" -d'
{
    "jsonrpc": "2.0",
    "method": "host.delete",
    "params": [
        "10309"     #这里是主机的id号
    ],
    "id": 2,
    "auth": "deeda641a01c0e21dc7f67b107927aba"
}' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool

##主机id号

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_监控类_36


执行:

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_zabbix_37


server3 就被删除了,即刻生效。

创建主机

vim zabbix-api

curl -s XPOST -H "Content-Type: application/json-rpc" -d'
{
    "jsonrpc": "2.0",
    "method": "host.create",
    "params": {
        "host": "server3",                主机名
        "interfaces": [
            {
                "type": 1,
                "main": 1,
                "useip": 1,
                "ip": "172.25.254.3",             地址
                "dns": "",
                "port": "10050"
            }
        ],
        "groups": [
            {
                "groupid": "2"              组id
            }
        ],
        "templates": [
            {
                "templateid": "10001"        模板id
            }
        ]
    },
    "id": 2,
    "auth": "deeda641a01c0e21dc7f67b107927aba"
}' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool

执行:

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_监控类_38


zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_zabbix_39


zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_mysql_40


server3就又加进来了。

配置监控

在server2上添加模板:

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_监控类_41


它都可以监控那些内容。

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_linux_42


在server3上配置nginx,来测试监控nginx.

编译安装nginx,更改配置文件:

设置关于查看状态的配置。

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_数据库_43


zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_zabbix_44


可以获得到状态信息了。

那末现在比如我们要获取Active connections 的信息,那我们该如何配置:

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_数据库_45


我们进入用户自定义配置的目录:

[root@server3 nginx]# cd /etc/zabbix/zabbix_agentd.d/
[root@server3 zabbix_agentd.d]# ls
userparameter_mysql.conf
[root@server3 zabbix_agentd.d]# cp userparameter_mysql.conf userparameter_nginx.conf 
[root@server3 zabbix_agentd.d]# ls
userparameter_mysql.conf  userparameter_nginx.conf
vim userparameter_nginx.conf

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_数据库_46


nginx.active 是key 逗号后面是值。重启server3的 agent 端

然后在server1上安装:

yum install -y zabbix-get-4.4.1-1.el7.x86_64.rpm -y

就可以通过zabbix-get 这个命令可以获取到了。

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_linux_47


然后我们在server1的图形界面去进行配置server3的监控项:

主机上点击server3,再点击监控项,,点击右边的创建监控项:

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_监控类_48


zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_mysql_49


zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_mysql_50


在添加图形,选择nginx-active监控项:

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_mysql_51


预览:

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_linux_52


有1这个数值。有乱码问题,系统自带的无法识别中文。

我们可以去/usr/share/zabbix/assets/fonts 替换字体:

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_数据库_53


zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_数据库_54


然后再字体配置文件中更改即可。

vim /usr/share/zabbix/include/defines.inc.php
在里面执行:
:%s/graphfont/simkai/g

这样就可以自己配置想要的监控了。

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_监控类_55

用模板监控数据库

我们server1上安装了数据库,所以在server1的agent进行配置

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_数据库_56


没有创建数据库模板是一共有112个监控项,添加一个数据库模板之后:

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_监控类_57


zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_数据库_58


就变成151个了。

但是对于企业来说这增加的39个是远远不够的,所以我们用percona这个解决方案,它可以自定义模板,且能使用的第三方插件比较多,可以和很多软件进行搭配。

在server1上:
建立zabbix监控mysql的配置目录,用来放配置文件。也是zabbix默认的zabbix-agent 家目录

mkdir /var/lib/zabbix
vim /var/lib/zabbix/.my.cnf
[mysql]
host=localhost
user=root
password=redhat
socket=/var/lib/mysql.sock

[mysqladmin]
host=localhost
user=root
password=redhat
socket=/var/lib/mysql.sock
systemctl restart zabbix-agent.service

这时我们只需要把oercona的模板写进目录中去就可以了。里面大约有150多个监控项。

我们先安装zabbix对precona的一个支持: 可以在pkgs上下载。

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_mysql_59


它的模板放在 /var/lib/zabbix/percona/templates

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_mysql_60


.xml文件是模板。

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_数据库_61


里面有190个键值。比较全面。

复制这个模板文件到 agent 的自定义目录:

cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/

在scripts目录创建配置文件:

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_mysql_62


zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_linux_63


重启agent。

然后我们在图形界面去配置.

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_数据库_64


导入模板,这个模板在/var/lib/zabbix/percona/templates下。导入后给server1添加这个模板,就成300多个了。

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_监控类_65


zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_zabbix_66


然后我们的监控项里面会多出很多内容,丰富了我们的监控。

zabbix 批量添加主机的excel模版 zabbix批量添加ping对象_mysql_67