日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

使用?Docker安裝?Zabbix并配置自定義監(jiān)控項(xiàng)的過程詳解_docker

作者:愿許浪盡天涯 ? 更新時(shí)間: 2022-06-12 編程語言

一、Zabbix 簡介

Zabbix 可以用來監(jiān)控各種網(wǎng)絡(luò)參數(shù),來保證服務(wù)器和系統(tǒng)的安全運(yùn)行。并且 Zabbix 還提供了靈活的通知機(jī)制,以此來讓系統(tǒng)管理員快速定位/解決存在的各種問題。是一個(gè)基于 Web 界面提供的分布式系統(tǒng)監(jiān)控以及網(wǎng)絡(luò)監(jiān)控功能的企業(yè)級(jí)開源解決方案。

1.監(jiān)控功能

  • 主機(jī)性能監(jiān)控、網(wǎng)絡(luò)設(shè)備性能監(jiān)控、數(shù)據(jù)庫性能監(jiān)控、多種告警方式、詳細(xì)的報(bào)表圖。
  • 監(jiān)控主機(jī),我們可以使用 Zabbix 提供的 Agent 軟件,來監(jiān)控 Linux、Windows、FreeBSD 等系統(tǒng)。
  • 監(jiān)控網(wǎng)絡(luò)設(shè)備,我們可以通過 Zabbix 支持的 SNMP 協(xié)議來進(jìn)行監(jiān)控(SSH 協(xié)議不常用)

1)監(jiān)控對(duì)象

  • 設(shè)備:服務(wù)器,路由器,交換機(jī)。
  • 軟件:OS,網(wǎng)絡(luò),應(yīng)用程序。

2)主機(jī)性能指標(biāo)監(jiān)控

  • 故障監(jiān)控:宕機(jī),服務(wù)不可用,主機(jī)不可達(dá)。

2.Zabbix 工作原理

首先,我們需要在被監(jiān)控的主機(jī)上安裝 Agent 軟件,用來收集當(dāng)前服務(wù)器的各項(xiàng)數(shù)據(jù)信息,并發(fā)送給監(jiān)控端,當(dāng)監(jiān)控端接收到 Agent 發(fā)送過來的信息后,會(huì)將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中,接著通過 Web 界面來將數(shù)據(jù)在前端頁面上進(jìn)行展示和繪圖。

這里 Agent 收集數(shù)據(jù)分為 主動(dòng)和被動(dòng) 兩種模式:

  • 主動(dòng): 客戶端通過連接監(jiān)控端的 10051 端口,來主動(dòng)的將收集到的信息推送給監(jiān)控端。
  • 被動(dòng): 監(jiān)控端定時(shí)的通過連接客戶端的 10050 端口進(jìn)行通信,來收集客戶端的各項(xiàng)數(shù)據(jù)信息。

Zabbix 默認(rèn)使用的模式為被動(dòng)模式,也就是說當(dāng)我們需要監(jiān)控的主機(jī)數(shù)量較多時(shí),可能會(huì)影響到監(jiān)控端的性能。因?yàn)楸O(jiān)控端會(huì)定時(shí)的通過連接客戶端的端口進(jìn)行數(shù)據(jù)收集,所以我們可以 選擇性的配置部分主機(jī)為主動(dòng)模式,來減少監(jiān)控端的性能壓力。

3.Zabbix 組件

組件 作用
Zabbix Server 用于接收 Agent 發(fā)送過來的信息,所有的配置、數(shù)據(jù)統(tǒng)計(jì)、數(shù)據(jù)操作都是由它組織進(jìn)行
Database Storage 用于存儲(chǔ)所有的配置信息以及收集的數(shù)據(jù)信息
Web Interface Zabbix 的 GUI 接口,可以用于界面展示(一般和 Server 運(yùn)行在用一臺(tái)主機(jī)上)
Agent 用于采集本地的數(shù)據(jù)信息,也就是所謂的被監(jiān)控端
Proxy 可選組件,通常用于分布式監(jiān)控架構(gòu);相當(dāng)于是一個(gè)代理的 Server,用來收集 Agent 部分?jǐn)?shù)據(jù),并轉(zhuǎn)發(fā)給監(jiān)控端

4.Zabbix 進(jìn)程

  • Sender:用于發(fā)送數(shù)據(jù)給 Server 或者 Proxy,通常用于耗時(shí)比較長的檢查;
  • Get:Zabbix 命令,主要用于排查使用,可以在監(jiān)控端上執(zhí)行,來獲取被監(jiān)控端的信息;
  • Agent:客戶端守護(hù)進(jìn)程,用于收集當(dāng)前主機(jī)的數(shù)據(jù)信息,如:CPU 負(fù)載、內(nèi)存的使用情況等;
  • Proxy:代理守護(hù)進(jìn)程,相當(dāng)于是一個(gè)中轉(zhuǎn)站,可以將收集到的數(shù)據(jù)信息 主動(dòng)/被動(dòng) 的提交到監(jiān)控端上;
  • Server:監(jiān)控端守護(hù)進(jìn)程,用于接收 Agent Get Sender Proxy Java_Gateway 提供的數(shù)據(jù)。

因?yàn)?Zabbix 并不能直接監(jiān)控Java 應(yīng)用,所以在 Zabbix 2.0 后推出 Java_Gateway 代理進(jìn)程,使我們可以監(jiān)控 Java 應(yīng)用。

二、使用 Zabbix 配置自定義監(jiān)控項(xiàng)

  • 我們下面采用的是 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 --now

2)安裝 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 --version

3)安裝 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.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agentd.d/*.conf
[root@Zabbix ~]# systemctl enable zabbix-agent --now

4)安裝 Zabbix

[root@Zabbix ~]# mkdir -p /app/zabbix
[root@Zabbix ~]# cd /app/zabbix/
[root@Zabbix zabbix]# cat <<END > docker-compose.yml
version: "3"
services:
  mysql-server:
    image: mysql:5.7
    ports:
      - "3306:3306"
    volumes:
      - "/app/mysql:/var/lib/mysql"				# 配置數(shù)據(jù)卷 (防止監(jiān)控?cái)?shù)據(jù)丟失)
    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"						# 使用主機(jī)網(wǎng)絡(luò)
  zabbix-web:
    image: zabbix/zabbix-web-nginx-mysql:5.4.8-centos
    ports:
      - "8000:8080"								# Zabbix WebUI 映射端口
    volumes:									# 當(dāng)在 Web 界面配置成中文后,監(jiān)控界面會(huì)出現(xiàn)亂碼
      - "./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: always
END
[root@Zabbix zabbix]# docker-compose up -d
[root@Zabbix zabbix]# docker-compose ps  
  • simkai.ttf 字體,你們可以在自己電腦上的這個(gè) C:\Windows\Fonts 路徑找到。

5)驗(yàn)證:http://192.168.1.1:8000(賬號(hào):Admin/zabbix

  • 界面上出現(xiàn):zabbix server is not running: the information displayed may not be current 報(bào)錯(cuò);
  • 原因可能是因?yàn)槲覀?docker-compose 文件中的 ZBX_SERVER_HOST 變量配置的值不是 Zabbix Server 的 IP 地址導(dǎo)致的。

我上面報(bào)錯(cuò)是為了讓你們看下效果,如果你們出現(xiàn)如上配置,按照我的配置修改即可。

配置中文

2.開啟自定義監(jiān)控項(xiàng)

[root@Zabbix ~]# echo "UnsafeUserParameters=1" >> /etc/zabbix/zabbix_agentd.conf 

3.編寫 Nginx 自定義監(jiān)控腳本

[root@Zabbix ~]# yum -y install nginx
[root@Zabbix ~]# cat <<END > /etc/nginx/conf.d/status.conf
server {
    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;
    }
}
END

1)編寫自定義監(jiān)控腳本

[root@Zabbix ~]# mkdir /etc/zabbix/scripts
[root@Zabbix ~]# vim /etc/zabbix/scripts/nginx_status.sh
#!/bin/bash
HOST="127.0.0.1"
PORT="80"
# 監(jiān)控 Nginx 進(jìn)程是否存在
function Ping {
    /sbin/pidof nginx | wc -l
}
# 監(jiān)控 Nginx 狀態(tài)信息
function Active {
    /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | grep "Active" | awk '{print $NF}'
}
function Reading {
    /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | grep "Reading" | awk '{print $2}'
}
function Writing {
    /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | grep "Writing" | awk '{print $4}'
}
function Waiting {
    /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | grep "Waiting" | awk '{print $6}'
}
function Server {
    /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | awk NR==3 | awk '{print $1}'
}
function Accepts {
    /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | awk NR==3 | awk '{print $2}'
}
function Requests {
    /usr/bin/curl "http://$HOST:$PORT/status" 2> /dev/null | awk NR==3 | awk '{print $3}'
}
# 執(zhí)行 function
$1
[root@Zabbix ~]# chmod +x /etc/zabbix/scripts/nginx_status.sh

2)定義監(jiān)控腳本

[root@Zabbix ~]# cat <<"END" > /etc/zabbix/zabbix_agentd.d/nginx_status.conf
UserParameter=nginx.status[*],/etc/zabbix/scripts/nginx_status.sh $1
END
[root@Zabbix ~]# systemctl restart zabbix-agent

3)驗(yàn)證

[root@Zabbix ~]# docker exec -it zabbix-zabbix-server-1 /bin/bash

創(chuàng)建模板

創(chuàng)建應(yīng)用集

創(chuàng)建監(jiān)控項(xiàng)

因?yàn)樵谖覀兊谋O(jiān)控腳本中,一共定義了 8 個(gè)監(jiān)控項(xiàng),所以我們上面也要?jiǎng)?chuàng)建 8 個(gè)監(jiān)控項(xiàng),重復(fù)上面操作,創(chuàng)建出對(duì)應(yīng)的即可。

給我們的監(jiān)控項(xiàng)創(chuàng)建圖形

將 Nginx 模板加入到主機(jī)中

查看監(jiān)控圖

其實(shí) Zabbix 的自定義監(jiān)控項(xiàng)就是由 key/value 的形式組成。即,我們只需要把要監(jiān)控的數(shù)據(jù)定義成一個(gè) valuekey 里面的值就是我們想要監(jiān)控的數(shù)據(jù),那么也就是說,當(dāng)我們定時(shí)的查找這個(gè) key 對(duì)應(yīng)的值,便可以得到監(jiān)控?cái)?shù)據(jù)。

原文鏈接:https://blog.csdn.net/weixin_46902396/article/details/124016806

欄目分類
最近更新