ALMA Linux 8飞速搭建zabbix6LTS、微信邮箱短信报警、windows、linux、交换机、vCenter监控、grafana面板、modbus动环采集、ZbxTable分析系统、Mysql、MSsql数据库监控、分组报警

ALMA Linux 8飞速搭建zabbix6LTS、微信邮箱短信报警、windows、linux、交换机、vCenter监控、grafana面板、modbus动环采集、ZbxTable分析系统、Mysql、MSsql数据库监控、分组报警

王忘杰
2023-07-07 / 0 评论 / 1,415 阅读 / 正在检测是否收录...

一、环境
zabbix所在服务器系统为alma8,zabbix6要求的mariadb版本为10.5-10.6,同时zabbix提供了zabbix-selinux-policy来配置selinux,所以安装中也不再要求关闭selinux。
lgvnoh1u.png

企业微信截图_16639037896159.png

企业微信截图_20220923113231.png

二、安装zabbix
官方安装帮助页面,安装方法随版本更新,官方更新更快
https://www.zabbix.com/cn/download

1、配置zabbix 软件源

rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm
dnf clean all

2、安装zabbix-serverzabbix-agent2

dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent2

3、安装数据库
配置mariabd源 /etc/yum.repos.d/MariaDB.repo

# MariaDB 10.6 CentOS repository list - created 2023-02-02 03:14 UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
baseurl = https://mirrors.aliyun.com/mariadb/yum/10.6/centos8-amd64
module_hotfixes=1
gpgkey=https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1

安装数据库、启动、并设置开机启动

dnf clean all
dnf install mariadb-server
systemctl enable --now mariadb

4、进行MariaDB数据库初始化
mariadb-secure-installation

首先是设置密码,会提示先输入密码
Enter current password for root (enter for none):<–初次运行直接回车
Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车
New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的密码
Remove anonymous users? [Y/n] <– 是否删除匿名用户
Disallow root login remotely? [Y/n] <–是否禁止root远程登录
Remove test database and access to it? [Y/n] <– 是否删除test数据库
Reload privilege tables now? [Y/n] <– 是否重新加载权限表

5、初始化并导入zabbix数据库 mysql -uroot -p登录

mariadb> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mariadb> create user zabbix@localhost identified by 'password123';
mariadb> grant all privileges on zabbix.* to zabbix@localhost;
mariadb> set global log_bin_trust_function_creators = 1;
mariadb> quit;

导入初始架构和数据,系统将提示您输入新创建的密码

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

导入数据库架构后禁用log_bin_trust_function_creators选项

mysql -uroot -p


mariadb> set global log_bin_trust_function_creators = 0;
mariadb> quit;

6、配置数据库密码
编辑配置文件 /etc/zabbix/zabbix_server.conf

DBPassword=password123

7、配置PHP时区
编辑配置文件 /etc/php-fpm.d/zabbix.conf

php_value[date.timezone] = Asia/Shanghai

8、启动并设置开机启动

systemctl enable --now zabbix-server zabbix-agent2 httpd php-fpm

9、查看是否有错误信息

 cat /var/log/zabbix/zabbix_server.log

10、防火墙开放端口

firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --permanent --add-port=10050-10051/tcp
firewall-cmd --reload
firewall-cmd --list-ports
firewall-cmd --list-services

11、替换zabbix自带字体,解决中文乱码
百度下载Noto Sans S Chinese字体替换掉默认使用的DejaVuSans

cp NotoSansSC-Regular.otf /usr/share/fonts/dejavu/DejaVuSans.ttf

12、调整zabbix缓存
/etc/zabbix/zabbix_server.conf

CacheSize=1G

13、调整ping进程数
/etc/zabbix/zabbix_server.conf

StartPingers=16

三、服务端配置
1、连接到新安装的Zabbix前端: http://server_ip/zabbix
企业微信截图_20220605102029.png

企业微信截图_20220605102056.png

注意,mariadb也属于mysql数据库类型
企业微信截图_20220605102125.png

企业微信截图_20220605102204.png

企业微信截图_20220605102223.png

企业微信截图_20220605102241.png

2、登录zabbix
账号Admin 密码zabbix
企业微信截图_20220605102406.png

前端配置完成
企业微信截图_20220605102433.png

请务必修改密码
企业微信截图_20220605102549.png

四、企业微信消息推送
注意:为了企业的数据安全,从2022年6月20号20点之后,新开启的通讯录同步助手与新创建的自建应用必须在管理端配置可信IP,仅配置的可信IP能调用接口。
当前时间2023年6月,企业微信应用验证必须与企业名相同,请考虑使用企业微信机器人推送。

1、在企业微信 - 我的企业 - 企业信息 - 企业ID
Test

2、创建zabbix机器人应用
企业微信后台 - 应用管理 - 应用 - 创建应用
Test

先进行网页授权及JS-SDK
可信域名下的网页可使用网页授权及JS-SDK
lca3eb5a.png

可信IP位于自行创建的应用-开发接口-企业可信IP
可信IP即服务器所在网络的外网IP,可打开https://ifconfig.me/快速查看,如果企业机房接入多条外网宽带,把外网宽带的IP全都写上
lc5wsysw.png

3、查看Agentld和Secret
Test

4、准备zabbix机器人脚本环境

dnf -y install epel-release
dnf -y install python2-pip
pip2 install requests

查询脚本存放位置
cat /etc/zabbix/zabbix_server.conf | grep AlertScript
可以看到脚本存放在/usr/lib/zabbix/alertscripts目录中

编写脚本 weixin.py并放入上面的目录 ,填入上面获得的三个值

#!/usr/bin/env python2
#-*- coding: utf-8 -*-
import requests
import sys
import os
import json
import logging

logging . basicConfig ( level  =  logging . DEBUG ,  format  =  ' %(asctime)s ,  %(filename)s ,  %(levelname)s ,  %(message)s ' ,
datefmt  =  ' %a ,  %d %b  %Y %H:%M:%S' ,
filename  =  os . path . join ( '/tmp' , 'weixin.log' ),
filemode  =  'a' )
corpid = 'ww36e'
appsecret = '5yFNqeTjrr3I'
agentid = 1000002
token_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid='  +  corpid  +  '&corpsecret='  +  appsecret

req = requests . get ( token_url )
accesstoken = req . json ()[ 'access_token' ]

msgsend_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='  +  accesstoken

touser = sys . argv [ 1 ]
subject = sys . argv [ 2 ]
#toparty='3|4|5|6'
message = sys . argv [ 2 ] +  " \n\n "  + sys . argv [ 3 ]
params ={
"touser" :  touser ,
# "toparty": toparty,
"msgtype" :  "text" ,
"agentid" :  agentid ,
"text" : {
"content" :  message
},
"safe" : 0
}
req = requests . post ( msgsend_url ,  data = json . dumps ( params ))
logging . info ( 'sendto:'  +  touser  +  ';;subject:'  +  subject  +  ';;message:'  +  message )

赋予执行权限
chmod +x /usr/lib/zabbix/alertscripts/weixin.py

创建日志文件

touch /tmp/weixin.log
chown zabbix:zabbix /tmp/weixin.log

测试脚本,用户名为企业微信通讯录中的用户名,一般为拼音全拼,严格区分大小写!
/usr/lib/zabbix/alertscripts/weixin.py 用户名 '标题' '测试成功'

此时企业微信可以收到zaabix应用发来的信息。

5、添加报警媒介
zabbix后台 - 管理 - 报警媒介类型
名称 weixin
类型 脚本
脚本名称 weixin.py
脚本参数:

{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

Test

6、配置Trigger actions触发动作,启用消息推送管理员,填写要发送的信息
配置 - 动作 Trigger actions - 创建动作
Test

动作 中填写名称
操作 中编辑操作和恢复操作

操作
发送消息
zabbix管理员组
仅发送到微信
custom message
主题:服务器报警
消息:

告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}

恢复操作
通知所有参与者
custom message
主题:服务器已恢复
消息:

告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}

Test

Test

Test

7、配置Autoregistration actions自动注册,填写要发送的信息
在Autoregistration actions自动注册中
注意:自动注册的其他内容在下方linux、windows部分

发送消息
zabbix管理员组
仅送到weixin
Custom message
主题:
Linux主机自动注册到zabbix服务器
消息:

主机名:{HOST.HOST}
主机IP:{HOST.IP}
Agent端口:{HOST.PORT}

Test

Test

8、接收微信推送人员
管理-用户-报警媒介
企业微信截图_20220616163615.png

邮箱推送、微信推送
可以理解为仅配置脚本不同,其他配置参数基本一致

邮箱
1、安装mailx
yum install mailx -y
2、修改mailx配置
vim /etc/mail.rc

最后添加
set from=xx@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=xx@qq.com
set smtp-auth-password=邮箱密码
set smtp-auth=login

3、测试邮箱
echo “hello world” | mail -s “testmail” xx@qq.com
4、编写邮箱脚本
cd /usr/lib/zabbix/alertscripts/
vim 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

5、创建日志,添加权限
touch /tmp/mailx.log
chown -R zabbix.zabbix /tmp/mailx.log
chmod +x /usr/lib/zabbix/alertscripts/mailx.sh
chown -R zabbix.zabbix /usr/lib/zabbix/
6、添加使用
其他添加过程与微信相同

微信推送
1、查看短信平台文档编写短信脚本,注意不通用
我用的短信平台采用http get通讯
cd /usr/lib/zabbix/alertscripts/
cat sendSMS.sh

#!/bin/bash
#手机号码
MOBILE_NUMBER=$1
#短信主题
MESSAGE_SUBJECT=$2
#短信内容
MESSAGE_UTF8=$3
#调用短信接口
/usr/bin/curl -s -G --data-urlencode userid=用户ID --data-urlencode account=用户名 --data-urlencode password=用户密码 --data-urlencode mobile=${MOBILE_NUMBER} --data-urlencode content="${MESSAGE_SUBJECT}-${MESSAGE_UTF8}" http://www.短信平台接口.com/xx?action=send >> /tmp/sendSMS.log

2、添加使用
其他添加过程与微信相同

五、自动注册windows主机
平台 - 配置 - 动作 - Autoregistration actions自动注册
Test

创建动作

元数据中的 Linux 为下方脚本里的 HostMetadata=windows 严格区分大小写
企业微信截图_20220616164840.png

操作
添加主机
添加主机群组
关联模板

企业微信截图_20220616164939.png

下载安装agent2客户端
https://www.zabbix.com/cn/download_agents
最新版本为 Zabbix agent 2 v6.0.5

企业微信截图_20220616165411.png

修改配置 HostMetadata=windows
C:\Program Files\Zabbix Agent 2\zabbix_agent2.conf
企业微信截图_20220616165513.png

重启服务
企业微信截图_20220616165645.png

收到自动注册提示
企业微信截图_20220616165743.png

六、自动注册linux主机
zabbix平台自动注册linux与windows方法基本相同,元数据修改为linux
企业微信截图_20220616205453.png

在linux客户端上可以使用自动化脚本安装zabbix agent2客户端

我这里仅放一个centos7/8的安装脚本,内容为卸载agent1安装agent2

#/bin/bash
echo "关闭selinux"
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
setenforce 0


echo "下载zabbix-agent2,卸载agent1"
OSVERSION=`cat /etc/redhat-release |awk -F "release " '{print $2}'|awk -F "." '{print $1}'`

rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/$OSVERSION/x86_64/zabbix-release-6.0-1.el$OSVERSION.noarch.rpm
yum clean all
yum remove zabbix-agent -y
yum install zabbix-agent2 -y

echo "修改zabbix-agent2配置文件"
ipaddr=$(ip a show |grep ens|grep inet |awk '{print $2}'|awk -F '/' '{print $1}')
zabbix_server='192.168.1.110'
hostname=$(hostname)

sed -i "s/^Server=127.0.0.1/Server=${zabbix_server}/g" /etc/zabbix/zabbix_agent2.conf
sed -i "s/^ServerActive=127.0.0.1/ServerActive=${zabbix_server}/g" /etc/zabbix/zabbix_agent2.conf
sed -i "s/Hostname=Zabbix server/Hostname=${hostname}/g" /etc/zabbix/zabbix_agent2.conf
sed -i "s/# HostMetadata=/HostMetadata=linux/g" /etc/zabbix/zabbix_agent2.conf

echo "防火墙放行zabbix-agent端口"
firewall-cmd --permanent --add-port=10050-10051/tcp
firewall-cmd --reload

echo "启动zabbix-agent服务"
systemctl enable --now zabbix-agent2

zabbixagentpid=`ps -ef |grep zabbix_agent2|grep -w 'zabbix_agent2'|grep -v 'grep'|awk '{print $2}'`
if [ "$zabbixagentpid" ];then
echo "zabbix agent2 正在运行 "
else
echo "zabbix agent2 安装失败!!!"
fi

七、通过SNMP监控交换机
1、为zabbix添加SNMPv2模板
SNMPv2模板下载
https://share.zabbix.com/templates/network-devices-fortigate-template-fortinet-all-discovery/#body

2、交换机配置snmpv2

snmp-agent sys-info version v2c
snmp-agent community read public
snmp-agent community write private
snmp-agent trap enable
snmp-agent target-host trap address udp-domain 192.168.1.110 params securityname public v2c
snmp-agent

3、查找MIB
H3C常用MIB
https://www.h3c.com/cn/Service/Document_Software/TechnicalInfo/PorductMaintanInfo/Switches/DailyMainten/MIBList/

4、安装snmp调试工具并进行测试

dnf -y install net-snmp-utils

snmpwalk为模糊测试

snmpwalk -v 2c -c public 192.168.237.50 .1.3.6.1.4.1.2021.10.1.3

snmpget是zabbix的精准获取方式

snmpget -v 2c -c public 192.168.237.50 .1.3.6.1.4.1.2021.10.1.3

5、举例
如S5130 CPU使用率,查询H3C手册为 1.3.6.1.4.1.25506.8.35.18.1.3
使用

snmpwalk -v 2c -c public 192.168.237.50 1.3.6.1.4.1.25506.8.35.18.1.3

后返回

SNMPv2-SMI::enterprises.25506.8.35.18.1.3.0 = INTEGER: 16

得知最后多一位.0

使用

snmpget -v 2c -c public 192.168.237.50 1.3.6.1.4.1.25506.8.35.18.1.3.0

得到结果相同,则此项为s5130型号的CPU使用率

在zabbix新建监控项,即可实现CPU使用率记录
企业微信截图_20220616211001.png

新建触发器,即可实现CPU使用率报警
前5次报警值均超过80时进行CPU使用率过高报警
企业微信截图_20220616211040.png

最终效果
QQ截图20220616212120.png

QQ截图20220616212148.png

其他参数:

CPU使用率 1.3.6.1.4.1.25506.8.35.18.4.3.1.4.0.1
内存使用率 1.3.6.1.4.1.25506.8.35.18.1.16.0
固件版本 1.3.6.1.2.1.1.1.0
开机时间 1.3.6.1.2.1.1.3.0
SN 1.3.6.1.4.1.25506.2.6.1.2.1.1.2.2
温度 1.3.6.1.4.1.25506.2.6.1.1.1.1.12.212

八、添加vsphere vCenter监控
1、开启VMware支持并重启zabbix-server服务

/etc/zabbix/zabbix_server.conf

### Option: StartVMwareCollectors
StartVMwareCollectors=5

2、检查vCenter sdk接口
返回500代码代表接口在工作

curl -i -k --data "" https://172.16.0.1/sdk
HTTP/2 500
cache-control: no-cache
content-type: text/xml; charset=utf-8
date: Tue, 28 Jun 2022 01:36:00 GMT
x-envoy-upstream-service-time: 0
server: envoy

3、登录每台ESXi主机开启MOB服务
系统高级设置,搜索Config.HostAgent.plugins.solo.enableMob,确定值改为true
企业微信截图_20220628093952.png

4、zabbix创建主机

企业微信截图_20220628095638.png

注意是修改继承的宏 https://172.16.0.1/sdk
企业微信截图_20220628095749.png

5、查看数据
一段时间后,zabbix可以获取到所有的vCenter、ESXi和虚拟机的信息
企业微信截图_20220628100409.png

九、grafana面板
企业微信截图_20220923113231.png

1、安装当前最新版本grafana-10.0.1

sudo yum install -y https://dl.grafana.com/oss/release/grafana-10.0.1-1.x86_64.rpm

注意配置开机启动并配置防火墙,默认使用3000端口

2、安装grafana zabbix插件

grafana-cli plugins list-remote
grafana-cli plugins install alexanderzobnin-zabbix-app
systemctl restart grafana-server

3、登录grafana接入zabbix源
http://IP:3000/ 打开grafana界面,打开后输入admin/admin登录,登陆后按提示更改admin密码。
启用zabbix插件
laj7gj54.png
配置数据源
laj7hnp6.png

http://ip/zabbix/api_jsonrpc.php

laj7ij18.png
保存并测试成功
laj7jnkd.png
新建面板即可
laj7krq5.png

十、首页图表监控
首页添加构件
laj7pb7b.png

企业微信截图_16639024594408.png

十一、modbus动环采集
laj7q8xh.png
https://90apt.com/3387

十二、ZbxTable分析系统
lc71lm0c.png

十三、数据库监控
(一)微软MSSQL数据库监控
ljsbbrme.png

安装完SQLServer数据库,开启数据库远程访问
ljs7j2qk.png

配置对IP的监听
ljs7jxgx.png

配置防火墙端口开放
ljs7kh15.png

测试端口
ljs7of0h.png

RHEL8系统安装ODBC驱动
https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver16&tabs=redhat18-install%2Calpine17-install%2Cdebian8-install%2Credhat7-13-install%2Crhel7-offline

sudo su

#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version

#RHEL 7 and Oracle Linux 7
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo

#RHEL 8 and Oracle Linux 8
curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/mssql-release.repo

#RHEL 9
curl https://packages.microsoft.com/config/rhel/9.0/prod.repo > /etc/yum.repos.d/mssql-release.repo

exit
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts
sudo ACCEPT_EULA=Y yum install -y msodbcsql18
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y yum install -y mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo yum install -y unixODBC-devel

配置/etc/odbc.ini
https://learn.microsoft.com/zh-cn/sql/connect/odbc/linux-mac/connection-string-keywords-and-data-source-names-dsns?view=sql-server-ver16

[TEST]
Driver = ODBC Driver 18 for SQL Server
# Server = [protocol:]server[,port]
Server = tcp:172.16.10.102,1433
TrustServerCertificate=YES
#
# Note:
# Port isn't a valid keyword in the odbc.ini file
# for the Microsoft ODBC driver on Linux or macOS

测试,连接成功

isql -v TEST user passwd
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| echo [string]                         |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> 

配置zabbix模板,为目标主机配置一个MSSQL by ODBC
ljsb124x.png

在继承以及主机 宏中修改值
{$MSSQL.DSN}即上方odbc.ini中定义的[TEST]
ljsb2lck.png
{$MSSQL.USER}{$MSSQL.PASSWORD}是自定义的账号密码
注意右侧可以选择密文模式保存
ljsb9426.png

(二)MYSQL数据库监控
ljsbb453.png

为目标主机关联MySQL by Zabbix agent 2模板

ljsb79ms.png

为MYSQL创建监控专用用户并配置宏

mysql -uroot -p
use mysql;
CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '<password>';
GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';

{$MYSQL.USER}{$MYSQL.PASSWORD}是自定义的账号密码
注意右侧可以选择密文模式保存

十三、分组报警
1、将不同主机的告警发送给不同用户
创建主机群组,并将主机添加至主机组,如动环告警
lycq3n3z.png

2、为主机添加群组
lycq57fb.png

3、创建用户群组
动环报警组
lycq62np.png

4、创建用户加入群组
创建用户donghuanyonghu,加入动环报警组
lycq6wnk.png

5、为用户创建报警媒介
我这里用企业微信报警
lycq85in.png

6、触发器操作
发送报告的触发器
lycq9eqc.png

7、操作发送群组
配置完成
lycqalkn.png

lycqbm70.png

十四、总结
功能强大、简单方便、干净卫生
Test

21

评论

博主关闭了所有页面的评论