监控的目的
报告系统运行的情况
- 每一部分必须同时监控
- 内容包括吞吐量,反应时间,使用率等
提前发现问题
- 进行服务性能调整前,知道调整什么
- 找出系统的瓶颈
监控的资源
公开数据:通过端口可以访问到的数据,比如Web,FTP,SSH,数据库等应用服务;TCP/UDP端口
私有数据:CPU,内存,磁盘,网卡流量等;用户,进程等运行信息
监控软件
系统监控命令: 不是实时监控
ps 显示当前进程 (process) 的状态。 | ifconfig 查看网卡信息 |
uptime 查看cpu负载 | nestat或ss 查看端口,网络链接信息 |
free 查看内存信息 | ping 检查网络是否连通 |
swapon -s 看磁盘交换分区 | traceroute 路由跟踪(经过那些ip地址) |
df -h 查看磁盘使用率 | iostat 当前主机磁盘的信息 |
自动化监控系统
Cacti | 基于SNMP协议(简单网络管理协议 Simple Network Management Protocol)的监控软件,强大的绘图能力,插价很少 |
Nagios | 基于Agent监控,强大的状态检查与报警机制 插价极多,可以自己写脚本缴入到Nagios ,没有绘图能力 |
Zabbix | 基于多种监控机制,支持分布式监控 是一个高度集成的监控解决方案,开源分布式监控 通过C/S(客户/服务)模式采集监控数据 通过B/S(浏览器/服务器)模式实现Web管理 |
部署zabbix
实验环境:zabbix-server 服务端 192.168.2.5
zabbix-client 客户端 192.168.2.100
zabbix-client 客户端 192.168.2.200
部署环境LNMP
[root@zabbix-server ~]# yum -y install gcc pcre-devel openssl-devel
[root@zabbix-server ~]# tar -zxf nginx-1.12.2.tar.gz
[root@zabbix-server ~]# cd nginx-1.12.2/
[root@zabbix-server nginx-1.12.2]# useradd nginx
[root@zabbix-server nginx-1.12.2]# ./configure --with-http_ssl_module --user=nginx --group=nginx
[root@zabbix-server nginx-1.12.2]# make & make install
[root@zabbix-server nginx-1.12.2]# cd /root
[root@zabbix-server ~]# yum -y install mariadb mariadb-server mariadb-devel
[root@zabbix-server ~]# yum -y install php php-mysql
[root@zabbix-server ~]# yum -y install php-fpm-5.4.16-42.el7.x86_64.rpm(这个软件包不在系统yum源)
[root@zabbix-server ~]# vim /usr/local/nginx/conf/nginx.conf
65 location ~ \.php$ {
66 root html;
67 fastcgi_pass 127.0.0.1:9000;
68 fastcgi_index index.php;
69 # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
70 include fastcgi.conf;
71 }
[root@zabbix-server ~]# vim /usr/local/nginx/conf/nginx.conf
...
http{
...
fastcgi_buffers 8 16k; //缓存php生成的页面内容 ,8个16k
fastcgi_buffer_size 32k; //缓存php生产的头部信息
fastcgi_connect_timeout 300; //连接PHP的超时时间
fastcgi_send_timeout 300; //发送请求的超时时间
fastcgi_read_timeout 300;
[root@zabbix-server ~]# ln -s /usr/local/nginx/sbin/nginx /sbin
[root@zabbix-server ~]# nginx
[root@zabbix-server ~]# netstat -pntul | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 6574/nginx: master
[root@zabbix-server ~]# vim /usr/local/nginx/html/test.php //测试是否可以正常链接
<?php
phpinfo();
?>
[root@zabbix-server ~]# systemctl start php-fpm.service
[root@zabbix-server ~]# firefox 192.168.2.5/test.php //可以正常显示
[root@zabbix-server ~]# systemctl start mariadb
安装zabbix
[root@zabbix-server ~]# yum -y install net-snmp-devel libcurl-devel
[root@zabbix-server ~]# yum -y install libevent-devel-2.0.21-4.el7.x86_64.rpm(yum源没有这个包)
[root@zabbix-server ~]# tar -xf zabbix-3.4.4.tar.gz
[root@zabbix-server ~]# cd zabbix-3.4.4/
[root@zabbix-server zabbix-3.4.4]# ./configure --enable-server --enable-proxy --enable-agent --with-mysql --with-net-snmp --with-libcurl
//-server 安装部署服务器端软件 --proxy 安装代理相关软件 --agent 被监控端软件 -mysql 配置mysql_config路径(不用指定,默认就是可以,因为是rpm包安装的mariadb) -net-snmp 允许通过snmp协议监控其他设备 -libcurl 安装相关curl库文件,这样zabbix可以通过curl链接http服务,测试被监控主机的服务状态
[root@zabbix-server zabbix-3.4.4]# make install
初始化配置zabbix
创建授权用户(这里为zabbix),数据库(这里为zabbix)
[root@zabbix-server ~]# mysql
MariaDB [(none)]> create database zabbix character set utf8; //支持中文字符
MariaDB [(none)]> grant all on zabbix.* to zabbix@"localhost" identified by "zabbix";
[root@zabbix-server ~]# cd zabbix-3.4.4/database/mysql/
[root@zabbix-server mysql]# ls
data.sql images.sql schema.sql //按照顺序导入(schema概要 images图像 data数据)
[root@zabbix-server mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql
[root@zabbix-server mysql]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@zabbix-server mysql]# mysql -uzabbix -pzabbix zabbix < data.sql
[root@zabbix-server mysql]# mysql -uzabbix -pzabbix
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
| zabbix |
+--------------------+
3 rows in set (0.00 sec)
MariaDB [(none)]> use zabbix
MariaDB [zabbix]> show tables;
+----------------------------+
| Tables_in_zabbix |
+----------------------------+
| acknowledges |
| actions |
| alerts |
| application_discovery |
| application_prototype |
| application_template |
| applications |
...
| widget |
| widget_field |
+----------------------------+
140 rows in set (0.00 sec)
拷贝文件
[root@zabbix-server zabbix-3.4.4]# cd frontends
[root@zabbix-server frontends]# cp -r php/ /usr/local/nginx/html/zabbix
[root@zabbix-server ~]# chmod 777 /usr/local/nginx/html/zabbix/conf
修改配置文件/etc/php.ini ,下载相关包以支持zabbix页面
[root@zabbix-server ~]# vim /etc/php.ini
384 max_execution_time = 300 //把30改成300
...
394 max_input_time = 300 //把60改成300
...
672 post_max_size = 16M //把8M改成支持的16M
...
878 date.timezone = Asia/Shanghai //时间改成亚洲/上海
[root@zabbix-server frontends]# systemctl restart php-fpm.service
[root@zabbix-server frontends]# firefox 192.168.2.5/zabbix/index.php //检测是否修改正确
[root@zabbix-server ~]# rpm -ivh --nodeps php-bcmath-5.4.16-42.el7.x86_64.rpm
[root@zabbix-server ~]# rpm -ivh --nodeps php-mbstring-5.4.16-42.el7.x86_64.rpm
//这两个包yum源没有
[root@zabbix-server ~]# yum -y install php-gd.x86_64 php-ldap.x86_64 php-xml
[root@zabbix-server ~]# systemctl restart php-fpm.service
[root@zabbix-server ~]# firefox 192.168.2.5/zabbix/index.php //输入mysql设置的用户名,密码,库名
提示:如果zabbix网页没有设置完成,根据相关提示下载包或者修改配置文件,直到出现如下信息,才算完成
[root@zabbix-server ~]# cat /usr/local/nginx/html/zabbix/conf/zabbix.conf.php //查看配置信息
<?php
// Zabbix GUI configuration file.
global $DB;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = 'localhost';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'zabbix';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';
$ZBX_SERVER = '192.168.2.5';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'zabbixserver';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
登录zabbix网页,默认初始用户名为admin 默认密码zabbix,可以改成中文模式(也可以不改)
点击配置,可以查看默认模板,可以查看目前在监视的主机
点击监测中,查看监控信息
运行zabbix服务
修改主配置文件 /usr/local/etc/zabbix_server.conf
[root@zabbix-server ~]# vim /usr/local/etc/zabbix_server.conf
...
38 LogFile=/tmp/zabbix_server.log
...
85 DBHost=localhost //去掉注释
...
95 DBName=zabbix
...
111 DBUser=zabbix
...
119 DBPassword=zabbix //去掉注释,添加密码,我们前面设置的密码
修改脚本文件,启动zabbix
[root@zabbix-server ~]# cp zabbix-3.4.4/misc/init.d/fedora/core/zabbix_server /etc/init.d/
[root@zabbix-server ~]# ls /usr/local/sbin/
zabbix_agentd zabbix_proxy zabbix_server
[root@zabbix-server ~]# useradd zabbix
[root@zabbix-server ~]# /etc/init.d/zabbix_server start
Reloading systemd: [ 确定 ]
Starting zabbix_server (via systemctl): [ 确定 ]
[root@zabbix-server ~]# netstat -pntul | grep :10051
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 21465/zabbix_server
注:如果前面编译了指定的路径 --prefix=/usr/local/zabbix 需要更改启动文件
[root@zabbix-server ~]# vim /etc/init.d/zabbix_server
...
22 BASEDIR=/usr/local //需要修改目录为/usr/local/zabbix
...
登录zabbix,这时显示已经登录(之前下面会有黄条提示,未链接)
点击仪表盘,可以看到提示(页面右下角)
监控远端网站服务器192.168.2.100
配置网站服务器主机2.100
安装zabbix-agent服务
[root@web1 ~]# yum -y install gcc pcre-devel
[root@web1 ~]# tar -zxvf zabbix-3.4.4.tar.gz
[root@web1 ~]# cd zabbix-3.4.4/
[root@web1 zabbix-3.4.4]# ./configure --enable-agent --prefix=/usr/local/zabbix
...
***********************************************************
* Now run 'make install' *
* *
* Thank you for using Zabbix! *
* <http://www.zabbix.com> *
***********************************************************
[root@web1 zabbix-3.4.4]# make install
修改主配置文件
[root@web1 zabbix-3.4.4]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
...
30 LogFile=/tmp/zabbix_agentd.log //默认
...
93 Server=127.0.0.1,192.168.2.5 //添加监控服务器ip
...
134 ServerActive=192.168.2.5:10051 //监控服务器和端口号
[root@web1 zabbix-3.4.4]# useradd zabbix
[root@web1 zabbix-3.4.4]# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
[root@web1 zabbix-3.4.4]# vim /etc/init.d/zabbix_agentd
22 BASEDIR=/usr/local/zabbix
...
[root@web1 zabbix-3.4.4]# /etc/init.d/zabbix_agentd start
Reloading systemd: [ 确定 ]
Starting zabbix_agentd (via systemctl): [ 确定 ]
[root@web1 zabbix-3.4.4]# netstat -pntul | grep :10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 16593/zabbix_agentd
配置监控服务器2.5
[root@zabbix-server ~]# firefox 192.168.2.5/zabbix/index.php
配置---主机---创建主机
主机;主机名称,可见的名称,添加群组,监控的主机IP(这里为2.100)
主机--模板(选择要监控的模板)--选好之后添加,然后更新
然后监测中---最新数据---主机群组,主机--应用
这里发现http服务状态为down,因为没有运行http服务
[root@web1 zabbix-3.4.4]# systemctl restart httpd
[root@web1 zabbix-3.4.4]# netstat -pntul | grep :80
tcp6 0 0 :::80 :::* LISTEN 17177/httpd
自定义zabbix监控项目
比如监控192.168.2.100的系统用户数量
配置被监控主机2.100
[root@web1 zabbix-3.4.4]# /etc/init.d/zabbix_agentd stop
[root@web1 zabbix-3.4.4]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
265 Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf //打开注释
...
280 UnsafeUserParameters=1 //打开注释,设置自定义监控为1
...
284 # Format: UserParameter=<key>,<shell command> //自定义监控文件模板
添加监控命令,启动程序,在本机监测
[root@web1 zabbix-3.4.4]# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/test.conf
UserParameter=get_100_usersnumber,wc -l /etc/passwd | awk '{print $1}'
//可以自定义key值名字,此命令为统计用户数量
[root@web1 zabbix-3.4.4]# /etc/init.d/zabbix_agentd start
Starting zabbix_agentd (via systemctl): [ 确定 ]
[root@web1 zabbix-3.4.4]# netstat -pntul | grep :10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 17701/zabbix_agentd
[root@web1 zabbix-3.4.4]# /usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -p 10050 -k get_100_usersnumber
42
配置监控服务器192.168.2.5
命令行下测试此命令
[root@zabbix-server ~]# /usr/local/bin/zabbix_get -s 192.168.2.100 -p 10050 -k get_100_usersnumber //这里不在zabbix,因为安装的时候没有指定目录,所以默认在/bin
42
在页面添加监控配置
配置--模板--创建模板
定义新监控模板--创建应用集--创建监控项目,并指定使用的监控命令
在把这个模板添加到上面配置的web100中
最后点击监测中--最新数据 发现mon_100_users 42 即代表自定义成功