先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注运维)
正文
八.解决 zabbix-server Web页面中文乱码问题
一.监控软件的作用
作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果和网站的健康状态
利用一个优秀的监控软件,我们可以:
- 对系统不间断实时监控
- 实时反馈系统当前状态
- 保证服务可靠性安全性
- 保证业务持续稳定运行
二.Zabbix基本介绍
1.Zabbix是什么?
官方网址:Zabbix :: The Enterprise-Class Open Source Network Monitoring Solution
- zabbix是一个基于Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
- zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
- zabbix由两部分构成,zabbix server(端口:10051)与可选组件zabbix agent(端口:10050)。通过C/S模式采集数据,通过B/S模式在Web端展示和配置。
- zabbix server 可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux等平台上。
- zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。
Server
Zabbix Server需运行在LAMP(Linux+Apache+Mysql+PHP)环境下,对硬件要求低
Agent
目前已有的agent基本支持市面常见的OS,包含Linux、HPUX、Solaris、Sun、windows等
SNMP
支持各类常见的网络设备
2.Zabbix监控原理
- zabbix agent安装在被监控的主机上,zabbix agent负责定期收集客户端本地各项数据,并发送至 zabbix server端
- zabbix server收到数据后,将数据存储到数据库中
- 用户基于 Zabbix WEB 可以看到数据在前端展现图像
- 当zabbix监控某个具体的项目, 该项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,包括发送信息(邮件、微信、短信)、发送命令(shell 命令、reboot、restart、install 等)
3.Zabbix的优点
- 开源,无软件成本投入
- Server对设备性能要求低
- 支持设备多,自带多种监控模板
- 支持分布式集中管理,有自动发现功能,可以实现自动化监控
- 开放式接口,扩展性强,插件编写容易
- 当监控的 item 比较多服务器队列此较大时可以采用主动状态,被监控客户端主动从server端去下载需要监控的item然后取数据上传到server端。这种方式对服务器的负载比较小。
- Api的支持,方便与其他系统结合
4.Zabbix的缺点
- 需在被监控主机上安装agent,所有数据都存在数据库里,产生的数据据很大,瓶颈主要在数据库。
- 项目批量修改不方便。
- 社区虽然成熟,但是中文资料相对较少,服务支持有限。
- 入门容易,能实现基础的监控,但是深层次需求需要非常熟悉Zabbix并进行大量的二次定制开发难度较大。
- 系统级别报警设置相对比较多,如果不筛选的话报警邮件会很多;且自定义的项目报警需要自己设置,过程比较繁琐。
- 缺少数据汇 总功能,如无法查看-组服务器平均值, 需进行二次开发;
5.Zabbix监控系统的监控对象
类型 | 典型代表服务 | 安装的服务 |
---|---|---|
数据库 | MySQL,MariaDB,Oracle,SQL Server | agent |
应用软件 | Nginx,Apache, PHP,Tomcat | agent |
集群 | LVS,Keepalived,HAproxy,RHCS,F5 | agent |
虚拟化 | VMware,KVM,XEN ,docker ,k8s | agent |
操作系统 | Linux,Unix,Windows性能参数 | agent |
硬件 | 服务器,存储,网络设备 | IPMI |
网络 | 网络环境(内网环境,外网环境) | SNMP |
三.Zabbix的监控架构
在实际监控架构中,zabbix根据网络环境、监控规模等分了三种架构:server-client 、master-node-client、server-proxy-client
1.server-client架构
- zabbix的最简单的架构
- 监控机和被监控机之间不经过任何代理 ,直接由zabbix server和zabbix agentd之间进行数据交互
- 适用于网络比较简单,设备比较少的监控环境
2.server-proxy-client架构
- 其中proxy是server、client之间沟通的一个桥梁,proxy本身没有前端,而且其本身并不存放数据,只是将agentd发来的数据暂时存放,而后再提交给server
- 该架构经常是和master-node-client架构做比较的架构 ,一般适用于跨机房、跨网络的中型网络架构的监控
3.master-node-client架构
- 该架构是zabbix最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型环境 。
- 每个node同时也是一个server端,node下面可以接proxy,也可以直接接client 。
- node有自已的配置文件和数据库,其要做的是将配置信息和监控数据向master同步,master的故障或损坏对node其下架构的完整性
四.Zabbix的程序组件
- Zabbix agent:客户端守护进程,负责部署在被监控主机上,把被监控主机的数据传送给zabbix server,例如:收集 CPU 负载、内存、硬盘使用情况等;
- Zabbix server:服务端守护进程,负责接收agent发送的信息,组织配置信息,统计配置信息和操作数据等
- Zabbix database:存储系统,用于存储zabbix的所有配置信息,监控数据的数据库,例如mysql, pgsq|
- Zabbix web:GUI图形化界面,zabbix的web界面,管理可以通过zabbix的web界面管理zabbix配置以及查看zabbix的监控信息,可以独一部署在一台服务器上
- Zabbix proxy:zabbix分布式代理守护进程,分布式环境中使用,zabbix proxy代表server端管理该区域中的信息收集,最终统一发往zabbix server
- Zabbix get:zabbix 数据接收工具,单独使用的命令,通常在 server 或者 proxy 端执行获取远程客户端信息的命令
- Zabbix sender:zabbix 数据发送工具,用户发送数据给 server 或 proxy 端,通常用户耗时比较长的检查
- Zabbix_ java_ gateway:java网关
五.Zabbix的监控模式
1. 主动模式
- 主动检测: 由agent端主动收集信息发送给server端 工具是zabbix_sender
- 相对于agent而言; agent(active),agent向server请求与自己相关监控项配置, 主动地将server配置的监控项相关的数据发送给server;
- 主动监控能极大节约监控server的资源。
2. 被动模式
- 被动检测:由server端主动拉取信息 工具是zabbix_get
- 相对于agent而言 ; agent, server向agent请求获取配置的各监控项相关的数据,agent接收请求、获取数据并响应给server;
六.Zabbix监控有哪些?
- 硬件监控:通过 SNMP 来进行路由器交换机的监控
- 系统监控:如 CPU 的负载,上下文切换、内存使用率、磁盘读写、磁盘使用率、磁盘 inode 节点
- 服务监控:比如公司用 LNMP nginx 自带 Status 模块、 PHP 也有相关的 Status 、 MySQL 的话可以通过 ODBC协议 来进行监控
- 网络监控:如果是云主机又不是跨机房,那么可以选择不监控网络
- 安全监控:如果是云主机可以考虑使用自带的安全防护。当然也可以Zabbix监控 iptables 如果是硬件,那么推荐以Zabbix监控硬件防火墙
- Web 监控:web 监控的话题其实还是很多。比如可以使用自带的 web 监控来监控页面相关的延迟、 js 响应时间、下载时间、等等
- 日志监控:如果是 web 的话可以使用监控 Nginx 的 500x 日志。PHP 的 ERROR 日志
- 流量分析:平时我们分析日志都是拿 awk sed xxx 一堆工具来实现。这样对我们统计 ip 、 pv 、 uv 不是很方便。那么可以使用百度统计、 google 统计、商业,让开发嵌入代码即可 (不想关建议去掉)
- 可视化:通过 screen 以及引入一 些第三方的库来美化界面,同时我们也需要知道、订单量突然增加、 突然减少。或者说突然来了一大波流量,这流量从哪儿来,是不是推广了,还是被攻击了。可以结合监控平台来梳理各个系统之间的业务关系
- 自动化监控:如上我们做了那么多的工作,当然不能是一台一台的来加 key 实现。可以通过Zabbix 的主动模式以及被动模式来实现。当然最好还是通过 API 来实现
七.部署Zabbix服务端(端口:10051)
1. 环境准备
节点 | IP地址 | 安装服务 |
---|---|---|
zabbix-server(内存至少2G,推荐4G) | 192.168.79.210 | zabbix-server-mysql 、zabbix-agent |
zabbix-agent | 192.168.79.220 | zabbix-agent2 |
#关闭防火墙和selinux安全模块
#开机不再启动防火墙
systemctl disable --now firewalld
setenforce 0
2.获取Zabbix下载资源
#获取下载资源
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
cd /etc/yum.repos.d/
#更换 zabbix.repo 为阿里源
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' zabbix.repo
#清缓存并重新建立元数据
yum clean all && yum makecache
3.安装SCL(Software Collections),修改 Zabbix-front 前端源
便于后续安装高版本的 php,默认 yum 安装的 php 版本为 5.4,版本过低,zabbix 5.0 版本对 php 版本最低要 7.2.0 版本。SCL 可以使得在同一台机器上使用多个版本的软件,而又不会影响整个系统的依赖环境。软件包会安装在 /opt/rh 目录下。
#安装SCL所需
yum install -y centos-release-scl.noarch
#修改zabbix-frontend前端源,开启安装源
vim zabbix.repo
---------------
第11行 enabled=1
------------------
#安装SCL
yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
4.安装Zabbix所需的数据库
yum install -y mariadb-server.x86_64 mariadb
systemctl enable --now mariadb.service
yum install -y zabbix-server-mysql zabbix-agent
5.初始化数据库
#初始化数据库,并设置密码abc123
mysql_secure_installation
6.添加数据库用户,以及Zabbix所需的数据库信息
#登入数据库
mysql -uroot -pabc123
#修改字符集utf8
create database zabbix character set utf8 collate utf8_bin;
#创建权限用户,是的zabbix可以访问数据库
grant all on zabbix.*to 'zabbix'@'%' identified by 'zabbix';
#刷新权限
flush privileges;
7. 导入数据库信息
#查询sql文件位置
rpm -ql zabbix-server-mysql
zcat /usr/share/doc/zabbix-server-mysql-5.0.33/create.sql.gz | mysql -uroot -pabc123 zabbix
7.修改Zabbix server配置文件
#修改数据库密码
vim /etc/zabbix/zabbix_server.conf
------------------------------------------------
DBPassword=zabbix #124行,指定 zabbix 数据库的密码
#修改时区
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
--------------------------------------------------
php_value[date.timezone] = Asia/Shanghai #25行,取消注释,修改时区
8.启动Zabbix相关服务
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
9.浏览器访问验证
浏览器访问:http://192.168.79.210/zabbix,点击下一步
设置数据库的密码 zabbix
自定义name
登录进入 ,用户名:Admin,密码:zabbix
设置文件界面:点击左边菜单栏的【User settings】,【Language】选择 Chinese(zh_CN),再点击 Update 更新
八.解决 zabbix-server Web页面中文乱码问题
yum install -y wqy-microhei-fonts
\cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
九.部署zabbix客户端(端口号10050)
zabbix 5.0 版本采用 golang 语言开发的新版本客户端 agent2 。
zabbix 服务端 zabbix_server 默认使用 10051 端口,客户端 zabbix_agent2 默认使用 10050 端口。
1. 环境准备
节点 | IP地址 | 安装服务 |
---|---|---|
zabbix-server(内存至少2G,推荐4G) | 192.168.79.210 | zabbix-server-mysql 、zabbix-agent |
zabbix-agent | 192.168.79.220 | zabbix-agent2 |
#关闭防火墙和selinux安全模块
systemctl disable --now firewalld
setenforce 0
2.服务端和客户端,配置时间同步
yum install -y ntpdate.x86_64
ntpdate -u ntp.aliyun.com
3.客户端配置时区,要与服务端保持一致
mv /etc/localtime{,.bak}
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date
4. 设置Zabbix的下载源,安装Zabbix-agent2
#设置zabbix的下载源
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
#更改
cd /etc/yum.repos.d/
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
5.安装Zabbix-agent2,并修改配置文件
#安装zabbix-agent2
yum install -y zabbix-agent2
#修改配置文件
vim /etc/zabbix/zabbix_agent2.conf
-------------------------------------------
Server=192.168.79.210 #80行,指定 zabbix 服务端的 IP 地址
ServerActive=192.168.79.210 #125行,指定 zabbix 服务端的 IP 地址
Hostname=agent1 #136行,指定当前 zabbix 客户端的主机名
---------------------------------------------
6.启动Zabbix-agent2
systemctl start zabbix-agent2.service
systemctl enable zabbix-agent2.service
ss -natp | grep zabbix
7.在服务端验证Zabbix-agent2 的连通性
yum install -y zabbix-get.x86_64
zabbix_get -s '192.168.79.220' -p 10050 -k 'agent.ping'
zabbix_get -s '192.168.79.220' -p 10050 -k 'system.hostname'
8.将客户端加入服务端的监控主机
在Web界面添加agent主机
8.1 点击左边菜单栏【配置】中的【主机】,点击【创建主机】
8.2 再点击上方菜单栏【模板】,选择 Template OS Linux by Zabbix agent,点击 【添加】
十.在Web页面创建自定义监控项模板
1.客户端操作
#切换目录
cd /etc/zabbix/zabbix_agent2.d/
#修改
vim UserParameter_login.conf
----------------------------------
UserParameter=login.user,who|wc -l
-----------------------------------------
#重启服务
systemctl restart zabbix-agent2
2.创建模板
点击左边菜单栏【配置】中的【模板】,点击【创建模板】
【模板名称】设置成 Template Login User
【可见的名称】设置成 Template Login User
【群组】选择 Template
【描述】可自定义
点击 【添加】,此时就可在【名称】中搜索到 Template Login User 了
3.创建应用集(用于管理监控项的)
点击上方菜单栏【应用集】,点击【创建应用集】、【名称】设置成 Login User、点击 【添加】
4.创建监控项
点击上方菜单栏【监控项】,点击【创建监控项】
【名称】设置成 Number of login users
【键值】设置成 login.user #键值必须要与自定义的监控项配置文件中设置的保持一致
【更新间隔】设置成 10s
【历史数据保留时长】Storage period 30d #保留时间可自定义设置
点击 【添加】
5.创建触发器(当监控项获取到监控的值后和触发器预设的值进行对比,判断是否报警)
点击上方菜单栏【触发器】,点击【创建触发器】
【名称】设置成 Number of login users is greater than 3
【严重性】设置成 一般严重
【表达式】点击添加
【监控项】点击选择 Number of login users
【功能】选择 last(),【结果】选择 > 3,点击 【插入】
点击 【添加】
6.创建图形
点击上方菜单栏【图形】,点击【创建图形】
【名称】设置成 Number of login users
【宽】、【高】可直接采用默认值
【监控项】点击添加勾选相关监控项 Number of login users
【功能】选择 最大,其它可保持默认值
点击 【添加】
7.将主机与模板关联起来(一个主机可以关联多个模板)
点击左边菜单栏【配置】中的【主机】,点击你要关联的主机
点击上方菜单栏【模板】
选择 Template Login User,点击【更新】
此时就点击【监测】中的【主机】,点击你关联主机的【图形】,即可查看到相关的监控项指标
测试:多开几个终端
关掉多余的终端
十一.设置邮件报警
点击左边菜单栏【管理】中的【报警媒介类型】,点击【创建媒体类型】
【名称】设置成 qq_Email
【SMTP服务器】设置成 smtp.qq.com
【SMTP服务器端口】设置成 25
【SMTP HELO】设置成 qq.com
【SMTP电邮】设置成自己的邮箱地址,例 00000000@qq.com
【认证】选择 用户名和密码
【用户名称】设置成自己的邮箱地址,例 0000000@qq.com
【密码】可登录QQ邮箱页面,点击【设置】–>【账户】中的【生成授权码】,通过短信获取授权码
【描述】可自定义点击上方菜单栏【Message templates】,点击【添加】,【Message type】选择问题,点击【更新】
主题:
Problem: {EVENT.NAME}事件 故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
内容:
告警主机: {HOSTNAME1}
告警时间: {EVENT.DATE} {EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}
点击 【添加】,并测试功能
点击左边菜单栏【用户设置】–>【报警媒介】,点击【添加】
【类型】选择 qq_Email
【收件人】设置成 0000000@163.com
【当启用时】设置成 1-7,00:00-24:00
点击 【添加】
再点击 【更新】
点击左边菜单栏【配置】中的【动作】,选择相对应的动作名称,点击【启用】
测试邮件报警
增加测试客户端的用户登录数超过触发器预设的值,查看【监测】–>【仪表盘】,确认报警
十二.Zabbix自动发现与自动注册
1.zabbix自动发现(对于agent2是被动模式)
zabbix server 主动的去发现所有的客户端,然后将客户端的信息登记在服务端上。
缺点是如果定义的网段中的主机数量多,zabbix server 登记耗时较久,且压力会较大。
1.1 确保客户端上的 zabbix-agent2 服务状态正常
systemctl is-active zabbix-agent2.service
1.2 在 Web 页面删除原有的客户端主机
最后的话
最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!
资料预览
给大家整理的视频资料:
给大家整理的电子书资料:
如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
38183608496286f3ad6a4d7019ab.png)
十二.Zabbix自动发现与自动注册
1.zabbix自动发现(对于agent2是被动模式)
zabbix server 主动的去发现所有的客户端,然后将客户端的信息登记在服务端上。
缺点是如果定义的网段中的主机数量多,zabbix server 登记耗时较久,且压力会较大。
1.1 确保客户端上的 zabbix-agent2 服务状态正常
systemctl is-active zabbix-agent2.service
1.2 在 Web 页面删除原有的客户端主机
最后的话
最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!
资料预览
给大家整理的视频资料:
[外链图片转存中…(img-Dp3MQfi0-1713439249995)]
给大家整理的电子书资料:
[外链图片转存中…(img-a4JISn8G-1713439249995)]
如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
[外链图片转存中…(img-yrtJYqKR-1713439249995)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!