监控全网服务器

5.1 需求说明

实际需求:

  公司已经有了100台服务器,现在需要使用zabbix全部监控起来。

5.2 规划方案

常规监控:cpu,内存,磁盘,网卡  问题:怎样快速添加100台机器

     方法1:使用克隆的方式

     方法2:自动注册和自动发现

     方法3:调用zabbix api接口  curl 、python

            开发自己的运维平台兼容zabbix的通道

   服务监控,url监控等特殊监控:自定义监控

5.2.1 api接口使用(curl

curl -i -X POST -H 'Content-Type:application/json' -d'{"jsonrpc": "2.0","method":"user.login","params":{"user":"Admin","password":"zabbix"},"auth": null,"id":0}' "http://10.0.0.61/zabbix/api_jsonrpc.php"

curl -i -X POST -H 'Content-Type:application/json' -d'

{

"jsonrpc": "2.0",

"method": "host.get",

"params": {

"output": [

"hostid",

"host"

],

"selectInterfaces": [

"interfaceid",

"ip"

]

},

"id": 2,

"auth": "6a450a8fc3dce71fd310cfe338746578"

}' "http://10.0.0.61/zabbix/api_jsonrpc.php"

5.3 具体实施规划

5.3.1 硬件、系统、网络监控

  所有集群节点(所有虚拟机)都监控上

  交换机,路由器监控(简单方法:换成端口对应服务器网卡流量监控;标准方法:监控交换机的网卡)

  snmp监控

5.3.2 应用服务监控

1. 监控备份服务器,简单方法是监控rsync端口,如果有其他更佳方案可以说明;

方法1:监控873端口net.tcp.port[,873]

方法2:模拟推送拉取文件

    方法3:监控进程数

2. 监控NFS服务器,使用监控NFS进程来判断NFS服务器正常,如果有其他更佳方案可以说明;

方法1:端口(通过111的rpc端口获取nfs端口) net.tcp.port[,111]

方法2:showmount -e ip|wc -l

3. 监控MySQL服务器,简单方法监控mysql的3306端口,或者使用zabbix提供的Mysql模板,如果有其他更佳方案可以说明;

方法1:端口(通过3306的mysql端口) net.tcp.port[,3306]

方法2:mysql远程登录

方法3:使用zabbix agent自带的模板及key

4. 监控2台web服务器,简单方法监控80端口,如果有其他更佳方案可以说明;

方法1:端口(通过80的web端口) net.tcp.port[,80]

方法2:看网页状态码、返回内容==zabbix 自带WEB检测

5. 监控URL地址来更精确的监控我们的网站运行正常;

使用zabbix自带的监控Web监测 进行监控

6. 监控反向代理服务器,PPTP服务器等你在期中架构部署的服务。

nginx,pptp

ntp 端口udp 123

7. 监控Nginx的7种连接状态。

自定义监控

5.3.3 监控服务通用方法

  1. 监控端口 netstat ss lsof  ==》 wc -l

  2. 监控进程 ps -ef|grep 进程|wc -l  试运行一下

  3. 模拟客户端的使用方式监控服务端

        web  ==》 curl

        mysql ==》 select insert

        memcache ==》 set再get

5.4 实施全网监控

安装客户端脚本,for centos6

#!/bin/bash

#设置解析

# echo '10.0.0.1 mirrors.aliyuncs.commirrors.aliyun.comrepo.zabbix.com' >> /etc/hosts

#安装zabbix源、aliyu nYUM源

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm

yum clean all

yum clean all

#安装zabbix客户端

yum install zabbix-agent -y

sed -i.ori 's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_agentd.conf

/etc/init.d/zabbix-agent start

#写入开机自启动

chmod +x /etc/rc.d/rc.local

cat >>/etc/rc.d/rc.local<<EOF

/etc/init.d/zabbix-agent start

EOF

5.4.1 使用自动发现规则

添加自动发现规则

zabbix监控(四)监控全网服务器_第1张图片 

   创建发现动作

zabbix监控(四)监控全网服务器_第2张图片 

   查看自动发现的机器。

 zabbix监控(四)监控全网服务器_第3张图片

5.4.2 监控备份服务器

利用系统自带键值进行监控net.tcp.listen[port] 创建新的模板 

image.png

在服务端进行测试

[root@m01 ~]# zabbix_get -s 172.16.1.41 -p 10050 -k "net.tcp.listen[873]"

1

# 1为端口在监听 0为端口未监听

#通过进程监控

proc.num[,,,] 进程数。返回整数

[root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "proc.num[zabbix_agentd,,,]"

6

[root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "proc.num[,root,,]"

330

[root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "proc.num[,root,sleep,]"

330

[root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "proc.num[,,sleep,]"

339

将模板添加到主机

image.png

5.4.3 监控NFS服务器 

创建nfs监控模板

方法一:监控rpcbind的111端口

方法二:nfs进程

使用 proc.num[,,,]  键值,检测nfs进程的数量

 

在服务端进行测试

[root@m01 ~]# zabbix_get -s 172.16.1.31 -p 10050 -k "proc.num[,,,rpc]"

5

[root@m01 ~]# zabbix_get -s 172.16.1.31 -p 10050 -k "proc.num[nfsd,,,]

8

 

将模板绑定到主机

5.4.4 监控MySQL服务器


使用系统自带模板  net.tcp.port[,port] 利用自带的监控端口键值进行监控

 

添加新的mysql监控项端口

[root@m01 ~]# zabbix_get -s 172.16.1.51 -p 10050 -k "net.tcp.port[,3306]" 

1

#检查是否能建立 TCP 连接到指定端口。返回 0 - 不能连接;1 - 可以连接

将模板关联到主机


方法二:使用zabbix提供的mysql模板

/etc/zabbix-agent.d/下自带mysqlkey

要使用自带的mysqlkey值加上mysql的账户密码,否则不能获取到数据。


1.修改zabbix-agent.d/userparameter_mysql.conf


image.png

2.重启服务

systemctl restart zabbix-agent.service

3.测试key值

[root@m01 ~]# zabbix_get -s 172.16.1.51 -p 10050 -k "mysql.ping"

1

[root@m01 ~]# zabbix_get -s 172.16.1.51 -p 10050 -k "mysql.status[Com_begin]"

3758

[root@m01 ~]# zabbix_get -s 172.16.1.51 -p 10050 -k "mysql.status[Com_delete]"

3

4.网页m01关联模板Template App MySQL

zabbix监控(四)监控全网服务器_第4张图片

5.4.5 监控web服务器

方法1:创建监控模板 监控 nginx服务与 80 端口

proc.num[,,,] 进程数。返回整数

net.tcp.port[,port] 检查是否能建立 TCP 连接到指定端口。返回 0 - 不能连接;1 - 可以连接

 image.png

[root@m01 ~]# zabbix_get -s 172.16.1.8 -p 10050 -k "proc.num[,,,nginx]"

2

[root@m01 ~]# zabbix_get -s 172.16.1.8 -p 10050 -k "net.tcp.port[,80]"

1

将模板关联到主机

 zabbix监控(四)监控全网服务器_第5张图片

方法二:检测URL地址

zabbix监控(四)监控全网服务器_第6张图片image.png

zabbix监控(四)监控全网服务器_第7张图片zabbix监控(四)监控全网服务器_第8张图片

zabbix监控(四)监控全网服务器_第9张图片zabbix监控(四)监控全网服务器_第10张图片

zabbix监控(四)监控全网服务器_第11张图片

zabbix监控(四)监控全网服务器_第12张图片zabbix监控(四)监控全网服务器_第13张图片

测试:

zabbix监控(四)监控全网服务器_第14张图片

zabbix监控(四)监控全网服务器_第15张图片

5.4.6 监控URL地址

创建监测页面

echo ok >> /application/nginx/html/www/check.html

 

测试监控面页

[root@web03 ~]# for ip in 7 8 9 ;do curl 10.0.0.$ip/check.html ;doneok

ok

ok

创建web监测模板

   创建应用集

 

zabbix监控(四)监控全网服务器_第16张图片

   创建Web场景

zabbix监控(四)监控全网服务器_第17张图片

   创建图形  

zabbix监控(四)监控全网服务器_第18张图片

将模板关联到主机

 

image.png

监测结果

 zabbix监控(四)监控全网服务器_第19张图片

5.4.7 监控反向代理服务器

创建自定义key

[root@lb01 ~]# cat /etc/zabbix/zabbix_agentd.d/userparameter_nk.conf

UserParameter=keep-ip,ip a |grep 10.0.0.3|wc -l

在服务端测试

[root@m01 ~]# zabbix_get -s 172.16.1.5 -p 10050 -k "keep-ip"

1

[root@m01 ~]# zabbix_get -s 172.16.1.6 -p 10050 -k "keep-ip"

0

在web界面添加模板

image.png 

将模板关联到主机

image.png

5.4.8 监控Nginx的7种连接状态 

nginx服务器显示status

……

location /status {

stub_status on;

access_log off;

}

……

 

[root@web01 ~]# for ip in 7 8;do curl 172.16.1.$ip/status ;done

Active connections: 1

server accepts handled requests

73 73 69

Reading: 0 Writing: 1 Waiting: 0

Active connections: 1

server accepts handled requests

134 134 127

Reading: 0 Writing: 1 Waiting: 0

在nginx服务器上添加key

cat >/etc/zabbix/zabbix_agentd.d/userparameter_nginx_status.conf <<'EOF'

UserParameter=nginx_active,curl -s 127.0.0.1/status|awk '/Active/ {print $NF}'

UserParameter=nginx_accepts,curl -s 127.0.0.1/status|awk 'NR==3 {print $1}'

UserParameter=nginx_handled,curl -s 127.0.0.1/status|awk 'NR==3 {print $2}'

UserParameter=nginx_requests,curl -s 127.0.0.1/status|awk 'NR==3 {print $3}'

UserParameter=nginx_reading,curl -s 127.0.0.1/status|awk 'NR==4 {print $2}'

UserParameter=nginx_writing,curl -s 127.0.0.1/status|awk 'NR==4 {print $4}'

UserParameter=nginx_waiting,curl -s 127.0.0.1/status|awk 'NR==4 {print $6}'

EOF

重启Agent服务

服务端测试

[root@m01 ~]# zabbix_get -s 172.16.1.7 -p 10050 -k "nginx_waiting"

0

[root@m01 ~]# zabbix_get -s 172.16.1.8 -p 10050 -k "nginx_waiting"

0

[root@m01 ~]# zabbix_get -s 172.16.1.9 -p 10050 -k "nginx_waiting"

0

在zabbix-web上添加模板

 image.png

监控项

 

zabbix监控(四)监控全网服务器_第20张图片

添加图形

 

zabbix监控(四)监控全网服务器_第21张图片

将模板关联到主机

 

zabbix监控(四)监控全网服务器_第22张图片

查看添加的图形

 

zabbix监控(四)监控全网服务器_第23张图片

zabbix监控(四)监控全网服务器_第24张图片

自动发现与自动注册

6.1 自动发现与自动注册

6.1.1 简介

自动发现:

zabbix Server主动发现所有客户端,然后将客户端登记自己的小本本上,缺点zabbix server压力山大(网段大,客户端多),时间消耗多。

自动注册:

zabbix agent主动到zabbix Server上报到,登记;缺点agent有可能找不到Server(配置出错)

6.1.2 两种模式

被动模式:默认 agent被server抓取数据 (都是在agent的立场上说)

主动模式:agent主动将数据发到server端 (都是在agent的立场上说)

     注意: 两种模式都是在agent上进行配置

     zabbix 的使用要在hosts文件中预先做好主机名的解析

6.2 自动发现--被动模式

 zabbix监控(四)监控全网服务器_第25张图片

第一个里程碑:完成之前的安装

注意:在Server端做好host解析

zabbix Server安装完毕

   第二个里程碑:配置agent客户端

zabbix agent安装完毕,注意配置Server=172.16.1.61

   第三个里程碑:在web界面上进行配置

web界面:配置 >> 自动发现 >> Local network

使用自带的自动发现规则(进行修改)即可

zabbix监控(四)监控全网服务器_第26张图片

在ip范围内输入ip,注意格式; 

延迟在实际的生产环境中要大一些(1h-2h),实验环境可以小一些60s

zabbix监控(四)监控全网服务器_第27张图片

   

创建发现动作

配置 >> 动作 >> Auto discovery. Linux servers. 

zabbix监控(四)监控全网服务器_第28张图片


①  配置动作

zabbix监控(四)监控全网服务器_第29张图片

②  在条件中添加条件,让添加更准确(条件保持不变,D不需要添加) 

 

zabbix监控(四)监控全网服务器_第30张图片

③  在操作中添加

a)  添加主机与启用主机

 

zabbix监控(四)监控全网服务器_第31张图片


      然后等待者客户端自动上门就好


小伙伴们可以关注我的微信公众号:linux运维菜鸟之旅

zabbix监控(四)监控全网服务器_第32张图片

关注“中国电信天津网厅”公众号,首次绑定可免费领2G流量,为你的学习提供流量! 

zabbix监控(四)监控全网服务器_第33张图片