zabbix部署
安装源
重新创建纯净环境,利用base克隆一台虚拟机server1
给server1做快照,方便下次实验恢复使用
进入zabbix官网https://www.zabbix.com
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
#安装 Zabbix 监控系统的 YUM 软件源配置包。这个命令将会下载并安装 Zabbix 5.0 版本适用于 CentOS/RHEL 7 x86_64 系统的软件源配置文件 zabbix-release-5.0-1.el7.noarch.rpm。
官网的yum源下载速度慢,可以使用清华下载站
vim zabbix.repo
yum clean all
#清理yum的缓存,包括下载的软件包和元数据。通过运行这个命令,可以释放磁盘空间并确保系统中使用的软件包信息是最新的
yum install zabbix-server-mysql zabbix-agent
#安装Zabbix server,Web前端,agent
安装 Zabbix 前端和启用 Red Hat Software Collections:
yum install -y centos-release-scl-2-3.el7.centos.noarch.rpm centos-release-scl-rh-2-3.el7.centos.noarch.rpm
#安装
yum repolist
#列出系统中配置的 YUM 软件源(repositories)以及它们的状态和信息
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl
#安装前端界面包
tar xf mysql-5.7.33-1.el7.x86_64.rpm-bundle.tar
#解压编译好的mysql开发包
yum install -y mysql-community-client-5.7.33-1.el7.x86_64.rpm mysql-community-common-5.7.33-1.el7.x86_64.rpm mysql-community-libs-5.7.33-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.33-1.el7.x86_64.rpm mysql-community-server-5.7.33-1.el7.x86_64.rpm
#安装rpm软件包,这种安装方法速度快
systemctl status mysqld
#查看mysql状态,自动创建了启动脚本
systemctl enable --now mysqld
#开机自启
grep 'temporary password' /var/log/mysqld.log
#过滤日志中记录的临时密码
mysql_secure_installation
#安全初始化,设置新密码为YQMyqm0626*
mysql -pYQMyqm0626*
#登录数据库
创建zabbix数据库:
create database zabbix character set utf8 collate utf8_bin;
#创建一个名为zabbix,字符集为utf8,校对规则为utf8_bin的数据库
create user zabbix@localhost identified by 'YQMyqm0626*';
#中创建一个名为zabbix的用户,允许该用户只能从本地主机(localhost)登录,并设置密码为YQMyqm0626*
grant all privileges on zabbix.* to zabbix@localhost;
#授予zabbix@localhost用户对zabbix数据库的全部权限
set global log_bin_trust_function_creators = 1;
#设置全局变量log_bin_trust_function_creators的值为1,允许在具有二进制日志的 MySQL 实例中创建和修改函数,而无需super权限
zcat /usr/share/doc/zabbix-server-mysql-5.0.42/create.sql.gz | mysql -uzabbix -pYQMyqm0626* zabbix
#导入数据,数据量较大,需要等待,不要中断
可使用zabbix用户身份,已经拥有所有权限
mysql> set global log_bin_trust_function_creators = 0;
#将全局变量log_bin_trust_function_creators的值设为0,禁止在具有二进制日志的 MySQL 实例中创建和修改函数,除非用户具有 SUPER 权限
vim /etc/zabbix/zabbix_server.conf
#编辑配置文件
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
#配置zabbix前端
systemctl enable --now zabbix-server zabbix-agent httpd rh-php72-php-fpm
#设置Zabbix 服务器、Zabbix Agent、Apache(httpd)以及 PHP-FPM 服务开机自启
访问前端 http://192.168.145.11/zabbix
填写数据库连接信息
填写zabbix server信息
登陆前端的用户密码是:Admin/zabbix
修改前端语言
修改字体文件
最终指向的是DejaVu Sans 字体,是系统字体
DejaVu Sans 是一种常用的开源无衬线字体,具有良好的可读性和跨平台兼容性,适合用于屏幕显示和打印输出。通过指定这个路径,系统或应用程序可以引用并使用 DejaVu Sans 字体来显示文本内容,以确保文本在界面上能够正确显示并保持一致的外观。
cp simkai.ttf /usr/share/zabbix/assets/fonts
#将下载的楷体字体文件放到字体存储的目录中
rm -f graphfont.ttf
#删除原来的软连接
ln -s simkai.ttf graphfont.ttf
#将graphfont.ttf重新指向simkai.ttf字体文件,可以方便地引用simkai.ttf字体文件,而无需复制或移动文件内容
vim /usr/share/zabbix/include/defines.inc.php
#查看配置文件
指定了字体文件,所以做软链接指向要使用的字体文件即可,不用修改配置文件
添加agent
从母镜像base克隆两台虚拟机server2,server3,设置主机名为server2,server3,ip地址分别为192.168.145.12,192.168.145.13
1.手动添加
scp zabbix.repo server2:/etc/yum.repos.d/
#从server1拷贝repo文件到server2
server2:
vim /etc/yum.repo.d/zabbix.repo
yum install -y zabbix-agent
#安装zabbix-agent
vim /etc/zabbix/zabbix_agentd.conf
#编辑配置文件
systemctl enable --now zabbix-agent.service
#启动服务
server端:
2.自动发现
配置server3
scp zabbix.repo server3:/etc/yum.repos.d/
#从server2拷贝repo文件
vim /etc/zabbix/zabbix_agentd.conf
#编辑配置文件
systemctl enable --now zabbix-agent.service
#启动服务
server端:
打开agent即可
要先启用动作再启用发现
适合通用大批量主机管理,并不具备实时性,因为有时间间隔
3.自动注册
停用自动发现规则
删除server3主机
可根据实际应用场景选择添加不同动作
systemctl restart zabbix-agent.service
#重启server3的agent服务
是由agent端完成动作,具有实时性
自动发现适合大批量通用型添加场景
4.zabbix api
Zabbix API是Zabbix监控系统提供的应用程序接口(Application Programming Interface),用于通过HTTP/HTTPS协议与Zabbix服务器进行通信。通过Zabbix API,用户可以以编程方式执行各种操作,如创建、修改和删除监控项、主机、触发器、图表等。这使得用户可以自动化监控系统的管理和配置,同时也可以将Zabbix集成到其他应用程序或工具中。
Zabbix API提供了RESTful风格的API,支持JSON和XML格式的数据交换。通过调用API方法,用户可以执行各种操作,并获取系统状态和监控数据。例如,可以使用API创建一个新的监控项,获取主机的当前状态,或者检索触发器的历史数据。
使用Zabbix API,用户可以根据自己的需求开发自定义的监控解决方案,或者集成Zabbix监控系统到其它自动化工具和流程中,从而实现更高效的监控管理和自动化运维。
curl -s -X POST http://192.168.145.11/zabbix/api_jsonrpc.php -H 'Content-Type: application/json-rpc' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}' | python -m json.tool
#获取token值
{
"id": 1,
"jsonrpc": "2.0",
"result": "1e4cc57eb1e0583ff63ef25cfdbb581c"
}
#认证后获取的token值
也可将curl命令写入脚本,添加可执行权限,执行脚本即可获得token值
检索主机:
#执行查询操作,获取主机信息以及它们的接口信息
删除主机
删除server3主机,id为10440
修改脚本内容为删除10440主机
./zabbix-api.sh
#执行
创建主机
生效
在生产环境更加适用
服务监控
1.nginx监控
在server2安装nginx
使用nginx-1.23.3版本
tar zxf nginx-1.23.3.tar.gz
#解压
yum install -y gcc make openssl-devel pcre-devel
#安装依赖性
./configure --with-http_stub_status_module --with-http_ssl_module
#配置
不指定安装路径,也自动安装到了/usr/local/nginx
make
#编译
make install
#安装
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
#创建软连接,便于启动
vim /usr/local/nginx/conf/nginx.conf
#编辑配置文件,配置stub_status模块
#访问/basic_status路径时,Nginx会返回服务器的简单状态信息
nginx
#启动服务
curl localhost/basic_status
#访问本地/basic_status,获取服务器简单信息
多次访问
监控显示:
稍作等待,监控数据就会出现,采集数据有一定的时间间隔
在官方文档查看zabbix安装要求
数据库要求:
可根据主机所有监控项换算所需的磁盘大小
2.mysql监控
zabbix自带mysql模板
为zabbix server链接mysql监控模板
拷贝模板:
cp /usr/share/doc/zabbix-agent-5.0.42/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.d/
#拷贝
创建数据库连接用户
GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
#授予了'zbx_monitor'用户在所有数据库上执行以下操作的权限
- REPLICATION CLIENT: 允许用户查看关于复制的信息,例如主从复制状态。
- PROCESS: 允许用户查看当前正在执行的进程。
- SHOW DATABASES: 允许用户查看所有数据库的列表。
- SHOW VIEW: 允许用户查看数据库中的视图。
这个语句中的*.*
表示所有数据库和所有表。'zbx_monitor'@'%'
指定了用户的用户名为'zbx_monitor',并且可以从任何主机(%
表示任何主机)连接到MySQL服务器。
创建数据库连接文件
mkdir /var/lib/zabbix/
vim /var/lib/zabbix/.my.cnf
systemctl restart zabbix-agent.service
#重启agent
查看mysql监控
percona数据库模板
清理掉原来模板
rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm
#安装 Percona 提供的 Zabbix 模板包
-ivh
: 这三个选项分别代表:-i
: 安装一个新的软件包。-v
: 在安装过程中显示详细信息,即 verbose 模式。-h
: 在显示安装进度条时,以 hash 标识进度。
cd /var/lib/zabbix/percona/templates
cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
#拷贝模板,存放key/value
rm -f /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
#删除原来的模板
现在模板内容更多
systemctl restart zabbix-agent.service
#重启agent
cd /var/lib/zabbix/percona/scripts/
vim ss_get_mysql_stats.php
#编辑php脚本
ln -s /opt/rh/rh-php72/root/usr/bin/php /usr/bin/php
#创建软连接,方便调用php
/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
#运行脚本
运行该脚本加上键值gg是获取mysql的key-read-requests指标
有数据显示就表示正常
数据已经做过格式化,key/value机制
此时缓存文件是root身份创建的,最终要实现zabbix用户自行创建
rm -f localhost-mysql_cacti_stats.txt
#删除/tmp下的缓存文件,如果不删除后期则zabbix用户无法修改文件
导入模板文件
等待监控数据生成
3.tomcat监控
yum install -y java-1.8.0-openjdk.x86_64
#安装java openjdk软件包
tar zxf apache-tomcat-8.5.24.tar.gz -C /usr/local
#解压tomcat软件压缩包
cd /usr/local/
ln -s apache-tomcat-8.5.24/ tomcat
#创建软链接
cd /usr/local/tomcat/bin/
vim catalina.sh
#编辑tomcat启动脚本
CATALINA_OPTS='-Dcom.sun.management.jmxremote.port=8888
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false'
#配置 Apache Tomcat 服务器的 JMX 远程管理功能,指定 JMX 远程管理的端口为8888
./startup.sh
#启动tomcat服务器
服务不能all in一台服务器
在server1安装java网关:
yum install -y zabbix-java-gateway
#安装zabbix-java-gateway,作为一个中间件,连接 Zabbix Server 和监控的 Java 应用程序之间的通信
systemctl enable --now zabbix-java-gateway.service
#启动服务
vim /etc/zabbix/zabbix_server.conf
#修改zabbix server配置文件
StartJavaPollers 用于处理 Java 监控数据的 Java Poller 进程的数量。Java Poller 负责从 Java 应用程序中收集监控数据并将其传递给 Zabbix Server。通过设置该参数,可以控制并发处理的 Java 监控数据的数量。在这里,设置为 5
,表示启动 5 个 Java Poller 进程
systemctl restart zabbix-server.service
#重启server
server端:
等待配置
有监控数据生成
4.集成告警平台
睿象云-智能运维找睿象
注册以后创建appkey,按照文档配置探针
部署探针:
cd /usr/lib/zabbix/alertscripts
#切换到zabbix脚本目录
wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-4.0.3.tar.gz
#获取Cloud Alert Agent包
wget命令是一个在Linux和类Unix操作系统中经常使用的网络命令,用途是从指定的URL下载文件。它支持HTTP、HTTPS和FTP协议,支持断点续传,可以下载整个网站
tar xf ca_zabbix_release-4.0.3.tar.gz
#解压
cd cloudalert/bin
./install.sh fd654cbe71c44c28b6155e5862002334
#安装
chown zabbix.zabbix cloudalert/ -R
#将cloudalert/探针目录的所有人和所有组都设为zabbix,保证运行zabbix服务的权限和cloudalert探针目录的权限保持一致
配置通知策略:
app通知需下载app,微信通知需绑定微信公众号
测试:
停止server2的agent服务
被认领
再次启动agent
[root@server2 ~]# systemctl start zabbix-agent.service
平台显示解决
实际生产过程中还可开启智能降噪功能,可智能筛掉无用通知
分布式监控
agent 主动方式
目前模板是server端主动连接agent端10050端口(常规)
Template App Nginx by Zabbix agent
也可以agent主动将数据回传给server端10051口,降低了server端的性能开销
Template App Nginx by Zabbix agent active
zabbix proxy
删除server2 agent作为proxy节点
在三台机器添加本地解析
vim /etc/hosts
yum install zabbix-proxy-mysql
#安装proxy软件
在server1数据库中:
mysql> FLUSH PRIVILEGES;
#重新加载授权表
[root@proxy ~]# cd /usr/share/doc/zabbix-proxy-mysql-5.0.42/
scp schema.sql.gz server1:
#从proxy拷贝数据库文件
该文件用于创建数据库的结构(schema),包括表、视图、索引等的定义
zcat schema.sql.gz | mysql -uzabbix -pYQMyqm0626* zabbix_proxy
#使用zcat解压文件后输出到mysql的zabbix_proxy库中
[root@proxy ~]# vim /etc/zabbix/zabbix_proxy.conf
#编辑proxy配置文件
server端创建proxy
为主机配置代理:
systemctl restart zabbix-proxy.service
#重启proxy服务
cat /var/log/zabbix/zabbix_proxy.log
#查看日志
[root@server3 ~]# vim /etc/zabbix/zabbix_agentd.conf
#修改agent配置,指向proxy地址
cat /var/log/zabbix/zabbix_agentd.log
#查看日志无报错
监控可用
zabbix瓶颈可能在于数据库,随着监控数据的采集存储,监控项越来越多,对数据库性能的要求会越来越高
推荐TIDB数据库将mysql数据迁移到TIDB,可实现分布式
完成这部分学习可以尝试使用ansible自动化运维工具搭建起整个lnmp架构或者监控平台