目录
- 1.安装Zabbix步骤
- 2.zabbix实现邮件告警
- 3.zabbix主动模式的简介实现
-
- [3.1 主动模式](#3.1 主动模式)
- [4.zabbix proxy主动及被动案例](#4.zabbix proxy主动及被动案例)
- 5.完成脚本api添加主机
- 6.构建一个漂亮的granfana大盘
1.安装Zabbix步骤
- 安装Zabbix仓库
bash
#[10:50:04root@ubuntu fonts]# wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb
#下载包
[10:50:21root@ubuntu fonts]# dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
#安装包
[10:52:53root@ubuntu fonts]# apt update
#更新仓库
- 安装Zabbix server, frontend, agent
bash
[10:54:53root@ubuntu fonts]# apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
- 初始化数据库
bash
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
- 执行mysql脚本
bash
[10:56:26root@ubuntu fonts]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
###
禁用非 SUPER 权限用户创建和更改函数和存储过程的能力
mysql> set global log_bin_trust_function_creators = 0;
- 修改配置文件
bash
[10:59:03root@ubuntu fonts]# vim /etc/zabbix/zabbix_server.conf
DBPassword=123456
[10:59:38root@ubuntu fonts]# vim /etc/zabbix/nginx.conf
listen 80;
server_name www.luomu.com;
- 重启服务设置开启启动
bash
[11:00:21root@ubuntu fonts]# systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm
[11:00:21root@ubuntu fonts]# systemctl enable zabbix-server zabbix-agent nginx php8.1-fpm
- 安装中文语言包
bash
[11:11:06root@ubuntu ~]# apt install language-pack-zh-hans language-pack-zh-hans-base
- 填写数据库信息
- 登录ZABBIX
- 解决乱码
1.打开windows
2.找到需要的字体
3.复制到linux主机
bash
[11:18:53root@ubuntu ~]# rz -E
rz waiting to receive.
[11:18:57root@ubuntu ~]# ls
msyhbd.ttc snap zabbix-release_6.0-4+ubuntu22.04_all.deb
##
[11:19:51root@ubuntu ~]# cd /usr/share/zabbix/assets/fonts
[11:19:56root@ubuntu fonts]# ls
graphfont.ttf
##修改原本的文件
[11:20:48root@ubuntu fonts]# mv graphfont.ttf graphfont.ttf.bak
#替换
[11:21:27root@ubuntu fonts]# mv ~/msyhbd.ttc graphfont.ttf
[11:21:30root@ubuntu fonts]# ls
graphfont.ttf graphfont.ttf.bak
#注意:字体文件路径和名称的定义在文件/usr/share/zabbix/include/defines.inc.php中配置
#可以修改下面FONT_NAME指定新字体件,注意不需加文件后缀
[root@zabbix-server ~]#grep FONT_NAME /usr/share/zabbix/include/defines.inc.php
define('ZBX_GRAPH_FONT_NAME', 'graphfont'); // font file name
define('ZBX_FONT_NAME', 'graphfont');
4.刷新界面解决乱码
2.zabbix实现邮件告警
- 安装agentd
bash
OS_ID=`sed -rn '/^NAME=/s@.*="([[:alpha:]]+).*"$@\1@p' /etc/os-release`
OS_NAME=`sed -rn '/^NAME=/s@.*="([[:alpha:]]+) (.*)"$@\1@p' /etc/os-release`
zabbix_server='10.0.0.201'
color () {
RES_COL=60
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_WARNING="echo -en \\033[1;33m"
SETCOLOR_NORMAL="echo -en \E[0m"
echo -n "$1" && $MOVE_TO_COL
echo -n "["
if [ $2 = "success" -o $2 = "0" ] ;then
${SETCOLOR_SUCCESS}
echo -n $" OK "
elif [ $2 = "failure" -o $2 = "1" ] ;then
${SETCOLOR_FAILURE}
echo -n $"FAILED"
else
${SETCOLOR_WARNING}
echo -n $"WARNING"
fi
${SETCOLOR_NORMAL}
echo -n "]"
echo
}
install_wrap () {
if [[ $OS_ID =~ Rocky|Centos ]];then
rpm -q wget &>/dev/null || yum -y install wget &>/dev/null
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/8/x86_64/zabbix-release-6.4-1.el8.noarch.rpm || { color 下载失败 1; exit; }
yum clean all && yum install -y zabbix-agent
sed -ri.bak 's/^(Server=).*/\1${zabbix_server}/' /etc/zabbix/zabbix_agentd.conf
systemctl restart zabbix-agent
systemctl enable zabbix-agent
color 安装完成 0
elif [[ $OS_ID =~ Ubuntu ]];then
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu20.04_all.deb || { color 下载失败 1; exit; }
dpkg -i zabbix-release_6.4-1+ubuntu20.04_all.deb && apt update && apt install -y zabbix-agent
sed -ri.bak 's/^(Server=).*/\1${zabbix_server}/' /etc/zabbix/zabbix_agentd.conf
systemctl restart zabbix-agent
systemctl enable zabbix-agent
color 安装完成 0
fi
}
install_wrap
- 在agentd主机上安装NGINX服务
bash
[10:52:26root@ubuntu ~]# apt -y install nginx
- 在web配置监控nginx模板和触发器
1.监控项
2.触发器
- 创建邮件报警媒介
-
指定发送到的邮件账户
-
配置动作
-
模拟nginx宕机
查看
收到邮件
3.zabbix主动模式的简介实现
3.1 主动模式
- 在主动模式下,监控代理程序定期连接到 Zabbix 服务器,并主动发送数据
- 代理程序会主动请求配置和任务,并发送监控数据到服务器
- 这种模式适用于网络环境中代理程序能够访问 Zabbix 服务器的情况,例如,代理程序在内部网络,而服务器在外部网络
3.1.1主动模式实现
在Zabbix Agent 实现主动模式流程
- 在 Zabbix Agent 配置主机模式相关配置
- 在 Zabbix Server 创建配置有主动模式监控项的模板
- 关联主动模板至支持主动模式的 Agent 主机
bash
[12:00:56root@ubuntu ~]# grep '^[^#]' /etc/zabbix/zabbix_agentd.conf
PidFile=/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.202 #被动模式必须指向zabbix_server主机
ServerActive=10.0.0.202 #主动模式必须指向zabbix_server主机
Hostname=10.0.0.203 #当前主机的IP,此项必须和Zabbix_Server中设置的主机名称相同
Timeout=30
Include=/etc/zabbix/zabbix_agentd.d/*.conf
[12:01:04root@ubuntu ~]# systemctl restart zabbix-agent.service
更改现有模板的监控项为主动模式
- 查看数据
4.zabbix proxy主动及被动案例
Zabbix Proxy在Zabbix监控系统中扮演着重要的角色,可以用于分布式监控环境中的数据收集和处理。它既可以以主动模式与Zabbix Server通信,也可以以被动模式接收来自监控设备的数据
注意: Zabbix Proxy 的主动模式和被动模式和Agent的主动被动模式没有关系
- zabbix Proxy 安装和配置
注意:所有主机的主机名要唯一,否则被动模式可能会影响数据采集
地址 | 角色 |
---|---|
10.0.0.28 | Zabbix Server,MySQL |
10.0.0.202 | Zabbix Proxy主动模式,MySQL |
10.0.0.48 | Zabbix agent 主动模式,MySQL |
10.0.0.38 | Zabbix Server,MySQL |
10.0.0.22 | Zabbix Proxy被动模式,MySQL |
10.0.0.8 | Zabbix agent 被动模式,MySQL |
- zabbix服务配置
数据库和zabbix_server配置
bash
MYSQL_USER="root"
MYSQL_PASSWORD="123456"
ZABBIX_PASSWORD="123456"
MYSQL_DATABASE="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
dnf install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent mysql-server -y
mysql -u$MYSQL_USER -e \
"CREATE DATABASE $MYSQL_DATABASE CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; \
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY '123456'; \
GRANT ALL PRIVILEGES ON $MYSQL_DATABASE.* TO 'zabbix'@'localhost'; \
SET GLOBAL log_bin_trust_function_creators = 1;"
cat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p$ZABBIX_PASSWORD $MYSQL_DATABASE
mysql -u$MYSQL_USER -e "SET GLOBAL log_bin_trust_function_creators = 0;"
sed -ri.bak "s/^# (DBPassword=)/\1$ZABBIX_PASSWORD/" /etc/zabbix/zabbix_server.conf
systemctl restart zabbix-proxy
- 主动模式Proxy
bash
[14:52:14root@ubuntu ~]# grep ^[^#] /etc/zabbix/zabbix_proxy.conf
ProxyMode=0 #主动模式为0
Server=10.0.0.28 #必须指向zabbix_server服务器
Hostname=Zabbix-proxy #需要和web上一致
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/run/zabbix/zabbix_proxy.pid
SocketDir=/run/zabbix
DBName=zabbix_proxy #数据库名字
DBUser=zabbix #数据库账户
DBPassword=123456 #数据库密码
ProxyLocalBuffer=0
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
FpingLocation=/usr/bin/fping
Fping6Location=/usr/bin/fping6
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
- 被动模式Proxy
bash
[11:58:25root@ubuntu ~]# grep ^[^#] /etc/zabbix/zabbix_proxy.conf
ProxyMode=1 #被动模式为1
Server=10.0.0.38 #必须指向zabbix_server服务器
Hostname=Zabbix-proxy #不用一致
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/run/zabbix/zabbix_proxy.pid
SocketDir=/run/zabbix
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=123456
ProxyLocalBuffer=0
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
FpingLocation=/usr/bin/fping
Fping6Location=/usr/bin/fping6
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
- 主动模式agent
bash
[14:57:43root@localhost ~]# grep ^[^#] /etc/zabbix/zabbix_agentd.conf
PidFile=/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.202 #必须指向Proxy
ServerActive=10.0.0.202 #必须指向Proxy
Hostname=10.0.0.48 #在web上配置需要一致
Include=/etc/zabbix/zabbix_agentd.d/*.conf
- 被动模式agent
bash
[12:01:49root@localhost ~]# grep ^[^#] /etc/zabbix/zabbix_agentd.conf
PidFile=/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.202 #指向Proxy
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agentd.d/*.conf
5.完成脚本api添加主机
bash
#!/bin/bash
#
#**********************************************************************************************
#Author: luomu
#QQ: 2754835633
#Date: 2024-05-12
#FileName: tianjia.sh
#MIRROR: www.xswhsy.cn
#Description: The test script
#Copyright (C): 2024 All rights reserved
#*********************************************************************************************
ZABBIX_URL="http://luomu.cn/api_jsonrpc.php"
USERNAME="Admin"
PASSWORD="zabbix"
# 登录Zabbix API并获取认证令牌
auth_token=$(curl -s -X POST -H 'Content-Type: application/json' -d '{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "'$USERNAME'",
"password": "'$PASSWORD'"
},
"id": 1
}' $ZABBIX_URL | jq -r '.result')
if [ -z "$auth_token" ]; then
echo "认证失败!"
exit 1
fi
echo "认证成功,认证令牌: $auth_token"
# 主机信息
hostname="10.0.0.8"
ip_address="10.0.0.8"
# 要添加到的主机组ID和模板ID
group_id="2"
template_id="10001"
# 创建主机
response=$(curl -s -X POST -H 'Content-Type: application/json' -d '{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "'$hostname'",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "'$ip_address'",
"dns": "",
"port": "10050"
}
],
"groups": [{"groupid": "'$group_id'"}],
"templates": [{"templateid": "'$template_id'"}]
},
"auth": "'$auth_token'",
"id": 1
}' $ZABBIX_URL | jq -r '.result')
if [ -n "$response" ]; then
echo "主机添加成功!"
else
echo "主机添加失败!"
fi
- 查看是否添加
- 运行脚本添加
bash
[15:20:27root@localhost ~]# bash host.sh
认证成功,认证令牌: 14098e814f79f60ca26814f9064463d7
主机添加成功!
6.构建一个漂亮的granfana大盘
下载地址:https://grafana.com/grafana/download
bash
[20:53:00root@localhost ~]# yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-10.4.2-1.x86_64.rpm
Complete!
[20:55:01root@localhost ~]# systemctl start grafana-server.service #启动grafana
- 查看初始界面
- 安装zabbix插件
bash
[21:35:55root@localhost ~]# grafana-cli plugins list-remote |grep zabbix #列出插件
[21:08:04root@localhost ~]# grafana-cli plugins install alexanderzobnin-zabbix-app #安装zabbix插件
✔ Downloaded and extracted alexanderzobnin-zabbix-app v4.4.9 zip successfully to /var/lib/grafana/plugins/alexanderzobnin-zabbix-app
Please restart Grafana after installing or removing plugins. Refer to Grafana documentation for instructions if necessary.
[21:11:18root@localhost ~]# systemctl restart grafana-server.service #重启服务
[21:45:10root@localhost ~]# grafana-cli plugins list-remote |grep zabbix #列出插件
id: alexanderzobnin-zabbix-app version: 4.4.9
- 设置插件
添加数据源
图形更改 - 简易大盘