前两章:zabbix的基础原理

 

OS的自动安装:

kickstartpxecobbler//安装OS的工具

管理工具:OpenStack

开源网管工具:CactiNagiosZabbix

 

第一章:

1.zabbix入门:

SNMP:简单网络管理协议

NMS:网络监控服务,负责监控其他设备 //负责采集数据等

 //监控对方的cpu信息,大开的文件数量等

SNMP (nms/agent)

 

采集数据:

//snmp就是在每个节点安装一个代理端,代理端收集信息,然后

//当管理端来采集的时候,回馈给管理端

linux需要net-snmp

SNMPv1,v2,v3) //v1,v2安全性能很差,数据传输时明文的,认证机制也非常弱

1.在节点上安装专门的 agent

2.基于ssh的脚本,具有相应权限,实现命令的使用

//得有节点上的账号

net-snmp 提供的命令 snmp get ,get-next,get-bulk

 


2.常见的工具:cacti,nagios,zabbix对比

cacti :能够调用snmp机制,依赖于snmp实现数据采集,

//不需要在任何节点上安装工具,cacti只是数据采集,保存工具,

采集数据

保存下来

分析数据//展示

数据分析及报警 //并且报警能够升级,报警功能相对一般

//保存的形式,开始的时候,直接占用空间,固定大小,

//rrd轮转数据库,占用磁盘空间大小一定,过多的就会覆盖,

//类似于环形管道,一直往里存数据,数据大小是一定的

rrdtool //rrd能够保存数据和绘图,


阈值:合理上限,超出了上限,就要出发报警,低于上限就要触发报警



nagios :报警,能够实现 //实现软状态切换,第一次发现,立即完成状态切换

各种有开放API的都可以进行通知,绑定msn,邮件等

依赖关系 // 能够自动实现,假如一个关键设备,故障

//和这个关键设备相关联的就不在报警,否则会一连报警很多

nagios //只关心警戒位,超过了,就是不正常,没有超过就不正常

//不关心多少为正常,多少位非正常

//强大的报警工具,

nagios也能实现保存,但是需要使用插件


只关心正常与否的状态

依赖关系 //能够实现分离

//nagios自身就是一个独立的监控对象

//nagioscacti都不适合做大型网络的使用

监控的内容:

devices /software

server,router,switched,I/O,systems

Operating System,Networks,

incidents

DB downReplication stoppedServer not reachable

Critical Events

Disk超过n%full或者快要满了

100%CPU使用率,

紧急事件

如何监控:

基本的办法:

top,vmstat,iostat,mytop,innotop,SHOW global status

show innodb status

图形工具:

nagiosOpsviewIcinga,Cacti,Zabbix...

//zabbix可以认为是整合了nagioscacti,但是具有更多的功能

MS //一个监控系统应该具有的功能:

Data gatheringAlertingData

zabbix的监控:{实现}

1.基于SNMP的网络设备的监控

2.任何安装zabbix_AgentOS

3.不安装任何软件,基于pingport check实现安装


zabbix可以监控10w设备

几乎可以监控任何OS

zabbix监控途径:

zabbix agent //zabbix专用的代理

snmp agent //snmp代理

IPMI agent //很多服务器专用的硬件管理接口

agnentless monitoring //没有插件,基于pingport scan

web monitoring//web服务,监控其状态,

database monitoring//数据库监控

internal check//内部检测,在任何一个

cacluated monitoring //计算监控

custom command monitoring //

提示的方式:

e-mail, //立刻

sms //10min

jabber//15min

chat message//30min

command execution//1hour

zabbix架构:

zabbix web gui |

-------------- ||web page

zabbix database|--->|ICMP/IPMI/SNMP:Devices

---------------||Agent:OS

zabbix server  |

---------------|

/

-------------

zabbix proxy|------------>|web page

-------------| ICMP/SNMP/IPMI:Devices

|Alerting:OS

web server:负责收集接收agent发送的报文信息的核心组件,所有配置

统计数据以及操作

web interfacezabbixGUI接口,

proxy:可选组件,常用于分布式监控环境中,代理server收集部分被监控的监控数据,并统一发往server

//代替我接受其他agent的信息

agent:部署在被监控主机上,负责收集本地数据并发往Server端或Proxy

//收集被监控主机的信息,

zabbix可以监控Java应用

zabbix常用的术语

主机组:主机的逻辑容器,可以包含主机和模板,主机组通常在给用户或用户组指派监控权限时使用

监控项:item,一个特定监控指标的相关的数据,这些数据来自于被监控对象,

触发器:定义规则,阈值,

动作:action,对于特定事件实现定义的处理方法,通过包含操作(如发送通知)和条件(何时执行操作)

报警升级:escalation:发送警报或执行远程命令的自定义方案,如每隔5min发送一次警报,共发5次等

媒介:发送通知的手段或者通道,如EMailjabberSMS

通知notification:通过选定的媒介,向用户发送相关的信息

zabbix server需要启动的进程

watchdog看护进程pinger

housekeeper管理各个进程的配置,timer

alerter警报escalator 报警升级的时候使用

poller  //到各个agent端去取出数据,可以并行启用很多nodewatcher

httppollerdb_config_syncer

discovererdb_data_syncer




安装:

使用epel

1.yum install zabbix zabbix-agent zabbix-get zabbix-sender zabbix-server

zabbi-server-mysql,zabbix-web,zabbix-web-mysql

//sender能够说主动发送信息

2.要实现zabbix到数据库中存储数据,要对mysql进行初始化

创建zabbix

添加mysql登录用户

为该用户提供存储zabbix库权限

//schemap_w_picpathsdata//按顺序导入到mysql服务器中去

//rpm安装的话,rpm -qa zabbix-server-mysql

grant all on *.* to 'root'@'10.0.%.%' identified by 'zbpass' with grant option

flush privileges

创建zabbix库以后

mysql -uroot -pmypass -h10.0.0.91 zabbix< /usr/share/doc/zabbix-server-mysql-2.0.8/create/schema.sql

 ss -tanlp //查看套接字数

zabbix-server 10051//默认端口

zabbix-web使用rpm包安装以后,会在/etc/httpd/生成一个zabbix.conf的目录

//yum install zabbix-web


zabbidAdministrator是管理zabbix-gui以及zabbix的使用


监控另外一台主机:

1.被监控主机

安装:zabbix,zabbix-agent,zabbix-sender //sender并非是必须的,只有你需要

//向外部专门发消息的时候,才需要

vim /etc/zabbix/zabbix_agentd.conf //告诉其server的位置

Server=

service zabbix_agentd start //启动agentd进程

ss -tanl //查看zabbix-agent启动的进程

zabbix-server :监听的端口 10051

zabbix-agent 10050监听端口

2.zabbix server

zabbixconfigure-->host-->create host

host

host name10.0.0.91

visible name:可见名,自定义

In groups :内置的组,可以自定义

Agent interfaces :host name可以相同,

//interface可以为多个,例如一个主机可能有多个网卡

其他的链接方式:

SNMP

JMX

IPMI

proxy

status monitored//monitored启用监控

//查看zabbixmonitoring-->dashboard就会看到记录

templates

IPMI

Macros:宏

Host inventory:资产

//可以定义configurationhosts{nameApplicationItemsTriggersgraphsDiscoveryInterfaceTemplates}

//items监控项,多个item可以归结为一个组,成为applicationitems定义好后,还需要定义触发器

//先点击items,创建items

3.自定义itemapplication

configuration-->hosts--->item->create-->item

zabbix:Item ,key()key还可以接受参数,//key只是用来标识某一种标识监控功能的

例如:定义一个keyethercard来监控网卡的流量,但是一个主机可能有多个接口,需要接受一个参数来区分网卡

内置的itemnet.if.out[if,<mode>] //<>是可省略的

创建爱item

host 是定义的节点

name 是自定义的

type zabbix agent

key net.if.out[eno16777736]

Type of information  numeric

data type dacimal

units:单位,多少字节,多少个一个单位

Use custom multiplier:以任意字节采集单位可能需要换算

//采集的位k,需要乘以1024,为二进制,需要乘以8

updated interval (in sec) //多长时间采集一次

可以定义在什么时间采集,例如周一到周五

History storage period (in days)//保存多少天

Trend storage period (in days //趋势数据保存多少天

Store value //as is是采集的过来是什么,还是什么

delta (speed per second) //网卡一般使用,当前时间点,减区上一时间点,除以时间

delta (simple change ) //只计算上一时间点和现在时间点的差值,而不除以时间

show value //显示的方式

New application //定义到哪一个application

4.screen让多个图形组合在一起显示:

1.创建graphs,可以把多个图形显示在一起

configuration-->hosts-->graphs-->create graphps

图像类型:normalstacked//多张图叠合在一起

show legend:显示纵轴和横轴

5.使用screens让多个图形整合起来

configuration-->screen-->create screen

2 column &1 row //12

一个屏幕上放多个,视图

注意:

zabbix_agentd start //需要手动启动zabbix_agentd服务

//只有查看configuration--hosts-status //得到信息,才证明是启动的

 

 

 

 

 

 

第二个视频:

数据采集-->数据存储-->数据展示和分析--->报警

数据采集:

SNMP //windows上开启,以及snmp命令的使用,MIB

//有的被监控对象是不支持snmp

agent //能够和监控端实现,使用代理服务

ICMP/SSH/IPMI //ipmi是专用接口

数据存储:

cactirrd//round robin database ,轮转存储,

//像一个管道,往里存数据,满了,最早的就会被丢弃

nagiosmysql,也可能是无数据库的

zabbbix:mysql/oracle/pgsql

数据展示:(web)

java

php

移动app

报警:

smpt:转发邮件报警

调用例如webapi,发送即可

chat message//聊天工具也可以

SMS //手机短信,短信平台接口,短信机器人

zabbix

数据采集zabbix agent //使用agent代理,默认为被动,发送

agentactive//agent可以主动发送数据给server

SNMP

SSH

存储:RDBMS等,众多

数据展示:phpweb gui

报警:报警升级

如何确定zabbibx的监控对象:

手动添加

自动发现

hostshost group

item:多个item归为一个类application

item:在agent上通过key标记一个item//server通过key来区分不同的item

//在同一个agent上的key是不能重复的

graph:在一个图形上可以展示多个指标,item

//在一个item会自动生成一个graph

screen:多个graph放在一个屏幕上

trigger:定义一个数据指标的阈值,一个边界线

trigger可以生成event,但是event不一定都是trigger生成的

actionnotification,operation,condition)trigger产生后,执行一个动作

//满足条件的时候,监控该指标,condition条件

//item,trigger,action

创建触发器:

阈值:{problem|OK}

表达式:{<server>:<key>.<function>(<parameter>)}<operator><constant>

{www.magedu.com: system.cpu.load[all,avg1].last(0)}   >3

server:主机名

key:响应itemkey

function:评估采集到的数据是否在合理的范围内

//avg,count,change,date,dayofweek,delta,diff,iregexp,last,max,min,nodata,now,sun

//change:上一次和这一次的差值,上一次:30,这次50,差值为20

//dayofweek:星期几

//delta;计算二者的差值

//diff;不同之处

//iregexp;基于正则表达式做匹配

//last;最后几次采样,last[2]最后2次采样啊

//nodata;没有采集到值

//max1h,7d)返回一周之前的1h之内最大值

paramter:函数参数//例如sum(300)300秒内的所有取值之和,sum(#10)最近10次取值之和

触发器的操作符:

/,*,-,+,<,>,=,&,|,#:不等于

例子:{www.magedu.com:system.cpu.load[all,avg1].last(0)}>3

//主机上所有cpu的过去1min的平均负载的最后一次取值大于3时将触发状态转换

//对于last来说last(0)相当于last(#1)

//last(0)是一个parameter,[all,avg]是一个function

 

重点:zabbix的核心功能组件:


zabbix_agentd:--------------->zabbix_proxy-------------->zabbix_server //{Web Brower}

{zabbix_agentd.log}{zabbix_proxy.log}zabbix_server.conf

{zabbix_agentd.conf}{zabbix_proxy.conf}zabbix_server.log

//proxy不是必须的,server可以直接和agentd去交互采集信息


zabbix的逻辑架构:

 

新的一天//实践过,可以

安装方式

1.下载地址:http://www.zabbix.com/download.php

同时安装serveragent,并支持将数据放入mysql数据中,可使用类似如下配置命令:

./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-ssh2

 

如果仅安装server,并支持将数据放入mysql数据中,可使用类似如下配置命令:

./configure --enable-server --with-mysql --with-net-snmp --with-libcurl

 

如果仅安装proxy,并支持将数据放入mysql数据中,可使用类似如下配置命令:

./configure --prefix=/usr --enable-proxy --with-net-snmp --with-mysql --with-ssh2

 

如果仅安装agent,可使用类似如下配置命令:

./configure --enable-agent

 

make && make install //安装即可

2.yum安装,官方下载源,yum 安装即可

yum install epel-release

rpm --import http://repo.zabbix.com/RPM-GPG-KEY-ZABBIX

rpm -Uv http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent

//agent端使用yum install zabbix-agent即可


配置zabbix

server的配置文件为zabbix_server.conf,至少应该为其配置数据库等相关的信息;

agent的配置文件为zaabix_agentd.conf,至少应该为其指定serverIP地址;

proxy的配置文件为zabbix_proxy.conf,至少应该为其指定proxy的主机名和serverIP,以及数据库等相关的配置信息

 

启动zabbix:

server:  zabbix_server

agent: zabbix_agentd

proxy: zabbix_proxy

//视频中使用yum安装

 

初始化mysql

MySQL数据库为例:

mysql> CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;

mysql> GRANT ALL ON zabbix.* TO zbuser@'%' IDENTIFIED BY 'zbpass';

# 请按需要修改用户名和密码;

shell> mysql -u<username> -p<password> zabbix < database/mysql/schema.sql

# 如果仅为proxy创建数据库,只导入schema.sql即可;否则,请继续下面的步骤;

 

//视频中把mysql做到另外一台主机上,servermysql是两台主机

shell> mysql -u<username> -p<password> zabbix < database/mysql/p_w_picpaths.sql

shell> mysql -u<username> -p<password> zabbix < database/mysql/data.sql

server上指定的服务器,说明其mysql存储的位置

 

cp /usr/share/doc/zabbix-server-mysql-3.2.1/create.sql.gz  /root

//source /root/create.sql; 2.4.5//只需要一条命令就行了

 

 

 

修改zabbix_server.conf

DBHost //指定主机的mysql

DBName //库文件名

DBUser //zabbix,使用mysql的用户名

DBPassword ///密码

StartPollers //zabbix并行启动多少个poller同时到多个agentd上拉取数据

//一个poller可以拉取多个item

//zabbix_server需要启动的进程每一个进程可能需要启动多个

//poller拉取信息escalator报警升级管理的

vi /etc/httpd/conf.d/zabbix.conf

php_value date.timezone Asia/Shanghai

systemctl restart httpd

四:配置zabbix_agent

Server=127.0.0.1

Hostname=127.0.0.1

ServerActive=127.0.0.1

五、修改PHP 设置

   max_execution_time = 600

max_input_time = 600

memory_limit = 256

Mpost_max_size = 32M

upload_max_filesize = 16M

date.timezone = Asia/Shangha

六.修改firewall

   firewall-cmd --permanent --add-port=10050/tcp

firewall-cmd --permanent --add-port=10051/tcp

   systemctl restart firewalld

. vi /etc/httpd/conf.d/zabbix.conf //定义了各种访问属性


# Zabbix monitoring system php web frontend

#

Alias /zabbix /usr/share/zabbix

<Directory "/usr/share/zabbix">

    Options FollowSymLinks

    AllowOverride None

    Require all granted

 

    <IfModule mod_php5.c>

        php_value max_execution_time 300

        php_value memory_limit 128M

        php_value post_max_size 16M

        php_value upload_max_filesize 2M

        php_value max_input_time 300

        php_value date.timezone Asia/Shanghai

    </IfModule>

</Directory>

 

<Directory "/usr/share/zabbix/conf">

    Require all denied

</Directory>

 

<Directory "/usr/share/zabbix/include">

    Require all denied

</Directory>

启动zabbix-server zabbix-agent。重启httpd,,并设置zabbix-serverzabbix-agent开机自动启动

    systemctl start zabbix-server

systemctl start zabbix-agent

systemctl restart httpd

systemctl restart mariadb

systemctl enable zabbix-server

systemctl enable zabbix-agent

 

//参考http://www.cnblogs.com/XYJK1002/p/5324293.html

修改成中文

vim /usr/share/zabbix/include/locales.inc.php

找到第55行,将false改为true

点击zabbix右上角小人,进行修改:

Win+R打开运行,输入fonts,回车进入Windows字体目录,找到微软雅黑-常规字体,复制出来将文件名修改为msyh.ttf,然后上传到/usr/share/zabbix/fonts

vim /usr/share/zabbix/include/defines.inc.php

'graphfont' 修改为msyh

 

 

实验监控另外一台主机

1.agentdyum –y install zabbix-agent

vim /etc/zabbix/zabbix_agentd.conf //修改配置文件

Server //主要修改Server即可

ListenIP //agentd需要监听的地址

ListenPort //agentd需要监听的端口

systemctl start zabbix-agent

systemctl enabled zabbix-agent //启动并开机启动

ss –atlp //可以看到agentd的进程

2.server上添加一个主机

configuration---hosts---create hosts---

Host:

agent interface //这个最重要

Templates: //链接的模板

IPMI:

Macros:

Host inventory:

//此时在server上就可以看到效果了

3.创建item //监控网络out流量监控in的流量两个item为一个组

configuration---hosts---需要监控的主机---create item---

type: zabbix agent

key :  一个item的标识符 //监控一个agent的一个指标 //net.if.out[eno16777736]

Type of information  //要采集的数据的类型

data type:数据类型八进制十进制十六进制

units:单位//采集到的数据,是比特,还是什么

use custom multiplier: 自定义乘以多少倍

store value //存储的格式as is :采集到什么就使用什么delta:每s内的平均值

show value //显示的方式 as is //针对网卡流量来说store

//monitoring---last data--- 会看到监控的内容,建立一个item之后会自动创建一个图形

//serverping  agentd,会看到明显的效果

4.创建graph图像

configuration—hosts—graph—create  graph

//graph可以让两个item显示在一张图上,默认一个item对应一个graph

//screen可以把多个图放在一起组合成一张图

graph type: //堆叠图,分裂图,饼图等

y axis MIN value //y轴的刻度是多少 //使用calculate即可,实现自动创建



10.31小结//yum 安装zabbix安装agentd创建item创建graph创建screen

 

小结:

1.yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent

2.初始化mysql

3.修改配置文件//四个

/etc/zabbix/zabbix_server.conf  服务器端配置,DB

/etc/zabbix/zabbix_agentd.conf监控自身的配置,Server

/etc/httpd/conf.d/zabbix.conf  关联httpd的配置 Asia/Shanghai

/etc/php.ini  php相关属性 date.timezone

4.systemctl start|enable zabbix-server,

被监控主机:

yum install zabbix-agent

vim /etc/zabbix/zabbix_agentd.conf

Server //修改server地址即可

创建item

创建graph

创建screen

//共要配置5个,apache,mysql,php,zabbix-server,zabbix-agentd;最后启动mysql