企业级开源监控zabbit

zabbix

文章目录

Zabbix概述

  • 企业级开源分布式监控解决方案。是一款用于监控网络众多参数、服务器/虚拟机/应用程序/服务/数据库/网站/云平台等健康状态和完整性的软件。 Zabbix 提供灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警,从而实现对服务器问题的快速响应。
  • 基于存储数据提供出色的报表和数据可视化功能,使其成为容量规划的理想选择。
  • 同时支持轮询和捕获两种方式。所有 Zabbix 报表、统计信息及配置参数均可通过基于 Web 的前端界面访问。该 Web 前端确保您可以从任何位置评估网络状态和服务器健康状况。
  • 在 IT 基础设施监控中发挥重要作用,无论是对拥有少量服务器的小型组织,还是对拥有众多服务器的大型企业都同样适用。

Zabbix架构

服务器

Zabbixserver是核心组件,agents向其报告可用性、完整性信息及统计指标。服务器作为中央存储库,保存所有配置数据、统计数据和运行数据。

Web 界面

为了从任何地方和任何平台轻松访问Zabbix,系统提供了基于Web的界面。该界面是Zabbix server的一部分,通常(但不一定)运行在与服务器相同的物理机器上。

Proxy

Zabbix proxy可以代表Zabbix server 收集性能和可用性数据。proxy是Zabbix 部署中的可选组件,但它能有效分担单个Zabbix server的负载。

Agent

Zabbix agents被部署在监控目标上,用于主动监控本地资源和应用程序,并将收集到的数据报告给Zabbix服务器。自Zabbix4.4起,有两种类型的agents可用:Zabbix agent(轻量级,支持多种平台,使用C语言编写)和Zabbix agent2(高度灵活,易于通过插件扩展,使用Go 语言编写)。

数据流

此外,退一步审视Zabbix内部整体数据流非常重要。为了create一个收集数据的监控项,你必须先create一个主机。转到Zabbix体系的另一端,你必须先有一个监控项才能create触发器。你必须有一个触发器才能create动作。因此,如果你想收到服务器XCPU负载过高的警报,你必须先为服务器Xcreate一个主机条目,接着创建一个监控其CPU的监控项,然后设置一个在CPU过高时激活的触发器,最后配置一个发送邮件给你的动作。

Zabbix基于LNMP架构部署

安装nginx

bash 复制代码
#创建nginx的yum源
[root@zabbix-server ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
enabled=1
gpgcheck=0

#安装nginx
[root@zabbix-server ~]# yum install nginx -y

#开启服务
[root@zabbix-server ~]# systemctl start nginx
[root@zabbix-server ~]# systemctl enable nginx

#防火墙添加通过http
[root@zabbix-server ~]# firewall-cmd --add-service=http --zone=public
success
[root@zabbix-server ~]# firewall-cmd --add-service=http --zone=public --permanent
success
[root@zabbix-server ~]# firewall-cmd --reload
success

#先测试网站访问环境成功

安装mariadb

安装及部署数据库和php
bash 复制代码
#下载mariadb

#配置Mariadb10.x yum源(zabbix6.0必须使用该版本,低版本不支持)
[root@zabbix-server ~]# vim /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = https://mirrors.aliyun.com/mariadb/yum/10.6/centos7-amd64/
enabled = 1
gpgcheck = 0

#下载mariadb

[root@zabbix-server ~]# yum -y install mariadb-server mariadb 

#开启服务             
[root@zabbix-server ~]# systemctl enable mariadb --now

#设置root密码
[root@zabbix-server ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.6.19-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> DELETE FROM mysql.user WHERE User='';
Query OK, 2 rows affected (0.010 sec)

MariaDB [(none)]> ALTER USER root@localhost IDENTIFIED BY 'root123';
Query OK, 0 rows affected (0.005 sec)

MariaDB [(none)]> 

#连接数据库测试
[root@zabbix-server ~]# mysql -uroot -proot123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.6.19-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

#安装php
[root@zabbix-server ~]# yum -y install epel-release
[root@zabbix-server ~]# sed -i "s/#baseurl/baseurl/g" /etc/yum.repos.d/epel.repo
[root@zabbix-server ~]# sed -i "s/metalink/#metalink/g" /etc/yum.repos.d/epel.repo
[root@zabbix-server ~]# sed -i "s@https\?://download.[a-z]*\.\?[a-z]*/pub@https://repo.huaweicloud.com@g" /etc/yum.repos.d/epel.repo

[root@zabbix-server ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

[root@zabbix-server ~]# yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache php72w-ldap php72w-bcmath

#配置nginx支持php

#修改php-fpm配置文件,把apache改为nginx
[root@zabbix-server ~]# vim /etc/php-fpm.d/www.conf
  8 user = nginx
 10 group = nginx

#配置location,在index中添加index.php。以支持index.php的首页
[root@zabbix-server ~]# vim /etc/nginx/conf.d/default.conf 
  9         index index.php index.html index.htm;

#配置php请求被传送到后端的php-fpm模块,默认情况下php配置块是被注释的,此时去掉注释并修改
#把fastcgi_param中的/scripts改为$document_root。root是配置php程序放置的根目录。
 29     location ~ \.php$ {
 30         root           /usr/share/nginx/html;            #改成/usr/share/nginx/html
 31         fastcgi_pass   127.0.0.1:9000;
 32         fastcgi_index  index.php;
 33         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;     #修改这
 34         include        fastcgi_params;
 35     }
 
 #配置php
 
  #修改PHP配置文件
[root@zabbix-server ~]# vim /etc/php.ini
 202 short_open_tag = On     #支持php短标签
 359 expose_php = Off        #隐藏php版本

#以下为zabbix优化配置要求
 368 max_execution_time = 300       #执行时间
 378 max_input_time = 300           #接收数据等待时间
 389 memory_limit = 128M            #每个脚本占用内存
 656 post_max_size = 16M            #POST数据大小
 799 upload_max_filesize = 2M       #上传文件大小
 800 always_populate_raw_post_data = -1  #原来空的,需要添加
 877 date.timezone = Asia/Shanghai  #时区

#启动php-fpm服务
[root@zabbix-server ~]# systemctl enable php-fpm --now

#重启nginx
[root@zabbix-server ~]# systemctl restart nginx

#测试
[root@zabbix-server ~]# vim /usr/share/nginx/html/info.php
<?php
 phpinfo();
?>

#测试连接数据库
[root@zabbix-server ~]# vim /usr/share/nginx/html/info.php
<?php
 $link=mysqli_connect('127.0.0.1','root','root123');
 if ($link) echo "success";
 else echo "fail";
?>

# $link=mysqli_connect('127.0.0.1','root','root123');   设置变量$link,连接数据库
# if ($link) echo "success";                             如果连接上输出success
# else echo "fail";                                      连接不上输出fail

测试连接

bash 复制代码
[root@zabbix-server ~]# mysql -uroot -proot123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 19
Server version: 10.5.10-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> GRANT all privileges ON *.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix123';
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> GRANT all privileges ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix123';
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> quit
Bye
[root@zabbix-server ~]# 

[root@zabbix-server ~]# vim /usr/share/nginx/html/info.php
<?php
 $link=mysqli_connect('127.0.0.1','zabbix','zabbix123');
 if ($link) echo "Zabbix数据库连接成功";
 else echo "Zabbix数据库连接失败";
?>

zabbix-server

bash 复制代码
#导入数据库

#解压
[root@zabbix-server ~]# tar zxvf zabbix-6.0.6.tar.gz

#导入数据库
[root@zabbix-server ~]# cd /root/zabbix-6.0.6/database/mysql/             #将该目录的数据库导入zabbix数据库
[root@zabbix-server mysql]# ls                         
data.sql  double.sql  history_pk_prepare.sql  images.sql  Makefile.am  Makefile.in  schema.sql
[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix < schema.sql 
[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix < images.sql 
[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix < data.sql 
[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix < double.sql 
[root@zabbix-server mysql]# mysql -uroot -proot123 zabbix < history_pk_prepare.sql 

#进入zabbix数据库查看
[root@zabbix-server mysql]# mysql -uroot -proot123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 32
Server version: 10.5.10-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [zabbix]> show tables;
+----------------------------+
| Tables_in_zabbix           |
+----------------------------+
| acknowledges               |
......
| widget_field               |
+----------------------------+
178 rows in set (0.002 sec)        #是178条

MariaDB [zabbix]> 

#安装软件包

#安装zabbix环境包
[root@zabbix-server ~]# yum install -y mysql-devel pcre-devel openssl-devel zlib-devel libxml2-devel net-snmp-devel net-snmp libssh2-devel OpenIPMI-devel libevent-devel openldap-devel libcurl-devel fping gcc gcc-c++ make

# 创建zabbix用户
[root@zabbix-server ~]# useradd -s /sbin/nologin -M zabbix

#使得编译器在编译 C 代码时使用 GNU C99 标准
[root@zabbix-server ~]# export CFLAGS="-std=gnu99"  

#执行configure脚本
[root@zabbix-server ~]# cd zabbix-6.0.6/
[root@zabbix-server zabbix-6.0.6]# ./configure --sysconfdir=/etc/zabbix/ --enable-server --with-mysql --with-net-snmp --with-libxml2 --with-ssh2 --with-openipmi --with-zlib --with-libpthread --with-libevent --with-openssl --with-ldap --with-libcurl --with-libpcre

#安装
[root@zabbix-server zabbix-6.0.6]# make install

#检查版本
[root@zabbix-server ~]# zabbix_server --version

#修改zabbix-server配置文件

[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
38 LogFile=/var/log/zabbix_server.log
123 DBPassword=zabbix123

#创建日志文件并修改属组和属主
[root@zabbix-server ~]# touch /var/log/zabbix_server.log
[root@zabbix-server ~]# chown zabbix.zabbix /var/log/zabbix_server.log

#创建并添加systemctl服务管理zabbix-server
[root@zabbix-server ~]# vim /usr/lib/systemd/system/zabbix-server.service
#添加下面这段话,直接复制      
[Unit]
Description=Zabbix Server with MySQL DB
After=syslog.target network.target mysqld.service

[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_server -f
User=zabbix

[Install]
WantedBy=multi-user.target

#启动zabbix
[root@zabbix-server ~]# systemctl start zabbix-server
[root@zabbix-server ~]# netstat -ntap | grep 10051
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      2610/zabbix_server 

#前端页面复制到站点
[root@zabbix-server ~]# cp -r /root/zabbix-6.0.6/ui/* /usr/share/nginx/html/        #提供网站前端
[root@zabbix-server ~]# chown -R nginx:nginx /usr/share/nginx/html/

被监控端安装agent

bash 复制代码
[root@mysql001 ~]# systemctl stop firewalld.service
[root@mysql001 ~]# setenforce 0
[root@mysql001 ~]# hostnamectl set-hostname mysql001

#更新CA
[root@mysql001 ~]# yum update ca-certificates -y

#安装软件包
[root@mysql001 ~]# rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
[root@mysql001 ~]# yum install zabbix-agent2 -y

#启动服务
[root@mysql001 ~]# systemctl enable zabbix-agent2.service --now

#修改配置文件
[root@mysql001 ~]# vim /etc/zabbix/zabbix_agent2.conf
 13 PidFile=/var/run/zabbix/zabbix_agent2.pid
 32 LogFile=/var/log/zabbix/zabbix_agent2.log
 43 LogFileSize=0
 82 Server=192.168.108.50           #指向监控服务器
135 ServerActive=192.168.108.50  #指向监控服务器
146 Hostname=mysql001     #名称
283 Include=/etc/zabbix/zabbix_agent2.d/plugins.d/*.conf

#重启服务(先不重启看看配置生效不)
[root@mysql001 ~]# systemctl restart zabbix-agent2

#zabbix首页登录后主要定义模板和添加数据库信息

#配置->主机->创建主机

#被监控主机配置,Inteerfaces: 添加>客户端,端口是10050,是zabbix客户端插件监听端口 

邮件服务

bash 复制代码
#开启自己的邮箱服务功能

#在zabbix-server服务器上安装邮箱服务

[root@zabbix-server ~]# yum install mailx -y

[root@zabbix-server ~]# vim /etc/mail.rc
----文件末尾新增---
set from=xxxxxx@qq.com                         #用自己的邮箱
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=xxxxxx@qq.com
set smtp-auth-password=lmsbtquhuzhqcage         #用自己的邮箱授权码
set smtp-auth=login
#set smtp-use-starttls 这里是不需要配置的,很多地方没说明,配置了反而会验证失败,所以我注释掉;
set ssl-verify=ignore
set nss-config-dir=/root/.certs     #制定的存放QQ邮箱SSL证书的位置。
set nss-config-dir=/etc/pki/nssdb/

[root@zabbix-server ~]# chmod -R 755 /etc/pki/nssdb/

#手动获取QQ邮箱的证书保存到本地
[root@zabbix-server ~]# mkdir -p /root/.certs/
[root@zabbix-server ~]# echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
[root@zabbix-server ~]# certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
[root@zabbix-server ~]# certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
[root@zabbix-server ~]# certutil -L -d /root/.certs

#防止邮件警告提示
[root@zabbix-server ~]# cd /root/.certs/
[root@zabbix-server .certs]# certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt

#出现以下提示返回正常
Notice: Trust flag u is set automatically if the private key is present.

#测试
# 执行命令后,进入交互式编辑,输入正文后按 Ctrl+D 结束并发送
[root@zabbix-server ~]# mailx -s "邮箱测试" xxxxxx@qq.com

创建脚本重启服务

bash 复制代码
[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
548 AlertScriptsPath=/usr/lib/zabbix/alertscripts
[root@zabbix-server ~]# mkdir -p /usr/lib/zabbix/alertscripts
[root@zabbix-server ~]# chown -R zabbix:zabbix /usr/lib/zabbix/alertscripts
[root@zabbix-server ~]# systemctl restart zabbix-server.service

#编写邮件发送脚本
[root@zabbix-server ~]# vim /usr/lib/zabbix/alertscripts/mailx.sh
#!/bin/bash
#send mail
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1

#权限设置
[root@zabbix-server ~]# touch /tmp/mailx.log 
[root@zabbix-server ~]# chown -R zabbix.zabbix /tmp/mailx.log 
[root@zabbix-server ~]# chmod +x /usr/lib/zabbix/alertscripts/mailx.sh

#测试
[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix-server alertscripts]# ./mailx.sh 6946630@qq.com "hello mailx.sh" "This is test"

2 | tr '\r\n' '\n'`

echo " m e s s a g e s " ∣ m a i l − s " {messages}" | mail -s " messages"∣mail−s"{subject}" $1 >>/tmp/mailx.log 2>&1

#权限设置

root@zabbix-server \~\]# touch /tmp/mailx.log \[root@zabbix-server \~\]# chown -R zabbix.zabbix /tmp/mailx.log \[root@zabbix-server \~\]# chmod +x /usr/lib/zabbix/alertscripts/mailx.sh #测试 \[root@zabbix-server \~\]# cd /usr/lib/zabbix/alertscripts/ \[root@zabbix-server alertscripts\]# ./mailx.sh 6946630@qq.com "hello mailx.sh" "This is test" ``` ```

相关推荐
一叶萩Charles2 小时前
GitHub AI Agent 开源生态概览
人工智能·开源·github
皓木.2 小时前
软件测试Linux
linux·运维·服务器
我爱学习好爱好爱2 小时前
Ansible 详解:group模块、vars_files变量、user模块实战
linux·运维·ansible
独隅2 小时前
Linux 系统下 ADB 环境 的详细安装步骤和基础设置指南
linux·运维·adb
道一云黑板报3 小时前
企业微信CLI开源项目发布,支持通过CLI使用接口能力
人工智能·开源·企业微信
monsion3 小时前
飞书开源 CLI:不是给你用的,是给 AI 用的
人工智能·开源·飞书
AI自动化工坊3 小时前
Cohere Transcribe实战:2B参数开源语音识别模型部署与性能对比
人工智能·开源·语音识别
cyber_两只龙宝3 小时前
【Docker】Docker的原生网络介绍
linux·运维·docker·云原生·容器