监控系统及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:支持二次开发
整体工作架构图示例:
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
inventory:库存,感觉没啥用
status of zabbix(总体报告有多少监控项之类的) 还有其他可用性报告,审计日志,操作记录等
configuration这个比较重要,所有的设置操作都是在这里面进行的
管理员权限用户,宏定义,代理,这里设置
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
整个实验框架
通过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服务器端,收录到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的测试页,安装没有问题
安装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
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
可以正常进行通信
具体的网站上的监控项下一节
–
–
–
评论前必须登录!
注册