zabbix的安装(一)监控os资源:内存,cpu,io,负载,带宽
一、Linux下开源监控系统简单介绍
1)cacti:存储数据能力强,报警性能差
2)nagios:报警性能差,存储数据仅有简单的一段可以判断是否在合理范围内的数据长度,储存在内存中。比如,连续采样数据存储,有连续三次不在合理范围内的数据就报警
3)zabbix:结合上面两种工具的优点,又可以存储数据,又可以报警。
Zabbix是一个基于Web界面提供分布式系统监视及网络监视功能的企业级开源解决方案。借助Zabbix可很轻松地减轻运维人员们繁重的服务器管理任务,实现业务系统持续运行。
下面会逐步介绍Zabbix分布式监控系统的部署及使用记录
二、zabbix特性
1)数据采样:通过snmp、ssh、telnet、agent、ipmi、jmx等通道采集被监控主机的数据。可以自定义检测机制和自定义时间间隔
2)实时绘图:展示,读取数据绘图,支持graph,map,screen,幻灯片(slide show)
3)告警:(升级告警,规定时间内内解决不了的事情往上传)
4)数据存储:数据库有mysql,pgsql,时间序列数据库等等
三、程序构成
1)zabbix_server:服务端守护进程
2)zabbix_agented:agent端守护进程
3)zabbix_proxy:代理服务器(可选,分布式才用到)
4)zabbix_get:命令行工具,手动测试数据采集
5)zabbix_sender:命令行工具,运行于agent端,手动向server端发送数据
6)zabbixjavagateway:java网关
Zabbix的监控流程可以简单描述为:
数据采集-->数据存储-->数据分析-->数据展示-->监控报警
其中:
数据采集:Zabbix通过SNMP、Agent、ICMP、SSH、IPMI等进行数据采集
数据存储:Zabbix存储在MySQL上,也可以存储在其他数据库
数据展示:web界面展示、(移动APP、java_php开发一个web界面也可以)
数据报警:邮件报警、微信报警、短信报警、报警升级机制
Zabbix的监控配置流程可以简单描述为:
告警是由一系列的流程组成,首先是触发器达到阀值,产生一个事件,接下来由Action对事件信息进行处理,其中包括两部分:
第一部分是发送消息,即将告警信息发送给用户。
第二部分是执行命令,即将事件用命令进行处理,达到对事件故障自动尝试恢复的效果。
Host groups(主机组)-->Hosts(主机)-->template(模板)-->Applications(监控项组)-->Items(监控项)-->graph(图形) -->screen (图形分组)-->Triggers(触发器)-->Event(事件)-->Actions(处理动作)-->Media types(告警升级|1.执行远程命令2.发送告警邮件)-->User groups(用户组)-->Users(用户)-->Medias(告警邮件)
在实际生产使用的时候,Items、Trigger、Graph采用模板来进行监控,模板特点就是可以重复的事情一次完成,修改了模板等于修改了所有调用此模板的主机,这样可解放运维的双手.
Graph不是必需的,因为没有配置图形,数据获取并不影响,获取数据是Items的功能。但是对于使用ZabbixWeb界面用户来说,没有图形等于没有数据,因此重要的Items必须添加必要的图形以做可视化展示。如果想集中查看图形,可以通过screen功能。
四、zabbix主动模式和被动模式
zabbix使用proxy代理插件的好处:
一方面可以监控不可达的远程区域;
另一方面当监控项目数以万计的时候使用代理可以有效分担zabbix server压力,也简化分布式监控的维护。
说明:
主动、被动模式都是相对于proxy来说的。
proxy主动发送数据就是主动模式;
proxy等待server的请求,再发送数据就是被动模式。
因为主动模式可以有效减轻zabbix server压力,需要监控的东西很多时一定要把监控模式更改为主动监控
被动模式流程,被动模式一定要记得设置Server = ServerIP
被动模式工作流程:
Server 打开一个TCP连接
Server发送一个key 为agent.
ping
Agent接受这个请求,然后响应< HEADER >< DATALEN >
Server对接受到的数据进行处理
TCP连接关闭
主动模式流程,主动模式一定要记得设置ServerActive=ServerIP
Agent向Server建立一个TCP连接
Agent请求需要检测的数据列表
Server响应Agent,发送一个Items列表
Agent允许响应
TCP连接完成本次会话关闭
Agent开始周期性地收集数据
1)配置好IP、DNS 、网关,确保使用远程连接工具能够连接服务器
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面
添加好之后防火墙规则如下所示:
---------------------------------------------------------------------------------------------------
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
---------------------------------------------------------------------------------------------------
[root@Zabbix-server ~]# /etc/init.d/iptables restart
3)关闭SELINUX
[root@Zabbix-server ~]# vim /etc/selinux/config
#SELINUX=enforcing
#SELINUXTYPE=targeted
SELINUX=disabled
[root@Zabbix-server ~]# reboot //重启后永久生效,或者使用setenforce 0临时生效
4)系统约定
软件源代码包存放位置:/usr/local/src
源码包编译安装位置:/usr/local/软件名字
此处参照:nginx1.10.3+php5.6+mysql5.7.0
测试完成后,确保nginx,php,mysql都能正常启动,能够访问php页面
下面正式配置zabbix-3.0.3
环境说明
zabbix-server:192.168.1.1 #zabbix的服务端(若要监控本机,则需要配置本机的Zabbix agent)
zabbix-agent:192.168.1.2 #zabbix的客户端(被监控端,需要配置Zabbix agent)
一、zabbix-server端的操作记录(192.168.1.1)
1 创建zabbix运行的用户
2 安装libcurl和net-snmp
3 安装Fping
4 安装zabbix server
5 Zabbix Server配置与启动
6 Nginx配置 和 php.ini配置
groupadd zabbix
useradd -g zabbix zabbix
yum -y install libcurl net-snmp
cd /usr/local/src
wget -c http://fping.org/dist/fping-3.4.tar.gz
./configure
make && make install
chown root:zabbix /usr/local/sbin/fping
chown 4710 /usr/local/sbin/fping
安装zabbix server
wget -c http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.0.3/zabbix-3.0.3.tar.gz
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --enable-java
编译时最好带上--enable-java这个参数,方便以后监控tomcat用
zabbix server配置和启动
创建zabbix数据库和mysql用户
>create schema zabbix character set utf8;
>create user 'zabbix'@'%' identified by '123456';
>grant all on zabbix.* to 'zabbix'@'%';
导入Zabbix初始数据:
cd /usr/local/src/zabbix-3.0.3/database/mysql
这个下面有三个sql的文档:data.sql images.sql schema.sql
登录mysql,进行zabbix初始数据导入:
use zabbix;
set sql_log_bin=0;
source ./schema.sql;
source ./images.sql;
source ./data.sql;
set sql_log_bin=1;
编辑/usr/local/zabbix/etc/zabbix_server.conf:
[root@Zabbix-server ~]#vim /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/usr/local/zabbix/logs/zabbix_server.pid
DBHost=192.168.1.1
DBName=zabbix
DBUser=zabbix
DBPassword=123456
DBPort=3306
FpingLocation=/usr/local/sbin/fping
该配置文件定义了php的安装的log的目录,用户名,密码端口,数据库名称
从安装目录拷贝zabbix_server脚本,并编辑:
[root@Zabbix-server ~]# cd /usr/local/src
[root@Zabbix-server src]# cd zabbix-3.0.3
[root@Zabbix-server zabbix-3.0.3]# cp misc/init.d/fedora/core5/zabbix_server /etc/init.d/
[root@Zabbix-server zabbix-3.0.3]# mkdir -p /usr/local/zabbix/logs
[root@Zabbix-server zabbix-3.0.3]# chown -R zabbix:zabbix /usr/local/zabbix
[root@Zabbix-server zabbix-3.0.3]# vim /etc/init.d/zabbix_server
[root@Zabbix-server zabbix-3.0.3]# cat /etc/init.d/zabbix_server
...
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_server"
CONF_FILE="/usr/local/zabbix/etc/zabbix_server.conf"
...
start() {
...
daemon $ZABBIX_BIN -c $CONF_FILE
...
}
调整防火墙规则(开放端口10051):
[root@Zabbix-server ~]# vim /etc/sysconfig/iptables
...
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10051 -j ACCEPT
...
[root@Zabbix-server ~]# /etc/init.d/iptables restart
启动Zabbix Server:
[root@Zabbix-server ~]# service zabbix_server start
#也可以直接/usr/local/zabbix/sbin/zabbix_server方式启动
配置开机自动启动:
[root@Zabbix-server ~]# chkconfig --add zabbix_server
[root@Zabbix-server ~]# chkconfig --level 35 zabbix_server on
Zabbix的Web前端
在安装目录将frontends拷贝到指定的web root:
[root@Zabbix-server ~]# mkdir -p /data/www/zabbix
[root@Zabbix-server ~]# cd /usr/local/src
[root@Zabbix-server src]# cd zabbix-3.0.3
[root@Zabbix-server zabbix-3.0.3]#cp -a frontends/php/* /data/www/zabbix/
[root@Zabbix-server zabbix-3.0.3]# chown -R www:www /data/www/zabbix
Nginx配置:
[root@Zabbix-server ~]# cat /usr/local/nginx/conf/vhost/zabbix.conf
server {
listen ;
server_name zabbix.zrwm.com; location / {
root /data/www/zabbix;
index index.php index.html index.htm ;
} error_page /50x.html;
location = /50x.html {
root html;
} location ~ \.php$ {
root /data/www/zabbix;
fastcgi_pass 127.0.0.1:;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
} }
php.ini配置:
[root@Zabbix-server ~]# cat /usr/local/php5/etc/php.ini
...
memory_limit = 128M
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
session.auto_start = 0 ; //必须为0
mbstring.func_overload = 0
date.timezone = Asia/ShangHai
注:PHP需要至少开启扩展:gd,bcmath,ctype,libXML,xmlreader,xmlwriter,session,sockets,mbstring,gettext,mysql
如下,查看是否包括了上面所提到的扩展模块
[root@Zabbix-server ~]# /usr/local/php5/bin/php -m
[PHP Modules]
bcmath
Core
ctype
curl
date
dom
ereg
fileinfo
filter
ftp
gd
gettext
hash
iconv
json
libxml
mbstring
mcrypt
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvsem
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
zip
zlib
访问Web界面http://zabbix.zrwm.com,进行相关web配置,配置完成后使用默认用户admin(密码:zabbix)登陆即可.
在登录web界面后出现一些可能的报错
)PHP option "max_execution_time" 120 300 failed
# vim /data/php/lib/php.ini
max_execution_time = //修改为300 然后重启nginx(若是apache+php,就重启apache) )PHP bcmath off failed
解决办法:安装php的bcmath扩展
# yum install *bcmath* --skip-broken
# cd /data/software/php-5.6./ext/bcmath/
# /data/php/bin/phize
# ./configure --with-php-config=/data/php/bin/php-config
# make && make install
# vim /data/php/lib/php.ini 添加下面内容
.....
extension=/data/php/lib/php/extensions/no-debug-zts-/bcmath.so 然后重启php(若是apache+php,就重启apache) )about always-populate-raw-post-data must be set - 的问题:
PHP option "always_populate_raw_post_data" on off failed
解决办法:
# vim /data/vhosts/zabbix/include/classes/setup/CFrontendSetup.php 添加下面这一行
.......
public function checkPhpAlwaysPopulateRawPostData() {
$current = ini_get('always_populate_raw_post_data');
$current = -; //添加这一行内容 return [
'name' => _s('PHP option "%1$s"', 'always_populate_raw_post_data'),
'current' => ($current != -) ? _('on') : _('off'),
'required' => _('off'),
'result' => ($current != -) ? self::CHECK_FATAL : self::CHECK_OK,
'error' => _s('PHP option "%1$s" must be set to "%2$s"', 'always_populate_raw_post_data', -)
];
二、zabbix客户端的操作记录(192.168.1.2)
安装Zabbix,配置Zabbix agent:
[root@bastion-IDC ~]# cd /usr/local/src/
[root@bastion-IDC src]# wget -c wget -c http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.0.3/zabbix-3.0.3.tar.gz/download
[root@bastion-IDC src]# cd zabbix-3.0.3
[root@bastion-IDC zabbix-3.0.3]# ./configure --prefix=/usr/local/zabbix --enable-agent
[root@bastion-IDC zabbix-3.0.3]# make && make install
[root@bastion-IDC zabbix-3.0.3]# cp misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/
配置zabbix_agentd:
[root@bastion-IDC ~]# groupadd zabbix
[root@bastion-IDC ~]# useradd -g zabbix zabbix
[root@bastion-IDC ~]# mkdir -p /usr/local/zabbix/logs
[root@bastion-IDC ~]# chown zabbix:zabbix -R /usr/local/zabbix/
[root@bastion-IDC ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
[root@bastion-IDC ~]# cat /usr/local/zabbix/etc/zabbix_agentd.conf
...
PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=192.168.1.1
ListenPort=10050
ServerActive=192.168.1.1
Hostname=192.168.1.2
[#在192.168.1.2本机的/etc/hosts里做主机映射:“ip hostname”][也可以设置公网ip]
Timeout=15
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
...
配置Zabbix Agent启动脚本:
[root@bastion-IDC ~]# cat /etc/init.d/zabbix_agentd
...
prog="Zabbix Agent"
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd"
CONF_FILE="/usr/local/zabbix/etc/zabbix_agentd.conf"
...
start() {
...
daemon $ZABBIX_BIN -c $CONF_FILE
...
}
...
开启防火墙端口10050:
[root@bastion-IDC ~]# cat /etc/sysconfig/iptables
...
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10050 -j ACCEPT
...
[root@bastion-IDC ~]# /etc/init.d/iptables restart
启动zabbix_agentd:
[root@bastion-IDC ~]# /etc/init.d/zabbix_agentd start
Starting Zabbix Agent: [ OK ]
配置开机自动启动:
[root@bastion-IDC ~]# chkconfig --add zabbix_agentd
[root@bastion-IDC ~]# chkconfig --level 35 zabbix_agentd on
测试下zabbix agent是否正常工作:
[root@bastion-IDC ~]# /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf -t system.uptime
system.uptime [u|68301]
登录zabbix,先在“配置”-“主机”里添加主机监控,监控os资源:内存,cpu,io,负载,带宽等
注意:下图中的“主机名称”要和zabbix_agentd.conf文件中设置的“Hostname”后面的名称一致!
配置一段时间,看效果图
在zabbix界面中,默认要查看多个主机的监控数据时需要不停的切换。其实可以在一个页面中批量查看多个主机的监控项的数据,这就需要使用Screen方法(Screen 的方法是将每个item的graph放到一个屏幕上,即在聚合图形里选择要放在一个screen里的图形,事先创建一个拓扑图。注意选择磁盘空间监控项的图形时,图形样式调整“层积“显示),但是看起来不够明晰;最好是将各机器的同一item放到同一个graph里。比如一个Nginx的组里有10台机器,将这10台机器的内存使用率放到一个graph里,方便在测试时查看。
在zabbix的前端要创建此类的graph只能通过手工一个一个的加,不能创建此类的templates。在网上有批量创建Screen的针对API的python脚本。
-------------------------------------------------------------------------------------------------------------------------
zabbix监控获取数据的途径有简单检查,zabbix agent,snmp。可以通过zabbix agent获取客户机的cpu、内存、磁盘io等监控数据;但是对于交互机(打印机,路由器等网络设备)的监控就要用到snmp协议,snmp通过特定的oid值来获取对应的数据。交换机需要开启snmp协议,通过snmpwalk 可以抓取到数据就可以了(snmpwalk -v 2c -c public *.*.*.*)
------------------------------------------------------------------------------------------------------------------------
使用zabbix的ICMP Ping模版实现对客户端网络状态的监控
如上正确安装及配置fping,然后在服务端进行zabbix用户测试fping命令
[root@Zabbix-server ~]# /usr/local/sbin/fping www.baidu.com
www.baidu.com is alive //说明命令返回成功。
接着在zabbix监控界面里添加主机设置,并选择添加模版template icmp ping。然后点开这个模块,可以选择想要的监控项的图形
-----------------------------------------Zabbix监控项CPU Load数值与服务器上uptime的实际值不符合--------------------------------------
现象说明:
zabbix监控项cpu load的数值跟被监控机本地uptime显示的负载值对不上,前者数值小于后者。
产生原因:
现在服务器的cpu基本都是多核的,但zabbix监控项cpu load参数里默认显示的是一个核心的参数,
而不是总和,所以两者数值对不上。
解决办法:
"配置"->"模板"->"Template OS Linux"->"监控项"->"Processor load (1 min average per core)"
点开,将system.cpu.load[percpu,avg1]改为system.cpu.load[all,avg1],即将percpu改为all。
其余5 min和15 min的load监控项的改法一样!保存等几分钟即可显示。
-----------------------------------添加网络监控项的触发器(报警设置)--------------------------------
注意:
网络监控的默认单位是bps,监控报警一般看的是Mbps,需要转为为bps。比如超过8M报警,那触发器的值即为8*1024*1024=8388608
zabbix的安装(一)监控os资源:内存,cpu,io,负载,带宽的更多相关文章
- VPS性能测试:CPU内存,硬盘IO读写,带宽速度,UnixBench和压力测试
现在便宜的VPS主机越来越多了,一些美国的VPS主机甚至给出1美元一月的VPS,堪比虚拟主机还要便宜,巨大的价格优势吸引不少人购买和使用,而近些年来国内的主机商也开始意识到便宜的VPS对草根站长的诱惑 ...
- 监控linux多个cpu的负载情况
监控linux多个cpu的负载情况 top然后按数字键1
- 如何在Zabbix上安装MySQL监控插件PMP
PMP,全称是Percona Monitoring Plugins,是Percona公司为MySQL监控写的插件.支持Nagios,Cacti.从PMP 1.1开始,支持Zabbix. 下面,看看如何 ...
- zabbix的安装部署及自定义监控的实现
此篇感谢我的小师傅. 1. Zabbix主要功能和优劣势说明 1. Zabbix主要功能和优劣势说明 1.1 Zabbix主要功能: 1)Application monitoring 应用监控 数据库 ...
- CentOS 6.4编译安装和部署Zabbix 2.0版本监控(中文)
[一].zabbix简介 zabbix是一个基于web界面的提供分布式系统监视以及网络监视功能的企业级开元解决方案 zabbix由2部分构成,zabbix_server和可选组件zabbix_agen ...
- zabbix使用自定义脚本监控内存
我这里的脚本是监控centos7系统的内存.centos7系统的内存如何查看我之前的博客都是有的.这里直接写了监控步骤 1.首先是编写脚本. #!/bin/bash mem_total(){ TOTA ...
- 转:ZABBIX监控H3C设备的CPU和内存使用率
由于最近监控的H3C路由器经常出现死机现象,SNMP获取不到数据,后面检查发现是CPU使用率过高,直接导致无法处理SNMP请求,所以需求来了,怎样通过SNMP监控H3C路由器的CPU和内存使用率? ...
- zabbix容器化安装及监控docker应用
一.zabbix agent2 介绍 从Zabbix 4.4之后,官方推出了Zabbix Agent 2,意味着zabbix 不在只是物理机监控的代名词,现在你可以使用Go为Zabbix编写插件,来监 ...
- 运用Zabbix实现内网服务器状态及局域网状况监控(4) —— Zabbix客户端安装
1. 创建用户 [root@zabbix ~]# groupadd zabbix [root@zabbix ~]# useradd -g zabbix zabbix 2. 安装zabbix_3.2 ...
随机推荐
- .aspx IIS发布404.17时候的问题
.aspx IIS发布404.17时候的问题 在发布aspx的时候遇到问题利用网上的cmd加入注册表没有效果 在加入了MIME中加入.aspx和application/.aspx之后却变成了下载文件 ...
- jsp实现账户登录、注册!
jsp连接mysql数据库进行账户登录验证和账户注册 ~jsp: Login.jsp .LoginCl.jsp.Welcome.jsp.Register.jsp.login.css login.css ...
- uvm_env——UVM大环境(UVM Environment )
1 What is uvm_env? uvm_env is used to create and connect the uvm_components like driver, monitors , ...
- Android学习总结(十七) ———— Handler 的使用
一.基本概念 handler通俗一点讲就是用来在各个线程之间发送数据的处理对象.在任何线程中,只要获得了另一个线程的handler,则可以通过 handler.sendMessage(messag ...
- COGS 2280. [HZOI 2015]树白黑
★★ 输入文件:B_Tree.in 输出文件:B_Tree.out 简单对比时间限制:2 s 内存限制:512 MB [题目描述] 给定一棵有根树,树根为1,一开始这棵树所有节点均为白 ...
- 博客高亮代码及使用OpenLiveWriter修改之前博客
简述: 最近查阅前辈资料的时候,看到写的博客很有条理,回头看下自己的乱做麻花,然后来时研究: 他们的代码看起来很漂亮然后我就查资料,在网页版上一直没法出来像他们的格式,后查资料看来的使用客户端工具才 ...
- Ubuntu14.04 32位安装Youcompleteme
前一段时间在ubuntu16.04 64位上安装了vim插件Youcompleteme,花了两三天才弄好.今天在ubuntu14.04 32位上安装同样的插件,才知道之前所做的安装原来是多么的简单.今 ...
- 数据库-SQL语法:GROUP BY与HAVING
注意:select 后的字段,必须要么包含在group by中,要么包含在having 后的聚合函数里. 1. GROUP BY 是分组查询, 一般 GROUP BY 是和聚合函数配合使用. grou ...
- nyoj-586-疯牛|poj-2456-Aggressive cows
http://acm.nyist.net/JudgeOnline/problem.php?pid=586 http://poj.org/problem?id=2456 解题思路:最大化最小值二分答案即 ...
- Dubbo中的监控和管理
一.Dubbo中的监控 1.原理 原理:服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心. 2.搭建监控服务 3.修改配置文件 修改注册中心的地址: 注意:这个 ...