Ansible安装zabbix-agent2;Zabbix6监控docker。

背景

使用ansible最终目标都是形成ansible-playbook和playbook脚本便于批量配置管理目标服务器群。
但在写脚本之前通常需要快速验证各个steps的是否正常可用,每次在ide工具中修改playbook经过上传、执行等几个步骤都比较费时间。因此可以先用ansible而不是ansible-playbook命令快速验证相关steps是否正常可用。最终再去汇总统一的playbook脚本。

需求

已有环境:

  1. 一台 zabbix-server6.4,安装在RockyLinux9上。
  2. 一套3节点K8S集群,安装在CentOS 7.6上,其上运行了测试应用(容器运行时使用的是docker而不是containerd)。
  3. 均可访问外网。

目标:

  1. zabbix-server配置自动发现,当监听到20050端口时,创建主机并关联Linux和Docker模板。
  2. 先用ansible命令对该3台服务器安装zabbix-agent2,并修改配置(端口监听、server地址)。
  3. 最后通过ansible-playbook形成playbook脚本归到自己的运维项目中。

实际操作

Ansible配置需要被监控的目标机器。

创建一个最简单的目标服务器列表文件:

vim 431081.ini
[all]
10.43.10.81
10.43.10.82
10.43.10.83

检查是否安装了zabbix-agent2

ansible -i 431081.ini all -m ping -k
ansible -i 431081.ini all -m shell -a "rpm -qa |grep zabbix"
ansible -i 431081.ini all -m shell -a "yum search zabbix-agent2"
ansible -i 431081.ini all -m shell -a "yum install -y zabbix-agent2"

ansible命令不方便在目标机器上远程执行涉及“换行”的创建文件的操作,因此现在ansible本机上创建zabbix-agent2的repo文件,然后再通过copy模块复制到目标机器上。
创建zabbix-agent2仓库文件。

cat <<EOF >zabbixAgent2.repo
[zabbixAgent2]
name=Zabbix Official Repository - $basearch
baseurl=https://repo.zabbix.com/zabbix/6.4/rhel/7/\$basearch/
enabled=1
gpgcheck=0
EOF

将本地仓库文件复制到目标机器,使用yum模块安装,使用shell模块检查安装情况。

ansible -i 431081.ini all -m copy -a "src=/root/zabbixAgent2.repo dest=/etc/yum.repos.d/" -k
ansible -i 431081.ini all -m shell -a "ls -l /etc/yum.repos.d/" -k
ansible -i 431081.ini all -m yum -a "name=zabbix-agent2 state=present" -k
ansible -i 431081.ini all -m shell -a "rpm -qa |grep zabbix-agent2" -k

安装成功后,通过sed命令修改zabbix-agent2的配置文件,关键配置为:监听端口、server地址。然后启动服务即可。

ansible -i 431081.ini all -m shell -a "sed -i 's/^ServerActive=127.0.0.1/ServerActive=10.42.40.43/' /etc/zabbix/zabbix_agent2.conf"
ansible -i 431081.ini all -m shell -a "sed -i 's/^Server=127.0.0.1/Server=10.42.40.43/' /etc/zabbix/zabbix_agent2.conf"
ansible -i 431081.ini all -m shell -a "sed -i '/### Option: ListenPort/a\ListenPort=20050' /etc/zabbix/zabbix_agent2.conf" -k
ansible -i 431081.ini all -m shell -a "cat /etc/zabbix/zabbix_agent2.conf |grep -v ^#|grep -v ^$" -k
ansible -i 431081.ini all -m service -a "name=zabbix-agent2 state=started enabled=yes" -k

在web界面配置zabbix自动发现及关联动作

创建自动发现规则,如下图:
在这里插入图片描述
创建发现动作,自动关联监控模板,如下图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
检查自动发现规则是否生效,等待监控主机的自动创建。
在这里插入图片描述
在这里插入图片描述
若存在问题,则从server端、agent端的日志进行排查。

问题

问题一:无法获取docker相关监控数据。

监控项中,无法取得docker模板中的数据,原因是docker.sock没有操作权限。
修改权限即可。

ansible -i 431081.ini all -m shell -a "ls -l /var/run/docker.sock" -k
ansible -i 431081.ini all -m shell -a "chmod 777 /var/run/docker.sock" -k
ansible -i 431081.ini all -m shell -a "ls -l /var/run/docker.sock" -k

在这里插入图片描述
在这里插入图片描述

问题二:zabbix-server异常关闭

问题表现:因为K8S集群上运行的应用容器很多,导致单台监控主机存在5-6千个监控项,因此zabbix-server默认的缓存太小,导致server出现内存溢出报错并停止运行,重启zabbix-server也依然报错。
解决:修改zabbix-server的配置文件后,重新启动zabbix-server即可。
在这里插入图片描述
在这里插入图片描述
##结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. Buffer是一个缓存区,用于存放将要输出或将要输入的数据,而Cache是一种缓存机制,用于存储最常用的数据,以便更快地访问。 2. Keepalived是一种高可用性软件,它可以在多个服务器之间实现负载均衡和故障转移。它的工作原理是使用虚拟IP地址和心跳检测机制来监测服务器的状态,并在必要时将流量重定向到其他服务器。 3. NFS是一种网络文件系统,它允许多台计算机共享文件。默认情况下,NFS使用TCP端口2049。要挂载NFS存储,可以使用mount命令。 4. Linux中常用的内存和磁盘使用命令包括free、df、du、top等。 5. Linux中的查看命令通常用于查看系统状态和性能指标,如top、htop、vmstat、sar等。 6. 可以使用head和tail命令来查看文件的头部和尾部,也可以使用sed、awk等命令来查看文件的中间部分。 7. 常用的Linux内存命令包括free、top、vmstat等,free命令可以显示系统的内存使用情况。 8. 处理Linux服务器性能问题的方法包括使用top命令查看系统资源的使用情况,使用ps命令查看进程的状态,使用netstat命令查看网络连接情况,使用iostat命令查看磁盘I/O性能等。 9. top命令可以查看CPU、内存、进程等指标。 10. 可以使用smartctl命令来检查磁盘是否有问题。 11. 可以使用iostat命令来查看磁盘I/O性能。 12. LVS有三种模式:NAT模式、DR模式和TUN模式。NAT模式将真实服务器隐藏在一个虚拟IP地址后面,DR模式将真实服务器的网卡直接连接到LVS机器上,TUN模式则是在真实服务器和LVS机器之间建立一个隧道。 13. Keepalived有三个模块:VRRP模块、健康检查模块和通知模块。 14. Keepalived的健康检查机制包括TCP检查、HTTP检查、SMTP检查等,它会逐层检查服务器的状态,如果服务器出现故障,则会将流量重定向到其他可用的服务器上。 15. 可以使用zabbix自定义监测项来监测应用API是否正常,具体操作可以参考zabbix官方文档。 16. 监控脚本文件可以放在任何一个目录下,可以通过zabbix agent配置文件中的UserParameter选项来让agent监控脚本交互。 17. 推送镜像到Docker Hub仓库的操作流程包括打标签、登录账户、上传镜像等步骤。 18. 在新版本的Kubernetes中,Docker被替换为CRI-O或Containerd等容器运行时,具体操作可以参考Kubernetes官方文档。 19. 如果Kubernetes节点出现notready状态,可以使用kubectl describe命令查看哪个服务出现了问题,并进行排查和修复。 20. Pod调度机制包括NodeSelector、Affinity和Taints & Tolerations等方式。 21. Kubernetes中的Service类型包括ClusterIP、NodePort、LoadBalancer和ExternalName等,每种类型都有不同的使用场景和特点。 22. Kubernetes中的持久化方式包括HostPath、Local、NFS、iSCSI等,每种方式都有不同的优缺点。 23. 在二进制部署的Kubernetes中,Pod的维护是通过kubelet组件来实现的。 24. Ansible中role的目录结构包括tasks、files、templates、vars、defaults、meta等目录,每个目录都有不同的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值