Zabbix的实际项目的配置

在zabbix的安装的过程中, 我们将zabbix_server相关的插件(web:apache+php database zabbix_server) 安装在同一台机器上,
在zabbix_server的安装的过程中,我们使用机器的版本是redhat7.3
在redhat7.3中首先我们要下载zabbix所需要安装的包
本次我们使用的是zabbix3.4的版本 我们使用以下的包进行安装
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@server1 ~]# yum install -y 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
出现插件的报错,在安装zabbix-web的时候需要插件的支持,解决依赖性

Zabbix的实际项目的配置_第1张图片

再次我们需要向同版本的zabbix-web的插件
但是对于   Requires: php-mbstring    Requires: php-bcmath 来说,我们最好查看当前的机器支持的php版本
[root@server1 ~]# yum list php 
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.
Available Packages
php.x86_64                    5.4.16-42.el7                                   rhel7.3                                  
当前的机器支持的是php-5.4.16-42.el7的版本 一定要注意版本后面的-的数字,如果数字不一致,则不能安装成功
一次我们选择 php-mbstring    php-bcmath 相同的版本 
php-bcmath-5.4.16-42.el7.x86_64.rpm
php-mbstring-5.4.16-42.el7.x86_64.rpm


那么这两个模块是用来干什么的呢?
mbstring是php的支持库,多国的语言并存意味着多字节,php内置的字符串的长度函数strlen无法正确的处理中文的字符串
它得到的只是字符串所占的字节数,采用mbstring可以更好的解决这个字符的转义问题
通俗的来说:就是让php支持汉语的字符串,从而使得zabbix的web界面可以编程汉语,便于使用

bcmath高精度的运算扩展, 为将数据的采集整理成可视化的图片提供运算模块,这是php后来添加的模块

继续之前的依赖包:
剩下的依解决的是zabbix-mysql的问题
  Requires: fping  : fping类似于ping fping可以在命令行中指定要ping的主机的范围,也可以指定含有要ping的主机列表文件
与ping不同的是,ping要等待某一主机连接超时或发回反馈信息的不同,fping给一个主机发完数据包后,马上给下一个主机发,
实现多个主机同时ping,假如某个主机ping通则被打上标记,如果没有ping通,则仍然留在列表中,等待后续的操作

 Requires: libiksemel.so.3()(64bit) :支持某个数据的模块

解决他们需要的依赖包:
fping-3.10-1.el7.x86_64.rpm
iksemel-1.4-2.el7.centos.x86_64.rpm

我们继续进行zabbix的安装
[root@server1 ~]# 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 
[root@server1 ~]# 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的实际项目的配置_第2张图片

下来我们进行数据库的安装
[root@server1 ~]# yum install -y mariadb mariadb-server
[root@server1 ~]# systemctl start mariadb 
[root@server1 ~]# mysql
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
对zabbix库给zabbix用户授予zabbix库的所有权限
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'redhat';
Query OK, 0 rows affected (0.00 sec)
[root@server1 zabbix-server-mysql-3.4.6]# pwd 
/usr/share/doc/zabbix-server-mysql-3.4.6
对于zabbix-server来说将zabbix的数据已经创建好了,我们只需要将其导入到我们创建的zabbix数据库中即可
导入的方式有两种:
    1. [root@server1 zabbix-server-mysql-3.4.6]# mysql zabbix < create.sql.gz
    2.[root@server1 zabbix-server-mysql-3.4.6]# zcat create.sql.gz | mysql zabbix

此时我们可以进入到mysql的数据库中查看我们导入的内容
Database changed
MariaDB [zabbix]> show tables;
+----------------------------+
| Tables_in_zabbix           |
+----------------------------+
| acknowledges               |
| actions                    |
| alerts                     |
| application_discovery      |
| application_prototype      |
| application_template       |
| applications               |
| auditlog                   |
| auditlog_details           |
| autoreg_host               |
| conditions                 |
| config                     |
| corr_condition             |
| corr_condition_group       |
| corr_condition_tag         |
| corr_condition_tagpair     |
等等这是我们导入的zabbix数据库中的内容

下来我们查看zabbix的主要配置文件
[root@server1 ~]# cd /etc/zabbix/
[root@server1 zabbix]# ls
web                 zabbix_agentd.d
zabbix_agentd.conf  zabbix_server.conf
这是zabbix_server的主配置文件
[root@server1 zabbix]# vim zabbix_server.conf 
数据库的名字
DBName=zabbix
DBPassword=redhat
DBSocket=/var/lib/mysql/mysql.sock
[root@server1 zabbix]# systemctl start zabbix-server 
下来我们将进行前端页面的配置
[root@server1 ~]# cd /etc/httpd/conf.d/
[root@server1 conf.d]# ls
autoindex.conf  README        welcome.conf
php.conf        userdir.conf  zabbix.conf
[root@server1 conf.d]# vim zabbix.conf 
        php_value date.timezone Asia/Shanghai
[root@server1 conf.d]# systemctl start httpd
下来我们就可以在页面通过IP的方式访问到zabbix的页面了

Zabbix的实际项目的配置_第3张图片

Zabbix的实际项目的配置_第4张图片

Zabbix的实际项目的配置_第5张图片

Zabbix的实际项目的配置_第6张图片

Zabbix的实际项目的配置_第7张图片

再次一定要注意 zabbix登陆的界面的用户密码是zabbix 密码是zabbix 密码是zabbix 
不是数据库进行授权的密码 数据授权的是数据库的密码

Zabbix的实际项目的配置_第8张图片

Zabbix的实际项目的配置_第9张图片

再次我们可以将zabbix的界面改成我们习惯的中文的形式,
第一步:我们点击小人的图像

Zabbix的实际项目的配置_第10张图片

第二步:选择汉语 点击uodate 就可以看到界面变成中文了

Zabbix的实际项目的配置_第11张图片

在zabbix的监控的界面中,
单机 配置 -->  点击主机
我们会发现我们的zabbix server的界面 但图形会显示停用 

Zabbix的实际项目的配置_第12张图片

此时我们点击  停用的,会弹出启用的监控的界面  我们点击确认启用

Zabbix的实际项目的配置_第13张图片

启用了主机之后,我们发现 zabbix下方的可用性下面的灯是红色,
因此在检查的过程中 我们在同一个主机上要让 zabbix server agent mysql的端口大都要打开

Zabbix的实际项目的配置_第14张图片

解决: 我们打开agent的端口  [root@server1 conf.d]# systemctl start zabbix-agent 
刷新 再次查看

Zabbix的实际项目的配置_第15张图片

我的理解:在zabbix server上开启agent的端口使得ZBX可用性可用是zabbix的一个自我监控的模块
agent:可以实现自我主机上的监控 例如:磁盘的使用情况 内存 系统的利用率 等等
SNMP: 是通过简单网络管理协议,对远端的机器进行监控的,
JMX:是以java为基础的zabbix-java-gateway模块只能以主动的模式向server端递交数据等
IPMI:只能平台的接口,只要机器充电,就能监控机器的硬件设施 湿度 温度 等
接下来我们进行别的模块的配置, SNMP 利用简单网络管理协议 进行对不再本地的主机进行监控
和数据采集
首先我们在被监控的主机上安装agent,对本地的数据进行采集,利用(主动 被动)模式对数据进行传送到server,
再利用web的界面对数据进行绘图,实时显示
再次我们在redhat6.5上安装agent对机器进行监控

首先我们的获得agent的rpm包进行安装,再redhat6.5的机器上,
zabbix-agent-3.4.6-1.el6.x86_64.rpm

[root@server2 ~]# rpm -ivh zabbix-agent-3.4.6-1.el6.x86_64.rpm 
接下来我们对zabbix-agent的主配置文件进行配置
[root@server2 ~]# cd /etc/zabbix/
[root@server2 zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.d
[root@server2 zabbix]# vim zabbix_agentd.conf
告诉agent server是谁,向谁发送数据  纯被动模式下 此项会被注释掉
Server=172.25.254.1
主动模式下的sreverip 
ServerActive=172.25.254.1
表示本地的agent的主机名,也就是说在哪个主机上监控,hostname就是哪个主机的名字注意:并非是server的
Hostname=server2
[root@server2 zabbix]# /etc/init.d/zabbix-agent start 
Starting Zabbix agent:                                 [  OK  ]
可以使用以下的命令查看配置的主要信息
[root@server2 zabbix]# cat /var/log/zabbix/zabbix_agentd.log 
  1081:20190222:132356.930 Starting Zabbix Agent [server2]. Zabbix 3.4.6 (revision 76823).
  1081:20190222:132356.930 **** Enabled features ****
  1081:20190222:132356.930 IPv6 support:          YES
  1081:20190222:132356.930 TLS support:           YES
  1081:20190222:132356.930 **************************
  1081:20190222:132356.930 using configuration file: /etc/zabbix/zabbix_agentd.conf
  1081:20190222:132356.931 agent #0 started [main process]
  1084:20190222:132356.932 agent #3 started [listener #2]  用于检测本地的进程
  1085:20190222:132356.934 agent #4 started [listener #3]
  1083:20190222:132356.936 agent #2 started [listener #1] 
  1086:20190222:132356.938 agent #5 started [active checks #1]  对本地的主机在线的检查
  1082:20190222:132356.939 agent #1 started [collector]   是用于收集本地数据的进程
  1086:20190222:132356.952 no active checks on server [172.25.254.1:10051]: host [server2] not found
agnet的启用会带起来很多的监控的进程 使用 ps aux 就可以看到开启的5个进程在后台的运行
zabbix    1081  0.0  0.1  81460  1248 ?        S    13:23   0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix
zabbix    1082  0.0  0.1  81460  1332 ?        S    13:23   0:00 /usr/sbin/zabbix_agentd: collector [id
zabbix    1083  0.0  0.1  81460  1952 ?        S    13:23   0:00 /usr/sbin/zabbix_agentd: listener #1 [
zabbix    1084  0.0  0.1  81460  1952 ?        S    13:23   0:00 /usr/sbin/zabbix_agentd: listener #2 [
zabbix    1085  0.0  0.1  81460  1952 ?        S    13:23   0:00 /usr/sbin/zabbix_agentd: listener #3 [
zabbix    1086  0.0  0.2  81468  2108 ?        S    13:23   0:00 /usr/sbin/zabbix_agentd: active checks
接下来 我们在WEB的界面上将后端的监控的主机添加到监控项中去
因为在监控的最开始使用的步是自动发现 在最开始的时候要进行添加

在WEB界面的中  点击 配置  点击 配置底下的 主机 然后在右上角有一个创建主机 点击 创建主机

Zabbix的实际项目的配置_第16张图片

在主机中将主机的基本信息进行写入,然后添加群组,代理的ip 
在这个页面的写端有一个添加我们先不着急进行添加,我们先对这个主机的其他的选项进行设置

Zabbix的实际项目的配置_第17张图片

模版的设置 在模版中 有两部分组成: 连接的模版 连接指示器 
 首先我们在连接指示器中选择我们要添加的模版 然后添加的模版就会在连接指示器的框图中
下来我们点击连接指示器下方的 添加 
将要添加的模版  添加到 连接的模版那一项目中去

Zabbix的实际项目的配置_第18张图片

Zabbix的实际项目的配置_第19张图片

Zabbix的实际项目的配置_第20张图片

Zabbix的实际项目的配置_第21张图片

下来的是一些基本的别的设置  我们使用基本的默认就可以了  不需要修改
在主机中我们点击 添加  就将server2的agent添加到被监控的server上了

Zabbix的实际项目的配置_第22张图片

如果在server2上的ZBX模块的指示灯没有出现绿色
解决方法:1.要查看后端的agent的服务是否开启
        2.将当前的WEB界面刷新一下就存在了

Zabbix的实际项目的配置_第23张图片

那么对于zabbix的web界面来说 当我们在后端对agnet进行开启了 
当然希望被监控的主机自动的加入到WEB的界面中去,而无须在进行配置 间化工作
那么我们需要对自动发现的规则进行设定,当局域网或者当前的网络中有符合规则的主机
我们将这些主机自动的添加到server端的监控中来

对上一步的添加一个主机到srever中的实验的server2进行删除,不要影响后面的效果
单机 空白的方框 server2 点击 删除 

Zabbix的实际项目的配置_第24张图片

我们回到主页面 点击 配置  点击 自动发现

在创建自动发现之前 我们先进行创建动作
点击 主机 点击 动作

在出现的右上角的界面上 有 事件源 点击 事件源后面的三角下划线 选择自动发现 

Zabbix的实际项目的配置_第25张图片

在动作上   我们点击 下方的 Auto discovery. Linux servers. 

Zabbix的实际项目的配置_第26张图片

对于动作中的一些值  我们采用默认的方式  在自动发现的动作中 执行的是 自动发现的主机 
对主机执行的一些动作  点击界面下方的绿色的按钮  我们直接启用它就可以了

接下来  我们在自动发现的规则中 创建我们的自动发现的IP和规则
点击自动发现下方的 local network 
点击进入后 我们可以修改 我们所在的自动发现的ip的范围
修改完成以后  我们点击 更新 

Zabbix的实际项目的配置_第27张图片

在出来的页面上点击启用自动发现 

Zabbix的实际项目的配置_第28张图片

点击 检测中  仪表版  我们就可以发现自动发现中的检测处于开启的状态

Zabbix的实际项目的配置_第29张图片

同样在配置中的主机上  我们就可以发现 server2的出现

Zabbix的实际项目的配置_第30张图片

自动发现的总结: 那么对于server来说启用自动发现可以减少人为的配置工作 、
    其次自动发现的规则的启动特别的简单 可以实现对后端的很多主机的自动发现 
    在自动发现的过程中 :1.首先我们启用动作中的自动发现的模块
                      2.在自动发现的规则中写入自动发现的主机的IP范围
                      3.对自动发现规则更新 启动 即可完成自动发现 
因此自动发现的模块是zabbix的一个很方便的模块,只要对监控的主机安装了agent那么就可以自动的发现监控的主机了
下来我们来进行 zabbix的另一个模块 自动注册 

自动注册 和 自动发现的 区别?
自动发现: 相当于server已经存在了 但是后台的监控的agent并不在 我们就可以利用自动发现 对后台的agent进行发现并添加到主机组中
自动注册: 刚开始srever并没有在界面中,使用手动对srever主机机型添加 添加模版 ip 什么的 启动什么模块
那么当server很多,我们可以使用自动注册对server的模块进行配置

在实验开始之前 我们对最开始的 srever进行删除 并且关闭自动发现的模块 

实验结束后  实验结果显示 :
自动发现是自动注册的一个子集 
在配置好自动注册以后 自动发现也会启动  可能是上一步在自动发现的规则中开启了自动发现

Zabbix的实际项目的配置_第31张图片

Zabbix的实际项目的配置_第32张图片

在 主页中 点击 配置 点击 动作 点击 右上角的自动注册 点击创建动作 
在动作中的操作如下

Zabbix的实际项目的配置_第33张图片

在操作中的操作如下:
    点击 新的  进行相关的选择

Zabbix的实际项目的配置_第34张图片

注意在 动作 和操作 每一步的完成之后 都要点击 添加 或者 更新

Zabbix的实际项目的配置_第35张图片

在配置中的主机对页面进行查看  发现有没有注册好的主机在页面中

Zabbix的实际项目的配置_第36张图片

注意: 图标没有亮的情况下 首先检查模块是否启动 其次对页面进行刷新 

Zabbix的实际项目的配置_第37张图片

下来  进行相关的api的接口的配置  
官方的api的接口:https://www.zabbix.com/documentation/3.4/zh/manual/api
zabbix API 允许用户以编程的方三世检索和修改zabbix的配置 ,并提供对历史数据的访问

api广泛的用于:创建新的应用程序以使用zabbix;
             将zabbix与第三方软件集成
             自动执行常规任务

zabbix api 包含许多中方法 这些方法都在名义上分组为单组的API 
例如: host.create 隶属于host这个API 用于创建新的主机,

大多数的api包含四种方法 get create update delete 

设置前端后,就可以使用远程的HTTP请求来调用api 

验证:
在访问zabbix的任何数据之前,你需要登陆并获取身份验证令牌,
这可以使用user.login 方法完成 当我们要以标准的zabbix admin的用户身份登陆 
你的json请求如下
{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {           将被传递给API方法的参数
        "user": "Admin",
        "password": "zabbix"
    },
    "id": 1,
    "auth": null
}
假如你提供了正确的凭据 那么API返回的响应应该包括用户身份验证的令牌

检索主机:
    有了有效的身份验证令牌以后,可以用来访问zabbix中的数据,
    使用host.get的方法来检索已配置主机ID 主机名 和接口
{
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": {
        "output": [
            "hostid",
            "host"
        ],
        "selectInterfaces": [
            "interfaceid",
            "ip"
        ]
    },
    "id": 2,
    "auth": "0424bd59b807674191e7d77572075f33"
}

创建新的监控项 item.create 
{
    "jsonrpc": "2.0",
    "method": "item.create",
    "params": {
        "name": "Free disk space on $1",
        "key_": "vfs.fs.size[/home/joe/,free]",
        "hostid": "10084",
        "type": 0,
        "value_type": 3,
        "interfaceid": "1",
        "delay": 30
    },
    "auth": "0424bd59b807674191e7d77572075f33",
    "id": 3
}
等一些常见的创建 

接下来我们进行实验:
1.获得zabbix的身份验证的口令
curl -s -X POST -H 'Content-Type:application/json' -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

[root@server1 ~]# chmod +x zabbix_api.sh 
[root@server1 ~]# ./zabbix_api.sh  
{
    "id": 1,   统一的标识符
    "jsonrpc": "2.0",
    "result": "a49e122dc6b58839ac1223bc7ad814c3"   响应用户身份认证的令牌
}

2.查询主机的信息
curl -s -X POST -H 'Content-Type:application/json' -d '
{
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": {
        "output": ["host"]
    },
    "auth": "a49e122dc6b58839ac1223bc7ad814c3",
    "id": 1
}
' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# ./zabbix_api.sh  
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": [
        {
            "host": "server2",
            "hostid": "10256"
        },
        {
            "host": "Zabbix server",
            "hostid": "10257"
        }
    ]
}
3.监控主机的删除
curl -s -X POST -H 'Content-Type:application/json' -d '
{
    "jsonrpc": "2.0",
    "method": "host.delete",
    "params": [
        "10256"
    ],
    "auth": "a49e122dc6b58839ac1223bc7ad814c3",
    "id": 1
}
' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# ./zabbix_api.sh 
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "hostids": [
            "10256"
        ]
    }
}
再此我们可以在 WEB的监控界面上 查看目前的监控主机 

Zabbix的实际项目的配置_第38张图片

4.使用api的接口进行主机的添加  再次之前我们把server2删除了 我们再次利用脚本的配置进行添加
curl -s -X POST -H 'Content-Type:application/json' -d '
{
    "jsonrpc": "2.0",
    "method": "host.create",
    "params": {
        "host": "server2",
        "interfaces": [
        {
                "type": 1,
                "main": 1,
                "useip": 1,
                "ip": "172.25.254.2",
                "dns": "",
                "port": "10050"
        }
    ],
        "groups": [
        {
                "groupid": "2"
        }
    ],
        "templates": [
        {
                "templateid": "10001"
        }
    ]
    },
    "auth": "a49e122dc6b58839ac1223bc7ad814c3",
    "id": 1
}
' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool
[root@server1 ~]# ./zabbix_api.sh 
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "hostids": [
            "10260"
        ]
    }
}
主机创建成功   当然我们可以使用WEB的图形化界面对主机进行查看

Zabbix的实际项目的配置_第39张图片

当然这些脚本的内容 都可以到zabbix的官网上去查看不必自己会写
但是在配置的过程中 我们知道 groupid templateid是多少码  ?
其实并不知道  但是我们可以使用一个小机巧来实现
打开WEB的监控界面  我们在界面进行点击 Template OS Linux 的模块 
在浏览器的连接的模块上  我们就可以看到响应的id的个数了
http://172.25.254.1/zabbix/templates.php?form=update&templateid=10001
http://172.25.254.1/zabbix/hosts.php?form=update&hostid=10260&groupid=0
等等 我们可以通过连接的小技巧来获得 
接下来 我们对监控的具体的某一项的监控项 进行实施具体的项目 
重启一台redhat6.5的虚拟机  server3 对其进行agent的安装 将其添加到被监控的server端
[root@server2 ~]# scp zabbix-agent-3.4.6-1.el6.x86_64.rpm root@server3:
[root@server3 ~]# ls
zabbix-agent-3.4.6-1.el6.x86_64.rpm
[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 ~]# cd /etc/zabbix/
[root@server3 zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.d
[root@server3 zabbix]# vim zabbix_agentd.conf 
Server=172.25.254.1
ServerActive=172.25.254.1
Hostname=server3
[root@server3 zabbix]# /etc/init.d/zabbix-agent start 
Starting Zabbix agent:                                 [  OK  ]
接着我们利用上一步写好的脚本  对server3进行添加到主机中去
    "host": "server3",
    "ip": "172.25.254.3",
[root@server1 ~]# ./zabbix_api.sh 
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "hostids": [
            "10261"
        ]
    }
}
下来在图形界面可以对其进行查看

Zabbix的实际项目的配置_第40张图片

在对具体的某一项的数据进行监视  或者是图形的可视化
实验中测试的数据来源于 nginx的数据
因此在server3上我们要安装nginx的服务 从而对其产生的数据进行监视和图形化
[root@server3 ~]# ls
nginx-1.14.0.tar.gz
[root@server3 ~]# tar zxf nginx-1.14.0.tar.gz 
[root@server3 ~]# ls
nginx-1.14.0
nginx-1.14.0.tar.gz
zabbix-agent-3.4.6-1.el6.x86_64.rpm
[root@server3 ~]# cd nginx-1.14.0
[root@server3 nginx-1.14.0]# yum install -y gcc pcre-devel  zlib-devel
当然我们可以使用其他的模块对nginx进行添加它的功能编译
[root@server3 nginx-1.14.0]# ./configure --prefix=/usr/local/nginx   --with-http_stub_status_module --with-threads   --with-file-aio
 [root@server3 nginx-1.14.0]# make && make install
[root@server3 conf]# ln -s /usr/local/nginx/sbin/nginx /sbin/
[root@server3 conf]# pwd 
/usr/local/nginx/conf
在nginx中添加nginx的状态页 方便对nginx的数据进行统计 为zabbix的监控做准备
[root@server3 conf]# vim nginx.conf
       location /status {
                stub_status on;
                access_log off;
                allow 127.0.0.1;
                deny all;
        }
[root@server3 conf]# nginx 
[root@server3 conf]# curl http://127.0.0.1/status 
Active connections: 1    活跃的连接数 
server  accepts 总共处理的连接数 handled  成功创建的握手的次数 requests  总共处理的请求数 
 1 1 1 
Reading: 0  读取客户端的连接数 Writing: 1 响应数据客户端的数量  Waiting: 0  等待的下一次请求指令的驻留连接 

那么nginx 底下的status 到底是什么呢?
    表示nginx底下的状态, 这是nginx的状态页 状态页下面的数据是对nginx的统计数据(包括连接的数据 等待的什么数据等)

为了得到响应得数据 将他返回给server 以WEB得形式展示出来 我们要对得到得状态页进行过滤
为了得到测试得数据  我们要对数据进行过滤
使用以下得命令对 Active connections: 1 得数据进行过滤 grep 过滤一行 awk 是过滤一列
[root@server3 conf]# curl -s http://127.0.0.1/status | grep Active | awk '{print $3}'
1
数据在写入数据库中是有过滤采集得方式得 我们对nginx得数据进行采集得规则编写
[root@server3 zabbix_agentd.d]# pwd 
/etc/zabbix/zabbix_agentd.d
[root@server3 zabbix_agentd.d]# cp userparameter_mysql.conf userparameter_nginx.conf 
[root@server3 zabbix_agentd.d]# vim userparameter_nginx.conf 
UserParameter=nginx.active, curl -s http://127.0.0.1/status | grep Active | awk '{print $3}
[root@server3 zabbix_agentd.d]# /etc/init.d/zabbix-agent restart 
Shutting down Zabbix agent:                            [  OK  ]
Starting Zabbix agent:                                 [  OK  ]

在本地得agent得数据得到以后,zabbix会采用一定得模块对数据及逆袭嗯收集 
在server上安装get得进行利用被动得模式,对数据进行采集
[root@server1 ~]# rpm -ivh zabbix-get-3.4.6-1.el7.x86_64.rpm 
warning: zabbix-get-3.4.6-1.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing...                                            ################################# [100%]
Updating / installing...
   1:zabbix-get-3.4.6-1.el7                             ################################# [100%]
get得进程只是zabbix得一个工具,我们只要进行安装就可以了,不同对其进行启动
在server端使用命令在server3上进行数据得提取 -k 使用得可能是同一名字
[root@server1 ~]# zabbix_get -s 172.25.254.3 -p 10050 -k "nginx.active" 
1

接下来在WEB得界面上对监控项进行配置

点击 配置 点击 主机 点击 server3 点击 监控项 点击 右上角得 创建监控项
其他得配置使用默认得选项

Zabbix的实际项目的配置_第41张图片

Zabbix的实际项目的配置_第42张图片

在监控项中就可以发现创建得监控项

Zabbix的实际项目的配置_第43张图片

因为检测数据看起来并步直观 我们使用图形得方式对检测得数据进行图形得配置 
同样 点击 server3 点击 图形 点击 创建图形

于原来得图形进行相比较 更改得图形是改过得数据 没有改得则是没有改得数据

Zabbix的实际项目的配置_第44张图片

Zabbix的实际项目的配置_第45张图片

Zabbix的实际项目的配置_第46张图片

zabbix得具体得某一项得图形得创建就到此为止了  我们可以布置一个小得测试题
对nginx状态页中得accepts handle request 得数据进行处理统计
1.首先我们要在agent上对数据进行键值得提取 
在server端 我们要使用get得工具对键值进行提取
2.在WEB得页面上我们首先要创建一个监控项
3.在图形得界面上对创建得监控得图形进行添加 
4.使用异于辨认得图形得形状对数据得到处理 

我们下来简单得进行写 那么数据得关键在于对状态页中得数据进行过滤
[root@server3 zabbix_agentd.d]# pwd 
/etc/zabbix/zabbix_agentd.d
[root@server3 zabbix_agentd.d]# vim userparameter_nginx.conf 
UserParameter=nginx.accept, curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $1}'
[root@server1 ~]# zabbix_get -s 172.25.254.3 -p 10050 -k "nginx.accept"
95

接下来得创建得图形和以上得数据一模一样 如下 

Zabbix的实际项目的配置_第47张图片

Zabbix的实际项目的配置_第48张图片

Zabbix的实际项目的配置_第49张图片

在监控项中添加数据库得模版  本身添加得模版  这是zabbix自带得模版

Zabbix的实际项目的配置_第50张图片

在使用database得模版以后 zabbix server得监控项上就多了很多得关于mysql得监控项
那么可以理解为:模版是监控项 触发器 图形 等一系列得集合 在一个主机拥有一个模版得时候,
就相当于拥有了后面得配置 那么模版就是统一得 使用于大部分得群体得
当时zabbix本身得对数据库得模版对有的对数据库维护得人员来说并不适合 
我们就需要对zabbix mysql得模块进行扩充了 使得扩展后得功能使用于现在得需求
[root@server1 zabbix_agentd.d]# mkdir /var/lib/zabbix 
[root@server1 zabbix_agentd.d]# cd /var/lib/zabbix/
[root@server1 zabbix]# vim my.cnf 
[mysql]
host = localhost
user = zabbix
password = redhat
socket = /var/lib/mysql/mysql.sock

[mysqladmin]
host = localhost
user = zabbix
password = redhat
socket = /var/lib/mysql/mysql.sock
[root@server1 zabbix]# systemctl restart zabbix-agent 
[root@server1 zabbix]# mv my.cnf .my.cnf 
重启以后使用WEB得界面进行监控  会发现在界面上出现mysql得一些数据得模块
但是不是外面得模块得扩展 
在外面得模块扩展之前 我们要进行包得安装
percona-zabbix-templates-1.1.8-1.noarch.rpm
[root@server1 ~]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm 
warning: percona-zabbix-templates-1.1.8-1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY
Preparing...                                           ################################# [100%]
Updating / installing...
   1:percona-zabbix-templates-1.1.8-1                  ################################# [100%]

Scripts are installed to /var/lib/zabbix/percona/scripts
Templates are installed to /var/lib/zabbix/percona/templates
[root@server1 templates]# pwd 
/var/lib/zabbix/percona/templates
[root@server1 templates]# cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
[root@server1 templates]# systemctl restart zabbix-agent 
数据库得初始化
[root@server1 scripts]# mysql_secure_installation 
[root@server1 scripts]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
模版得由来也是由脚本生成得,将配置得东西编辑成脚本以后输出
在templates中可以看到mysql得配置得模版得一些信息
如图下所示

Zabbix的实际项目的配置_第51张图片

我们需要编辑这个xml得文件对模版进行要求
现在这个文件在网上已经生成好了 我们只要将这个文件导入模版中即可

点击 主机 点击 模版 点击 导入 

Zabbix的实际项目的配置_第52张图片

Zabbix的实际项目的配置_第53张图片

Zabbix的实际项目的配置_第54张图片

在可选得导入得模块中 我们可以在zabbix server上对导入得模块进行添加 那么在模块上得监控项对数据得监控就更加得详细了

Zabbix的实际项目的配置_第55张图片

Zabbix的实际项目的配置_第56张图片

Zabbix的实际项目的配置_第57张图片

下来我们来说 zabbix得一个有趣得模块  
点击 管理 点击 报警媒介类型 
	Email	电子邮件	已启用		SMTP服务器: "mail.company.com", SMTP HELO: "company.com", SMTP电邮: "[email protected]"
	Jabber	Jabber	已启用		Jabber 标识符: "[email protected]"
	SMS	短信	已启用		GSM 调制解调器: "/dev/ttyS0"
显示 已自动发现的 3中的3
我们可以看到对zabbix而言 报警得类别是有限得,在互联网这么发展飞速得时候
传统得报警得媒介 并不能满足人们得需求 
因此 我们要结合现在得常用得软件 对存在得故障进行告警
比如说 微信 电话 等等 
onealert 110云监控平台 可以让你即使得收到你的故障信息 并对其进行处理
1.首先我们在onalert上面注册一个帐号 用帐号及密码  或者手机号码进行登陆
2.在linux得名称上面 点击 控制台 
3.在控制台上得界面中 点击 onealert 
4.点击 配置 点击 应用 
会出现zabbix得监控得key值 0f3bea5e-5164-e877-b2a7-d51e5e4c2407
那么在此得情况下我们可以查看zabbix得文档对zabbix进行配置

Zabbix的实际项目的配置_第58张图片

Zabbix的实际项目的配置_第59张图片

Zabbix的实际项目的配置_第60张图片

Zabbix的实际项目的配置_第61张图片

在此我们根据官网得文档进行查看onealert得脚本得位置 
[root@server1 ~]# vim /etc/zabbix/zabbix_server.conf 
AlertScriptsPath=/usr/lib/zabbix/alertscripts
[root@server1 ~]# cd /usr/lib/zabbix/alertscripts/
[root@server1 alertscripts]# ls
[root@server1 alertscripts]# ls
此时我们发现在alert得位置并没有u应有得脚本 ,因此我们要对脚本进行安装相应得工具
oneitsm_zabbix_release-1.2.0.tar.gz
[root@server1 ~]# tar zxf oneitsm_zabbix_release-1.2.0.tar.gz -C /usr/lib/zabbix/alertscripts/
得到了相应得脚本以后我们让我们得server可以上网
[root@server1 ~]# route add default gw 172.25.254.151 
[root@server1 ~]# vim /etc/resolv.conf 
nameserver 114.114.114.114
在物理机上添加路由得策略
[root@loaclhost kiosk]# iptables -t nat -I POSTROUTING -s 172.25.254.0/24 -j MASQUERADE 
[root@server1 ~]# ping baidu.com 
PING baidu.com (123.125.115.110) 56(84) bytes of data.
64 bytes from 123.125.115.110 (123.125.115.110): icmp_seq=1 ttl=52 time=35.9 ms
64 bytes from 123.125.115.110 (123.125.115.110): icmp_seq=2 ttl=52 time=81.9 ms
[root@server1 bin]# pwd 
/usr/lib/zabbix/alertscripts/oneitsm/bin
[root@server1 bin]# ./install.sh 
./log.sh: line 6: /usr/lib/zabbix/alertscripts/oneitsm/bin/oneitsm.conf: No such file or directory
start to create config file...
缺少AppKey,请重新安装.
在安装得时候我们需要将应用上显示得key值加入 0f3bea5e-5164-e877-b2a7-d51e5e4c2407
[root@server1 bin]# ./install.sh 0f3bea5e-5164-e877-b2a7-d51e5e4c2407
start to create config file...
Zabbix管理地址: http://172.25.254.1/zabbix
Zabbix管理员账号: Admin 
Zabbix管理员密码: 
start to auth by zabbix admin user and password...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- -100   195  100    70  100   125    893   1595 --:--:-- --:--:-- --:--:--  1602
auth success!
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- -100   109  100    41  100    68   1269   2105 --:--:-- --:--:-- --:--:--  2125
start to create mediatype...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- -100   356  100    56  100   300    699   3747 --:--:-- --:--:-- --:--:--  3797
create media type success!
start to create user group...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- -100   214  100    54  100   160   1310   3881 --:--:-- --:--:-- --:--:--  3902
create user group success!
start to create user in zabbix...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- -100   623  100    51  100   572   1221  13701 --:--:-- --:--:-- --:--:-- 13951
create user success!
start to create action...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- -100  2013  100    51  100  1962    728  28022 --:--:-- --:--:-- --:--:-- 28434
create action success!
安装成功.
在zabbix得监控得报警得媒介上 停止zabbix原来使用得告警得媒介 

Zabbix的实际项目的配置_第62张图片

在用户中对用户得告警得方式进行添加 
点击 管理 点击 用户 点击 报警媒介 点击 添加 

Zabbix的实际项目的配置_第63张图片

Zabbix的实际项目的配置_第64张图片

下来对告警得动作进行设置 点击 配置 点击 动作 在右上角得配置中选择 触发器

Zabbix的实际项目的配置_第65张图片

Zabbix的实际项目的配置_第66张图片

Zabbix的实际项目的配置_第67张图片

将其中得某个agent关闭以后,看onealert是否能够以微信立即报警
[root@server2 ~]# /etc/init.d/zabbix-agent stop 
Shutting down Zabbix agent:                            [  OK ]
查看最近得探侦得修复  我们可以根据官网得特点进行修复和说明
http://wiki.onealert.com/integration/zabbix-new-Test.html
在问题勾选得关闭中 不能勾选 我们需要打开server2得触发器 然后在机器不可达得过程中选择触发器得设置
在设置里面点击 模块得应用 然后将 应用得下面选择允许手动触发触发 

Zabbix的实际项目的配置_第68张图片

Zabbix的实际项目的配置_第69张图片

在onealert得平台中我们选择 告警得通知类型机制 

Zabbix的实际项目的配置_第70张图片

显示告警失败  目前没有找到合适得解决方法

Zabbix的实际项目的配置_第71张图片

在此对告警得机制进行总结:
    在zabbix中使用onealert得模块时,
    首先我们要查询这个模块所在位置 在 zabbix-server.conf得文件中
    在onealert上我们注册一个帐号 在控制台对应用zabbix进行添加, 
    对文件在得位置依据官网得文档结合key对其其进行软件包得安装
    基于WEB界面对动作中得触发器进行设置 
    在用户得界面上对告警得机制进行设置 
    我们用作测试在停止后台得agent
    在检测中得问题中可以查看问题得处理发送得状态
    同时在alert得界面上可以查看告警得事件,在通知得界面上可以设置微信得通知
    注意在告警得途中 我们使用得是网络 因此server1必须要进行上网
zabbix中得JMX得模块
在srever2上将原来得agent得模块停止 了 
然后安装agent得模块得信息
[root@server2 ~]# /etc/init.d/zabbix-agent stop 
[root@server2 ~]# yum install -y zabbix-java-gateway-3.4.6-1.el6.x86_64.rpm 
[root@server2 zabbix]# /etc/init.d/zabbix-java-gateway start 
Starting zabbix java gateway:                         [  OK  ]
[root@server1 zabbix]# vim zabbix_server.conf 
JavaGateway=172.25.254.2
JavaGatewayPort=10052

zabbxi server由一个特殊得进程用来连接javagateway叫StartjavaPoller;会通过配置文件中得start_pollers得参数来设计启动得多个线程 
在配置得过程中StartjavaPoller得值是小于等于start_pollers得值得
StartJavaPollers=5
[root@server1 logs]# systemctl restart zabbix-server
[root@server3 ~]# yum install -y jdk-8u121-linux-x64.rpm 
[root@server3 ~]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
[root@server3 ~]# cd /usr/local/
[root@server3 local]# ln -s apache-tomcat-7.0.37/ tomcat
[root@server3 bin]# pwd 
/usr/local/tomcat/bin
[root@server3 bin]# vim catalina.sh 
CATALINA_OPTS='-Dcom.sun.management.jmxremote
        -Dcom.sun.management.jmxremote.port=8888
        -Dcom.sun.management.jmxremote.ssl=false
        -Dcom.sun.management.jmxremote.authenticate=fal
se'
[root@server3 bin]# ./startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
开启了java得端口
tcp        0      0 :::8888                     :::*                        LISTEN      5506/java     
在srever3上对WEB得JMX得接口进行添加

Zabbix的实际项目的配置_第72张图片

在server3得模版上对java得模块进行添加 添加JMX得接口 

Zabbix的实际项目的配置_第73张图片

Zabbix的实际项目的配置_第74张图片

[root@server3 ~]# cd /etc/zabbix/
[root@server3 zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.d
[root@server3 zabbix]# vim zabbix_agentd.conf 
因为java采用得是主动模式 数据得采集 
因此在agent中要对其进行禁用被动模式
StartAgents=0
[root@server3 zabbix]# /etc/init.d/zabbix-agent restart 
Shutting down Zabbix agent:                           [  OK  ]
Starting Zabbix agent:                                [  OK  ]
在WEB得界面上进行查看  我们就可以看到特定得JMX界面

关于zabbix得其他得数据  暂且不进行实验 要进行实验得可以在网上找教程

 

你可能感兴趣的:(Zabbix的实际项目的配置)