路漫漫其修远兮
吾将上下而求索

zabbix学习:服务搭建

监控系统及zabbix基础(01)

监控系统监控的项目:硬件、软件、业务
采样:sensor,每个监控的项目方法不一样
存储数据:历史数据、趋势数据;
展示:通过web来展示
报警:邮件,短信,微信,脚本等

被监控对象:主机、交换机、路由器、UPS、...

采样:周期性地获取某个关注指标相关的数据;

监控数据存储系统:
    历史数据:每次采样的结果,保存时长较短;
    趋势数据:聚合数据,保存时长较长周期内的数据;

    存储系统:
        关系型数据库:MySQL, PGSQL, Oracle, ...
        rrd:RoundRobin Database,假如只需要保存3个月的数据,数据库是个环形数据库,最老的数据会被最新的数据覆盖
        NoSQL:redis/mongo:时间序列数据库

报警:
    邮件、短信、微信、脚本

展示:
    WebGUI
    GUI 
    APP

开源监控项目:
    cacti, nagios; 
    zabbix
    ganglia

zabbix:
    Version: 2009:v1.8  2012:v2.0
    LTS:Long Time Support 	#要使用长期维护和支持的版本
        3.0	#长期支持的版本

    特性:
        数据采样方式:snmp, agent, ipmi, jmx; 
        报警:升级:步进
        数据存储:mysql/pgsql
        展示:php程序,支持实时绘图:graph, screen, slide show, map            

        支持监控模板
        网络自动发现

        分布式监控,将要监控的主机按功能或者按机房分类,每个组中有多个主机,这个组中有一个代理主机,代理主机收集组中所有主机的监控信息,打包后发送给master主机

        API:支持二次开发

整体工作架构图示例:

Image 001.png

zabbix程序组件:
    zabbix_server:服务端守护进程;
    zabbix_agentd:agent守护进程;
    zabbix_proxy:代理服务器,可选;
    zabbix_database:存储系统,MySQL/PGSQL
    zabbix_web: Web GUI 
    zabbix_get:命令行工具,测试手动向agent端发起数据采集请求(被动方式);
    zabbix_sender:命令行,测试手动向server端发送数据(主动方式);
    zabbix_java_gateway:java网关;

zabbix逻辑组件:
    主机组(host groups):当有多个功能的主机时,比如web服务器有5台,redis服务器有4台,可以将这两类服务器分别放到两个主机组中,便于管理,分类
    主机(hosts):每台服务器就是一个主机,主机上面可以有很多项监控项,这个主机还可能属于某一个主机组
    应用(applications)
    监控项(items):每个主机上面有很多的监控项,每个监控项负责收集一组监控数据,比如cpu使用率是一个监控项,磁盘使用率是一个监控项
    触发器(triggers):当某个监控项(比如cpu使用率)的监控值达到设定的阈值的时候,可以触发一个设定的动作,在这里设置触发动作需要的监控项的阈值,条件等
    事件(events):当某个监控项的对应的触发器的阈值达到后,会触发一个时间,可以在这个事件中看到具体的触发情况,什么时候触发的,时间多长等信息
    动作(actions):条件(conditions)和操作(operations),当某个条件达到时触发器响应,根据某个触发器的响应来执行一系列的操作,比如说重启服务,发送邮件,
        脚本等操作就是动作
    媒介(media):发送通知的通道;邮件等
    通知(notifications)
    远程命令(remote command)
    报警升级(escalation)
    模板(template):为了便于快速部署,可以将定义好的监控项,触发器,动作,媒介,图形等各种属性操作放到一个模板中,当有新的主机需要监控的时候,
        直接套用这个模板就可以快速实现监控的目的
    图形(graph):每个监控项的各个时间产生的数据可以绘制成一个图表,形象展示
    屏幕(screens):多个图形组成一个屏幕,一个屏幕可以放4张图形
    幻灯(slide show):一个屏幕放不下所要展示的图形的时候,可以设置幻灯片,每隔几秒显示一张屏幕

monitoring:
dashboard:仪表盘,在这里可以设置自己想看的图表,屏幕等,包括总览,zabbix系统状况等
problems,overview,web,latest data,triggers,graphs,screens,maps,discovery,it services

Image 001.jpg

inventory:库存,感觉没啥用

Image 002.jpg

status of zabbix(总体报告有多少监控项之类的) 还有其他可用性报告,审计日志,操作记录等

Image 003.jpg

configuration这个比较重要,所有的设置操作都是在这里面进行的

Image 004.jpg

管理员权限用户,宏定义,代理,这里设置

Image 005.jpg

zabbix配置入门(02)

通过源码安装服务端

下面是zabbix-3.2.6版本的源码编译安装过程,源码可从自动初始化脚本中获取到。最新的版本关注zabbix官网

下载包zabbix-3.2.6,可从自动安装脚本获取,php,nginx使用自动安装脚本安装
yum -y install net-snmp-devel libssh2 libssh2-devel curl-devel libcurl
useradd -r -s /sbin/nologin zabbix 
./configure --prefix=/usr/local/zabbix_server --enable-server --enable-proxy --with-mysql --with-openssl --enable-agent --with-libcurl
make install 

mysql> create database zabbix character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on zabbix.* to 'zbxuser'@'127.0.0.1' identified by 'zbxpass';
Query OK, 0 rows affected (0.00 sec)

mysql -uroot -p zabbix < zabbix-3.2.6/database/mysql/schema.sql 
mysql -uroot -p zabbix < zabbix-3.2.6/database/mysql/images.sql 
mysql -uroot -p zabbix < zabbix-3.2.6/database/mysql/data.sql 

mkdir /var/log/zabbix
chown zabbix /var/log/zabbix
mkdir -p /usr/local/zabbix_server/run
chown zabbix /usr/local/zabbix_server/run

vim /usr/local/zabbix_server/etc/zabbix_server.conf
    LogFile=/var/log/zabbix/zabbix_server.log
    PidFile=/usr/local/zabbix_server/run/zabbix_server.pid
    DBHost=127.0.0.1
    DBName=zabbix
    DBUser=zbxuser
    DBPassword=zbxpass

cp -r zabbix-3.2.6/frontends/php/* /data/web/
chown -R www.www /data/web
cp zabbix-3.2.6/misc/init.d/fedora/core/zabbix_server /etc/init.d/
vim /etc/init.d/zabbix_server 
    BASEDIR=/usr/local/zabbix_server
chmod +x /etc/init.d/zabbix_*
chkconfig --add zabbix_server
chkconfig zabbix_server on
service zabbix_server restart

如果报找不到mysqlclient库,将编译的mysql的lib添加到动态链接配置
vim /etc/ld.so.conf
/usr/local/mysql/lib
ldconfig
vim /etc/sysconfig/iptables
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 10051 -j ACCEPT
service iptables restart

打开页面,根据提示来配置
登录帐号默认为Admin,密码zabbix

整个实验框架

Image 001.jpg

通过rpm包安装服务端

server的数据库配置
主机:192.168.175.11

[root@localhost ~]#yi mysql-server		
[root@localhost ~]#vim /etc/my.cnf
skip_name_resolve = ON
innodb_file_per_table = ON
mysql> create database zabbix charset 'utf8';
Query OK, 1 row affected (0.00 sec)

mysql> grant all on zabbix.* to 'zbxuser'@'192.168.175.%' identified by 'zbxpass';    
Query OK, 0 rows affected (0.00 sec)

mysql> grant all on zabbix.* to 'zbxuser'@'127.0.0.1' identified by 'zbxpass';    #为了本机的server端可以通过lo连接数据库
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

zabbix实验所需要的包都上传上去了,可在这里下载

zabbix-rpm包.zip

安装zabbix服务器端,收录到epel仓库中,但是只到2.2
注意:trousers这个包的版本必须大于0.3.12,否则server会出错
因为3.0是长期支持的版本,安装这个版本,下载地址:http://www.zabbix.com/download
centos6的系统:http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/
从官网下载rpm包,其他的组件如果需要,也装上,这里只装主包和get包,也可以将下载的rpm包生成一个yum源,可以使用yum命令来安装

[root@localhost ~/zabbix-3.0]#ll
total 9956
drwxr-xr-x 2 root root    4096 Mar 23 00:35 repodata
-rw-r--r-- 1 root root  325272 Mar 23 00:35 zabbix-agent-3.0.2-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  226624 Mar 23 00:35 zabbix-get-3.0.2-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  605752 Mar 23 00:35 zabbix-proxy-mysql-3.0.2-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  237208 Mar 23 00:35 zabbix-sender-3.0.2-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 1787888 Apr 20  2016 zabbix-server-mysql-3.0.2-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 5051436 Mar 23 00:48 zabbix-web-3.0.2-1.el6.noarch.rpm
-rw-r--r-- 1 root root    3880 Mar 23 00:51 zabbix-web-mysql-3.0.2-1.el6.noarch.rpm

服务端安装
[root@localhost ~/zabbix-3.0]#yi ./zabbix-get-3.0.2-1.el6.x86_64.rpm
[root@localhost ~/zabbix-3.0]#yi ./zabbix-server-mysql-3.0.2-1.el6.x86_64.rpm

[root@localhost ~/zabbix-3.0]#rpm -ql zabbix-server-mysql
/etc/init.d/zabbix-server
/etc/logrotate.d/zabbix-server
/etc/zabbix/zabbix_server.conf
/usr/lib/zabbix/alertscripts
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_server_mysql
/usr/share/doc/zabbix-server-mysql-3.0.2
/usr/share/doc/zabbix-server-mysql-3.0.2/AUTHORS
/usr/share/doc/zabbix-server-mysql-3.0.2/COPYING
/usr/share/doc/zabbix-server-mysql-3.0.2/ChangeLog
/usr/share/doc/zabbix-server-mysql-3.0.2/NEWS
/usr/share/doc/zabbix-server-mysql-3.0.2/README
/usr/share/doc/zabbix-server-mysql-3.0.2/create.sql.gz
/usr/share/man/man8/zabbix_server.8.gz
/var/log/zabbix
/var/run/zabbix

导入数据库脚本,以生成数据库环境:将安装包上自带的生成各种表的数据库导入到mysql数据库中,这个mysql脚本中没有创建zabbix数据库的脚本,所以上面要手动创建数据库

[root@localhost ~]#cp /usr/share/doc/zabbix-server-mysql-3.0.2/create.sql.gz .
[root@localhost ~]#gzip -d create.sql.gz 
[root@localhost ~]#ls
create.sql  
[root@localhost ~]#mysql -uzbxuser -h127.0.0.1 -pzbxpass zabbix < ./create.sql     #指明以哪个用户,哪个密码,
    连接到哪个ip的mysql的哪个库中导入数据
[root@localhost ~]#mysql
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
| zabbix             |
+--------------------+
4 rows in set (0.00 sec)

mysql> use zabbix;
Database changed
mysql> show tables;    #好多表
+----------------------------+
| Tables_in_zabbix           |
+----------------------------+
| acknowledges               |
| actions                    |
| alerts                     |
| application_discovery      |

zabbix server配置启动

配置段:zabbix-server和zabbix-agent端采用zabbix协议进行通信,并且是明文的,
如果需要加密的话要配置里面的tls段,需要配置公私钥等信息。

[root@localhost /etc/zabbix]#grep "^######" zabbix_server.conf 
############ GENERAL PARAMETERS #################
############ ADVANCED PARAMETERS ################
####### LOADABLE MODULES #######
####### TLS-RELATED PARAMETERS #######

通用配置相关的参数:
ListenPort=10051    #服务端默认监听的端口
SourceIP=	#如果服务端有多个ip,指定哪个ip去连接agent端,只有一个ip不用管
LogType=file    #以文件格式存放日志
LogFile=/var/log/zabbix/zabbix_server.log	
LogFileSize=0	  #文件大小,超过大小后,日志滚动,日志过大会自动覆盖前面的日志
DebugLevel=3  #日志级别

DBHost=127.0.0.1	#数据库相关的配置,上面授权了lo网卡,可以通过这个ip访问
DBName=zabbix
DBUser=zbxuser
DBPassword=zbxpass
DBPort=3306
DBSocket=/var/lib/mysql/mysql.sock    #通过sock文件通信更高效(服务端和数据库在一个主机,通过lo网卡通信),mysql的socket文件,根据mysql的配置文件查看在哪里

[root@localhost /etc/zabbix]#service zabbix-server start
Starting Zabbix server:                                    [  OK  ]
[root@localhost /etc/zabbix]#ss -tnl
State      Recv-Q Send-Q                 Local Address:Port           Peer Address:Port 
LISTEN     0      128           :::10051                            :::*     
LISTEN     0      128           *:10051                             *:*

zabbix web配置:

这里有坑
zabbix 3.0需要php5.4.0以上的版本,而centos6默认的php版本是5.3.3,启动web界面的时候会显示服务器错误:500,需要升级php到5.4以上的版本解决。

访问:http://192.168.175.11/phpinfo.php 可以看到php的测试页,安装没有问题

Image 001.jpg

安装web GUI,也就是zabbix的php文件包
[root@localhost ~/zabbix-3.0]#yi ./zabbix-web-3.0.2-1.el6.noarch.rpm ./zabbix-web-mysql-3.0.2-1.el6.noarch.rpm
[root@localhost /etc/nginx/conf.d]#rpm -ql zabbix-web
/etc/zabbix/web
/etc/zabbix/web/maintenance.inc.php
/etc/zabbix/web/zabbix.conf.php
/usr/share/doc/zabbix-web-3.0.2
/usr/share/doc/zabbix-web-3.0.2/AUTHORS
/usr/share/doc/zabbix-web-3.0.2/COPYING

网页的路径:/usr/share/zabbix,为了能够识别zabbix文件,将nginx配置文件的root设置为这个路径
[root@localhost ~]#vim /etc/nginx/conf.d/default.conf 
root    /usr/share/zabbix;
[root@localhost ~]#nginx -s reload
对于apache应用程序:为了能够让httpd识别,zabbix自己在httpd的配置文件中设置了zabbix的访问路径,在3.0.2的centos7的包中才有

配置php时区参数的两种方法都可以
(a) php.ini 
        date.timezone = Asia/Shanghai,然后重启php-fpm服务
(b) /etc/httpd/conf.d/zabbix.conf
	 php_value date.timezone Asia/Shanghai

	 

修改zabbix连接mysql配置文件(此步骤也可以不用,直接在web界面配置)
[root@localhost /usr/share/zabbix/conf]#cp zabbix.conf.php.example zabbix.conf.php
[root@localhost /usr/share/zabbix/conf]#vim zabbix.conf.php
<?php
// Zabbix GUI configuration file.
global $DB;

$DB['TYPE']				= 'MYSQL';
$DB['SERVER']			= '127.0.0.1';
$DB['PORT']				= '3306';
$DB['DATABASE']			= 'zabbix';
$DB['USER']				= 'zbxuser';
$DB['PASSWORD']			= 'zbxpass';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA']			= '';

$ZBX_SERVER				= '127.0.0.1';
$ZBX_SERVER_PORT		= '10051';
$ZBX_SERVER_NAME		= '';

$IMAGE_FORMAT_DEFAULT	= IMAGE_FORMAT_PNG;
?>

安装后生成的配置文件:/etc/zabbix/web/zabbix.conf.php,将属主属组改为nginx,可以对此目录进行操作

[root@localhost /etc/zabbix]#chown -R nginx.nginx web/

        

(5)访问web

20170324-6891182648.jpg 

Image 002.jpg

zabbix agent安装配置:agent端:192.168.175.14

(1)安装

[root@localhost ~]#ls
zabbix-agent-3.0.2-1.el6.x86_64.rpm  zabbix-sender-3.0.2-1.el6.x86_64.rpm
[root@localhost ~]#yi *

程序环境:生成的文件
配置文件:/etc/zabbix/zabbix_agentd.conf
Unit File:zabbix-agent.service

(2)配置

[root@localhost /etc/zabbix]# grep -i "^####" zabbix_agentd.conf 
	############ GENERAL PARAMETERS #################
	##### Passive checks related   被动监控相关的配置,被动指的是客户端是被动的
	##### Active checks related     主动监控相关的配置,主动指的是客户端是主动的
	############ ADVANCED PARAMETERS #################
	####### USER-DEFINED MONITORED PARAMETERS #######  用户自定义的监控参数,UserParamter
	####### LOADABLE MODULES #######
	####### TLS-RELATED PARAMETERS #######
	
	##### Passive checks related
		Server=IP1,IP2,...	#访问控制,允许哪个ip的主机来进行数据采集
		Server=192.168.175.11
		
		ListenPort=10050	#当作为被动模式时,监听在哪里等待服务端的请求
		ListenIP=0.0.0.0
		StartAgents=3	#预生成几个子进程,
	
	##### Active checks related
		ServerActive=IP1,IP2,...
		ServerActive=192.168.175.11

		Hostname=HOST-ID	#用于在zabbix服务端识别该主机的名字,应该可以随便写
		Hostname=redis-14

(3)启动服务,监听端口:10050

[root@localhost /etc/zabbix]#service zabbix-agent start
Starting Zabbix agent:                                     [  OK  ]
[root@localhost /etc/zabbix]#ss -tnl
State      Recv-Q Send-Q      Local Address:Port     Peer Address:Port 
LISTEN     0      128         *:56000                             *:*     
LISTEN     0      128         :::10050                            :::*     
LISTEN     0      128         *:10050                             *:*

(4)在server端利用测试工具手动从agent端请求一个数据报文,检查是否能够正常接收到agent端的数据报文

主机:192.168.175.11进行操作

[root@localhost ~]#zabbix_get -s 192.168.175.14 -k "system.cpu.switches"
878928
[root@localhost ~]#zabbix_get -s 192.168.175.14 -k "system.cpu.switches"
879040
[root@localhost ~]#zabbix_get -s 192.168.175.14 -k "net.if.in[eth0,packets]"
10059
[root@localhost ~]#zabbix_get -s 192.168.175.14 -k "net.if.in[eth0,packets]"
10064

可以正常进行通信

具体的网站上的监控项下一节

未经允许不得转载:江哥架构师笔记 » zabbix学习:服务搭建

分享到:更多 ()

评论 抢沙发

评论前必须登录!