运维之监控zabbix

监控系统:硬件、软件、业务指标;采样;告警;存储;展示;

可监控对象:
设备/软件
设备:服务器、路由器、交换机、IO系统
软件:OS、网络、应用程序
偶发性小故障:
主机down机、服务不可用、主机不可达
严重故障:
主机性能指标
趋势:时间序列数据

监控通道:ssh,snmp,telnet,agent,ipmi(智能平台管理接口)等

著名的开源监控工具:
cacti:利用snmp获取数据,然后储存在rrd数据库中,通过web展示出来,有较好的绘图能力,其告警能力较差;
nagios:定义告警规则,提供告警能力;
zabbix:集合采样,告警,存储,展示的监控系统;
ganglia:

数据存储:时间序列数据
1、关系型数据库
2、轮询数据库rrd
3、时间序列数据库:nosql

zabbix:LTS:2.2,3.0

特性:
1、数据采样:snmp,ssh/telnet,agent,ipmi,jmx
a、自定义检查机制:userparamenter
b、自定义指定时间间隔
2、实时绘图:展示
a、graph
b、map
c、screen
d、slide show
3、告警:升级
a、script
b、notification
4、数据存储
a、mysql
b、pgsql
5、支持模板
6、网络自动发现
7、分布式监控:server   《===》proxy 《===》agent

zabbix程序的构成:
zabbix_server:服务端守护进程;默认监听端口:10051
zabbix_agentd:agent端守护进程;默认监听端口:10050
zabbix_proxy:代理服务器,可选组件;
zabbix_get:命令行工具,手动测试向agent端发起数据采集请求;
zabbix_sender:命令行工具,运行于agent端,手动向server端发送数据;
zabbix_java_gateway:java网关;

监控配置:术语
hostgroup:主机组
host:主机,即被监控设备;
item:监控项,key+采集到数据
application:应用,即同类别的多个item所形成的组;
trigger:触发器;表达式;
event:事件;
action:condition+operation;动作
alert:告警
media:媒介

监控设备的接口:
1、agent interface
2、snmp interface
3、jmx interface
4、ipmi interface

item:key+parameter
key:1、zabbix内建;type:agent,agent(active),snmp  ...
2、自定义key;

采集到的信息种类:
字符
数值

数据类型:二进制、八进制、十进制、十六进制

store value:存储为
1、as is:数据不做任何处理;
2、delta(simple change):差值;即本次采样值减去上次采样值的结果;
3、delta(speed peer second):差值平均数;即本次采样值减去上次采样值的结果,然后除以采样间隔时长;

常用的函数:nodata()、

媒介:media:
1、email:邮件
2、script:用来定义信息通道,完成信息传递的脚本;注意:新放入此目录中的脚本,只有重启zabbix-server方能被使用;
(1)脚本放置路径:zabbix_server.conf配置文件中的参数:AlertScriptsPath=/usr/lib/zabbix/alertscripts定义
(2)zabbix会向脚本传递三个参数:
$1:经由此信道发送的接收目标;即send to
$2:标题;即Default Subject
$3:内容;即Default Message
3、jabber:
4、sms:短信

一次完整的监控配置:
hostgroup---》host---》[application]---》item---》trigger(events)---》(media type,user group,user)---》action

remote command:功用:
1、重启服务
2、通过ipmi接口重启服务器
3、任何自定义脚本可完成的功能:虚拟机迁移、清理磁盘空间等等

模板:主机配置模板;其用于链接至主机从而实现主机监控的快速配置;

宏(macros):类似变量,在调用时,自动替换成特定文本;分为:内置宏{MACRO}、自定义宏{$MACRO}。命名方式:大写字符,数字和下划线;
级别从高到低:
主机级别:web gui---》configuration---》hosts---》macros中定义
模板级别:web gui---》configuration---》templates---》macros中定义
全局级别:web gui---》administrator---》general---》macros中定义
内置宏参考链接:https://www.zabbix.com/documentation/3.0/manual/appendix/macros/supported_by_location

用户自定义key:UserParamenter;在zabbix-agent端定义,server端采集;注意,需重启agentd服务,使自定义key生效;
语法格式:UserParamenter=<key>,<command>;定义在zabbix_agentd.conf中
实例:
1、UserParamenter=Memfree,cat /proc/meminfo | awk  '/^MemFree/{print $2}'
Key为Memfree,后面是要执行的命令,命令的执行结果为返回值;重启agent后方能生效,在server端使用zabbix_get命令测试获取数据即可;
2、UserParamenter=Memusage[*],cat /proc/meminfo | awk  '/^$1/{print  $$2}'
Key为Memusage,且能够接受一个参数
由于$1,$2等要用于UserParamenter的参数调用,awk中的$2之前要多用一个$符;
在server端测试时,其调用的Key可以为Memusage[MemFree],Memusage[MemTotal]等。

自动发现:server扫描到的主机,添加之,自动将模板连接至主机;
zabbix网络发现的方式:
1、ip地址范围
2、可用的服务(ftp、ssh、http...)
3、zabbix_agent的响应
4、snmp_agent的响应

自动发现分为discovery和actions两个阶段;
a、discovery事件:host、service:discoved,lost,up,down
b、actions:根据特定的discovery事件执行响应操作;
(1)增加、删除主机
(2)启动、禁用主机
(3)将主机添加至组,从组中删除主机
(4)将模板链接至主机,反链接;

一般而言,发现状态和采取的动作:
discovered---》add host
lost---》delete host
up---》enable
down---》disable

web监控:页面可用性及性能

触发器表达式:
{server:key.<function>(paramenter)}<operator><constant>;  其中<constant>为阈值;
例如:{www.lewis.com:system.cpu.load{all,avg1}.last(0)}>3
表示主机www.lewis.com上所有cpu的过去一分钟内的平均负载的最后一次取值大于3时将触发状态变换;对last函数来说,last(0)相当于last(#1);

常用function的用途:
diff():比较采样值是否发生变化,通常通过checksum进行;
min():指定区间或时间范围内的最小值;
max():
avg():

centos7下:zabbix3.0安装,结合使用mariadb数据库;
zabbix服务端:# yum install zabbix-server-mysql mariadb-server
zabbix-web GUI:# yum install zabbix-web-mysql  mariadb-server
zabbix被监控端:# yum install zabbix-agent
zabbix代理端:# yum install zabbix-proxy-mysql  mariadb-server

服务端配置文件:/etc/zabbix/zabbix_server.conf;分为4个章节:
############ GENERAL PARAMETERS #################
############ ADVANCED PARAMETERS ################
####### LOADABLE MODULES #######
####### TLS-RELATED PARAMETERS #######

通用参数:
ListenPort=10051    定义数据采集的端口
SourceIP=                  定义数据采集通信所使用的ip地址
LogType=                  定义如何记录日志:system|file|console;为指定file时,需指定其位置:LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=              定义日志文件的自动滚动,0-1024,单位为M,0为不滚动;
DebugLevel=3           定义日志级别:0-5
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost=localhost      当定义为localhost时,使用mysql socket通信,定义为空值时,使用postgresql socket通信;
DBName=zabbix
DBUser=zabbix
DBPassword=
DBSocket=/tmp/mysql.sock   指明msyql  socket文件路径
DBPort=3306

示例:centos7.2+zabbix3.0+mariadb-server5.5.56
zabbix官网:https://www.zabbix.com/download
官方的repo仓库包:zabbix-release提供下如下2个文件
1、/etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/3.0/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX

[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1

2、/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX

zabbix服务端配置:
1、安装zabbix
# yum  install   zabbix-server-mysql   zabbix-web-mysql zabbix-agent

2、配置mariadb数据库
# yum install mariadb-server
# vim /etc/my.cnf   添加如下
skip_name_resolv=on
innodb_file_per_table=on
# systemctl start mariadb
# mysql
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to [email protected] identified by 'zabbix';
MariaDB [(none)]> grant all privileges on zabbix.* to [email protected]'127.0.0.1' identified by 'zabbix';
MariaDB [(none)]> flush privileges;
# zcat /usr/share/doc/zabbix-server-mysql-3.0.20/create.sql.gz | mysql zabbix

3、配置zabbix_server.conf
# vim /etc/zabbix/zabbix_server.conf
DBPassword=zabbix

4、配置zabbix前端web的时区
# vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai

5、安装lamp,并启动服务
# yum install php-mysql httpd
# systemctl start httpd zabbix-server zabbix-agent

6、zabbix的web GUI访问路径:http://172.20.120.40/zabbix,并进行后续配置;安装完成后生成的配置文件为:/etc/zabbix/web/zabbix.conf.php;web默认的登录账号密码为Admin/zabbix;

zabbix-agent端配置:
a、centos7
# yum install zabbix-agent
# vim /etc/zabbix/zabbix_agentd.conf
Server=172.20.120.40                     允许哪些zabbix服务端IP来连接,以逗号分隔;

ServerActive=172.20.120.40          主动向哪些zabbix服务端IP投递数据
Hostname=node41                            节点的主机名,需与web gui中的配置一致,agent主动发送数据时必须配置的;
# systemctl restart zabbix-agent.service

b、window7
https://www.zabbix.com/download_agents  下载指定的版本的agent包
修改配置文件zabbix_agentd.win.conf
Server=172.20.120.40                     允许哪些zabbix服务端IP来连接
ServerActive=172.20.120.40          主动向哪些zabbix服务端IP投递数据
Hostname=nodewin-98                            节点的主机名,需与web gui中的配置一致
安装服务,然后启动服务;
C:\Users\Administrator>D:\zabbix_agents_3.0.10.win\bin\win64\zabbix_agentd.exe -c D:\zabbix_agents_3.0.10.win\conf\zabbix_agentd.win.conf -i
其中-i,--install:安装成为windows的服务;
-c,--config:指明agent的配置文件位置;

常用windows下的items参考链接:https://www.zabbix.com/documentation/3.0/manual/config/items/itemtypes/zabbix_agent/win_keys
例如:CPU使用率:# zabbix_get -s 172.20.120.98 -k "perf_counter[\Processor(_Total)\% Processor Time]"

centos7告警示例:
方式一、remote command:即通过远程执行命令来实现告警(如重启服务、虚拟实例迁移等);
1、前提:在agent端需要完成如下配置:
(1)、zabbix用户有所需要的管理权限;基于sudo授权;
# usermod -s /bin/bash zabbix
# visudo /etc/sudoers
zabbix ALL=(ALL) NOPASSWD: ALL
1)Defaults requiretty,修改为#Defaults requiretty,表示不需要控制终端;
2)Defaults requiretty,修改为Defaults:nobody   !requiretty,表示仅nobody不需要控制终端;
测试:# su - zabbix -c "sudo systemctl restart httpd.service"
(2)、agent进程要允许执行远程命令;
vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1,LogRemoteCommands=1;

2、在web gui下配置action;如图

方式二:发送告警邮件;
1、在zabbix-server端,安装mailx并配置发件人信息
# yum install mailx -y
# vim /etc/mail.rc           在文末添加发件人信息如下
set [email protected]
set smtp=smtp.163.com set
smtp-auth-user=username set
smtp-auth-password=yourpassword
set smtp-auth=login

2、创建所需的alert脚本并赋予执行权限;其脚本放置路径在/etc/zabbix/zabbix_server.conf定义,默认为AlertScriptsPath=/usr/lib/zabbix/alertscripts
# vim /usr/lib/zabbix/alertscripts/sendmail.sh
#!/bin/bash
contact=$1
subject=$2
body=$3
echo "$body" | mail -s "$subject" "$contact"
# chmod +x /usr/lib/zabbix/alertscripts/sendmail.sh

3、在web gui中配置media,并设置user,最后在action中引用来实现告警邮件的发送


原文地址:http://blog.51cto.com/11476314/2159637

时间: 2024-10-10 21:55:46

运维之监控zabbix的相关文章

自动化运维工具之Zabbix分布式监控应用(五)

分布式监控概述proxy and nodeZabbix常用3种架构-->Server-agent-->Server-Node-agent-->Server-Proxy-agent Zabbix能高效地监控分布式IT架构在大型环境中Zabbix提供两种解决方案-->使用代理(proxy)-->使用节点(node)Proxy or Node?-->代理(proxy)用于本区域数据收集,并将数据发送给server-->节点(node)提供完整的Zabbix server

自动化运维工具之Zabbix服务器监控基本应用详解(一)

Zabbix基本概述:Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.它能监视各种网络参数,保证服务器系统的安全运营:并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题. zabbix由zabbix server与可选组件zabbix agent构成:zabbix server:可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux, Solaris, H

监控和安全运维 1.8 zabbix服务端安装

1. Zabbix简介基于web的开源软件,开源监控系统状态也可以监控网络设备.和nagios不同的是zabbix会把获取的数据保存在数据库中,所以zabbix需要有数据库支持 Zabbix还可以自动发现主机和网络设备支持邮件和短信告警Zabbix大多配置都可以在web界面配置完成官网http://www.zabbix.com/ 2. 安装zabbix rpm -ivh http://www.lishiming.net/data/attachment/forum/month_1211/epel-

自动化运维工具之Zabbix宏使用及用户自定义监控(三)

Zabbix宏是一种抽象(Abstraction),它根据一系列预定义的规则替换一定得文本模式,而解释器或编译器在遇到宏时会自动进行这一模式替换: Zabbix基于宏保存预设文本模式,并且在调用时将其替换为其中的文本: Zabbix有许多内置的宏,如{HOST.NAME}.{HOST.IP}.{TRIGGER.DESCRIPTION}.{TRIGGER.NAME}. {TRIGGER.EVENTS.ACK}等 Zabbix为了更强的灵活性,zabbix还支持在全局.模板或主机级别使用用户自定义宏

Linux监控和安全运维 2.0 zabbix配置邮件告警

1.发邮件启动postfix /etc/init.d/postfix start mail -s "test" 836503270@qq.com < /etc/inittab mailq 查看发送结果 2.配置发邮件文件 mkdir -p /home/zabbix/bin vim /home/zabbix/bin/baojing.sh #! /bin/bash echo "$3" |/bin/mail -s "$2" $1 chmod +x

自动化运维工具之Zabbix触发器_action动作及模板应用(二)

一个完善的监控系统需要一定的报警机制,什么时候告警警需要触发器,怎么告警,在什么情况下如何告警取决于action动作: 创建触发器(trigger) **"监控项"仅负责收集数据,而通常收集数据的目的还包括在某指标对应的数据超出合理范围时给相关人员发送告警信息,"触发器"正是用于为监控项所收集的数据定义阈值. **每个触发器仅能关联至一个监控项,但可以为一个监控项或同时使用多个触发器: 事实上,为一个监控项定义多个具有不用阈值的触发器,可以实现不用级别的报警功能 *

运维进阶:zabbix总结

零.可以忽略:这里具有强烈的个人色彩.也许大家都经历过以下这种:在网上找了很多教程,但是跟着别人的教程,却打开了不一样的页面,或者不知道他下一步的结果(结果)怎么来的,然而他们都是声称一遍跑通了,但是我在他们的评论下找到了很多都是出现报错或者根本无法实现. 其实答案很简单,因为你跟他的教程做是不同版本或者你的系统没有别人做的基础系统好.因为他不说基础系统安装了哪些插件或者软件,根本不可能根据他的教程实现.比如某某从入门到精通,然后最后发现根本就是一个安装教程,哪里是精通呀.如果单靠一篇博客就精通

【原创】运维基础之Zabbix(1)简介、安装、使用

zabbix 4 官方:https://www.zabbix.com/ 一 简介 Monitor anythingSolutions for any kind of IT infrastructure, services, applications, resources 监控一切 Enterprise-readyMature, enterprise-level platform to monitor large-scale IT environments 成熟的企业级监控平台 Zabbix is

运维工具大宝典之开源平台篇

from http://cio.it168.com/a2015/1128/1782/000001782714_all.shtml [IT168技术]在运维工具大宝典系列第一篇文章<运维工具大宝典之运维需求篇>中,云智慧对上云企业的运维需求进行的汇总,其中第6条“对开源的强烈需求”主要是来自运维人员,特别是技术大牛,他们喜欢一切尽在掌握的感脚,而这就需要开源运维工具. 目前流行的开源运维工具如Zabbix.Nagios等大部分来自国外,虽然这些开源产品功能非常强大,但对技术要求很高,而且缺少足够