运维之监控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 zabbix@localhost identified by ‘zabbix’;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@’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 from=username@163.com
set smtp=smtp.163.com set
set smtp-auth-user=username set
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中引用来实现告警邮件的发送
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/104583