一.实验环境
此实验是在前两个实验(zabbix的部署、zabbix proxy的配置)完成之后,接着完成的。给被监控的主机添加监控的服务,比如说,监控server2的http服务、监控server3的nginx服务等。
172.25.254.1 zabbix server server1
172.25.254.2 zabbix agent(http) server2
172.25.254.3 zabbix agent(nginx) server3
172.25.254.4 zabbix proxy server4
二.添加监控服务 HTTP
http的模板zabbix内有,是zabbix自带的监控模板。
点击 配置->主机-> server2 ->模版 ->选择 -> Template App HTTP Service
再点击 添加 -> 更新
这样主机 server2的监控项中就出现了 HTTP 服务
HTTP服务监控完成。
三.添加监控服务 Nginx
nginx的监控项zabbix没有,需要在agent端部署nginx服务
1.部署nginx服务
tar zxf nginx-1.15.8.tar.gz
yum install gcc make pcre-devel zlib-devel -y
cd nginx-1.15.8
vim auto/cc/gcc
171 # debug
172 #CFLAGS="$CFLAGS -g" ##关闭debug日志
./configure --prefix=/usr/local/nginx --with-http_stub_status_module ##源码编译
make && make install
vim /usr/local/nginx/conf/nginx.conf
48 location /status {
49 stub_status on; ##Nginx中的stub_status模块主要用于查看Nginx的一些状态信息. 本模块默认是不会编译进Nginx的,如果你要使用该模块,则要在编译安装Nginx时指定:./configure –with-http_stub_status_module
50 access_log off; ##关闭日志记录
51 allow 127.0.0.1; ##只允许本机访问
52 deny all;
53 }
/usr/local/nginx/sbin/nginx -t ##nginx配置文件检测是否含有语法错误。可以添加相应的环境变量,就可以不用绝对路径。
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
/usr/local/nginx/sbin/nginx ##开启nginx服务。可以添加相应的环境变量,就可以不用绝对路径。
2.测试:
(1)在浏览器页面上输入:http://172.25.254.4/status访问nginx用来做测试
(2)利用curl命令在shell界面进行测试:
curl http://127.0.0.1/status
Active connections: 1
server accepts handled requests
2 2 1
Reading: 0 Writing: 1 Waiting: 0
过滤监控参数(访问次数,连接次数等等)
将过滤出来的参数以key—value键值对的形式存储:
curl -s http://127.0.0.1/status | grep Active | awk '{print $3}'
1
curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $1}'
30
3.创建nginx的监控项 nginx.active和nginx.access
cd /etc/zabbix/zabbix_agentd.d/
ls
userparameter_mysql.conf
cp userparameter_mysql.conf userparameter_nginx.conf ##利用监控mysql服务的配置文件模版复制一份给nginx服务
vim userparameter_nginx.conf
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active | awk '{print $3}' ##获取连接数(nginx.active为key值,获得的连接数为value值)
UserParameter=nginx.access,curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $1}' ##获取接受请求数
UserParameter=nginx.handled,curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $2}' ##获取建立三次握手的次数
UserParameter=nginx.requests,curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $3}' ##获取请求次数
systemctl restart zabbix-agent
4.zabbix-server端测试是否能拿到数据
yum install -y zabbix-get-4.0.5-1.el7.x86_64.rpm ##可以拿到
zabbix_get -s 172.25.254.2 -p 10050 -k "nginx.active"
1
zabbix_get -s 172.25.254.2 -p 10050 -k "nginx.access"
33
zabbix_get 是 zabbix 服务端的一个命令,用于检测 agent 端的配置是否正确,可以很方便地知道 key 是否能正常获取到数据,在测试自定义监控的时候特别有用
Options:
-s --host <host name or IP> Specify host name or IP address of a host ##agent 端的 ip
-p --port <port number> Specify port number of agent running on the host. Default is 10050 ##agent 监听的端口 默认是10050
-I --source-address <IP address> Specify source IP address ##如果server 端有多个网卡 可以指定通过哪个网卡进行数据获取
-k --key <key of metric> Specify key of item to retrieve value for ##执行的参数
-h --help Give this help
-V --version Display version number
5.配置—>主机—>点击server2主机—>点击监控项—>创建监控项
添加监控项,写好之后记得更新
再创建一个监控项,写好更新
然后添加图形,将刚才的两个监控项导入:
获得监控图形
但是我们发现这里的字体是乱码,所以要进行修改。下载我们喜欢的字体到/usr/share/zabbix/fonts目录下,并替换defines.inc.php 的字体
cd /usr/share/zabbix/fonts
ls
simkai.ttf
pwd
/usr/share/zabbix/include
vim defines.inc.php
:%s/graphfont/simkai/g
再次刷新页面,显示的字体就不是乱码了,等待一会,就会有监控数据:
四、监控 zabbix server 上的 mysql 服务
1.首先我们可以给Zabbix server主机,添加自带的监控模板
但是自带的模板监控项太少了,我们可以继续添加模板增加监控项
向zabbix监控中导入模版监控mysql的模版percona
percona:开源的mysql分析工具
2.配置mysql
mkdir /var/lib/zabbix
cd /var/lib/zabbix/
vim .my.cnf
[mysql]
host = localhost
user = root
password = westos
socket = /var/lib/mysql/mysql.sock
[mysqladmin]
host = localhost
user = root
password = westos
socket = /var/lib/mysql/mysql.sock
systemctl restart zabbix-agent
3.安装percona-zabbix模版
ls
percona-zabbix-templates-1.1.8-1.noarch.rpm
rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm
cd /var/lib/zabbix/
ls
percona
cd percona/
cd templates/
ls
userparameter_percona_mysql.conf zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/ ##拷贝conf 文件到被监控的mysql服务器上(server1主机)
cd ..
cd scripts/
ls
get_mysql_stats_wrapper.sh ss_get_mysql_stats.php
vim ss_get_mysql_stats.php.cnf ##由于percona的监控脚本是使用php写的,所以需要准备好php运行环境, 将zabbix的数据库和密码写入php脚本中
<?php
$mysql_user = 'root';
$mysql_pass = 'westos';
?>
systemctl restart zabbix-agent
4.测试percona的脚本,过滤监控项
cd /etc/zabbix/zabbix_agentd.d/
/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg ##测试脚本
cd /tmp
cat localhost-mysql_cacti_stats.txt ##查看监控项
rm -f localhost-mysql_cacti_stats.txt
5.测试