zabbix企业监控

第一节、系统初始化

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 ,出现如下图说明连接数据库成功。
image

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定位数据库性能问题发生的时间和类别提供参考。

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

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

[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引用模板
image
image
image
image
image
image
image

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

image

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

5、创建聚合图形
image
image
image
image
image
image
image
image
image
image
image
image
image
image

5.3、监控tomcat

5.4、使用自定义key监控

第六节、配置告警

6.1、企业微信告警

6.2、钉钉告警

6.3、邮件告警

FAQ

posted @ 2022-10-20 11:37  jluo123  阅读(94)  评论(0编辑  收藏  举报