利用 Docker 安装 Zabbix,并设置自界说监控项

手机软件开发 2024-9-22 17:38:51 74 0 来自 中国
镜像下载、域名剖析、时间同步请点击 阿里云开源镜像站
一、Zabbix 简介

Zabbix 可以用来监控各种网络参数,来包管服务器和体系的安全运行。而且 Zabbix 还提供了机动的通知机制,以此来让体系管理员快速定位/解决存在的各种问题。是一个基于 Web 界面提供的分布式体系监控以及网络监控功能的企业级开源解决方案
1.监控功能


  • 主机性能监控、网络设备性能监控、数据库性能监控、多种告警方式、详细的报表图。
  • 监控主机,我们可以利用 Zabbix 提供的 Agent 软件,来监控 Linux、Windows、FreeBSD 等体系。
  • 监控网络设备,我们可以通过 Zabbix 支持的 SNMP 协议来举行监控(SSH 协议不常用)
1)监控对象


  • 设备:服务器,路由器,交换机。
  • 软件:OS,网络,应用步调。
2)主机性能指标监控


  • 故障监控:宕机,服务不可用,主机不可达。
2.Zabbix 工作原理

起首,我们必要在被监控的主机上安装 Agent 软件,用来网络当前服务器的各项数据信息,并发送给监控端,当监控端吸收到 Agent 发送过来的信息后,会将数据存储到数据库中,接着通过 Web 界面来将数据在前端页面上举行展示和画图。
这里 Agent 网络数据分为 自动和被动 两种模式:

  • 自动: 客户端通过毗连监控端的 10051 端口,来自动的将网络到的信息推送给监控端。
  • 被动: 监控端定时的通过毗连客户端的 10050 端口举行通讯,来网络客户端的各项数据信息。
Zabbix 默认利用的模式为被动模式,也就是说当我们必要监控的主机数目较多时,大概会影响到监控端的性能。由于监控端会定时的通过毗连客户端的端口举行数据网络,以是我们可以 选择性的设置部门主机为自动模式,来减少监控端的性能压力。
3.Zabbix 组件


  • Zabbix Server :用于吸收 Agent 发送过来的信息,全部的设置、数据统计、数据操作都是由它构造举行
  • Database Storage  :用于存储全部的设置信息以及网络的数据信息
  • Web Interface:    Zabbix 的 GUI 接口,可以用于界面展示(一样寻常和 Server 运行在用一台主机上)
  • Agent:    用于收罗本地的数据信息,也就是所谓的被监控端
  • Proxy :可选组件,通常用于分布式监控架构;相当于是一个署理的 Server,用来网络 Agent 部门数据,并转发给监控端
4.Zabbix 进程


  • Sender:用于发送数据给 Server 大概 Proxy,通常用于耗时比力长的检查;
  • Get:Zabbix 下令,重要用于排查利用,可以在监控端上实验,来获取被监控端的信息;
  • Agent:客户端守护进程,用于网络当前主机的数据信息,如:CPU 负载、内存的利用环境等;
  • Proxy:署理守护进程,相当于是一个中转站,可以将网络到的数据信息 自动/被动 的提交到监控端上;
  • Server:监控端守护进程,用于吸收 Agent Get Sender Proxy Java_Gateway 提供的数据。
由于 Zabbix 并不能直接监控 Java 应用,以是在 Zabbix 2.0 后推出 Java_Gateway 署理进程,使我们可以监控 Java 应用。
二、利用 Zabbix 设置自界说监控项

我们下面采取的是 docker-compose 方式安装
1.安装 Zabbix

1)安装 Docker

[root@Zabbix ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo[root@Zabbix ~]# yum -y install epel-release[root@Zabbix ~]# yum -y install yum-utils device-mapper-persistent-data lvm2[root@Zabbix ~]# yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo[root@Zabbix ~]# yum -y install docker-ce-19.03.12 docker-ce-cli-19.03.12[root@Zabbix ~]# systemctl enable docker --now2)安装 Docker-Compose

[root@Zabbix ~]# wget "https://github.com/docker/compose/releases/download/v2.3.2/docker-compose-$(uname -s)-$(uname -m)" -O /usr/local/bin/docker-compose  [root@Zabbix ~]# chmod +x /usr/local/bin/docker-compose[root@Zabbix ~]# docker-compose --version3)安装 Agent

[root@Zabbix ~]# rpm -ivh http://repo.zabbix.com/zabbix/5.4/rhel/7/x86_64/zabbix-agent-5.4.8-1.el7.x86_64.rpm[root@Zabbix ~]# egrep -v '^$|#' zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pidLogFile=/var/log/zabbix/zabbix_agentd.logLogFileSize=0Server=127.0.0.1ServerActive=127.0.0.1Hostname=Zabbix serverInclude=/etc/zabbix/zabbix_agentd.d/*.conf[root@Zabbix ~]# systemctl enable zabbix-agent --now4)安装 Zabbix
[root@Zabbix ~]# mkdir -p /app/zabbix[root@Zabbix ~]# cd /app/zabbix/[root@Zabbix zabbix]# cat <<END > docker-compose.ymlversion: "3"services:  mysql-server:    image: mysql:5.7    ports:      - "3306:3306"    volumes:      - "/app/mysql:/var/lib/mysql"             # 设置数据卷 (防止监控数据丢失)    environment:      MYSQL_ROOT_PASSWORD: 123123      TZ: Asia/Shanghai    command: --character-set-server=utf8 --collation-server=utf8_bin    restart: always  zabbix-server:    image: zabbix/zabbix-server-mysql:5.4.8-centos    environment:      DB_SERVER_HOST: 127.0.0.1      DB_SERVER_PORT: 3306      MYSQL_DATABASE: zabbix      MYSQL_USER: root      MYSQL_PASSWORD: 123123      TZ: Asia/Shanghai    depends_on:      - mysql-server    restart: always    network_mode: "host"                        # 利用主机网络  zabbix-web:    image: zabbix/zabbix-web-nginx-mysql:5.4.8-centos    ports:      - "8000:8080"                             # Zabbix WebUI 映射端口    volumes:                                    # 当在 Web 界面设置成中文后,监控界面会出现乱码      - "./simkai.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf"    environment:      DB_SERVER_HOST: mysql-server      DB_SERVER_PORT: 3306      MYSQL_DATABASE: zabbix      MYSQL_USER: root      MYSQL_PASSWORD: 123123      TZ: Asia/Shanghai      ZBX_SERVER_HOST: 192.168.1.1    depends_on:      - mysql-server      - zabbix-server    restart: alwaysEND[root@Zabbix zabbix]# docker-compose up -d[root@Zabbix zabbix]# docker-compose ps  simkai.ttf 字体,你们可以在自己电脑上的这个 C:\Windows\Fonts 路径找到。
5)验证:http://192.168.1.1:8000(账号:Admin/zabbix)

1.png

  • 界面上出现:zabbix server is not running: the information displayed may not be current 报错;
  • 原因大概是由于我们 docker-compose 文件中的 ZBX_SERVER_HOST 变量设置的值不是 Zabbix Server 的 IP 地点导致的。
我上面报错是为了让你们看下效果,如果你们出现如上设置,按照我的设置修改即可。
设置中文
2.png 2.开启自界说监控项

[root@Zabbix ~]# echo "UnsafeUserParameters=1" >> /etc/zabbix/zabbix_agentd.conf 3.编写 Nginx 自界说监控脚本

[root@Zabbix ~]# yum -y install nginx[root@Zabbix ~]# cat <<END > /etc/nginx/conf.d/status.confserver {    listen 80;    server_name 127.0.0.1;    location /status {        stub_status on;        allow 127.0.0.1;        allow 192.168.1.0/24;        deny all;    }}END1)编写自界说监控脚本

[root@Zabbix ~]# mkdir /etc/zabbix/scripts[root@Zabbix ~]# vim /etc/zabbix/scripts/nginx_status.sh#!/bin/bashHOST="127.0.0.1"ORT="80"# 监控 Nginx 进程是否存在function Ping {    /sbin/pidof nginx | wc -l}# 监控 Nginx 状态信息function Active {    /usr/bin/curl "http://$HOSTPORT/status" 2> /dev/null | grep "Active" | awk '{print $NF}'}function Reading {    /usr/bin/curl "http://$HOSTPORT/status" 2> /dev/null | grep "Reading" | awk '{print $2}'}function Writing {    /usr/bin/curl "http://$HOSTPORT/status" 2> /dev/null | grep "Writing" | awk '{print $4}'}function Waiting {    /usr/bin/curl "http://$HOSTPORT/status" 2> /dev/null | grep "Waiting" | awk '{print $6}'}function Server {    /usr/bin/curl "http://$HOSTPORT/status" 2> /dev/null | awk NR==3 | awk '{print $1}'}function Accepts {    /usr/bin/curl "http://$HOSTPORT/status" 2> /dev/null | awk NR==3 | awk '{print $2}'}function Requests {    /usr/bin/curl "http://$HOSTPORT/status" 2> /dev/null | awk NR==3 | awk '{print $3}'}# 实验 function$1[root@Zabbix ~]# chmod +x /etc/zabbix/scripts/nginx_status.sh2)界说监控脚本

[root@Zabbix ~]# cat <<"END" > /etc/zabbix/zabbix_agentd.d/nginx_status.confUserParameter=nginx.status
  • ,/etc/zabbix/scripts/nginx_status.sh $1END[root@Zabbix ~]# systemctl restart zabbix-agent3)验证

    [root@Zabbix ~]# docker exec -it zabbix-zabbix-server-1 /bin/bash创建模板
    4.png 创建应用集
    创建监控项
    6.png 由于在我们的监控脚本中,一共界说了 8 个监控项,以是我们上面也要创建 8 个监控项,重复上面操作,创建出对应的即可。
    7.png 给我们的监控项创建图形
    将 Nginx 模板参加到主机中
    检察监控图
    10.png 其实 Zabbix 的自界说监控项就是由 key/value 的情势构成。即,我们只必要把要监控的数据界说成一个 value,key 内里的值就是我们想要监控的数据,那么也就是说,当我们定时的查找这个 key 对应的值,便可以得到监控数据。
    本文转自:https://blog.csdn.net/weixin_46902396/article/details/124016806
  • 您需要登录后才可以回帖 登录 | 立即注册

    Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

    GMT+8, 2024-10-18 20:19, Processed in 0.119002 second(s), 35 queries.© 2003-2025 cbk Team.

    快速回复 返回顶部 返回列表