==服务端==
一、环境准备
方法一:
上传nginx+php72+mariadb10.5.26.zip
[root@zabbix]# tar xf nginx+php72+mariadb10.5.26.zip
[root@zabbix]# cd nginx+php72+mariadb10.5.26/
[root@zabbix ~]# yum localinstall -y *
方法二:
1.配置nginx源
[root@zabbix ~]# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https:nginx.org/keys/nginx_signing.key
module_hotfixes=true
2.安装php+nginx
[root@zabbix ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@zabbix ~]# yum install epel-release.noarch -y
[root@zabbix ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo #epel源
[root@zabbix ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm #这是php的yum源
[root@zabbix ~]# yum install php72w-cli php72w-fpm php72w-gd php72w-mbstring php72w-bcmath php72w-xml php72w-ldap php72w-mysqlnd nginx -y
3.安装mariadb
[root@zabbix ~]# vim /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = http://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/
gpgkey = http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
enabled=1
[root@zabbix ~]# yum install -y mariadb-server
二、配置nginx+php+mariadb
1.配置nginx
[root@zabbix ~]# cat /etc/nginx/conf.d/zbx.conf
server {
listen 80;
server_name zbx.koiz1.com;
root /app/code/zbx;
location / {
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
[root@zabbix ~]# systemctl enable --now nginx
2.配置php-fpm
[root@zabbix ~]# sed -ri '/^(user|group)/s#apache#nginx#g' /etc/php-fpm.d/www.conf #修改启动用户
[root@zabbix ~]# egrep '^(user|group)' /etc/php-fpm.d/www.conf
user = nginx
group = nginx
[root@zabbix ~]# systemctl enable --now php-fpm
3.配置数据库
[root@zabbix ~]# mysql_secure_installation #初始化数据库
回车 nnyyyyy
[root@zabbix ~]# mysql
MariaDB [(none)]> #1.创建数据库要指定字符集
MariaDB [(none)]> create database zabbix charset utf8 collate utf8_bin;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> #2.创建zabbix用户
MariaDB [(none)]> grant all on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> show databases; #检查是否成功创建zabbix库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| zabbix |
+--------------------+
4 rows in set (0.003 sec)
4.向数据库中<导表
[root@zabbix ~]# tar xf zabbix-6.0.36.tar.gz && cd zabbix-6.0.36/database/mysql/
[root@zabbix ~/zabbix-6.0.36/database/mysql]# mysql zabbix <schema.sql
[root@zabbix ~/zabbix-6.0.36/database/mysql]# mysql zabbix <images.sql
[root@zabbix ~/zabbix-6.0.36/database/mysql]# mysql zabbix <data.sql
[root@zabbix ~/zabbix-6.0.36/database/mysql]# mysql zabbix <double.sql
[root@zabbix ~/zabbix-6.0.36/database/mysql]# mysql zabbix <history_pk_prepare.sql
#检查数据表是否导入成功
[root@zabbix ~]# mysql
MariaDB [(none)]> show tables from zabbix;
178 rows in set (0.001 sec)
[root@zabbix ~]# mysql -e 'show tables from zabbix;' |wc -l #-e:在bash中执行sql语句
179 #加了表头标题一行
三、编译安装zabbix-server服务端
1.安装依赖
[root@zabbix ~]# 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
2.编译zabbix #要在有configure的目录下执行
[root@zabbix ~]# export CFLAGS="-std=gnu99" #linux中for循环和c语言的规则有区别,设置以c99规范执行
[root@zabbix ~/zabbix-6.0.36]# ./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
3.根据编译完成后的提示执行make install
提示:
***********************************************************
* Now run 'make install' *
* *
* Thank you for using Zabbix! *
* <http://www.zabbix.com> *
***********************************************************
[root@zabbix ~/zabbix-6.0.36]# make install
4.检查zabbix版本
[root@zabbix ~/zabbix-6.0.36]# zabbix_server --version
zabbix_server (Zabbix) 6.0.36
四、配置zbx-server服务端
1.zabbix的配置文件
[root@zabbix ~]# ll /etc/zabbix/
total 28
-rw-r--r--. 1 root root 25965 Dec 8 17:18 zabbix_server.conf
drwxr-xr-x. 2 root root 6 Dec 8 17:18 zabbix_server.conf.d
2.去除空行和注释后起作用的只有6行
[root@zabbix ~]# egrep -v '^$|#' /etc/zabbix/zabbix_server.conf
LogFile=/tmp/zabbix_server.log
DBName=zabbix
DBUser=zabbix
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
3.修改配置文件
[root@zabbix ~]# egrep -v '^$|#' /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log #更改了日志存放目录
DBHost=localhost #去除#
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix #去除#并填写密码
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
4.按照配置文件 创建目录、用户、更改权限
[root@zabbix ~]# mkdir -p /var/log/zabbix/
[root@zabbix ~]# useradd -s /sbin/nologin -M zabbix
[root@zabbix ~]# chown -R zabbix.zabbix /var/log/zabbix/
5.启动zabbix
[root@zabbix ~]# zabbix_server
[root@zabbix ~]# ps -ef |grep zabbix #检查服务是否运行
五、创建systemctl命令
1.添加系统配置
[root@zabbix ~]# vim /usr/lib/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server with MySQL DB
After=syslog.target network.target
[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_server -f
User=zabbix
[Install]
WantedBy=multi-user.target
2.关闭zabbix
[root@zabbix ~]# pkill zabbix_server
[root@zabbix ~]# ps -ef |grep zabbix
3.加载配置系统配置
[root@zabbix ~]# systemctl daemon-reload
4.使用systemctl运行zabbix
[root@zabbix ~]# systemctl enable zabbix-server.service #开机自启
[root@zabbix ~]# systemctl start zabbix-server.service #启动
[root@zabbix ~]# systemctl stop zabbix-server.service #关闭
[root@zabbix ~]# systemctl restart zabbix-server.service #重启
六、配置前端UI界面
1.拷贝UI代码至nginx站点目录下
[root@zabbix ~]# cp -r zabbix-6.0.36/ui/* /app/code/zbx/ !!!此出最好将/app/code/zbx/目录的所有者修改为nginx,后面会报错
[root@zabbix ~]# chown -R nginx.nginx /app/code/zbx/
2.修改windows下hosts文件,配置dns解析
10.0.0.63 zbx.koiz1.com
3.浏览器访问zbx.koiz1.com
--如不可正常访问应检查nginx配置文件及站点目录
页面安装报错:
--所要求的最小PHP post大小是16M (配置项"post_max_size")。
--所要求的最小PHP脚本执行时间是300 (配置项 "max_execution_time")。
--所要求的PHP脚本最小解析时间是300 (配置项"max_input_time")。
解决方法:
[root@zabbix ~]# vim /etc/php.ini
[root@zabbix ~]# egrep -n '^(post_max_size|max_execution_time|max_input_time)' /etc/php.ini
368:max_execution_time = 300
378:max_input_time = 600
656:post_max_size = 80M
4.重启php-fpm
[root@zabbix ~]# systemctl restart php-fpm
5.报错:无法创建配置文件。保存为 "/app/code/zbx/conf/zabbix.conf.php"
原因:nginx用户没有权限写入/app/code/zbx/目录
解决方法:[root@zabbix ~]# chown -R nginx.nginx /app/code/zbx/
6.zabbix配置文件(此文件保存的是在web页面中设置的信息,例如账号密码,数据库类型,时区,网站标题等)
[root@zabbix ~]# vim /app/code/zbx/conf/zabbix.conf.php
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = 'localhost';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'zabbix';
$ZBX_SERVER_NAME = 'koiz1';
#以下参数默认是注释,只有当web服务和zbx服务不在一起时才会用到
// $ZBX_SERVER = ''; #服务端ip
// $ZBX_SERVER_PORT = ''; #服务端端口
7.修改web页面字体 --用于解决web乱码
[root@zabbix /app/code/zbx/assets/fonts]# cp DejaVuSans.ttf{,.bak} --备份
#复制 C:\Windows\Fonts 下的字体 并将名称改为DejaVuSans.ttf后放入/app/code/zbx/assets/fonts目录下
[root@zabbix /app/code/zbx/assets/fonts]# mv msyh.ttc ./DejaVuSans.ttf
七、浏览器UI设置截图
==客户端==
1.安装zabbix的源
在https://mirrors.aliyun.com/zabbix/zabbix/6.0/rhel/7/x86_64/目录里 --找zabbix-release*.noarch.rpm的包
[root@c1 ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
#上一步安装的zabbix源中地址是zabbix官方的,要改成阿里云的
[root@c1 ~]# sed -i 's#https://repo.zabbix.com/zabbix#https://mirrors.aliyun.com/zabbix/zabbix#g' /etc/yum.repos.d/zabbix.repo
2.安装客户端 --因agent2有依赖,建议配置源后yum安装
[root@c1 ~]# yum install -y zabbix-agent2
3.启动agent2
[root@c1 ~]# systemctl enable --now zabbix-agent2.service
[root@c1 ~]# ps -ef | grep zabbix_agent2 --服务名是下划线,包名是减号
zabbix 2735 1 0 20:37 ? 00:00:00 /usr/sbin/zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf
[root@c1 ~]# ss -lntup |grep zabbix --检查端口
tcp LISTEN 0 128 [::]:10050
4.查看配置文件 --去除空行和注释
[root@c1 ~]# egrep -v '^$|#' /etc/zabbix/zabbix_agent2.conf
PidFile=/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agent2.d/*.conf
PluginSocket=/run/zabbix/agent.plugin.sock
ControlSocket=/run/zabbix/agent.sock
Include=./zabbix_agent2.d/plugins.d/*.conf
ZBX配置文件详解
一、服务端配置文件
| 文件和目录 | |
| ——————————————— | ————————————- |
| /etc/zabbix/zabbix_server.conf | 配置文件 |
| /var/log/zabbix/zabbix_server.log | 日志,默认放在/tmp/下面 |
| /usr/lib/systemd/system/zabbix-server.service | 手写的systemctl管理文件,yum和rpm自带 |
| /usr/local/share/zabbix/alertscripts/ | 用于实现告警的脚本 |
[root@zabbix ~]# grep '^[a-Z]' /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
| 参数 | 说明 |
| —————————————– | ———— |
| ListenPort=10051 | 服务端端口 |
| LogFile=/var/log/zabbix/zabbix_server.log | 日志文件 |
| DBHost=localhost | 数据库地址 |
| DBName=zabbix | 数据库名字 |
| DBUser=zabbix | 数据库用户名 |
| DBPassword=zabbix | 数据库密码 |
| Timeout=4 | 超时时间 |
二、客户端配置文件
| 文件和目录 | 说明 |
| —————————— | —————————— |
| /etc/zabbix/zabbix_agent2.conf | 配置文件 |
| /etc/zabbix/zabbix_agent2.d/ | 子配置文件目录,用于自定义监控 |
| /var/log/zabbix/ | 日志 |
[root@zabbix ~]# grep '^[a-Z]' /etc/zabbix/zabbix_agent2.conf
PidFile=/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agent2.d/*.conf
PluginSocket=/run/zabbix/agent.plugin.sock
ControlSocket=/run/zabbix/agent.sock
Include=./zabbix_agent2.d/plugins.d/*.conf
| 配置文件内容 | 说明 |
| —————— | ————– |
| Server=172.16.1.63 | 指定服务器地址 |
三、agent VS agent2
都是客户端
| | agent | agent2 |
| ——– | —————- | ———————————————————— |
| 开发语言 | C语言 | Go语言和C语言 |
| 性能 | 独立进程方式运行 | 1个进程多个线程技术运行,减少资源消耗占用较少tcp资源,
能够承受高并发 |
==ZBX使用==
一、web页面配置
1、添加主机
2、克隆主机
二、自定义监控全流程
1.客户端配置
#检查ngx服务是否运行
[root@c1 ~]# ss -lntup |grep -w 80|wc -l
1
#zabbix-agent2配置文件
[root@c1 ~]# grep -i include /etc/zabbix/zabbix_agent2.conf
Include=/etc/zabbix/zabbix_agent2.d/*.conf --配置文件会加载子配置文件目录里的.conf文件
Include=./zabbix_agent2.d/plugins.d/*.conf
#子配置文件定制监控项
[root@c1 ~]# cat /etc/zabbix/zabbix_agent2.d/nginx.conf
#自定义监控的格式
#UserParameter=起个名字,命令或者脚本
# key 键值
UserParameter=ngx.port,ss -lntup | grep -w 80 | wc -l
#客户端手动加载键值测试
[root@c1 ~]# zabbix_agent2 -t ngx.port
ngx.port [s|1]
#服务端测试 命令: zabbix_get
#服务端安装软件包
[root@zabbix ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-get-6.0.36-release1.el7.x86_64.rpm
#服务端测试
#-s 指定客户端ip -k 指定键值 -p指定客户端端口
[root@zabbix ~]# zabbix_get -s 172.16.1.66 -k ngx.port -p 10050
1
2.web添加触发器图示
3.触发器配置
三、常用的键值和触发器函数
1.键值
| 键值 | 说明 |
| —————————————————- | ———————————————————— |
| agent.hostname | 主机名,获取客户端配置文件中指定的主机名 |
| ==system.hostname== | 主机名,系统的主机名 |
| agent.ping | 服务端和客户端是否通畅 通1 不同非1 |
| net.if.in[if,mode] | 网络接口上传(进入)流量统计,返回整数 if表示网卡名字 |
| net.if.out[if,mode] | 流出流量统计,返回整数 |
| ==proc.num[
name,进程名字
user,用户
state,进程状态
cmdline,进程对应的命令 |
| ==net.tcp.port[
返回0-不能连接,返回1-可以连接 |
#查看流量
[root@zabbix ~]# zabbix_get -s 172.16.1.66 -k net.if.in[eth0]
2776850
#查看nginx的进程数
[root@zabbix ~]# zabbix_get -s 172.16.1.66 -k proc.num[nginx]
3
#查看80端口是否存在
[root@zabbix ~]# zabbix_get -s 172.16.1.66 -k net.tcp.port[,80]
1
2.触发器函数
| 功能(函数) | 说明 |
| ———— | ————————————— |
| 对比与比较 | |
| last() | 最近值(最新的值),取出最近的一些值 |
| nodata() | 是否有数据 |
| diff() | 是否发送变化 一般–配合md5check()使用 |
| 进行计算 | |
| avg() | 平均值 |
| min() | 最小值 |
| max() | 最大值 |
案例分析1:目的是用来检查/etc/passwd的变化情况,间接检查是否有用户增加或删除
#取出最近的第一个值和第二个值进行比较
ast(/zbx-c1/vfs.file.cksum[/etc/passwd,sha256],#1)
<>
last(/zbx-c1/vfs.file.cksum[/etc/passwd,sha256],#2)
案例分析2: root异地登录
[root@c1 ~]# cat /etc/zabbix/zabbix_agent2.d/login.conf
UserParamerter=user.login[*],lastlog -u "$1" | awk 'NR==2{print $$3}'
# 星号是传参,$1是从[]获取第一个参数,$$是告诉zbx这不是参数
#服务端获取信息
[root@zabbix ~]# zabbix_get -s 172.16.1.66 -k user.login[root]
10.0.0.1
#脚本方式
#UserParameter=user.login[*],sh /server/sripts/check_user.sh "$1"
四、模板创建
五、告警
1.邮件告警
全流程:
1.个人邮箱/企业邮箱
2.开启邮箱smtp功能、获取授权码 #见图1.1
3.发件人:配置zabbix 报警媒介类型 #见图1.2
4.收件人:配置 用户 接收报警 #见图1.4
5.发件条件:配置动作 #见图1.3
消息模板:
1.发生故障模板
信息类型是:
问题( 发生故障 )
主题:
故障名称: {EVENT.NAME}
消息:
故障始于 时间: {EVENT.TIME} 日期: {EVENT.DATE}
故障名称: {EVENT.NAME}
故障主机: {HOST.NAME}
严重程度: {EVENT.SEVERITY}
额外信息: {EVENT.OPDATA}
故障ID: {EVENT.ID}
触发器地址: {TRIGGER.URL}
2.故障解决模板
信息类型是:
Problem recov 故障解决的时候
主题:
故障解决 in {EVENT.DURATION}: {EVENT.NAME}
消息:
故障已经解决 时间: {EVENT.RECOVERY.TIME} 日期:{EVENT.RECOVERY.DATE}
故障名称: {EVENT.NAME}
故障持续时间: {EVENT.DURATION}
故障主机: {HOST.NAME}
故障级别: {EVENT.SEVERITY}
故障ID: {EVENT.ID}
{TRIGGER.URL}
图1.1 开启SMTP
图1.2 告警媒介类型
图1.3 配置动作
图1.4 配置报警媒介
2.微信告警
2.1 必要准备:
企业ID:wwd5cc7d030ec79af2 #见图2.1
AgentId:1000003 #见图2.3
Secret:2fUwv75pBsMS_QISWaSMiVC8C0muxZi9VlwEY6hKa4c #见图2.4-2.5
2.2 调用企业微信脚本1000003
[root@zabbix ~]# vim /usr/local/share/zabbix/alertscripts/wechat.py
2.3 给脚本加执行权限
[root@zabbix ~]# chmod +x /usr/local/share/zabbix/alertscripts/wechat.py
2.4 安装python环境
[root@zabbix ~]# yum install -y python3 python3-pip
#清华源
pip3 install -i https:pypi.tuna.tsinghua.edu.cn/simple some-package
#阿里源
pip3 install -i https://mirrors.aliyun.com/pypi/simple some-package
#安装requests库
[root@zabbix ~]# pip3 install requests
2.5 zabbix页面配置告警媒介
#web页面 发件人:报警媒介类型
{ALERT.SENDTO} #发给谁
{ALERT.SUBJECT} #报警标题
{ALERT.MESSAGE} #报警内容
```sh
脚本内容 /usr/local/share/zabbix/alertscripts/wechat.py
#!/usr/bin/env python3
#-*- coding: utf-8 _*_
#导入python模块
import requests
import sys
import os
import json
import logging
#自定义logging模块的格式,具体日志会存放在"/var/log/weixin.log"中,你也可以自定义到其它目录中,该文件默认以追加方式写入,你可以写一个周期性任务进行滚动操作
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','wechat.log'),
filemode = 'a')
#指定企业ID
corpid='wwd5cc7d030ec79af2'
#指定应用管理的AgentId
agentid=1000003
#指定应用管理的Secret
appsecret='2fUwv75pBsMS_QISWaSMiVC8C0muxZi9VlwEY6hKa4c'
#指定Token_url
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
#获取tocken
req=requests.get(token_url)
#获取tocken中access_token字段对应的值
accesstoken=req.json()['access_token']
#定义消息发送的URL
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' +accesstoken
#定义要发送的人,也就是zabbix webUI配置的"{ALERT.SENDTO}"参数对应的值,touser表示用户,toparty表示用户组 @all 表示所有组
#touser=sys.argv[1]
toparty=sys.argv[1]
#定义要发送的主题,也就是zabbix webUI配置的"{ALERT.SUBJECT}"参数对应的值
subject=sys.argv[2]
#定义要发送的消息内容,也就是zabbix webUI配置的"{ALERT.MESSAGE}"参数对应的值
message=sys.argv[2] + "\n\n" +sys.argv[3]
#指定参数
params={
# "touser": touser,
"toparty": toparty,
"msgtype": "text",
"agentid": agentid,
"text": {
"content": message
},
"safe":0
}
#基于requests模块的post方法发送企业微信报警消息
req=requests.post(msgsend_url, data=json.dumps(params))
#发送消息后记得打印日志信息,在本地的配置文件中可以查看
#用户
#logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
#用户组
logging.info('sendto:' + toparty + ';;subject:' + subject + ';;message:' + message)
图2.1
图2.2
图2.3
图2.4
图2.5
图2.6
图2.7配置触发器
图2.8 配置报警媒介
3.钉钉群告警机器人
全流程:
1.创建钉钉群,添加机器人并拿到Webhook地址
2.在zabbix脚本指定目录放入dingding.py
3.给脚本和日志加执行权限
4.配置告警媒介类型
5.配置动作
6.配置告警媒介
资料:
钉钉群:https://blog.csdn.net/weixin_52677672/article/details/142323625
微信群:https://blog.51cto.com/gagarin/9526396
脚本目录:/usr/local/share/zabbix/alertscripts
书写脚本:
[root@zabbix]# vim /usr/local/share/zabbix/alertscripts/dingding.py
[root@zabbix]# chmod +x /usr/local/share/zabbix/alertscripts/dingding.py
[root@zabbix]# chown zabbix.zabbix /usr/local/share/zabbix/alertscripts/dingding.py
[root@zabbix]# mkdir -p /usr/lib/zabbix/log/
[root@zabbix]# touch /usr/lib/zabbix/log/dingding.log
[root@zabbix]# chown zabbix.zabbix -R /usr/lib/zabbix/log/
[root@zabbix]# pip3 install requests
```
脚本内容:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
import datetime
#要修改的地方!!!
webhook = "https://oapi.dingtalk.com/robot/send?access_token=7ec81f802a564ee9d7f097c640dad2072c6fb66cf79e112837b83484932b3fa6"
user=sys.argv[1]
subject=sys.argv[2]
text=sys.argv[3]
data={
"msgtype": "text",
"text": {
"content": "%s%s"%(subject,text)
},
"at": {
"atMobiles": [
user
],
"isAtAll": False
}
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/usr/lib/zabbix/log/dingding.log"):
f=open("/usr/lib/zabbix/log/dingding.log","a+")
else:
f=open("/usr/lib/zabbix/log/dingding.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:
f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+"发送成功"+"\n"+str(text))
f.close()
else:
f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+"发送失败"+"\n"+str(text))
f.close()
图3.1 建立告警群
六、应用场景
1.zbx客户端概述
| zbx客户端 | 应用场景 |
| ——— | ———————————————————— |
| agent2 | 适用于几乎所有情况,支持自定义,linux、windows、android/ios |
| SNMP | 用于监控网络设备 |
| JMX | java-gateway,监控java app(tomcat),自定义监控(zabbix_agents2+jmap/jstats) |
| IPMI | 监控硬件(物理服务器),直接使用自定义监控(ipmitools+megacli) |
windows 监控
安装包:https://cdn.zabbix.com/zabbix/binaries/stable/6.0/6.0.37/zabbix_agent-6.0.37-windows-i386-openssl.msi
https://cdn.zabbix.com/zabbix/binaries/stable/6.0/6.0.37/zabbix_agent-6.0.37-windows-amd64-openssl.msi
七、自动化
| 自动添加主机方案 | 含义 | 应用场景 |
| —————- | —————————– | —————————————- |
| 自动发现(服务端) | zbx服务端主动查找新主机 | 配置简单,大量添加主机不适用,临时性可用用 |
| 自动注册(客户端) | zab客户端主动找服务端提交信息 | 配置繁琐,经常性,大量主机 |
1.自动发现
- 客户端 zbx-agent 配置文件
- web配置自动发现规则 -发现主机
- web配置自动发现动作
[root@c2 ~]# vim /etc/zabbix/zabbix_agent2.conf
Server=172.16.1.63
ServerActive=172.16.1.63
HostnameItem=system.hostname
HostMetadataItem=system.uname
2.自动注册
zbx客户端配置:修改zbx客户端配置文件:ServerActive=服务端ip 和 Hostname=…
web页面,动作—自动注册 autoreg
[root@c1 ~]# grep '^[S|H]' /etc/zabbix/zabbix_agent2.conf Server=172.16.1.63 ServerActive=172.16.1.63 HostnameItem=system.hostname HostMetadataItem=system.uname
八、分布式监控/异地监控
1.代理机配置
#安装zbx-proxy包
[root@c1 ~]# yum install -y https://mirrors.aliyun.com/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-proxy-mysql-6.0.37-release1.el7.x86_64.rpm
#数据库安装
[root@c1 ~]# yum install -y mariadb-server
[root@c1 ~]# systemctl enable --now mariadb
#数据库初始化
[root@c1 ~]# mysql_secure_installation
[root@c1 ~]# mysql
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix_proxy@'localhost' identified by 'zabbix_proxy';
MariaDB [(none)]> show databases;
MariaDB [(none)]> select user,host from mysql.user;
#将zbx服务端tar包上传解压
[root@c1 ~]# tar xf zabbix-6.0.36.tar.gz
[root@c1 ~]# cd zabbix-6.0.36/database/mysql/
#导表
[root@c1 ~/zabbix-6.0.36/database/mysql]# mysql -uroot zabbix_proxy <schema.sql
[root@c1 ~/zabbix-6.0.36/database/mysql]# mysql -e 'show tables from zabbix_proxy;'|wc -l
174
2.zbx-proxy配置文件
[root@c1 ~]# vim /etc/zabbix/zabbix_proxy.conf
[root@c1 ~]# grep '^[S|H|D]' /etc/zabbix/zabbix_proxy.conf
Server=10.0.0.63
Hostname=zq_zbx_proxy
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=zabbix_proxy
#启动代理
[root@c1 ~]# systemctl enable --now zabbix-proxy.service
总部web页面配置
==内部机器修改配置文件,将服务端ip修改为代理==
九、高可用
1.克隆一台zbx-server,ip 10.0.0.64
[root@zbx-ha ~]# systemctl disable php-fpm nginx mariadb
[root@zbx-ha ~]# systemctl stop php-fpm nginx mariadb
#修改备用机服务端配置文件
[root@zbx-ha ~]# grep '^[DB]' /etc/zabbix/zabbix_server.conf
DBHost=172.16.1.63
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
#重启服务
[root@zbx-ha ~]# systemctl restart zabbix-server.service
2.主服务端配置数据库网段可用
[root@zabbix ~]# mysql
MariaDB [(none)]> grant all on zabbix.* to 'zabbix'@'172.16.1.%' identified by 'zabbix';
3.配置高可用
#bak
[root@zbx-ha ~]# tail -2 /etc/zabbix/zabbix_server.conf
HANodeName=zbx-ha
NodeAddress=172.16.1.64:10051
#主
[root@zabbix ~]# tail -2 /etc/zabbix/zabbix_server.conf
HANodeName=zabbix
NodeAddress=172.16.1.63:10051
[root@zabbix ~]# systemctl restart zabbix-server.service
4.检查主备情况
[root@zabbix ~]# zabbix_server -R ha_status
5.客户端配置文件修改服务端ip
[root@c1 ~]# grep '^[S|H]' /etc/zabbix/zabbix_agent2.conf
Server=172.16.1.63,172.16.1.64 #用逗号
ServerActive=172.16.1.63;172.16.1.64 #用分号
HostnameItem=system.hostname
HostMetadataItem=system.uname