• 常见开源监控软件有cacti、nagios、zabbix、smokeping、open-falcon等等php
• cacti、smokeping偏向于基础监控,成图很是漂亮mysql
• cacti、nagios、zabbix服务端监控中心,须要php环境支持,其中zabbix和cacti都须要mysql做为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而能够成图linux
• open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究ios
• C/S架构,基于C++开发,监控中心支持web界面配置和管理nginx
• 单server节点能够支持上万台客户端,虽然支持上万台,但监控的项目过多,采集数据的量太大,仍是会致使zabbix效率下降;因此,当服务器大到必定规模的时候,就须要对zabbix进行优化。针对该问题,能够增长一些代理点,这些代理点充当server,替代server去采集数据,最终获得分析结果再汇报给主服务端serverweb
• 最新版本3.4,官方文档https://www.zabbix.com/manualssql
• 5个组件数据库
一、zabbix-server 监控中心,接收客户端上报信息,负责配置、统计、操做数据vim
二、数据存储 存放数据,好比mysql浏览器
三、web界面 也叫web UI,在web界面下操做配置是zabbix简单易用的主要缘由
四、zabbix-proxy 可选组件,它能够代替zabbix-server的功能,减轻server的压力。有时候,服务器分布在多个机房里,每一个机房的服务器之间都是一个单独的内网,这时候就能够在某一个局域网里搭建一个 zabbix-proxy ,用这台 proxy 去监控局域网里的机器
五、zabbix-agent 客户端软件,负责采集各个监控服务或项目的数据,并上报
zabbix监控流程图
准备两台机器,一台做为服务端(监控中心),另一台做为它的客户端。
zabbix能够直接yum安装,但须要安装epel扩展源,在epel扩展源里面安装的zabbix的版本,最高是2.2版本,比较旧,因此使用官方提供的repo源,实验中使用的zabbix3.2版本
首先访问官方下载地址,选择对应的版本,并提供对应的发行版,下图所示,复制该连接
两台机器均须要下载
wget https://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
实际上安装rpm包至关于安装了一个yum源仓库
rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
查看/etc/yum.repos.d/目录下面会看到增长了一个zabbix.repo
[root@linux-5 ~]# ls /etc/yum.repos.d/ CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo epel-testing.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo epel.repo zabbix.repo
服务端与客户端安装的内容不一样,在服务端是须要安装这些全部的包,而在客户端仅仅须要安装 zabbix-agent 包便可
服务端 yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql 客户端 yum install -y zabbix-agent
zabbix-agent 客户端软件;
zabbix-get 服务端用的一个工具,这个工具能够经过命令行的形式得到客户端某些监控项目的数据;
zabbix-server-mysql 这个是服务端跟mysql打交道相关的组件;
zabbix-web webUI ,web界面;
zabbix-web-mysql web和mysql相关组件;
zabbix 是基于php环境的,也就是说用的是php 的代码编写的web界面,也就说这个zabbix 至关于一个站点;
安装mysql,若是mysql以前没有安装的话,可根据lamp那一章的mysql安装方法安装mysql
vim /etc/my.cnf 在[mysqld]下增长字符集 character_set_server = utf8
若是不设置字符集,那么zabbix的web界面,设置成中文的话,可能就会出现乱码
修改完mysql的配置文件后,重启mysql服务
/etc/init.d/mysqld restart
create database zabbix character set utf8; //建立库同时指定字符集为utf-8
grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by '123456';
这个用户是须要让web(php)代码链接mysql的,监控中心zabbix mysql服务,启动的前提就是要链接mysql;客户端采集了数据,须要把这些数据传递给服务端,那么服务端怎么把这些数据写入到MySQL去,这时就涉及到了mysql 的用户,涉及到了mysql 的数据库;用哪个用户,去写入那一个库。
退出mysql的命令行后,导入原始的数据,若缺乏这些数据,zabbix就没有办法工做,就没有办法在web界面下展示给咱们
[root@linux-5 ~]# cd /usr/share/doc/zabbix-server-mysql-3.2.11/ [root@linux-5 zabbix-server-mysql-3.2.11]#
在/usr/share/doc/zabbix-server-mysql-3.2.11/目录下有一个create.sql.gz压缩包,将它解压,解压以后生成一个.sql的文件
[root@linux-5 zabbix-server-mysql-3.2.11]# ls AUTHORS ChangeLog COPYING create.sql.gz NEWS README [root@linux-5 zabbix-server-mysql-3.2.11]# gzip -d create.sql.gz [root@linux-5 zabbix-server-mysql-3.2.11]# ls AUTHORS ChangeLog COPYING create.sql NEWS README
将create.sql文件,导入到zabbix库里面去
[root@linux-5 zabbix-server-mysql-3.2.11]# mysql -uroot zabbix < create.sql
systemctl start zabbix-server
在启动http服务以前,先查看nginx服务是否启动,若启动了nginx,就监听了80端口,就须要去停掉nginx服务,再去启动httpd服务
[root@linux-5 zabbix-server-mysql-3.2.11]# ps aux|grep nginx root 3276 0.0 0.1 120752 2096 ? Ss 17:21 0:00 nginx: master process /usr/sbin/nginx nginx 3277 0.0 0.1 121136 3584 ? S 17:21 0:00 nginx: worker process root 4811 0.0 0.0 112676 984 pts/0 R+ 23:50 0:00 grep --color=auto nginx [root@linux-5 zabbix-server-mysql-3.2.11]# systemctl stop nginx [root@linux-5 zabbix-server-mysql-3.2.11]# ps aux|grep nginx root 4822 0.0 0.0 112676 984 pts/0 R+ 23:50 0:00 grep --color=auto nginx [root@linux-5 zabbix-server-mysql-3.2.11]# systemctl start httpd [root@linux-5 zabbix-server-mysql-3.2.11]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp6 0 0 :::80 :::* LISTEN 4829/httpd
若须要开机启动httpd服务和zabbix服务,则须要将它加入到服务的列表中去,同时须要取消开机启动Nginx服务
[root@linux-5 zabbix-server-mysql-3.2.11]# systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. [root@linux-5 zabbix-server-mysql-3.2.11]# systemctl enable zabbix-server Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service. [root@linux-5 zabbix-server-mysql-3.2.11]# systemctl disable nginx [root@linux-5 zabbix-server-mysql-3.2.11]# chkconfig nginx off 注意:正在将请求转发到“systemctl disable nginx.service”。
[root@linux-5 zabbix-server-mysql-3.2.11]# ps aux|grep zabbix zabbix 4802 0.0 0.1 254588 3488 ? S 7月09 0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf root 4965 0.0 0.0 112676 984 pts/0 R+ 00:00 0:00 grep --color=auto zabbix
[root@linux-5 zabbix-server-mysql-3.2.11]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 564/rpcbind tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 857/rpc.mountd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 811/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1226/master tcp 0 0 0.0.0.0:33914 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:54120 0.0.0.0:* LISTEN 821/rpc.statd tcp6 0 0 :::111 :::* LISTEN 564/rpcbind tcp6 0 0 :::80 :::* LISTEN 4829/httpd tcp6 0 0 :::20048 :::* LISTEN 857/rpc.mountd tcp6 0 0 :::22 :::* LISTEN 811/sshd tcp6 0 0 :::40951 :::* LISTEN 821/rpc.statd tcp6 0 0 ::1:25 :::* LISTEN 1226/master tcp6 0 0 :::44352 :::* LISTEN - tcp6 0 0 :::2049 :::* LISTEN - tcp6 0 0 :::3306 :::* LISTEN 4700/mysqld
经过检查结果能够发现,虽然服务启动了,但并无zabbix监听的端口,所以须要查看错误日志排查问题所在
[root@linux-5 zabbix-server-mysql-3.2.11]# tail /var/log/zabbix/zabbix_server.log 4802:20180710:000249.473 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 4802:20180710:000249.476 database is down: reconnecting in 10 seconds 4802:20180710:000259.479 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 4802:20180710:000259.479 database is down: reconnecting in 10 seconds 4802:20180710:000309.480 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 4802:20180710:000309.480 database is down: reconnecting in 10 seconds 4802:20180710:000319.480 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 4802:20180710:000319.480 database is down: reconnecting in 10 seconds 4802:20180710:000329.483 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 4802:20180710:000329.483 database is down: reconnecting in 10 seconds
虽然zabbix服务有进程,但没有完全的起来,说明不可以链接mysql,因此还须要更改zabbix的配置文件。
vim /etc/zabbix/zabbix_server.conf 搜索/DBHost 在DBName=zabbix上面增长 DBHost=127.0.0.1 在DBuser下面增长 DBPassword=123456
由于mysql和zabbix装在同一台机器上,这里的 DBHost能够写localhost 或者127.0.0.1;若是是在生产环境上,有时候为了提高zabbix的性能,可能会把MySQL装在其余机器上,这时的DBHost,就须要写mysql的ip,建立的用户的来源IP也须要写mysql的ip
systemctl restart zabbix-server.service
[root@linux-5 zabbix-server-mysql-3.2.11]# ps aux|grep zabbix zabbix 5089 0.1 0.2 254768 4172 ? S 00:19 0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf zabbix 5092 0.0 0.1 254768 2516 ? S 00:19 0:00 /usr/sbin/zabbix_server: configuration syncer [waiting 60 sec for processes] zabbix 5093 0.0 0.1 254768 2728 ? S 00:19 0:00 /usr/sbin/zabbix_server: db watchdog [synced alerts config in 0.028233 sec, idle 60 sec] zabbix 5094 0.0 0.2 361712 5252 ? S 00:19 0:00 /usr/sbin/zabbix_server: poller #1 [got 0 values in 0.000003 sec, idle 5 sec] zabbix 5095 0.0 0.2 361712 5252 ? S 00:19 0:00 /usr/sbin/zabbix_server: poller #2 [got 0 values in 0.000002 sec, idle 5 sec] zabbix 5096 0.0 0.2 361712 5252 ? S 00:19 0:00 /usr/sbin/zabbix_server: poller #3 [got 0 values in 0.000003 sec, idle 5 sec] zabbix 5097 0.0 0.2 361712 5252 ? S 00:19 0:00 /usr/sbin/zabbix_server: poller #4 [got 0 values in 0.000003 sec, idle 5 sec] zabbix 5098 0.0 0.2 361712 5252 ? S 00:19 0:00 /usr/sbin/zabbix_server: poller #5 [got 0 values in 0.000003 sec, idle 5 sec] zabbix 5099 0.0 0.2 361712 5252 ? S 00:19 0:00 /usr/sbin/zabbix_server: unreachable poller #1 [got 0 values in 0.000004 sec, idle 5 sec] zabbix 5100 0.0 0.1 254768 3624 ? S 00:19 0:00 /usr/sbin/zabbix_server: trapper #1 [processed data in 0.000000 sec, waiting for connection] zabbix 5101 0.0 0.1 254768 3624 ? S 00:19 0:00 /usr/sbin/zabbix_server: trapper #2 [processed data in 0.000000 sec, waiting for connection] zabbix 5102 0.0 0.1 254768 3624 ? S 00:19 0:00 /usr/sbin/zabbix_server: trapper #3 [processed data in 0.000000 sec, waiting for connection] zabbix 5103 0.0 0.1 254768 3624 ? S 00:19 0:00 /usr/sbin/zabbix_server: trapper #4 [processed data in 0.000000 sec, waiting for connection] zabbix 5104 0.0 0.1 254768 3624 ? S 00:19 0:00 /usr/sbin/zabbix_server: trapper #5 [processed data in 0.000000 sec, waiting for connection] zabbix 5108 0.0 0.1 257340 2656 ? S 00:19 0:00 /usr/sbin/zabbix_server: icmp pinger #1 [got 0 values in 0.000003 sec, idle 5 sec] zabbix 5109 0.0 0.1 254768 2860 ? S 00:19 0:00 /usr/sbin/zabbix_server: alerter [sent alerts: 0 success, 0 fail in 0.000335 sec, idle 30 sec] zabbix 5111 0.0 0.1 254768 2512 ? S 00:19 0:00 /usr/sbin/zabbix_server: housekeeper [startup idle for 30 minutes] zabbix 5112 0.0 0.1 254844 2968 ? S 00:19 0:00 /usr/sbin/zabbix_server: timer #1 [processed 0 triggers, 0 events in 0.000156 sec, 0 maintenances in 0.000000 sec, idle 30 sec] zabbix 5113 0.0 0.1 254768 2872 ? S 00:19 0:00 /usr/sbin/zabbix_server: http poller #1 [got 0 values in 0.000488 sec, idle 5 sec] zabbix 5116 0.0 0.2 359128 5088 ? S 00:19 0:00 /usr/sbin/zabbix_server: discoverer #1 [processed 0 rules in 0.001294 sec, idle 60 sec] zabbix 5117 0.0 0.1 254768 2860 ? S 00:19 0:00 /usr/sbin/zabbix_server: history syncer #1 [synced 0 items in 0.000001 sec, idle 1 sec] zabbix 5118 0.0 0.1 254768 2860 ? S 00:19 0:00 /usr/sbin/zabbix_server: history syncer #2 [synced 0 items in 0.000010 sec, idle 1 sec] zabbix 5119 0.0 0.1 254768 2860 ? S 00:19 0:00 /usr/sbin/zabbix_server: history syncer #3 [synced 0 items in 0.000001 sec, idle 1 sec] zabbix 5120 0.0 0.1 254768 2860 ? S 00:19 0:00 /usr/sbin/zabbix_server: history syncer #4 [synced 0 items in 0.000000 sec, idle 1 sec] zabbix 5125 0.0 0.2 254768 3804 ? S 00:19 0:00 /usr/sbin/zabbix_server: escalator #1 [processed 0 escalations in 0.000417 sec, idle 3 sec] zabbix 5126 0.0 0.2 254768 3804 ? S 00:19 0:00 /usr/sbin/zabbix_server: proxy poller #1 [exchanged data with 0 proxies in 0.000002 sec, idle 5 sec] zabbix 5134 0.0 0.1 254768 2628 ? S 00:19 0:00 /usr/sbin/zabbix_server: self-monitoring [processed data in 0.000004 sec, idle 1 sec] zabbix 5135 0.0 0.1 254768 2848 ? S 00:19 0:00 /usr/sbin/zabbix_server: task manager [processed 0 task(s) in 0.000292 sec, idle 5 sec] root 5146 0.0 0.0 112676 984 pts/0 R+ 00:20 0:00 grep --color=auto zabbix
[root@linux-5 zabbix-server-mysql-3.2.11]# netstat -lntp|grep zabbix tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 5089/zabbix_server tcp6 0 0 :::10051 :::* LISTEN 5089/zabbix_server
检查能够发现,正常启动的zabbix有许多子进程,监听端口为10051端口
在浏览器输入IP地址(即监控中心的IP地址),http://192.168.88.5/zabbix/去访问
点击next
此时安装向导提示设置PHP的时区,须要修改PHP默认配置文件
vim /etc/php.ini 搜索timezone 改成date.timezone = Asia/Shanghai
修改完成后须要重启Apache服务
systemctl restart httpd
重启后刷新web界面,发现时区已成功定义
继续点击next,填写相应信息
最终完成安装
点击finish后,会弹出zabbix监控中心后台登陆界面
默认用户名为:Admin,默认密码:zabbix
修改密码
进入后,首先修改密码,避免泄露
修改完成后,刷新浏览器,发现界面已变为中文
yum install -y zabbix-agent
由于是客户端,因此只须要安装一个包
客户端与服务端通讯是经过白名单IP的形式,所以须要在客户端上配置监控中心的IP
vim /etc/zabbix/zabbix_agentd.conf Server=192.168.88.5 //监控中心IP # 定义服务端的ip(被动模式) ServerActive=192.168.88.5 //监控中心IP #定义服务端的ip(主动模式) #这个涉及到一个主动和被动模式;若是这里不填写服务中心的IP,那么就只能使用被动模式;这个IP是主动模式时候用的 Hostname=Zabbix server修改成Hostname=lem-02 #这是自定义的主机名,一会还须要在web界面下添加监控客户端时须要设置一样的主机名
systemctl start zabbix-agent.service
[root@linux-10 ~]# ps aux|grep zabbix zabbix 1510 0.0 0.0 80704 1280 ? S 11:12 0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf zabbix 1511 0.0 0.0 80704 1348 ? S 11:12 0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec] zabbix 1512 0.0 0.0 80704 1844 ? S 11:12 0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection] zabbix 1513 0.0 0.0 80704 1844 ? S 11:12 0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection] zabbix 1514 0.0 0.0 80704 1844 ? S 11:12 0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection] zabbix 1515 0.0 0.1 80836 2204 ? S 11:12 0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec] root 1523 0.0 0.0 112720 968 pts/0 R+ 11:15 0:00 grep --color=auto zabbix [root@linux-10 ~]# netstat -lntp|grep zabbix tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 1510/zabbix_agentd tcp6 0 0 :::10050 :::* LISTEN 1510/zabbix_agentd
从检查结果能够发现zabbix服务端监听的是10051端口,客户端监听的端口是10050
重置zabbix密码,就是直接更改数据库里的数据便可
[root@linux-5 ~]# mysql -uroot
mysql> use zabbix Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed
show tables;
之后服务器监控的主机越多,那么这些表会愈来愈大,因此须要去指定合适的监控策略。例如:数据量须要保存多长时间,那么在定义这个监控项目的时候就该想到,要保留1个月仍是1年,仍是其余时间;或者,监控的站点服务量很大的话,一天就要涨好几个G,那么你的服务器磁盘能支持保存多长时间。
zabbix用户的密码,默认存放的表是users里面
desc users;
须要修改的是passwd表
update users set passwd=md5(‘123456’) where alias=‘Admin’;
修改后就可使用新密码登陆zabbix了。