- List item
于氏:简单监控全网服务
第一部分:监控NFS服务
原理:通过检测端口存活与进程存活状态监控服务
1.在web02和web03上做同样的动作并检测,结果发现都有了nfs服务
[root@web03 ~]# yum install nfs-utils.x86_64 rpcbind -y
[root@web03 ~]# systemctl start nfs
[root@webo2 ~]# ps -elf | grep nfsd
[root@webo2 ~]# ps -elf | grep rpcbind
2.在服务端web01 测试:即通过进程来检测服务
[root@web01 ~]# zabbix_get -s 10.0.0.8 -p 10050 -k 'proc.num[nfsd,,,]'
8
[root@web01 ~]# zabbix_get -s 10.0.0.8 -p 10050 -k 'proc.num[rpcbind,,,]'
1
[root@web01 ~]# zabbix_get -s 10.0.0.9 -p 10050 -k 'proc.num[nfsd,,,]'
8
[root@web01 ~]# zabbix_get -s 10.0.0.9 -p 10050 -k 'proc.num[rpcbind,,,]'
1
3.创建nfs模板
![image-20210316154051668](https://i-blog.csdnimg.cn/blog_migrate/7a99aaaed663f669135ee5e71c56eda6.png)
4.为nfs监控项创建图形、
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-whABZ136-1616680588686)(.\img\自定义NFS模板12.png)]
5.为nfs创建报警动作
![image-20210316160650006](https://i-blog.csdnimg.cn/blog_migrate/e84341d246fd83ba49de755f87c9b7e5.png)
5.检测配置情况。客户端关闭NFS服务,查看监控以及报警功能
[root@web03 ~]# systemctl stop nfs
[root@web02 ~]# systemctl stop nfs
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ET8cVoZh-1616680588687)(C:\Users\12995\AppData\Roaming\Typora\typora-user-images\image-20210316161436576.png)]
6.实验成功!祝贺
第二部分:监控MYSQL服务
办法一:利用zabbix自带的mysql监控模板
1.分别在两天agent端修改监控模板
[root@webo2 ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
[root@webo3 ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-51SX7e9P-1616680588687)(C:\Users\12995\AppData\Roaming\Typora\typora-user-images\image-20210316163400343.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-enEaDQGj-1616680588688)(.\img\MySQL监控模板2.png)]丢失了
办法二:利用mysql端口3306进行检测
1.在server端检测mysql运行情况
[root@web01 ~]# zabbix_get -s 10.0.0.8 -p 10050 -k 'net.tcp.port[,3306]'
1
[root@web01 ~]# zabbix_get -s 10.0.0.9 -p 10050 -k 'net.tcp.port[,3306]'
1
#检查是否能建立 TCP 连接到指定端口。返回 0 - 不能连接;1 - 可以连接
2.创建自定义MySQL模板、应用集、监控项、触发器、图表、动作。流程同自定义NFS模板相同
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f2oESG38-1616680588689)(C:\Users\12995\AppData\Roaming\Typora\typora-user-images\image-20210316184256490.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LEevCAMb-1616680588690)(C:\Users\12995\AppData\Roaming\Typora\typora-user-images\image-20210316184332383.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pYeOJIHm-1616680588691)(C:\Users\12995\AppData\Roaming\Typora\typora-user-images\image-20210316184351509.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FUyTitVv-1616680588692)(C:\Users\12995\AppData\Roaming\Typora\typora-user-images\image-20210316184424363.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O3iwBej8-1616680588693)(C:\Users\12995\AppData\Roaming\Typora\typora-user-images\image-20210316184750546.png)]
3.停止agent端的数据库检测成功
systemctl stop mysqld
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DVDxFmg2-1616680588694)(C:\Users\12995\AppData\Roaming\Typora\typora-user-images\image-20210316184946904.png)]
第三部分:监控web服务
1.理论来源:
创建监控模板 监控 nginx服务与 80 端口
proc.num[<name>,<user>,<state>,<cmdline>] 进程数。返回整数
net.tcp.port[<ip>,port] 检查是否能建立 TCP 连接到指定端口。返回 0 - 不能连接;1 - 可以连接
2.实际思路:
操作流程与监控NFS和MySQL相似,通过监控进程与端口的方式。
创建模板 —— 创建应用集 —— 创建监控项 —— 创建触发器 —— 创建图形 —— 配置动作 —— 测试报警功能
在server端测试NGINX状态
[root@web01]# zabbix_get -s 192.168.100.105 -p 10050 -k "proc.num[,,,nginx]"
2
[root@web01]# zabbix_get -s 192.168.100.105 -p 10050 -k "net.tcp.port[,80]"
.......过程省略了
第四部分:监控URL地址
1.分别在agent两台机子上安装nginx并启动
yum install nginx -y
systemctl start nginx
2.分别在agent两台机子上写检测文件check.html
vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
vim /usr/share/nginx/html/check.html
echo ok >/usr/share/nginx/html/check.html
3.在server端测试两台机子的web网页连通性都OK
[root@web01 ~]# curl http://10.0.0.9/check.html
ok
[root@web01 ~]# curl http://10.0.0.8/check.html
ok
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aqcn1Zwp-1616680588697)(C:\Users\12995\Desktop\image-20210317143956375.png)]
可以看到,实验成功!!!!
总之,URL监测是在web场景立面去做的。
第五部分:监控项SSH服务
1.在服务端探测ssh的返回值
[root@web01 ~]# zabbix_get -s 10.0.0.9 -p 10050 -k "net.tcp.listen[22]"
1
[root@web01 ~]# zabbix_get -s 10.0.0.9 -p 10050 -k "net.tcp.listen[22]"
1
2.创建自定义全局模板给ssh用
3.创建监控项
4.设置完毕后,去检测成果,ok成功!(后来我又做了ssh服务的进程检测)
第六部分:报警升级和ssh自愈
准备最重要的一步:
1.分别在两台agent机子上做visudo
[root@web03 ~]# visudo
# %wheel ALL=(ALL) NOPASSWD: ALL
%zabbix ALL=(ALL) NOPASSWD: ALL
[root@web02 ~]# visudo
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
%zabbix ALL=(ALL) NOPASSWD: ALL
2.在agent端配置文件里开启能够远程传递命令的行
[root@webo2 ~]# vim /etc/zabbix/zabbix_agentd.conf
# EnableRemoteCommands=0
EnableRemoteCommands=1
[root@webo3 ~]# vim /etc/zabbix/zabbix_agentd.conf
# EnableRemoteCommands=0
EnableRemoteCommands=1
systemctl restart mysqld
1.第一步:配置用户群组。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fl4ipWnB-1616680588705)(…/AppData/Roaming/Typora/typora-user-images/image-20210325214521522.png)]
最好检测部分:
有图有真相,全部自愈,ok
[root@webo2 ~]# systemctl stop sshd
[root@webo2 ~]# ps -elf | grep sshd
4 S root 17010 1 0 80 0 - 40340 poll_s 21:49 ? 00:00:00 sshd: root@pts/1
0 S root 30104 17012 0 80 0 - 28181 pipe_w 23:48 pts/1 00:00:00 grep --color=auto sshd
[root@webo3 ~]# systemctl stop sshd
[root@webo3 ~]# ps -elf | grep sshd
4 S root 17010 1 0 80 0 - 40340 poll_s 21:49 ? 00:00:00 sshd: root@pts/1
0 S root 30104 17012 0 80 0 - 28181 pipe_w 23:48 pts/1 00:00:00 grep --color=auto sshd
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Q5xCFU8-1616680588711)(…/AppData/Roaming/Typora/typora-user-images/image-20210325214939370.png)]
第七部分:
1.在客户端agent配置文件下设置键值和命令
[root@webo2 ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mem.conf
UserParameter=free.mem,free -m|awk -F' ' 'NR==2{print $4/$2*100}'
#UserParameter=free.mem,free -m|awk -F' ' '/^Mem/{print $4/$2*100}'
UserParameter=avai.mem,free -m | awk -F ' ' '/Mem/{print $NF/$2*100}'
#UserParameter=avai.mem,free -m | awk -F ' ' 'NR==2{print $NF/$2*100}'
UserParameter=awap.mem,free -m | awk -F' ' '/Swap/{print $4/$2*100}'
#UserParameter=awap.mem,free -m | awk -F' ' 'NR==3{print $4/$2*100}'
[root@webo2 ~]# scp /etc/zabbix/zabbix_agentd.d/userparameter_mem.conf root@10.0.0.9:/etc/zabbix/zabbix_agentd.d/
userparameter_mem.conf 100% 275 316.3KB/s 00:00
systemctl restart zabbix-agent.service
[root@web03 ~]# cat /etc/zabbix/zabbix_agentd.d/userparameter_mem.conf
UserParameter=free.mem,free -m|awk -F' ' 'NR==2{print $4/$2*100}'
#UserParameter=free.mem,free -m|awk -F' ' '/^Mem/{print $4/$2*100}'
UserParameter=avai.mem,free -m | awk -F ' ' '/Mem/{print $NF/$2*100}'
#UserParameter=avai.mem,free -m | awk -F ' ' 'NR==2{print $NF/$2*100}'
UserParameter=awap.mem,free -m | awk -F' ' '/Swap/{print $4/$2*100}'
#UserParameter=awap.mem,free -m | awk -F' ' 'NR==3{print $4/$2*100}'
systemctl restart zabbix-agent.service
2.在server端监测我们刚设置的健值,监测成功了
[root@web01 ~]# zabbix_get -s 10.0.0.8 -p 10050 -k 'free.mem'
23.1481
[root@web01 ~]# zabbix_get -s 10.0.0.9 -p 10050 -k 'free.mem'
6.79012
[root@web01 ~]# zabbix_get -s 10.0.0.9 -p 10050 -k 'avai.mem'
21.7078
[root@web01 ~]# zabbix_get -s 10.0.0.8 -p 10050 -k 'avai.mem'
26.1317
[root@web01 ~]# zabbix_get -s 10.0.0.8 -p 10050 -k 'swap.mem'
100
[root@web01 ~]# zabbix_get -s 10.0.0.9 -p 10050 -k 'swap.mem'
99.609
3.开始设置监控项(设置两个)
4.检查结果,检测成功
5.开始配多条件触发器和动作的配置
5.检测结果:分别在两个agent端开始测试
[root@webo2 ~]# dd < /dev/zero > /dev/null bs=1024M count=2048
[root@webo3 ~]# dd < /dev/zero > /dev/null bs=1024M count=2048
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7wLIPq01-1616680588718)(C:\Users\12995\Desktop\image-20210317201842268.png)]
第八部分:zabbix分布式部署
准备四台机子:
web01:10.0.0.7(server)
zabbix:10.0.0.71(proxy)
web02:10.0.0.8 (agent)
web03:10.0.0.9 (agent)
四台机子统一时间
[root@web01 ~]# ntpdate ntp1.aliyun.com
。。
。。
19 Mar 11:14:57 ntpdate[8023]: adjust time server 120.25.115.20 offset 0.001765 sec
1:在proxy端操作
1.在10.0.0.71 上安装proxy服务,让其变成proxy端
[root@backup ~]# yum install -y https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-proxy-mysql-3.4.15-1.el7.x86_64.rpm
2.在proxy端安装mysql数据库
[root@backup ~]# vim /etc/yum.repos.d/mysql.repo
community.repo
# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/$basearch/
enabled=1
gpgcheck=0
[root@backup ~]# yum install mysql-community-server
[root@backup ~]# systemctl restart mysqld
3.配置zabbix proxy数据库(注意:为啥创立的zabbix用户和密码呢,这在这个代理服务的配置文件里可以看到,用户和密码都是zabbix,所以我们避免后面再改,直接一步到位)
mysql> create database zabbix_proxy charset utf8;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on zabbix_proxy.* to zabbix@'localhost' identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
4.讲proxy的数据文件导入相关联的数据库
#查看数据文件
[root@backup ~]# cd /usr/share/doc/zabbix-proxy-mysql-3.4.15/
[root@backup zabbix-proxy-mysql-3.4.15]# ls
AUTHORS ChangeLog COPYING NEWS README schema.sql.gz
#用zat命令把数据压缩包读到指定的数据库里
[root@backup zabbix-proxy-mysql-3.4.15]# zcat schema.sql.gz | mysql -uzabbix -pzabbix zabbix_proxy
Warning: Using a password on the command line interface can be insecure.
[root@backup zabbix-proxy-mysql-3.4.15]# echo $?
0
#查看导入的数据
mysql> show databases;
mysql> use zabbix_proxy;
mysql> show tables;
mysql> quit
5.测试server端ip连接是否通(针对非阿里云上做的)
[root@backup zabbix-proxy-mysql-3.4.15]# ping 172.16.1.7
PING 172.16.1.71 (172.16.1.71) 56(84) bytes of data.
64 bytes from 172.16.1.71: icmp_seq=1 ttl=64 time=0.880 ms
64 bytes from 172.16.1.71: icmp_seq=2 ttl=64 time=0.542 ms
64 bytes from 172.16.1.71: icmp_seq=3 ttl=64 time=1.13 ms
6.修改proxy端zabbix配置文件并重新启动
[root@backup ~]# vim /etc/zabbix/zabbix_proxy.conf
Server=172.16.1.7 #内网外网只要能连上都可以
Hostname=zabbix-proxy #修改为proxy1
DBName=zabbix_proxy
DBHost=localhost #proxy连接的数据库在哪里
DBUser=zabbix
DBPassword=zabbix #连接密码
[root@backup zabbix-proxy-mysql-3.4.15]# systemctl restart zabbix-proxy.service
7.测试在proxy端发现激活了占据了10051端口
[root@zabbix ~]# netstat -lntp|grep zabbix_proxy
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 9741/zabbix_proxy
tcp6 0 0 :::10051 :::* LISTEN 9741/zabbix_proxy
2:在zabbix-agent端的操作
1.分别在两个agent端安装rpm包
[root@web02 ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
[root@web03 ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
2…分别在两个agent端安装ageny包
[root@web02 ~]# yum install zabbix-agent -y
[root@web03 ~]# yum install zabbix-agent -y
3.分别在agent端修改配置文件并重启
[root@web02 ~]# vim /etc/zabbix/zabbix_agentd.conf
[root@web03 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=172.16.1.71 #指向proxy端ip
ServerActive=172.16.1.71 #开启了自动上报功能
[root@web02 ~]# systemctl start zabbix-agent.service
[root@web02 ~]# echo $?
0
[root@web03 ~]# systemctl start zabbix-agent.service
[root@web03 ~]# echo $?
0
3:在server端的操作
1.安装源
[root@web01 ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
获取http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
准备中... ################################# [100%]
软件包 zabbix-release-3.4-2.el7.noarch 已经安装
2.安装zabbixserver端
[root@web01 ~]# yum install zabbix-server-mysql zabbix-web-mysql
3.配源安装mysql
[root@web01 ~]# vim /etc/yum.repos.d/mysql.repo
# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/$basearch/
enabled=1
gpgcheck=0
[root@web01 ~]#yum install mysql-community-server
[root@web01 ~]# mysql -uroot -p123
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
mysql> grant all privileges on zabbix.* to zabbix@'172.16.1.%' identified by 'zabbix';
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit;
5.将zabbix server端产生的数据装到自己设立的数据库里
[root@web01 ~]#zcat /usr/share/doc/zabbix-server-mysql-3.4.15/create.sql.gz | mysql -uzabbix -pzabbix zabbix
Warning: Using a password on the command line interface can be insecure.
6.这个其实不用配,因为zabbix我们设置的都是数据库信息和zabbix配置文件里面的统一的
[root@web01 ~]#vim /etc/zabbix/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBHost=localhost
7.修改httpd配置文件把时区设置上海亚洲然后重启
[root@web01 ~]# vim /etc/httpd/conf.d/zabbix.conf
# php_value date.timezone Europe/Riga
php_value date.timezone Asia/Shanghai
8.解决中文乱码问题并重启
[root@web01 ~]# yum -y install wqy-microhei-fonts
[root@web01 ~]# cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
[root@web01 ~]# systemctl start httpd
4.登录server端 输入zabbix账户和密码
http://10.0.0.7/zabbix/
Admin
zabbix
登录ok
2.在zabbix server web页面添加agent代理程序
- 手动添加主机
5.检测最后主机状态成功实现zabbix分布式部署
注意:
在做实验的过程中,我们发现在zabbix可用性这里老是启动不起来,正确的操作就是统一ip地址内网或者外网(直接用外网10.0.0.0网段)然后再刷新server端和proxy端数据库连接权限,允许10.0.0.0网段登录。然后疯狂的重启各种服务就可以啦
grant all privileges on zabbix_proxy.* to zabbix@'10.0.0.%' identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privilege