zabbix 3安装及web简介

一、zabbix简介

zabbix 是一个企业级分布式开源监控解决方案。

Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,Zabbix 基于存储的数据提供出色的报表和数据可视化功能。

Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。

zabbix官网: https://www.zabbix.com

zabbix下载:https://www.zabbix.com/download

zabbix 主要由2部分构成 zabbix server和 zabbix agent。zabbix proxy是用来管理其他的agent,作为代理。

二、zabbix程序组件:

zabbix_server:  服务端守护进程;
zabbix_agent:  agent守护进程;
zabbix_proxy:   代理服务器,可选;
zabbix_database: 存储系统,Mysql/PGSQL;
zabbix_web:    web GUI
zabbix_get:     命令行工具,测试向agent端发起数据采集请求;
zabbix_sender:  命令行,测试向server端发送数据;
zabbix_java_gateway:java网关

三、zabbix逻辑组件:

主机组(host groups)
主机(hosts)
应用(applications)
监控项(items)
触发器(triggers)
事件(events)
动作(actions):条件(conditions)和操作(operations)
媒介(media):发送通知的通道
通知(notifications)
远程命令(remote command)
报警升级(escalation)
模板(template)
图形(graph)
屏幕(screens)
幻灯(slide show)

zabbix agent:

Zabbix agent 可以运行被动检查和主动检查。

在被动检查 模式中 agent 应答数据请求。Zabbix server(或 proxy)询求数据,例如 CPU load,然后 Zabbix agent 返还结果。

主动检查 处理过程将相对复杂。Agent 必须首先从 Zabbix sever 索取监控项列表以进行独立处理,然后会定期发送采集到的新值给 Zabbix server。

四、zabbix server安装

4.1 安装mysql
[root@localhost ~]# yum install mariadb-server -y
[root@localhost ~]# grep -v "^#" /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
skip_name_resolve = ON
innodb_file_per_table = ON

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

!includedir /etc/my.cnf.d
[root@localhost ~]# systemctl start mariadb.service
[root@localhost ~]# systemctl enable mariadb.service
[root@localhost ~]# mysql
Your MariaDB connection id is 2
Server version: 5.5.64-MariaDB MariaDB Server
MariaDB [(none)]> CREATE DATABASE zabbix CHARSET 'utf8';
MariaDB [(none)]> GRANT ALL ON zabbix.* TO 'zbxuser'@'172.28.%.%' IDENTIFIED BY 'zbxpass';
MariaDB [(none)]> GRANT ALL ON zabbix.* TO 'zbxuser'@'127.0.0.1' IDENTIFIED BY 'zbxpass';
MariaDB [(none)]> FLUSH PRIVILEGES;
4.2 安装服务器端
[root@localhost ~]# yum list all | grep zabbix3
zabbix30.x86_64                          3.0.22-2.el7             epel          
zabbix30-agent.x86_64                    3.0.22-2.el7             epel          
zabbix30-dbfiles-mysql.noarch            3.0.22-2.el7             epel          
zabbix30-dbfiles-pgsql.noarch            3.0.22-2.el7             epel          
zabbix30-dbfiles-sqlite3.noarch          3.0.22-2.el7             epel          
zabbix30-proxy.noarch                    3.0.22-2.el7             epel          
zabbix30-proxy-mysql.x86_64              3.0.22-2.el7             epel          
zabbix30-proxy-pgsql.x86_64              3.0.22-2.el7             epel          
zabbix30-proxy-sqlite3.x86_64            3.0.22-2.el7             epel          
zabbix30-server.noarch                   3.0.22-2.el7             epel          
zabbix30-server-mysql.x86_64             3.0.22-2.el7             epel          
zabbix30-server-pgsql.x86_64             3.0.22-2.el7             epel          
zabbix30-web.noarch                      3.0.22-2.el7             epel          
zabbix30-web-mysql.noarch                3.0.22-2.el7             epel          
zabbix30-web-pgsql.noarch                3.0.22-2.el7             epel 

[root@localhost ~]# yum install zabbix30-server-mysql -y

程序环境:

配置文件:/etc/zabbix/zabbix_server.conf
Unit File: zabbix-server.service

导入数据库脚本:

mysql -uzbxuser -h127.0.0.1 -pzbxpass zabbix < /usr/share/zabbix-mysql/schema.sql
mysql -uzbxuser -h127.0.0.1 -pzbxpass zabbix < /usr/share/zabbix-mysql/images.sql
mysql -uzbxuser -h127.0.0.1 -pzbxpass zabbix < /usr/share/zabbix-mysql/data.sql
4.3 zabbix server配置启动
[root@localhost ~]# cp /etc/zabbix/zabbix_server.conf{,.bak}
[root@localhost ~]# grep -v '^#' /etc/zabbix/zabbix_server.conf | grep -v '^$'
LogFile=/var/log/zabbixsrv/zabbix_server.log
LogFileSize=0
PidFile=/run/zabbixsrv/zabbix_server.pid
DBHost=127.0.0.1
DBName=zabbix
DBUser=zbxuser
DBPassword=zbxpass
DBSocket=/var/lib/mysql/mysql.sock
Timeout=4
ExternalScripts=/var/lib/zabbixsrv/externalscripts
LogSlowQueries=3000
TmpDir=/var/lib/zabbixsrv/tmp
[root@localhost ~]# systemctl start zabbix-server.service #启动服务

zabbix web配置:

#(1)解决依赖关系:
[root@localhost ~]# yum install httpd php php-mysql php-mbstring php-gd php-bcmath php-ldap php-xml -y
#(2)安装web GUI
[root@localhost ~]# yum install zabbix30-web zabbix30-web-mysql -y
#(3)配置PHP时区参数
[root@localhost ~]# vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
#(4)启动web服务
[root@localhost ~]# systemctl start httpd.service
# (5) 访问web:http://172.28.88.102/zabbix
安装后生成的配置文件:/etc/zabbix/web/zabbix.conf.php
登录的管理员:admin/zabbix
# (6)菜单:
Monitoring
Inventory
Reports
Configuration
Adminitration
4.4 zabbix agent安装配置
#(1)安装
[root@localhost ~]# yum install zabbix30-agent -y
#程序环境:
配置文件:/etc/zabbix/zabbix_agentd.conf
Unit File:zabbix-agent.service

#(2)配置
[root@localhost ~]#  grep '####' /etc/zabbix/zabbix_agentd.conf
############ GENERAL PARAMETERS #################
##### Passive checks related #被动监控相关配置
##### Active checks related  #主动监控相关配置
############ ADVANCED PARAMETERS #################
####### USER-DEFINED MONITORED PARAMETERS #######  用户自定义的监控参数,UserParamter
####### LOADABLE MODULES #######

[root@localhost ~]# grep -v "^#" /etc/zabbix/zabbix_agentd.conf | grep -v '^$'
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
##### Passive checks related
Server=172.28.88.102
ListenPort=10050
ListenIP=0.0.0.0
StartAgents=3
##### Active checks related
ServerActive=172.28.88.102
Hostname=172.28.88.60

#(3)启动服务
[root@localhost ~]# systemctl start zabbix-agent.service

#(4)获取数据测试
[root@localhost ~]# zabbix_get -s 172.28.88.60 -k "net.if.in[eth0,packets]"
49854733

4.5 配置监控说明web
4.5.1 快速配置一个监控项:
host groups -> host -> applications -> item(simple graph) -> triggers(events) -> action(conditions,operations)

    operations: remote command, alert

    item --> simple graph
    items --> graph
    graphs --> screen
    screens --> alide show
4.5.2 item相关说明
(1)item key:
    zabbix内建: zabbix agent/zabbix agent(active)
    用户自定义(UserParamter)
(2)采集到的数据类型:
    数值:整数、浮点数
    字符型:字符串、text、log
(3)存储的值:
    As is:不对数据做任何处理,存储采集到的数据本身;
    Delta(Simple change):本次采样的数据减去前一次采样的数据;
    Delta(speed per second):本次采样的数据减去前一次采样的数据,再除以经过的时长,速率数据;
4.5.3 触发器(trigger)

触发器介绍

逻辑表达式,阈值,通常用于定义数据的不合理区间:条件满足时True,表示PROBLEM状态;反之,则OK状态。
(1)“监控项”仅负责收集数据,而通常收集数据的目的还包括在某指标对应的数据超过合理范围时给相关人员发送告警信息,“触发器”正是用于为监控项所收集的数据定义阈值
(2)每一个触发器仅能关联至一个监控项,但可以为一个监控项同时使用多个触发器
    事实上,为一个监控项定义多个具有不同阈值的触发器,可以时间不同级别的报警功能
(3)一个触发器由一个表达式构成,它定义了监控项所采取的的数据的一个阈值
(4)一旦某次采集的数据超出了此触发器定义的阈值,触发器状态将会转换为“Problem”;而当采取的数据再次回归至合理范围内时,其状态将重新返回到“OK”

触发器表达式

基本的触发器表达式格式如下所示:
{<server>:<key>,<function>(<parameter>)}<operator><constant>
● server: 主机名称;
● key:主机上关系的相应监控项的key;
● function:评估采集到的数据是否都在合理范围内时所使用的函数,其评估过程可以根据采取的数据、当前时间及其它因素进行;
目前,触发器所支持的函数有avg、count、change、date、dayofweek、delta、diff、iregexp、last、max、min、nodata、now、sum等
● parameter:函数参数:大多数数值函数可以接受秒数为其参数,而如果在数值参数之前使用“#”作为前缀,则表示为最近几次的取值,如果sum(300)表示300秒内所有取值之和,而sum(#10)则表示最近10次取值之和
此外,avg、count、last、min和max还支持使用第二个参数,用于完成时间限定;例如:max(1h,7d)婧返回一周之前的最大值
last(0)相当于last(#1)
● operator:表达式所支持的运算符

例如:
{www.changecan.com:system.cpu.load[all,avg1].last(0)}>3
表示主机www.changecan.com上所有CPU的过去1分钟内的平均负载的最后一次取值大于3时将触发状态变换
4.5.4 Action

媒介类型(Media Types):

报警信息的传递方式:
类型:
    Email:邮件,需要定义发件人邮箱地址和SMTP服务器;
    Script:自定义脚本,此脚本有发送信息至相关用户的功能;
    SMS、Jabber、Ez Texting

Action介绍

● conditions: 触发此动作的条件,一般通过“事件”触发;
● operations:触发条件满足时要采取的动作;
(1)send message:发报警信息给关联的用户,可通过脚本、邮件
(2)remote command:在agent所在主机上运行用户指定的命令或脚本来尝试着恢复故障(如:重启服务;任何由用户自定义的脚本)
    类型:IPMI,custom script,ssh,telnet,global script

● custom script实现的前提:
在agent端配置:
(1)zabbix 拥有执行相应脚本的权限:
编辑/etc/sudoers文件,添加:
    zabbix ALL=(ALL) NOPASSWD:ALL
注释如下行:
    Default requiretty
(2)agent进程要允许执行远程命令,编辑/etc/zabbix/zabbix-agentd.conf文件,设置EnableRemoteCommands=1
重启服务生效
4.5.5 模板

主机配置模板,可链接至主机,从而实现主机的快速监控配置;

模板可继承:
    在模板之上link其他模板即可
从主机上删除模板:
    unlink:反链接
    unlink and clear: 反链接并清除数据
模板可导出,也可以从指定文件导入;
4.5.6 宏 macro

预设的文本替换模式(其实就是传递变量值)

级别:
    全局宏: Administration --> General --> Macros
    模板宏: Configuration --> Templates --> TEMPLATE--> Macros
    主机宏: Configuration --> Hosts -->HOST --> Macros
类型:
    内建:{MACRO_NAME}
    自定义:{$MACRO_NAME}
命名方式:大写字母、数字和下划线
4.5.7 网络发现

zabbix server扫描指定网络范围内的主机

发现方式:
ip地址范围:
    可用服务探测(ftp,ssh,http,...);
    zabbix_agentd的响应对某个key的请求;
    snmp_agent响应;
    
一旦发现某主机,就会产生发现事件;事件有8类:
Event:
    service up
    service down
    host up
    host down
    service discovered
    host discovered
    host lost

发现操作分两步:
    discover
    actions:
        conditions
        operations
        
        可采取的动作:
            send message, remote command
            add/remove host
            enable/disable host
            add host to group
            link to template to host

网络发现:接口添加

网络发现中添加主机时会自动创建interface:
● the services detected
例如:如果基于SNMP检测成功,则会创建SNMP接口
● 如果某服务同时响应给了agent和SNMP,则两种接口都会创建
● 如果同一种发现机制(如agent)返回了非唯一数据,则第一个接口会被识别为默认,其它的为额外接口
● 即便是某主机开始时只有agent接口,后来又通过snmp发现了它,同样会为其添加额外的snmp接口
● 不同的主机如果返回了相同的数据,则第一个主机将被添加,余下的主机会被当做第一个主机的额外接口

网络发现:agent自动注册

● zabbix支持active agent的自动注册(auto-resistration)功能,通常用于此前故障的agent重新上线时的场景
● 也可基于active agent的自动注册机制添加被动检测,这会通过active agent注册时提供的“ListenIP”和“ListenPort”进行
● Server端在收到自动注册请求后以接受到的IP和Port为接口属性

猜你喜欢

转载自blog.csdn.net/change_can/article/details/105734713