zabbix企业监控
阅读原文时间:2023年07月08日阅读:1

第一节、系统初始化

1、前期环境

主机名

IP地址

操作系统

备注

zabbix-10

192.168.2.10

CentOS Linux release 7.4

zabbix服务端

agent-15

192.168.2.15

CentOS Linux release 7.4

zabbix客户端

2.2、主机

[root@zabbix-10 ~]# systemctl stop firewalld
[root@zabbix-10 ~]# systemctl disable firewalld
[root@zabbix-10 ~]# setenforce 0
[root@zabbix-10 ~]# vim /etc/selinux/config
SELINUX=disabled

2.3、软件详情

第二节、源码安装

2.2、php安装

1、安装php依赖组件(包含Nginx依赖)

yum install -y gcc-c++ autoconf make \
libjpeg libjpeg-devel  \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel unzip \
zip libzip-devel \
glibc glibc-devel \
glib2 glib2-devel \
bzip2 bzip2-devel \
curl curl-devel libcurl-devel \
ncurses openssl-devel \
gdbm-devel db4-devel libXpm-devel \
libX11-devel gd-devel gmp-devel \
readline-devel libxslt-devel \
expat-devel xmlrpc-c xmlrpc-c-devel \
libicu-devel libmcrypt-devel \
libmemcached-devel \
oniguruma oniguruma-devel \
sqlite-devel \

2、创建www用户,解压

[root@zabbix-10 ~]# useradd -s /sbin/nologin www
[root@zabbix-10 ~]# id www
uid=1000(www) gid=1000(www) 组=1000(www)
[root@zabbix-10 iso]# tar -xvf php-7.3.28.tar.bz2
[root@zabbix-10 iso]# cd php-7.3.28

3、源码编译、安装

[root@zabbix-10 php-7.3.28]# ./configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip

可能会报错,提示需要安装zlib

查看yum是否安装,安装了还是提示错误的话就卸载了自己下载源码包编译安装,

如果zlib版本大于2.2的话可能会提示cmake版本过低,要求升级cmake

下载Cmake

[root@zabbix iso]# wget https://cmake.org/files/v3.6/cmake-3.6.2.tar.gz
[root@zabbix iso]# tar -xvf cmake-3.6.2.tar.gz
[root@zabbix iso]# mv cmake-3.6.2 /usr/local/cmake3
[root@zabbix iso]# cd /usr/local/cmake3/
[root@zabbix cmake3]# ./configure
[root@zabbix cmake3]# make && make install

4、移除旧的libzip:

[root@zabbix iso]# yum remove libzip

5、安装新版本:

[root@zabbix iso]# curl -O https://libzip.org/download/libzip-2.5.2.tar.gz

[root@zabbix iso]# tar -zxvf libzip-2.5.2.tar.gz

[root@zabbix iso]# cd libzip-2.5.1

[root@zabbix libzip-2.5.1]# mkdir build

[root@zabbix libzip-2.5.1]# cd build

[root@zabbix build]# cmake ..

[root@zabbix build]# make && make install

6、再次执行

[root@zabbix-10 php-7.3.28]# ./configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip



[root@zabbix-10 php-7.3.28]# make && make install

提示:若无报错执行下一步安装,如果编译过程中出现错误,根据报错安装依赖包,通常不会出现这种问题。

7、完成安装后配置php.ini文件

[root@zabbix-10 php-7.3.28]# cp php.ini-development /usr/local/php/etc/php.ini
[root@zabbix-10 php-7.3.28]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
[root@zabbix-10 php-7.3.28]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

8、修改 php.ini 相关参数

[root@zabbix-10 ~]# vim /usr/local/php/etc/php.ini
date.timezone = Asia/Shanghai                //设置时区
max_execution_time = 300                    //最大执行时间,秒
post_max_size = 32M                        //POST数据最大容量
max_input_time = 300                        //服务器接收数据的时间限制
memory_limit = 128M                        //内存容量限制

9、配置www.conf

[root@zabbix-10 ~]# vim /usr/local/php/etc/php-fpm.d/www.conf

user = www
group = www

10、创建system系统单元文件php-fpm启动脚本

[root@zabbix-10 ~]# vim /usr/lib/systemd/system/php-fpm.service
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=simple
PIDFile=/usr/local/php/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini  --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target
或者
[root@zabbix-10 php-7.4.19]# cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/php-fpm.service
然后修改/usr/lib/systemd/system/php-fpm.service
ExecStart=/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini  --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
[root@zabbix-10 php-7.4.19]# systemctl restart php-fpm
[root@zabbix-10 php-7.4.19]# systemctl enable php-fpm

2.2、安装配置nginx

1、安装依赖、减压

[root@zabbix-10 iso]# yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
[root@zabbix-10 iso]# tar -xvf nginx-2.14.2.tar.gz
[root@zabbix-10 iso]# cd nginx-2.14.2
[root@zabbix-10 nginx-2.14.2]# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-stream --with-http_stub_status_module
[root@zabbix-10 nginx-2.14.2]# make && make install

2、配置nginx.conf

[root@zabbix-10 ~]# vim /usr/local/nginx/conf/nginx.conf
… …
http{
… …
    fastcgi_buffers 8 16k;                      #缓存php生成的页面内容,8个16k
    fastcgi_buffer_size 32k;                      #缓存php生产的头部信息
    fastcgi_connect_timeout 300;                 #连接PHP的超时时间
    fastcgi_send_timeout 300;                     #发送请求的超时时间
    fastcgi_read_timeout 300;                       #读取请求的超时时间
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location ~ \.php$ {
            #root   html;
            #index  index.html index.htm;
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include        fastcgi.conf;
        }

[root@zabbix-10 ~]# /usr/local/nginx/sbin/nginx
[root@zabbix-10 ~]# ss -tunlp| grep nginx
tcp    LISTEN     0      128       *:80                    *:*                   users:(("nginx",pid=26768,fd=6),("nginx",pid=26766,fd=6))

3、测试是否能解析php

vim /usr/local/nginx/html/test2.php
<?php
$i="This is a test Page";
echo $i;
?>

浏览器输入:http://192.168.4.5/test2.php ,出现如下说明解析php成功。

This is a test Page

2.3、安装mariadb

1、卸载mariadb相关包

[root@zabbix-10 iso]# yum install -y mariadb mariadb-devel mariadb-server

2、设置MySQL字符集

[root@zabbix-10 ~]# vim /etc/my.cnf
[mysqld]

character-set-server=utf8
[root@zabbix-10 ~]# systemctl restart mariadb

3、修改密码

[root@zabbix-10 ~]# mysql -p
Enter password:
mysql>  alter user root@localhost identified by 'Jluo520!';
Query OK, 0 rows affected (0.00 sec)
//新修改的密码中 必须包含 大小写字母数字及符号

4、测试php能否连接mysql

vim /usr/local/nginx/html/test2.php
<?php
$mysqli = new mysqli('localhost','root','密码','mysql');
//注意:root为mysql账户名称,密码需要修改为实际mysql密码,无密码则留空即可
//localhost是数据库的域名或IP,mysql是数据库的名称
if (mysqli_connect_errno()){
    die('Unable to connect!'). mysqli_connect_error();
}
$sql = "select * from user";
$result = $mysqli->query($sql);
while($row = $result->fetch_array()){
    printf("Host:%s",$row[0]);
    printf("</br>");
    printf("Name:%s",$row[1]);
    printf("</br>");
}
?>

浏览器输入: http://192.168.4.5/test2.php ,出现如下图说明连接数据库成功。

2.4、安装zabbix-server

1、源码安装Zabbix Server

多数源码包都是需要依赖包的,zabbix也一样,源码编译前需要先安装相关依赖包。

[root@zabbix zabbix-5.0.12]# yum -y install  net-snmp-devel curl-devel libevent-devel
[root@zabbix zabbix-5.0.12]# ./configure  --prefix=/usr/local/zabbix --enable-server --enable-proxy --enable-agent --with-mysql=/usr/bin/mysql_config --with-net-snm --with-libcurl --enable-java
//prefix=/usr/local/zabbix 指定安装位置
// --enable-server安装部署zabbix服务器端软件
// --enable-agent安装部署zabbix被监控端软件
// --enable-proxy安装部署zabbix代理相关软件
// --with-mysql配置mysql_config路径
// --with-net-snmp允许zabbix通过snmp协议监控其他设备
// --with-libcurl安装相关curl库文件,这样zabbix就可以通过curl连接http等服务,测试被监控主机服务的状态
//--enable-java开启jmx监控,需要安装java,即:yum -y install java java-devel

[root@zabbix zabbix-5.0.12]# make && make install

2、初始化Zabbix

创建数据库,上线Zabbix的Web页面

[root@zabbix zabbix-5.0.12]# mysql -p
Enter password:
mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on zabbix.* to zabbix@'localhost' identified by 'Zabbix520!';
Query OK, 0 rows affected, 1 warning (0.00 sec)
[root@zabbix zabbix-5.0.12]# cd database/mysql/
[root@zabbix mysql]# ls
data.sql  double.sql  images.sql  Makefile  Makefile.am  Makefile.in  schema.sql
//刚刚创建是空数据库,zabbix源码包目录下,有提前准备好的数据
//使用mysql导入这些数据即可(注意导入顺序)
[root@zabbix mysql]# mysql -uzabbix -pZabbix520! zabbix < schema.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@zabbix mysql]# mysql -uzabbix -pZabbix520! zabbix < images.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@zabbix mysql]# mysql -uzabbix -pZabbix520! zabbix < data.sql
mysql: [Warning] Using a password on the command line interface can be insecure.

3、上线Zabbix的Web页面

[root@zabbix zabbix-5.0.12]# cp -r ui/* /usr/local/nginx/html/
[root@zabbix zabbix-5.0.12]# chown -R www:www /usr/local/nginx/*

4、修改Zabbix_server配置文件,设置数据库相关参数,启动Zabbix_server服务

[root@zabbix zabbix-5.0.12]# cd /usr/local/zabbix/
[root@zabbix zabbix]# mkdir logs
[root@zabbix zabbix]# vim etc/zabbix_server.conf
//数据库主机,默认该行被注释
DBHost=localhost

//设置数据库名称
DBName=zabbix

//设置数据库账户
DBUser=zabbix

//设置数据库密码,默认该行被注释
DBPassword=Zabbix520!

//设置日志,仅查看以下即可
LogFile=/usr/local/zabbix/logs/zabbix_server.log
//不创建用户无法启动服务
[root@zabbix zabbix]# useradd -s /sbin/nologin zabbix
[root@zabbix zabbix]# chown -R zabbix:zabbix /usr/local/zabbix/*
[root@zabbix zabbix]# ./sbin/zabbix_server -c etc/zabbix_server.conf
[root@zabbix zabbix]# ss -tunlp | grep 10051
tcp    LISTEN     0      128       *:10051                 *:*                   users:(("zabbix_server",pid=12777,fd=4)

提示:如果是因为配置文件不对,导致服务无法启动时,不要重复执行启动zabbix_server,一定要先使用killall zabbix_server关闭服务后,再重新启动一次。

5、修改Zabbix_agent配置文件,启动Zabbix_agent服务

[root@zabbix zabbix]# vim etc/zabbix_agentd.conf
Server=127.0.0.1,192.168.2.10                    //允许哪些主机监控本机
ServerActive=127.0.0.1,192.168.2.10                //允许哪些主机通过主动模式监控本机
Hostname=zabbix_server                        //设置本机主机名
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log                    //设置日志文件
UnsafeUserParameters=1
[root@zabbix zabbix]# ./sbin/zabbix_agentd -c etc/zabbix_agentd.conf
[root@zabbix zabbix]# ss -tunlp | grep 10050
tcp    LISTEN     0      128       *:10050                 *:*                   users:(("zabbix_agentd",pid=13644,fd=4)

提示:如果是因为配置文件不对,导致服务无法启动时,不要重复执行启动zabbix_agentd,一定要先使用killall zabbix_agentd关闭服务后,再重新启动一次。

2.5、安装zabbix-agent

第三节、docker安装zabbix

3.1、server

提示:

  • 安装docker环境(可参考https://www.onemonitor.top/docs/kubernetes-jluo-20210715)

  • 本次zabbix版本5.4.6

  • docker版本20.10.7

    1、创建目录

    mkdir /data/app/zabbix -p
    cd /data/app/zabbix
    mkdir data/mysql -p
    mkdir data/zabbix_server/{alertscripts,data,externalscripts,fonts}
    mkdir data/zabbix_agent/{scripts,zabbix_agentd.d}

2、字体设置

下载字体:https://www.aliyundrive.com/s/L5Pq25n3Aw3/folder/6177a1549a2694aeb21344a69a9638b65c5c8eb7

放到目录/data/app/zabbix/data/zabbix_server/fonts下

ls /data/app/zabbix/data/zabbix_server/fonts
DejaVuSans.ttf

3、编写yaml文件

cd /data/app/zabbix
vi docker-compose.yml
version: "3" #定义类型为 3
networks:
  default:
    external:
      name: zabbix-net
services:
  mysql-server:
    image: mysql:5.7
    hostname: mysql-zabbix
    container_name: mysql-zabbix
    restart: always
    networks:
      default:
        ipv4_address: 172.88.88.9
    ports:
      - "3306:3306"
    command:
      --character-set-server=utf8 #定义字符集
    environment:
      MYSQL_ROOT_PASSWORD: 123456 #定义mysql root密码
      MYSQL_DATABASE: zabbix # 创建数据库
      MYSQL_USER: zabbix #定义用户
      MYSQL_PASSWORD: 123456 #用户密码
    volumes:
      - ./data/mysql:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro

  zabbix-server:
    image: zabbix/zabbix-server-mysql:5.4.6-centos
    hostname: zabbix-server
    container_name: zabbix-server
    ports:
      - "10051:10051" #声明端口
    networks:
      default:
        ipv4_address: 172.88.88.11
    environment:
      DB_SERVER_HOST: mysql-zabbix #连接mysql
      DB_SERVER_PORT: 3306 # 连接端口
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: 123456
      ZBX_JAVAGATEWAY: zabbix-java-gateway
    volumes:
      - ./data/zabbix_server/data:/usr/lib/zabbix
      - ./data/zabbix_server/alertscripts:/usr/lib/zabbix/alertscripts
      - ./data/zabbix_server/externalscripts:/usr/lib/zabbix/externalscripts
      - /etc/localtime:/etc/localtime
    depends_on:
      - mysql-server #在mysql启动之后再启动
      - zabbix-java-gateway

  zabbix-web:
    image: zabbix/zabbix-web-nginx-mysql:5.4.6-centos #镜像
    hostname: zabbix-web
    container_name: zabbix-web
    ports:
      - "8080:8080" #声明端口
      - "8443:8443"
    networks:
      default:
        ipv4_address: 172.88.88.12
    environment:
      DB_SERVER_HOST: mysql-server #连接mysql
      DB_SERVER_PORT: 3306 # 连接端口
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: 123456
      PHP_TZ: Asia/Shanghai  #声明时区为亚洲/上海
      ZBX_SERVER_HOST: zabbix-server
    volumes:
      - ./data/zabbix_server/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf  #解决图形中文乱码字体
      - /etc/localtime:/etc/localtime
    depends_on:
      - mysql-server #在mysql启动之后再启动
      - zabbix-java-gateway
  zabbix-java-gateway:
    image: zabbix/zabbix-java-gateway:5.4.6-centos #镜像
    hostname: zabbix-java-gateway
    container_name: zabbix-java-gateway
    restart: always
    networks:
      default:
        ipv4_address: 172.88.88.10
  zabbix-agent:
    image: zabbix/zabbix-agent:5.4.6-centos
    hostname: zabbix-agent
    container_name: zabbix-agent
    environment:
      - ZBX_HOSTNAME=zabbix-agent
      - ZBX_SERVER_HOST=zabbix-server
      - ZBX_SERVER_PORT=10051
    volumes:
      - ./data/zabbix_agent/zabbix_agentd.d/:/etc/zabbix/zabbix_agentd.d/
      - ./data/zabbix_agent/scripts/:/etc/zabbix/scripts/
    ports:
      - 10050:10050
    networks:
      default:
        ipv4_address: 172.88.88.13

4、启动zabbix

docker network create -d bridge --subnet 172.88.88.0/24 zabbix-net
cd /data/app/zabbix
docker-compose up -d
docker ps

访问http://ip:8080

  • 用户名:admin

  • 密码:zabbix

5、钉钉告警设置

cd /data/app/zabbix/data/zabbix_server/alertscripts
vi dingding.sh
#!/bin/bash
to=$1
subject=$2
text=$3

#此处的 xxxxx 就是刚刚复制存留的 api 接口地址。
curl -i -X POST \
'https://oapi.dingtalk.com/robot/send?access_token=XXX' \
-H 'Content-type':'application/json' \
-d '
{
  "msgtype": "text",
     "text": {
        "content": "'监控报警:''"$text"'"
        },
  "at":{
    "atMobiles":[
      "'"$1"'"
      ],
  "isAtAll":false
   }
}'

3.2、agent

1、新建目录

mkdir /data/app/zabbix_agent -p
cd /data/app/zabbix_agent
mkdir data/zabbix_agent/{scripts,zabbix_agentd.d} -p

2、编写yaml

vi docker-compose.yml
version: "3" #定义类型为 3
networks:
  zabbix-net:
    driver: bridge
services:
  zabbix-agent:
    image: zabbix/zabbix-agent:5.4.6-centos
    environment:
      - ZBX_HOSTNAME=zabbix-agent-236
      - ZBX_SERVER_HOST=192.168.110.239  #zabbix-server主机地址
      - ZBX_SERVER_PORT=10051            #zabbix-server主机端口
    volumes:
      - ./data/zabbix_agent/zabbix_agentd.d/:/etc/zabbix/zabbix_agentd.d/
      - ./data/zabbix_agent/scripts/:/etc/zabbix/scripts/
    ports:
      - 10050:10050
    networks:
      - zabbix-net

3、启动

cd /data/app/zabbix_agent
docker-compose up -d

第四节、添加监控主机

4.1、手动添加主机

4.2、自动发现添加监控主机

第五节、监控服务

5.1、监控oracle

官网下载如下三个rpm包

  1. 数据库空间不足或数据库发生故障,DBA需要立即处理。

监控项包括表空间、用户状态、实例状态、锁、大量等待事件、闪回区使用率等。此类监控项需要给其设置触发器,一旦出现异常,及时告警。

  1. 数据库运行状态的一些统计信息,为DBA定位数据库性能问题发生的时间和类别提供参考。

监控项包括常见的等待事件发生的次数,命中率、硬解析比例等。

下面表格中列出附件中模板的监控项

[root@iZ882wldxleZ iso]# ls
oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm
[root@iZ882wldxleZ iso]# rpm -ivh *.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:oracle-instantclient11.2-basic-11################################# [ 33%]
   2:oracle-instantclient11.2-devel-11################################# [ 67%]
   3:oracle-instantclient11.2-sqlplus-################################# [100%]


https://pypi.org/project/cx-Oracle/5.2.1/#files
wget https://files.pythonhosted.org/packages/93/d8/3acdd4d3176a877a396647f55191549b8624f1157bf2e1ada6bb1f92615d/cx_Oracle-5.2.1-11g-py27-1.x86_64.rpm
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py

参考文档

https://www.cnblogs.com/ddzj01/p/10769448.html

5.2、监控nginx

1、前提

nginx编译安装时使用--with-http_stub_status_module开启状态页面模块

nginx配置

[root@zabbix ~]# vim /usr/local/nginx/conf/nginx.conf
        location = /basic_status {
            stub_status;
        }
[root@zabbix ~]# /usr/local/nginx/sbin/nginx -s reload
[root@zabbix ~]# ss -tunlp | grep :80
[root@zabbix ~]# curl 10.0.4.16/basic_status
Active connections: 3
server accepts handled requests
 31694 31694 33585
Reading: 0 Writing: 1 Waiting: 2
  • Active connections:当前活动的连接数量。
  • Accepts:已经接受客户端的连接总数量。
  • Handled:已经处理客户端的连接总数量。
  • (一般与accepts一致,除非服务器限制了连接数量)。
  • Requests:客户端发送的请求数量。
  • Reading:当前服务器正在读取客户端请求头的数量。
  • Writing:当前服务器正在写响应信息的数量。
  • Waiting:当前多少客户端在等待服务器的响应。

2、使用zabbix默认模板

zabbix引用模板

3、查看数据是否收集到,显然数据已经成功收集到了。

4、到此监控nginx就结束了。

5、创建聚合图形

5.3、监控tomcat

5.4、使用自定义key监控

第六节、配置告警

6.1、企业微信告警

6.2、钉钉告警

6.3、邮件告警

FAQ