监控体系理论
学习本篇文章,了解运维监控系统的前世今生
zabbix官网仓库地址
zabbix官网
https://www.zabbix.com/cn/zabbix官网仓库地址
http://repo.zabbix.com/zabbix/
http://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-1%2Btrusty_all.deb解压 dpkg -i zabbix-release_4.0-1%2Btrusty_all.debhttp://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-1%2Btrusty.tar.gz解压 tar -zxvf zabbix-release_4.0-1%2Btrusty.tar.gzhttps://wiki.ubuntu.com.cn/Zabbix
开始学习监控体系
1.监控系统的重要性
linux 系统运维
一.Linux系统稳定运行维护
1. 及时跟踪处理 linux 系统异常及允许故障,并形成故障处理报告及时反馈用户
2. 负责服务器数据备份,日志分析及性能调优等工作,保证系统的稳定。
3. 日常巡检,根据要求填写巡检记录单,及时处理系统告警及故障
二。 Linux 系统安全组维护,定期检查系统补丁版本,并依据安全漏扫报告,对系统进行漏洞修复,补丁升级。
三. 监控系统:
1. 对监控系统有所了解,熟悉监控项的增删改查。
2. 及时接收告警信息并及时处理
四. 具有一定的文档编辑能力,熟悉 office 使用# 监控内容
你有一台服务器,监控的项目为0,加采集内存的,采集CPU的,采集 nginx 运行状态的,采集服务器TCP连接数的,采集当前系统登录用户数的,对公司官网做一个监控,模拟人类访问网站,看看http的响应,是200 OK,还是 404 还是500,对官网进行监控,还可以利用到模拟人类去登录官网,以及登录后是200 OK,监控系统很重要# 告警处理
监控系统发现官网登录不了啦,怎么及时接收告警信息,
1.发邮件
2.发短信
3.发微信
4.发顶到
服务器维护,软件系统维护,软件监控,配置报警内容,监控哪些东西,如何去报警,遇见问题,你得及时去修复。1.有 Linux 操作系统使用经验,熟悉常用软件的安装,配置和管理
2.具有良好的沟通能力以及高度的责任心,应急响应及时处理问题的能力
3.熟悉监控与原理以及常用监控系统(cacti,nagios,zabbix)优先;
4.熟悉 shell,Perl 脚本语言优先
5.有运维监控经验者优先总结
1.无论是小公司,也会招聘专门的监控运维岗,或是对运维软件有一定的技术要求2.或者是大公司,假设北京总部有70个运维,里面可能有20个 SRE 高级运维,3个 devops 运维开发,3个监控运维(维护 zabbix[lnmp],prometheus[容器]),剩下的就是桌面运维(维护硬件资产,发放笔记本,显示器,台式机等工作),或者 IT 机房硬件运维3.监控,是运维工作里的一大重要环节。ubuntu 检查系统支持驱动的版本号命令 sudo ubuntu-drivers list
root@lnmp:~# apt install open-vm-tools-desktop -y
root@lnmp:~# sudo ubuntu-drivers list
服务器维护,软件系统维护,软件监控,配置报警内容,监控哪些东西,如何去报警,遇见问题,你得及时去修复。
-
生活里的监控
我们的生活里,离不开监控,监控能够最大程度上,发挥如下作用
1. 实时监测,即使你不在电脑前,也能实时掌握监控区域情况,提高工作效率
2. 事后录像查询,如果不法事件未能即使发现制作,可以调取录像,让不法分子无处遁形
3. 给与不法分子震慑作用,当不法分子意识到自己暴露在监控内,就不敢使坏
4.远程查看,远程操控,只需要联网,即可在任何设备上,试试查看监控。
我们的生活里,离不开监控,监控能够最大程度上,发挥如下作用
1. 实时监测,即使你不在电脑前,也能实时掌握监控区域情况,提高工作效率
2. 事后录像查询,如果不法事件未能即使发现制作,可以调取录像,让不法分子无处遁形
3. 给与不法分子震慑作用,当不法分子意识到自己暴露在监控内,就不敢使坏
4.远程查看,远程操控,只需要联网,即可在任何设备上,试试查看监控。
1. 保障企业数据的安全可靠。 lvm 动态逻辑卷管理技术
服务器根分区的容量 剩余 30%。 设置一个阈值,容量小于30%,就开始 lvm 扩容操作
内存容量小于30%,就进行扩容 lvm 动态逻辑卷 管理技术
出了问题后精确的告诉你,那台哪个IP,什么时间出了什么问题,通过哪种报警方式通过你的。比如说 邮件已发送,钉钉已发送,微信已发送2. 为客户提供 7*24 小时服务。3. 不断提升用户的体验在关键时刻,提前提醒我们服务器要处问题了。当出问题之后,可以便于找到问题的根源。
在有监控系统之前,运维人员需要登录服务器手动敲打命令来获取系统数据,例如前面超哥交给大家的
iotop,glances,htop,free,ps等查看服务器状态的命令。
运维人员通过系统管理的命令来获取服务器数据,为了分析问题,可能会把数据复制到本地机器,通过 excel 等工具进行制表,画图分析服务器性能动态。
这种手动管理服务器的麻烦在于,服务器出现问题的时候,运维无法即使的发现,可能服务器内存满了,网站应用挂了,用户过来投诉才能发现,那此时老板可能会训斥运维同学一小时以上,多么可怕。
数据展示不美观,采集方式太困难
服务器数量太多,采集也太困难
ansible + shell(采集服务器数据) 学到的技术要灵活运用
有了监控软件之后
超哥作为一个运维,会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果,和网站的健康状态。
利用一个优秀的监控软件,我们可以:
1. 通过一个友好的界面进行浏览整个网站所有的服务器状态2. 可以在 web 前端方便的查看监控数据3.可以回溯寻找事故发生时系统的问题和报警情况有了一套完善的监控体系,你就可以休闲的喝着咖啡干活,而不用提心吊胆。
监控系统是整个运维自动化体系中非常重要的环节,从服务器上架到机房,到最后下架回收,整个过程都应该有监控的存在。
1.服务器上架的硬件监控,检测线路,服务器接口状态2. 服务器运行时的监控,系统指标监控,且在出现异常的时候发出报警通知对应的人员3.在服务器回收的时候,要取消硬件,软件的监控并且大型公司还会对监控系统进行开发,确保有 API 能够方便的和其他部门同事进行协同工作。
互联网公司里的运维
一般公司里的运维,大致可以分为基础运维,应用运维,运维开发,监控组四大部分
1.基础运维,负责 IDC 运维,服务器上下架,网络设备等2.应用运维,也就是 system administrator,系统管理员
学习各种应用软件吗,比如 nginx,mysql,php,jumpserver 软件的安装部署以及将他跑起来以后,能够做一些事,安装,配置修改以及出了问题要会去调整配置文件,以及新业务来了,要会修改配置文件,比如 nginx,mysql,redis,php,python 项目部署
公司有了几个新的 URL 要上线, 系统管理员 解决公司的业务问题
a. 几个网站要上线, ->nginx,LNMP 架构部署能力
b. 且要做 http 配置,->nginx 和 部署知识
c. 并且要做好监控工作,->shell脚本
d. 做好脚本数据备份工作 ->rsync(最终实现备份的命令) shell 脚本做完整的备份(可以调用rsync工具)3. 运维开发,负责运维工具的开发,系统开发等,例如开发监控系统,代码发布系统
企业招,会linux+python写一个企业私有的如 阿里云的平台
运维工具的开发,例如公司不用 ansible,让你自己开发一个类似于 ansible 的工具,公司要开发一个容器技术,让你去上,开发监控系统,代码发布系统等4.监控组,也就是24小时值班的人员,需要时刻关注服务器,网站的状况,出现问题后,第一时间联系相关运维以及研发人员。
专门维护监控系统,如 zabbix集群,如procetheus集群,
https证书到期了,导致网站访问故障,监控软件发现网站的HTTP响应状态码不是 200
运维工作会遇见哪些难题?
国内的互联网大厂,拥有几百,几千台服务器是很常见的,因此运维工程师的招聘需求量很大,且工作量也很大,每台在几千台服务器上敲命令,查看系统状态,发布代码,任务是非常繁琐的。
国内常见的运维新闻就是:
又是一年一度的双十一,今晚又是一个不眠之夜,对于程序员,运维,整个IT团队都要熬夜了(但是他们的收益也是巨大的)
新浪某男星又爆出丑闻,微博又瘫痪啦!
从这样的新闻就可以看出运维人员的难处,超哥也曾夜不眠的维护服务器,心塞啊。
超哥也还遇见过一些难事,这些都是运维新人,会遇见的难题,需要通过不断学习运维技术,解决如下问题。
1.服务器崩溃,网站后台500挂了,由于没有监控,大伙都还不知道,直到其他部门的同事打来电话一顿凶。2.代码发布太过于繁琐,每一台机器都要自己手动执行部署,一台一台的检查
jenkins 版本构建系统
git 代码版本控制系统
github,gitlab 代码仓库系统
ansible + shell
实现鼠标一按,10台服务器全部更新3.机器之间环境不统一,代码一样,但是这台能行,另一台就不行
a. 应用 容器技术
b. 脚本技术 ansible+shell4.分析问题困难。比如想要知道服务器历史状态,就比较麻烦5.资产统计困难,作为运维新人,都不清晰公司的服务器架构,资产状况,那那能行
公司有多少台物理机,有多少台云服务器
现有的组织架构,是怎么部署了
公司开发了 CMDB 资产管理系统 你可以登录这个系统。一目了然知道公司有多少资产。
公司有现成的私有云平台,你能在云平台上知道你有多少台服务器。指定资产信息,指定软件架构
如果没有上面的这些信息,看 ansible 的配置主机清单,有哪些机器,
部署的剧本,role(角色),能够间接的知道公司资产状况。
用到了哪些技术如是否用到 nginx,mysql,redis,kafka,hadoop等待
看剧本里面有多少个模块,有多少个 tasks提示
1. 部署监控系统,实时监测,实时报警
2. 自动化构建系统搭建+shell+ansible+jenkins+git+gitlab 实现代码自动化发布, 完成统一部署
3. 查看 history,部署堡垒机做好历史监控,资产管理,组织架构管理运维几大专精方向
1. 系统运维专家 SRE 运维
2. 监控运维专家 ZABBIX 方向
3. 数据库专家 mysql redis
4. CICD专家 代码发布先理解你会遇见什么难题
再理解需要学什么技术
解决难题
所谓运维自动化 下图是运维自动化体系
1. 硬件标准化装机
2.基于 SALTSTACK+ansible 的系统标准化部署
3. 自动化监控系统,ZABBIX
4. 持续交付,自动化构建系统
5. 日志收集系统 ELK
6. 物理机 底层操作系统 (linux,windows,其他)
7.私有云 openstack 私有云平台 参考 阿里云
8.容器集群 k8s kubernetes公司会有自己的物理机,物理机肯定会安装底层的操作系统,有了物理机,下一步资源虚拟化,比如我有一万台物理机,这一万台机器,我要资源合理利用,我就把这些资源抽象为资源池,这里会用到一个 openstack 技术,有了资源池之后,由于公司规模太大,他还会开发一个私有云平台,就像阿里云一样,私有云平台能干嘛呢,鼠标点点点,完成所有运维工作。
服务器的登录,修改配置,mysql,redis,不用 yum 安装,下一步学阿里云,如何买 RDS 数据库 拿到一个 IP,一个3306,你只需要 mysql -uroot -p -h123.206.16.61 -P 3306 就可以用了,性能完美,所以云平台的工作超级简单,但是,你最少要把 mysql 学好了,才能用。省去的是部署维护的操作。这就是云平台。
我有10台机器让你去统一安装,你是一台一台机器用光盘去安装,还是通过 kubernetes 技术,把这几天机器,只有插上网线,自动 linux 系统就安装好了,
再往下就是配置管理系统
实现系统的标准化部署,基于ansible 初始化剧本,主机清单里面对10.0.0.1-254 200台机器基于同一台机器,你写好的 init-server.yaml 初始化,里面是yum原配置,ntp配置,防火墙配置,is linux 关闭,ansible playbook 去这些他, hosts 主机清单 就自动对这200多台机器自动执行了。下一个就是监控系统,ZABBIX
服务器跑起来了,我要确保他正确运行,服务器上线了,产品跑起来了,那么代码一天要更新10次,更新100次,
部署下一个系统,持续交付,自动化构建系统
鼠标一点,wordpress1.7升级到2.4版本,
配置更新钩子,只要发现代码有变化,立即触发,代码更新脚本,完成服务器的全部更新 就是jenkins 系统, 你只要 git push 往你的代码仓库提交更新代码,整个系统就可以实现自动化更新最后一个是你的海量服务器运行,会产生海量的日志,你还必须学习专门日志收集系统 ELK 这就是超大公司运维要学的东西
如上的这些问题,几乎所有的运维同学都会遇见过,那么成长之后的运维,如何解决这些问题?
1. 硬件标准化,包括服务器所有的硬件指标
2. 软件标准化,软件版本,系统环境一致性等
3. 运维自动化,监控体系,代码发布体系,CMDB
监控系统,部署如 zabbix 等系统实现
1. 系统状态监控
2. 应用状态监控
3.出错时即使告警
发布系统,部署 CI/CD 运维体系
-
代码发布
-
代码检查
-
代码回滚,发布
服务器标准化,部署如 cobbler+pxe 实现自动化装机,ansible 实现工程自动化配置,做到硬件,软件的标准化。
CMDB系统,也读作配置管理数据库,存储了所有的运维数据,包括服务器硬件信息,网络设备信息,属于运维的心脏。
监控系统
监控系统是所有运维人的天眼,能够帮助你盯着服务器且在第一时间发现网站的问题,发出告警,通知运维同学解决问题。
监控生命周期(软件从安装到卸载)
运维如何从零到一,部署一套监控系统
1. 服务器上架机柜
2. 进行基础设施监控
a. 服务器温度,风扇转速 (ipmitool命令对服务器进行远程管理,注意只能用在物理机,vmware不行)
b. 存储的容量,性能 (df,fdisk,dd,iotop)
c. CPU性能好坏 (lscpu,uptime,top,htop,glances)
top sar cat /proc/cpuinfo htop
uptime 可以看1-5分钟 cpu 的负载率
glances 用python编写的工具
yum install glances -y
d. 内存容量 (free)
e. 网络情况 (iftop,nethogs)
3. 应用监控
a. 数据库 mysql,redis
b. nginx
c. php-fpm
d. python jumpserver core python
e.golang 部署koko服务会导致网页版堡垒机不好用
4. 注意:若是服务器在维护中,还得暂停监控指标,否则监控会不停的报警。
5. 监控系统在运维自动系统中,实现如下功能:
a. 监控数据收集,可视化展示(图标展示,柱状图,曲线图,折线图) zabbix 图形创建
b. 异常数据报警 zabbix 触发器
c. 结合如 CMDB 等系统协同工作 进行二次开发
理想化的监控软件支持哪些功能
一个完善且理想的监控系统,得有如下特点
a. 监控系统能够自定义监控的内容,自己通过脚本采集所需的数据
b. 数据需要存入到数据库日后对该数据进行分析计算
c. 监控系统可以简易,快速的部署到服务器
d. 数据可视化直观清晰
zabbix 都有
Zabbix是IT领域中,当了23年的老大
nginx status 页面功能 显示 nginx 处理了多少 http 请求->如何让这些数据在zabbix中用折线图展示->
自定义监控
1.nginx 在虚拟主机中打开 status 功能 requests (接收到多少请求) 4000
2. 通过 shell 脚本 awk 提取数据中的字段 4000 拿到
3. 在 zabbix 定义一个触发器,达到什么阈值就报警
公司一般会处理 20000万个requests请求,可以设置阈值大于或者等于20000个请求就报警数据采集
我们的数据是写入 mysql 的,库,表的数据存储,基于程序去读取 mysql,进行二次分析 zabbix 数据快速部署
我们现在有500台服务器,你如何去发布,添加 脚本实现批量化添加
有没有功能自动发现,不用你管,你就500台机器,你可以通过 ansible 一键部署好 IP,2分钟后,500台机器全部被监控上了 数据清晰展示
zabbix 提供了大量图形模板进行可视化数据展示
可以将数据导出给其他可视化软件,如 grafana 图形展示
异常告警通知:
a. 可以定义复杂度告警逻辑,做到监控项之间的关联告警,例如程序之间的依赖检测,而不是只单独检测某一个指标
b. 告警可以确认响应,让运维组内的人知道已经有人在处理告警问题了
c. 报警方式可以自定义,如短信,邮件,以及微信,钉钉等 18个运维都关注同一个公众号 zabbix0224小分队,报警信息自动发到公众号里面,你们手机都支持这个功能。
d. 告警内容可以自定义,能够写入一些简单的分析,便于运维人员直观了解数据,否则还得去服务器查看
e. 报警后,可以预处理一些任务,如自我修复,重启,采集数据等
协同工作:
a. 监控系统有强大的API,提供给研发同学调用,其他系统调用
b. 监控数据是开放的,数据结构主流,便于解析
c. 监控可视化可以简易的插件使用,而非复制的js文件
2.监控系统总概述
为什么要有监控
1. 对系统不间断7*24的实时监控
2. 实时反馈,可视化展示服务器运行状态
3. 保证了业务的可靠性,稳定性,安全性
4. 保证了业务高度可用性,提前预警
主流的监控软件
1. zabbix 监控王者 官网地址:
https://www.zabbix.com/documentation/4.0/zh/manual2.夜莺系统 官网地址: golang语言开发的
https://www.didiyun.com/production/ops.html3. 普罗米修斯 官网地址
https://prometheus.io/
# 新时代监控王者,主要结合容器,k8s使用
新入职后,如何着手监控工作
以下思路作为参考,属于全链路的监控搭建,具体从哪个环节开始,以你工作需求为切入点,
1. 硬件监控,路由器,交换机,防火墙的流量监控
2. 系统资源监控,CPU,内存,磁盘,网络流量,进程存活,tcp链接数
3. 服务监控,nginx,php-fpm,tomcat,mysql,redis,django 应用服务器
4. web 监控,nginx-status,http 请求响应耗时 细粒度,进阶版本性能监控
请求响应时间太长,你得对服务器优化处理
5. 安全监控,系统防火墙 firewalld,web 应用防火墙 (nginx+lua),牛盾 (http://antid.newdun.com/#/),安全狗(http)
6. 日志监控,所有服务的日志收集,存储,分析,展示(部署ELK架构),或者购买日志易系统
7. 网络监控:$mokeping 以上都是服务器日常运行要采集的数据
8. 业务监控 分析公司搞秒杀,抢购等活动时产生的瞬时流量,判断产品的价值
比如说你公司晚上8:00要做一个秒杀活动,你是不是要做一个负载均衡的考虑,瞬时流量的考虑,要应对这个突然来的大流量做一个预警工作,这是一个级别的安全意识。
运维知识体系大全
[腾讯文档] 运维知识体系-v3.1 作者:赵舜东(赵班长)
https://docs.qq.com/sheel/DUW5zYnhwclhyVVNF
3.手工如何做好监控
如果你还没部署监控软件,如何做好监控工作。
1. 系统资源监控
top - 00:11:47 up 2 min, 2 users, load average: 0.63, 0.39, 0.16
Tasks: 249 total, 1 running, 248 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 3876.4 total, 2978.3 free, 476.6 used, 421.5 buff/cache
MiB Swap: 3876.0 total, 3876.0 free, 0.0 used. 3165.5 avail Memus 用户态,用户操作产生的 cpu 使用sy 系统态,内核处理任务产生的 cpu 使用id 空闲率内存,free磁盘,df,iotop2.网络监控命令
ifconfig,route,glances,iftop
NetHogs 是一个开票的命令行工具,类似于 Linux 的 top 命令,用来按进程或程序实时统计网络带宽使用等。
netstat
$$
-
网络基本查看常识
查看TCP情况
查看以建立的tcp连接
netstat -an | grep -i establishedroot@nginx:~# netstat -an | grep -i established
Active Internet connections (servers and established)
tcp 0 0 172.18.22.133:22 172.18.22.1:51127 ESTABLISHED
tcp 0 64 172.18.22.133:22 172.18.22.1:51126 ESTABLISHED
Active UNIX domain sockets (servers and established)
root@nginx:~#查看路由表 netstat -rn
root@nginx:~# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 172.18.22.2 0.0.0.0 UG 0 0 0 ens33
172.18.22.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
172.18.22.2 0.0.0.0 255.255.255.255 UH 0 0 0 ens33
root@nginx:~#查看端口常用命令 netstat -tunlp
root@nginx:~# netstat -tunlp[点击并拖拽以移动]
4.什么是OOM(内存溢出)
记得在教大家学堡垒机部署时,由于部署需要至少4G内存,有诸多同学遇见了问题,启动时好好地,一会进程就没了?
超哥的方案是,"你先去看看内存吧,还剩余下多少"
基本就是内存不足的故障1.在线上的服务器,由于长时间程序运行,消耗内存,以及用户客户端的请求不断增多,或者瞬间而来的并发流量,后台进程或者程序bug,导致内存用光,导致OOM.服务器崩溃,都是严重的 bug2. 例如某 java 程序,是 OOM 的常客,一个应用响要运行,假设需要2G内存,但是发现发现内存容量不够了,程序直接崩溃结束了内存溢出: (out of Memory---OOM)系统已经不能再分配出你所需要的空间,比如系统现在只有1G的空间,但是你偏偏要2G空间,这就叫内存溢出例子: 一个盘子用尽各种方法只能装4个果子,你装了5个,结果掉倒地上不够吃了,这就是溢出。内存泄漏: (Memory leak)强引用所指向的对象不会被回收,可能导致内存泄漏,虚拟机宁愿抛出OOM也不会去回收他指向的对象意思就是你用资源的时候为他开辟了一段空间,当你用玩时忘记释放资源了,这时候...
这就是为什么用时候,你某一个程序,开启时间太久,导致机器特别卡,把它关了...
5.如何 shell 做好监控工作
shell 开发章节,于超老师讲过了方案,你自己再结合 循环或 crontab 来实现周期性,或者实时的监控即可。从业务角度,工作角度,了解运维的一些事
部署 zabbix监控软件
-
zabbix 安装部署
1. 官网
https://www.zabbix.com/cn/manuals
https://www.zabbix.com/documentation/4.0/zh/manual备注:LTS 是长期技术支持的缩写,长期稳定维护版本 企业会选择用 LTS 版本,因为他足够安全可靠,出了问题 zabbix 官方提供技术支持。生成环境下
不追求功能多,功能新,要求稳定即可,互联网公司用这个4版本一.zabbix 中核心的技术名词
模板
触发器
监控线
主机二. zabbix 架构
2. zabbix-UI
zabbix-UI zabbix美化的图形操作平台,基于php开发了这个web平台页面,你所有的操作都在这,点点点,就可以把监控工作全做好了1. zabbix-serverzabbix server/agent 的模式 10.0.0.71
机器: zabbix-server
zabbix-server是C语言开发的,核心服务端,接收监控数据,处理数据,转发数据3.zabbix-agent
zabbix-server 他与zabbix-agent通信 db-51 机器上(被监控的机器上安装)
zabbix-server 他与zabbix-agent通信 web-7 机器上
zabbix-agent在客户端本地执行脚本,命令等,采集当前机器的数据,然后发给zabbix-serverzabbix-agent 是安装在被监控的机器上,他的最优4. zzabbix-proxy
分布式监控系统准备一台新机器,zabbix 是基于 LAMP 的
linux apache mysql phpService 服务监控
如何自定义监控你的服务器上的应用 比如nginxweb 监控
如何模拟人类访问网站,去判断网站的一些功能是否正常
获取HTTP响应信息
页面返回数据是否包含某关键字。
针对某个 url 进行 发 http 请求,根据 http 响应判断,是否是你预期的结果,如果不是你预期的,比如状态码不是200,就触发报警并且自定义的数据,给你发个微信,
https://www.zabbix.com/documentation/4.0/zh/manual
2. 先安装好 zabbix 服务端再说
zabbix 安装全流程(zabbix4.0服务端部署全流程)
建议你重新安装一个 zabbix-server-71 ip
zabbix4.0服务端部署全流程
安装基础包(centos7)
这是一个初始化脚本,安装了一些vim之类工具
bash init2.sh1.配置 yum 仓库
https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/# 进入到仓库
cd /etc/yum.repo.d/
ls
CentOS-base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-CB.repo CentOS-fasttrack.repo CentOS-Sources.repo epel CentOS-Vault.repo# 对应了 nginx 的 location 设置
https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/# 安装 zabbix.repo 仓库文件而已
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpmrpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpmrpm -ivh
https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/8/x86_64/zabbix-release-4.0-2.el8.noarch.rpmhttp://repo.zabbix.com/zabbix/4.0/rhel/8/x86_64/zabbix-agent-4.0.11-1.el8.x86_64.rpmls
zabbix.repo
[root@mail yum.repos.d]# cat zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/4.0/rhel/8/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/8/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1-------------
参数解释
cat zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
# 去哪台服务器下载 RPM 包 'repo.zabbix.com' 去国外的服务器下载
baseurl=http://repo.zabbix.com/zabbix/4.0/rhel/7/$basearch/
enabled=1 # 表示该仓库开启使用
gpgcheck=1
qpqkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $baseaech
baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1'$basearch' 表示会根据系统架构自动找到某个目录# 修改 repo 文件,改为清华源sed -i 's#repo.zabbix.com#mirrors.tuna.tsinghua.edu.cn/zabbix#g' /etc/yum.repos.d/zabbix.repo[root@mail yum.repos.d]# sed -i 's#repo.zabbix.com#mirrors.tuna.tsinghua.edu.cn/zabbix#g' /etc/yum.repos.d/zabbix.repo-------------------
代码解释
sed -i 's#repo.zabbix.com#mirrors.tuna.tsinghua.edu.cn/zabbix#g' /etc/yum.repos.d/zabbix.repo
将 'repo.zabbix.com' 服务器改为 清华源 'mirrors.tuna.tsinghua.edu.cn/zabbix' 把主机名改了[root@mail yum.repos.d]# cat zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/8/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://mirrors.tuna.tsinghua.edu.cn/zabbix/non-supported/rhel/8/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
[root@mail yum.repos.d]#'$basearch' 表示会根据你的系统架构自动去找某一个目录
表示已经修改成功2. 安装zabbix-server服务器(前端),zabbix连接数据库,zabbix-agent (客户端)以及数据库
yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent mysql-server-------------
命令解释 pqsql 是另一个版本的数据库
yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent mysql-server1. 'zabbix-server-mysql' 安装了一个连接 mysql 的驱动,以mysql作为存储开发的 zabbix-server 服务端程序2. 'zabbix-web-mysql' 是 php 核心程序,也就是 zabbix-ui 页面,也以 mysql 为存储版本,就是php开发的 zabbix 图形化也安装好了,这只是php后端程序, 你想访问他,还得基于LAMP,LNMP架构才能访问3. 'zabbix-agent' 哪些机器要监控就按照 'zabbix-agent' ,采集客户端数据的核心程序 自己监控自己4. 'mariadb-server' 安装 mysql 服务端程序'zabbix-get' 用于服务端去调试,自定义监控项的命令'zabbix-java-gateway' 监控Java系统用到的一个组件'zabbix-proxy' 分布式的一个包'zabbix-proxy-pgsql' 支持 另一个版本的数据库'zabbix-proxy-sqlite''zabbix-web'# 启动 mysql 数据库,且创建用户,待会用于和 zabbix 链接,以及创建 zabbix 库,存储数据[root@mail ~]# systemctl stop mysqld
[root@mail ~]# rpm -e mysql-8.0.26-1.module_el8.4.0+915+de215114.x86_64
error: Failed dependencies:mysql(x86-64) is needed by (installed) mysql-server-8.0.26-1.module_el8.4.0+915+de215114.x86_64
[root@mail ~]# rpm -e mysql-server-8.0.26-1.module_el8.4.0+915+de215114.x86_64
[root@mail ~]# rpm -e mysql-8.0.26-1.module_el8.4.0+915+de215114.x86_64
[root@mail ~]## 查看 mysql 安装路径
[root@mail ~]# whereis mysql
mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
[root@mail ~]#启动 mariadb 数据库,设置开机自启
systemctl start mysqld && systemctl enable mysqld[root@mail ~]# systemctl start mysqld && systemctl enable mysqld
Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service → /usr/lib/systemd/system/mysqld.service.
[root@mail ~]#有几种命令可以确认它启动了
1.进程
ps -ef | grep mysql
if [ $(ps -ef | grep mysql | grep -v grep|wc-l) -eq 0 ];then[root@mail ~]# ps -ef | grep mysql
mysql 41467 1 1 12:38 ? 00:00:01 /usr/libexec/mysqld --basedir=/usr
root 41686 36469 0 12:39 pts/0 00:00:00 grep --color=auto mysql2.端口
netstat -tunlp | grep mysql[root@mail ~]# netstat -tunlp | grep mysql
tcp6 0 0 :::33060 :::* LISTEN 41467/mysqld
tcp6 0 0 :::3306 :::* LISTEN 41467/mysqld
[root@mail ~]#3. 检查数据状态
systemctl status mysqld[root@mail ~]# systemctl status mysqld
● mysqld.service - MySQL 8.0 database serverLoaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)Active: active (running) since Tue 2024-06-11 12:38:48 CST; 4min 31s agoMain PID: 41467 (mysqld)Status: "Server is operational"Tasks: 37 (limit: 49117)Memory: 408.5MCGroup: /system.slice/mysqld.service└─41467 /usr/libexec/mysqld --basedir=/usr3.设置 mysql 数据库,创建 zabbix 库,存储监控数据,且创建账号
'-e' 参数表示创建数据库,非交互行形式
mysqladmin password 123456mysql -uroot -p123456 -e 'create database lol character set utf8 collate utf8_bin;'mysql -uroot -p123456 -e 'show databases;'[root@mail ~]# mysql -uroot -p123456 -e 'create database lol character set utf8 collate utf8_bin;'
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@mail ~]# mysql -uroot -p123456 -e 'show databases;'
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database |
+--------------------+
| chatGPT |
| information_schema |
| lol |
| mysql |
| performance_schema |
| sys |
| zabbix |
+--------------------+
[root@mail ~]#mysql> desc user; # 查看表结构mysql> select * from user;# 查看用户名,验证信息,主机信息
mysql> select user,authentication_string,host from user;
mysql> select user,authentication_string,host from user;
+------------------+------------------------------------------------------------------------+-----------+
| user | authentication_string | host |
+------------------+------------------------------------------------------------------------+-----------+
| root | *9C5F7170F5230995BCAE7937438FE449CA70AE3B | % |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | localhost |
| root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | localhost |
+------------------+------------------------------------------------------------------------+-----------+
5 rows in set (0.00 sec)mysql># 删除用户
delete from mysql.user where user='mysqld_export' and host='localhost';
delete from mysql.user where user='mysqld_exporter' and host='localhost';mysql> delete from mysql.user where user='mysqld_export' and host='localhost';
Query OK, 1 row affected (0.09 sec)mysql> delete from mysql.user where user='mysqld_exporter' and host='localhost';
Query OK, 1 row affected (0.05 sec)mysql># 添加用户 # 创建用户账号 zabbix 密码是 www.yuchaoit.cn
# 给予权限是 zabbix 这个用户,对于 zabbix 这个库下的所有表,都是最大权限。
mysql -uroot -p123456 -e "grant all privileges on zabbix.* to zabbix@localhost identified by '123456';" # 老师grant all privileges on zabbix.* to zabbix@'localhost' identified by 'zabbix';grant all privileges on zabbix.* to zabbix@localhost identified by [PASSWORD] 'password';# 创建用户成功
create user 'zabbix'@'localhost' identified with mysql_native_password by '123456';mysql> create user 'zabbix'@'localhost' identified with mysql_native_password by '123456';
Query OK, 0 rows affected (0.07 sec)mysql> select user,authentication_string,host from mysql.user;
+------------------+------------------------------------------------------------------------+-----------+
| user | authentication_string | host |
+------------------+------------------------------------------------------------------------+-----------+
| root | *9C5F7170F5230995BCAE7937438FE449CA70AE3B | % |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | localhost |
| root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | localhost |
| zabbix | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | localhost |
+------------------+------------------------------------------------------------------------+-----------+
6 rows in set (0.00 sec)给用户 'zabbix'@ 'localhost' 授权
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
Query OK, 0 rows affected (0.07 sec)# 删除数据库 lol
mysql> drop database lol;
Query OK, 0 rows affected (0.11 sec)# 再次查看数据库,
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| chatGPT |
| information_schema |
| mysql |
| performance_schema |
| sys |
| zabbix |
+--------------------+
6 rows in set (0.00 sec)mysql> use zabbix;
Database changed
mysql> show tables;
Empty set (0.00 sec)测试zabbix用户
mysql -uzabbix -p123456 -e "show databases;"[root@mail ~]# mysql -uzabbix -p123456 -e "show databases;"
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database |
+--------------------+
| information_schema |
| zabbix |
+--------------------+
[root@mail ~]#4.导入 zabbix 服务端的数据库内容
# yum install zcat -y (gzip包默认有,不需要单独安装)
# 安装 zcat 命令: yum install gzip -y (gzip包含/usr/bin/zcat)
# rpm -qa zcat 查找 zcat 这个命令属于哪个包
# yum provides zcat 可以安装 zcat 来自与 gzip 这个包
# 查看 zabbix 压缩数据包 'create.sql.gz'
[root@mail ~]# ls /usr/share/doc/zabbix-server-mysql/create.sql.gz
/usr/share/doc/zabbix-server-mysql/create.sql.gz# 利用 zcat 直接读取 gz 压缩包的数据,且管道符交给 mysql 命令导入数据,往 zabbix 库中导入数据。导入 zabbix 服务端的数据内容zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uroot -p123456 zabbix
[root@mail ~]# zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uroot -p123456 zabbix
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@mail ~]## 查看导入zabbix数据库中的所有数据表
mysql -uroot -p123456 -e "show tables from zabbix;"[root@mail ~]# mysql -uroot -p123456 -e "show tables from zabbix;"
mysql: [Warning] Using a password on the command line interface can be insecure.mysql> use zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;+----------------------------+
| Tables_in_zabbix |
+----------------------------+
| acknowledges |
| actions |
| alerts |
| application_discovery |
| application_prototype |
| application_template |
| applications |
| auditlog |
| auditlog_details |
| autoreg_host |
| conditions |
| config |
| corr_condition |
| corr_condition_group |
| corr_condition_tag |
| corr_condition_tagpair |
| corr_condition_tagvalue |
| corr_operation |
| correlation |
| dashboard |
| dashboard_user |
| dashboard_usrgrp |
| dbversion |
| dchecks |
| dhosts |
| drules |
| dservices |
| escalations |
| event_recovery |
| event_suppress |
| event_tag |
| events |
| expressions |
| functions |
| globalmacro |
| globalvars |
| graph_discovery |
| graph_theme |
| graphs |
| graphs_items |
| group_discovery |
| group_prototype |
| history |
| history_log |
| history_str |
| history_text |
| history_uint |
| host_discovery |
| host_inventory |
| hostmacro |
| hosts |
| hosts_groups |
| hosts_templates |
| housekeeper |
| hstgrp |
| httpstep |
| httpstep_field |
| httpstepitem |
| httptest |
| httptest_field |
| httptestitem |
| icon_map |
| icon_mapping |
| ids |
| images |
| interface |
| interface_discovery |
| item_application_prototype |
| item_condition |
| item_discovery |
| item_preproc |
| items |
| items_applications |
| maintenance_tag |
| maintenances |
| maintenances_groups |
| maintenances_hosts |
| maintenances_windows |
| mappings |
| media |
| media_type |
| opcommand |
| opcommand_grp |
| opcommand_hst |
| opconditions |
| operations |
| opgroup |
| opinventory |
| opmessage |
| opmessage_grp |
| opmessage_usr |
| optemplate |
| problem |
| problem_tag |
| profiles |
| proxy_autoreg_host |
| proxy_dhistory |
| proxy_history |
| regexps |
| rights |
| screen_user |
| screen_usrgrp |
| screens |
| screens_items |
| scripts |
| service_alarms |
| services |
| services_links |
| services_times |
| sessions |
| slides |
| slideshow_user |
| slideshow_usrgrp |
| slideshows |
| sysmap_element_trigger |
| sysmap_element_url |
| sysmap_shape |
| sysmap_url |
| sysmap_user |
| sysmap_usrgrp |
| sysmaps |
| sysmaps_elements |
| sysmaps_link_triggers |
| sysmaps_links |
| tag_filter |
| task |
| task_acknowledge |
| task_check_now |
| task_close_problem |
| task_remote_command |
| task_remote_command_result |
| timeperiods |
| trends |
| trends_uint |
| trigger_depends |
| trigger_discovery |
| trigger_tag |
| triggers |
| users |
| users_groups |
| usrgrp |
| valuemaps |
| widget |
| widget_field |
+----------------------------+
[root@mail ~]#mysql> desc users;
+----------------+-----------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-----------------+------+-----+---------+-------+
| userid | bigint unsigned | NO | PRI | NULL | |
| alias | varchar(100) | NO | UNI | | |
| name | varchar(100) | NO | | | |
| surname | varchar(100) | NO | | | |
| passwd | varchar(32) | NO | | | |
| url | varchar(255) | NO | | | |
| autologin | int | NO | | 0 | |
| autologout | varchar(32) | NO | | 15m | |
| lang | varchar(5) | NO | | en_GB | |
| refresh | varchar(32) | NO | | 30s | |
| type | int | NO | | 1 | |
| theme | varchar(128) | NO | | default | |
| attempt_failed | int | NO | | 0 | |
| attempt_ip | varchar(39) | NO | | | |
| attempt_clock | int | NO | | 0 | |
| rows_per_page | int | NO | | 50 | |
+----------------+-----------------+------+-----+---------+-------+
16 rows in set (0.01 sec)# 技巧查找命令来自于哪个软件包,便于你去安装该命令
[root@mail ~]# yum provides zcat
Last metadata expiration check: 0:00:43 ago on Sun 09 Jun 2024 07:36:21 PM CST.
gzip-1.9-12.el8.x86_64 : The GNU data compression program
Repo : @System
Matched from:
Provide : /bin/zcat
Filename : /usr/bin/zcatgzip-1.9-12.el8.x86_64 : The GNU data compression program
Repo : base
Matched from:
Provide : /bin/zcat
Filename : /usr/bin/zcat# 安装gzip 里面包含 'zcat' 命令
yum install gzip -y
[root@mail ~]# yum install gzip -y
Last metadata expiration check: 0:15:28 ago on Tue 11 Jun 2024 07:01:06 PM CST.
Package gzip-1.9-12.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete![root@mail ~]# sudo yum install mysql-libs5. 修改 zabbix-server 服务端配置文件,指明自己的 ip,便于 agent 去链接。编辑 zabbix 服务端配置文件(修改数据库部分即可)
sed "^[a-z]" /etc/zabbix/zabbix_server_bak.conf
# 配置文件代码解释 vim /etc/zabbix/zabbix_server.conf
'^[a-z]' 参数表示 找出以字母 a 到 字母 z 开头的行
grep "^[a-z]" /etc/zabbix/zabbix_server.conf
logFile=/var/log/zabbix/zabbix_server.log
logFileSize=0
pidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbixDBHost=localhost
# 指明 mysql 的地址 zabbix-server 与 mysql 在同一台机器
DBName=zabbix # 指明数据名字 zabbix
DBUser=zabbix # 指明数据库的连接用户
DBPassword=www.yuchaoit.cn # 数据库密码
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts # 存放自定义监控项脚本的目录
ExternalScripts=/usr/lib/zabbix/externalscripts
logSlowQueries-1000# 覆盖文件 源配置文件 /etc/zabbix/zabbix_server.conf
# 配置文件里面,不支持中文,因此笔记自己看就行
cat > /etc/zabbix/zabbix_server.conf << 'EOF'
logFile=/var/log/zabbix/zabbix_server.log
logFileSize=0
pidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=www.yuchaoit.cn
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
logSlowQueries-1000
EOF[root@mail ~]# cat /etc/zabbix/zabbix_server.conflogFile=/var/log/zabbix/zabbix_server.log
logFileSize=0
pidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
logSlowQueries-10006. 启动 zabbix 服务器,且开机自启
systemctl start zabbix-server.service && systemctl enable zabbix-server.service[root@mail ~]# vim /usr/lib/systemd/system/zabbix-server.service
[root@mail ~]# cat /usr/lib/systemd/system/zabbix-server.service[Unit]
Description=Zabbix Server daemon
After=network.target[Service]
User=zabbix
Group=zabbix
WorkingDirectory=/var/lib/zabbix
Restart=on-failure
StartLimitInterval=0
ExecStart=/usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
StandardOutput=tty
StandardError=journal+console
LogTarget=/var/log/zabbix/zabbix_server.log[Install]
WantedBy=multi-user.target
[root@mail ~]# vim /etc/systemd/system/zabbix-server.service
[root@mail ~]# systemctl daemon-reload
[root@mail ~]# systemctl start zabbix-server.service
[root@mail ~]# systemctl enable zabbix-server.service
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-server.service → /etc/systemd/system/zabbix-server.service.
[root@mail ~]#7. 检查 zabbix 的端口 10051 和进程是否运行
ps -ef | grep zabbixnetstat -tunlp | grep zabbixss -tunlp | grep zabbix至此 zabbix-server,服务器核心程序就安装好了。zabbix-ui 这个php程序也安装好了但是还不能访问zabbix-server 安装
10051 端口
10051是用来接收agent发来的信息,不干别的事zabbix-web-mysql 就是 php 开发的 zabbix 图形化 也安装好了
还得基于 LAMP,LNMP 去访问到底 web 前端是 nginx 去代理,还是 apache 去代理zabbix 不同版本不一样
我们采用的是4.0,只支持 apache 版本下一个任务部署 lamp
rpm -qi httpd
rpm -qa httpd
apache 配置
# php_value date.timezone Europe/Riga# php_value date_default_timezone_set('Asia/Shanghai')1.修改时区
# 只需要改一个时区设置,设为中国即可,因为你得让 zabbix 支持中文
grep -i 'shanghai' /etc/httpd/conf.d/zabbix.conf
20: php_value date.timezone Asia/Shanghai[root@mail ~]# grep -i 'shanghai' /etc/httpd/conf.d/zabbix.confphp_value[date.timezone] = Asia/Shanghai
[root@mail ~]# systemctl daemon-reload[root@mail ~]# systemctl restart httpd# 改好就可以启动80端口的apache服务了2. 重启
systemctl restart httpd[root@mail ~]# systemctl restart zabbix-server zabbix-agent httpd php-fpm
[root@mail ~]# systemctl enable zabbix-server zabbix-agent httpd php-fpm
Synchronizing state of php-fpm.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable php-fpm
service php-fpm does not support chkconfig
[root@mail ~]#架构是LAMP
# 你访问 zabbix 的图形化页面,用户 -> apache -> php,zabbix 图形化页面所有代码都是用 php 编程语言写的
# 访问 web 服务器入口 80端口 apache
# apache 请求转发给 php 的模块去处理# nginx php (fastcgi_pass 127.0.0.1:9000 php)看 apache配置文件就好,你可以访问 zabbix 路由即可,apache自动加载 php 模块,解析请求
cat /etc/httpd/conf.d/zabbix.conf
# Zabbix monitoring system php web frontend# 定义 url 别名
# 10.0.0.71/zabbix
# 等于访问 '/usr/share/zabbix'
Alias /zabbix /usr/share/zabbix 其实就是定义网页根目录# 定义网页根目录的设置权限
# web 服务端配置的参数意思,对比 nginx 的配置去理解即可
# 这里是 apache 知识点
<Directory "/usr/share/zabbix">Option FollowSyslinksAllowOverride None# 是否允许访问的权限,该目录的资料允许访问Require all granted# apache代理php的配置区域# 用户请求的是php程序,就交给这里的mod_phps5.c,mod_php7.c底层驱动去解析代码<IfModule mod_php5.c>php_value max_execution_time 300php_value memory_limit 128Mphp_value post_max_size 16Mphp_value upload_max_filesize 2Mphp_value max_input_time 100php_value max_input_vars 10000php_value always_populate_raw_post_data -1php_value[date.timezone] = Asia/Shanghai# php_value[date.timezone] = Europe/Riga</IfModule>
</Directory># 其他目录的访问权限设置,这些4个子目录全部拒绝访问
<Directory "/usr/share/zabbix/conf">Require all denied
</Directory><Directory "/usr/share/zabbix/app">Require all denied
</Directory><Directory "/usr/share/zabbix/include">Require all denied
</Directory><Directory "/usr/share/zabbix/local">Require all denied # denied 都拒绝访问的意思
</Directory>
测试 apache 安装好后,是一个 LAMP 环境
基于 phpinfo 页面去测试,看是否能解析 php 代码
进入 apache 的网页目录,存放 zabbix 路由的目录
进入 apache 的默认网页根目录,存放 html 的地方
cd /var/www/html
echo '您好,我也好' >> index.html# 测试 apache 能否将 .php 结尾的脚本请求,正确解析
vim /var/www/html/phpinfo.php
<?php
phpinfo();
?>vim /var/www/html/index.php
<?php
phpinfo();
echo "哈哈哈哈哈哈哈哈哈哈哈哈哈";
?>存放 zabbix 路由的目录删除这个测试文件,如何安装你的 zabbix 吧
rm -rf phpinfo.phpphp 是什么时候安装的?
zabbix-web-mysql 该程序 封装了 php 程序,httpd程序这里的部署,没有单独启动 php 进程,只是 php 解释器去执行代码了他于 php-fpm 是2个意思。(php解释器去执行 *.php 代码) 基于 fsatcgi协议去运行的一个独立进程内嵌在 vim /etc/httpd/conf.d/zabbix.conf 里面
'mod_php5.c mod_php7.c' 模块中mod_php5.c 是 PHP(Hypertext Preprocessor)模块的一部分,它是 Apache Web 服务器的一个扩展,用于在服务器上动态执行 PHP 脚本。这个文件是 PHP 与 Apache 集成的核心组件,它实现了 PHP 解释器的接口,使得 Apache 可以在处理 HTTP 请求时调用 PHP 代码,从而动态生成网页内容。当Apache启动时,如果配置中包含了 mod_php5,Apache会加载 mod_php5.c 文件编译而成的模块。在这个模块中,PHP请求被Apache处理模块传递给PHP引擎进行解析和执行,然后返回结果给客户端浏览器。这个过程通常发生在服务器端,提高了网站的性能,因为它减少了往返时间。
PHP与Apache模块
PHP(Hypertext Preprocessor)和Apache(Advanced Portable Server,高级可移植服务器)是广泛用于Web开发的一对经典组合。Apache是一个开源的HTTP服务器,而PHP则是一种脚本语言,常被嵌入到Apache中来处理动态内容。在Apache中,PHP是作为模块集成的,这意味着PHP代码可以直接在Apache服务器上运行,无需独立的PHP解释器。这种集成提供了高效性和稳定性,因为Apache可以在同一进程中处理多个PHP请求,减少了启动和停止进程的开销。Apache支持两种主要的PHP模块:mod_php: 这是最常见的方式,Apache通过mod_php模块直接执行PHP脚本。所有的PHP代码都被编译成Apache模块的一部分,这种方式简单易用,适合小型到中型网站。PHP-FPM (FastCGI Process Manager): 这是一种将PHP处理从Apache主进程分离出去的方法。Apache通过FastCGI协议与PHP-FPM通信,将请求发送给独立的PHP进程池。这种方式提高了性能,特别是当流量增大时,因为它能够更好地管理并发请求。相关问题:PHP-FPM相较于mod_php在性能上有何优势?如何在Apache配置文件中启用mod_php或PHP-FPM?mod_php和PHP-FPM在资源占用方面有何不同?
zabbix-UI 前端配置
172.18.22.138/zabbix 访问该url才能进入到zabbix访问流程
浏览器 --> httpd --> 转发给底层处理 php 请求的模块zabbix
默认账号 admin
默认密码 admin
3. 访问 zabbix 前端安装界面
直接访问对于服务器的80端口的apache服务,已经和zabbix结合了,其实就是一个 LAMP 架构了而已。zabbix-server 系统时间就是8:12 修改时间 ntpdate
zabbix-server 没安装 zabbix-agent 无法采集数据
判断该 server 机器 agent 程序有问题
修复中文乱码,修改图形的数据展示
(默认字体有问题,下载字体,修改 zabbix 的字体支持)
解决办法,这是因为缺少 zabbix 所需的字体# 安装文泉仪微黑字体
yum install wqy-microhei-fonts -y
[root@mail ~]# yum install wqy-microhei-fonts -y
Total download size: 1.7 M
Installed size: 5.0 M
Downloading Packages:
wqy-microhei-fonts-0.2.0-0.22.beta.el8.noarch.rpm # 下载字体,覆盖zabbix的图形字体
# 拷贝字体给 zabbix 用,覆盖图形字体
cp /usr/share/fonts/way-microhei/wqy-microhei.ttc /usr/share/zabbix/assets/fonts/graphfont.ttf
cp:overwrite '/usr/share/Zabbix/assets/fonts/graphfont.ttf'?y[root@mail ~]# cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/zabbix/assets/fonts/graphfont.ttf
cp: overwrite '/usr/share/zabbix/assets/fonts/graphfont.ttf'? y
[root@mail ~]#zabbix 默认图形展示数据
字体乱码
下载自定义的字体,然后覆盖了支持中文字体了
补充知识,关于 apache 和 zabbix 是怎么结合的
1. 访问 zabbix 入口2. 体验,安装环境检查3. 配置数据库连接4. 配置 zabbix 服务端的主机端口信息5. 最终确认6.恭喜你安装成功7.登录zabbix8.zabbix首页9.修改语言为中文10.修复中文乱码
3. zabbix 如何监控服务器
-
1. zabbix 架构图
-
zabbix 核心概念
-
先记住如下 zabbix 中的核心几个概念
主机(HOST)模板(TEMPLATE)监控项(ITEM)触发器(TRIGGER)动作(ACTION)
zabbix-server
Zabbix Server 是 c 语言开发的 Zabbix 服务器,有着 强悍的采集和计算性能
4. zabbix 功能特点
zabbix是一款超过23年经验的监控王牌软件
a. 数据采集
1. 支持 SNMP,JMX,等采集数据协议
2. 支持自定义时间频率采集数据
3. 支持 server,proxy,agent的方式采集数据
b. 灵活定义触发器
1. 支持自定义触发条件
2. 将触发和警告方式关联
c.多种告警方式
1. 短信,邮件,微信
2. 告警分等级,一级,警告,紧急
3.支持自定义警告内容。
d. 可视化展示丰富
1.内置图形功能可以将采集的数据实时绘制成图形
2. 使用图形聚合功能可以汇总多个监控项图形,集中展示
3. 提高报表分析功能
e. 存储历史数据
1. 采集到的数据存储入库,便于长久管理,查看历史记录
f. 配置简单易上手
1. 配置文件简单,文档丰富,参数易懂
2. 一般添加主机,关联模板两部曲即可完成主机监控
g. 大量的监控模板
1. zabbix-agent 支持大量的监控项目被制作成了模板,方便复用
h. 二次开发能力
1. 提供 zabbix API 可编程接口,进行批量数据操作,以及第三方工具集成。
i. 美观的UI页面
1. 基于 php 开发的 zabbix-ui,大部分操作通过页面点击完成
j. 多平台扩展
1. 支持 linux,windows
2. 由 c 语言开发的 server,agent,性能强悍
-
4.1 Zabbix 架构组成
Zabbix 主要有由以下组件,功能介绍如下:
Server 服务器Zabbix Server 是 Zabbix 的核心组件,其功能为将 Agent 采集到的数据持久化,存储到数据库等数据或存储
存储所有由 Agent 采集到的数据,zabbix 支持多种数据存储,例如:mysql,oracle,postgresql,flasticserach等。web 界面
Zabbix 提供了友好的 web 界面方便我们操作,web 界面的运行环境可以是Nginx+PHP,或者Apache+PHP服务组成,
技巧查找命令来自于哪个软件包,便于你去安装该命令
yum provides zcat
[root@mail ~]# yum provides zcat
Last metadata expiration check: 0:00:43 ago on Sun 09 Jun 2024 07:36:21 PM CST.
gzip-1.9-12.el8.x86_64 : The GNU data compression program
Repo : @System
Matched from:
Provide : /bin/zcat
Filename : /usr/bin/zcatgzip-1.9-12.el8.x86_64 : The GNU data compression program
Repo : base
Matched from:
Provide : /bin/zcat
Filename : /usr/bin/zcat
Ubuntu安装 Zabbix
https://wiki.ubuntu.com.cn/ZabbixZabbix 是一款企业级的开源监控解决方案,主要用于分布式系统和网络设备的监控。它提供了基于Web界面的集中管理和监控功能,能够实时监控服务器的各项性能指标,如CPU负载、内存使用情况、磁盘空间占用,以及网络流量等,并且支持自动发现网络中的服务器与设备。一. 安装
安装 Apache、Mysql、Php、zabbix二、安装前准备
1.更新系统,使用以下命令更新Ubuntu系统
sudo apt update
sudo apt upgrade -y2. 安装依赖项,在安装Zabbix之前,需要先安装一些依赖项,例如PHP、Apache、MySQL等。使用以下命令安装这些依赖项:
[sudo apt-get install apache2 mysql-server libapache2-mod-php5 php5-gd php5-mysql php5-common zabbix-server-mysql zabbix-frontend-php]sudo apt install apache2 mysql-server php php-mysql php-gd php-xml php-bcmath php-common php-mbstring libapache2-mod-php zabbix-frontend-php -yroot@zabbix-server:~# cat init.sh
#!/bin/sh
sudo apt update
sudo apt upgrade -ysudo apt install apache2 mysql-server php php-mysql php-gd php-xml php-bcmath php-common php-mbstring libapache2-mod-php zabbix-frontend-php -y3. 添加Zabbix仓库,执行以下命令,下载并导入Zabbix仓库的GPG密钥:
wget https://repo.zabbix.com/zabbix-official-repo.key
sudo apt-key add zabbix-official-repo.key# 然后,执行以下命令,添加Zabbix仓库到Ubuntu的软件源列表中
sudo apt-add-repository "deb [arch=amd64] https://repo.zabbix.com/zabbix/6.4/ubuntu focal main"4. 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld5.关闭selinux
# SELINUX=disabled
这是临时关闭,重启后恢复,我没有永久关闭,Zabbix正常使用三、Zabbix的安装 A. 安装 Zabbix 存储库wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.debdpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb
apt update
apt upgrade -yb. 安装Zabbix server,Web前端,agent
# apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent---------我的是安装下面的--------
# apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agentc. 创建初始数据库这里我是使用的mariadb数据库,下面是具体的安装步骤apt install mariadb-server -y
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installationroot@zabbix-server:~# systemctl start mariadb
root@zabbix-server:~# systemctl enable mariadb
Synchronizing state of mariadb.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable mariadbroot@zabbix-server:~# mysql_secure_installationNOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDBSERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!Enter current password for root (enter for none): # 当前root还没有密码,直接回车即可Set root password? [Y/n] y # 是否要设置root密码,y
New password: # 123(可自定义)
Re-enter new password: # 再次确认一遍密码
Password updated successfully!
Reloading privilege tables..... Success!By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.Remove anonymous users? [Y/n] y # 当前有个anonymous用户,是否移除 y... Success!Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.Disallow root login remotely? [Y/n] n # 不允许root远程登录, n... skipping.By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.Remove test database and access to it? [Y/n] y # 是否移除test数据库 y- Dropping test database...... Success!- Removing privileges on test database...... Success!Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.Reload privilege tables now? [Y/n] y # 是否重载权限表 y... Success!Cleaning up...All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB! # 配置完成然后就可以照着官方教程继续往下了,新建用户,设置密码,授予权限等。# mysql -uroot -p
这里输入刚刚设置的mariadb数据库的密码
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by '123456'; #这里密码123456可自定义,下一步需要用到
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;导入初始架构和数据,系统将提示您输入新创建的密码 ,这里输入上一步自定义的user zabbix@localhost的密码
# 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数据库密码
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;d. 为Zabbix server配置数据库编辑配置文件 /etc/zabbix/zabbix_server.conf vim /etc/zabbix/zabbix_server.conf修改# DBPassword=password这里要找到这一行,把前面的#号去掉,并修改后面的password为自己设置的数据库密码e. 启动Zabbix server和agent进程启动Zabbix server和agent进程,并为它们设置开机自启
# systemctl restart zabbix-server zabbix-agent apache2
# systemctl enable zabbix-server zabbix-agent apache2F. 打开 Zabbix UI 网页使用 Apache Web 服务器时 Zabbix UI 的默认 URL 是 http://host/zabbix,host为Ubuntu的ens33的ip地址,可以使用 ip a 命令查看ens33的ip地址信息。这里可能出现apache2的80端口被占用的问题,可以使用netstat -tunlp | grep 80查看,如果是被占用了,可以使用kill 进程号的命令杀掉对应进程。注:在配置DB连接时只需输入自己之前创建的mariadb数据库密码即可# language packs为 Zabbix安装
# apt install language-pack-en -y----------------
c. 创建初始数据库Make sure you have database server up and running.在数据库主机上运行以下代码。
mysql -uroot -p
password
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; 导入初始架构和数据,系统将提示您输入新创建的密码。
# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix # Disable log_bin_trust_function_creators option after importing database schema.
mysql -uroot -p
password
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit; d. 为Zabbix server配置数据库编辑配置文件 /etc/zabbix/zabbix_server.conf
DBPassword=passworde. 为Zabbix前端配置PHP编辑配置文件 /etc/zabbix/nginx.conf uncomment and set 'listen' and 'server_name' directives.
# listen 8080;
# server_name example.com; f. 启动Zabbix server和agent进程启动Zabbix server和agent进程,并为它们设置开机自启:
# systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm
# systemctl enable zabbix-server zabbix-agent nginx php8.1-fpm # language packs为 Zabbix安装
# apt-get install language-pack-eng. Open Zabbix UI web pageThe URL for Zabbix UI when using Nginx depends on the configuration changes you should have made. 四. 开始使用Zabbix,设置 Zabbix 监控工具
1.使用 web 浏览器并转到 http://IPaddress/zabbix/setup.php,111.111.111.111 是一个示例
http://111.111.111.111/zabbix/setup.php
单击Next step并继续到下一页。2.此页面显示已安装和验证的先决条件
你可以根据自己的需求选择就行了
2.开始安装和配置Zabbix
选择好后在该网页的下方会有官方的安装步骤,如上图所
四. 开始使用Zabbix,设置 Zabbix 监控工具
1.使用 web 浏览器并转到 http://IPaddress/zabbix/setup.php,111.111.111.111
是一个示例
http://111.111.111.111/zabbix/setup.php
单击Next step
并继续到下一页。
2.此页面显示已安装和验证的先决条件。
单击Next step
并继续到下一页。
3.在这里你必须输入你的 MySQL-Zabbix 数据库密码。
单击Next step
并继续到下一页。
4.设置您的时区、默认主题等。
单击Next step
并继续到下一页。
5.预安装摘要。检查所有配置参数。
6.安装过程完成后,将出现一条祝贺消息。
点击Finish
。
7.使用 http://111.111.111.111/zabbix/
登录 Zabbix。
Default Username: AdminDefault Password: zabbix
使用上述凭据登录:点击 Sign in
8.看Zabbix dashboard
。
9.要更改 Zabbix 前端管理员帐户密码,请导航至User setting–> 并单击 Change password
10.单击按钮Change password
并添加新密码。
单击底部Update
按钮以保存管理员帐户的新密码。
如何编写zabbix-server.service 服务文件
1. 创建或定位服务文件:
在 /etc/systemd/system/ 目录下找到或创建 zabbix-server.service 文件。如果没有,你可以手动创建一个文本文件,例如使用文本编辑器(如nano, vim 或者 sudo nano /etc/systemd/system/zabbix-server.service)2. 添加服务描述:
首先,添加一个简单的服务描述,这部分定义了服务的单位以及依赖网络服务。包括服务的名称、类型和路径:
[Unit]
Description=Zabbix Server daemon
After=network.target3. 配置启动命令: -c 参数后面跟着Zabbix的配置文件路径
在 [Service] 标签下,指定启动程序和命令行参数,假设Zabbix安装在 /usr/sbin/zabbix_server:ExecStart=/usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf[root@mail ~]# ls /usr/sbin/zabbix_
zabbix_agentd zabbix_server zabbix_server_mysql4. 设置启动模式: User 和 Group 指定运行Zabbix Server的用户和组。
你可以选择开机自启和运行策略,例如设置为自动启动并后台运行:
User=zabbix
Group=zabbix
WorkingDirectory=/var/lib/zabbix
Restart=on-failure
StartLimitInterval=05. 错误日志和日志级别: 设置输出到终端和日志文件,便于查看错误信息。
StandardOutput=tty
StandardError=journal+console
LogTarget=/var/log/zabbix/zabbix_server.log6. 添加服务启动和停止脚本:
如果你的Zabbix Server需要额外脚本来启动或停止,可以在 [Install] 中添加WantedBy 或 PreStart/PostStop 部分。7. 保存并启用服务:
编辑完成后,保存文件(通常按 Ctrl+X, Y, Enter),然后使用以下命令启用服务并使其在系统启动时自动运行:
sudo systemctl daemon-reload
sudo systemctl enable zabbix-server.service
sudo systemctl start zabbix-server.service8. 完整的zabbix-server.service文件内容
vim /etc/systemd/system/zabbix-server.service[Unit]
Description=Zabbix Server daemon
After=network.target[Service]
User=zabbix
Group=zabbix
WorkingDirectory=/var/lib/zabbix
Restart=on-failure
StartLimitInterval=0
ExecStart=/usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
StandardOutput=tty
StandardError=journal+console
LogTarget=/var/log/zabbix/zabbix_server.log[Install]
WantedBy=multi-user.target========================================
[root@mail ~]# vim /etc/systemd/system/zabbix-server.service
[root@mail ~]# cat /etc/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
After=mysql.service
After=mysqld.service
After=mariadb.service
After=postgresql.service
After=pgbouncer.service
After=postgresql-9.4.service
After=postgresql-9.5.service
After=postgresql-9.6.service
After=postgresql-10.service
After=postgresql-11.service
After=postgresql-12.service[Service]
Environment="CONFFILE=/etc/zabbix/zabbix_server.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/run/zabbix/zabbix_server.pid
KillMode=control-group
ExecStart=/usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
# -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0[Install]
WantedBy=multi-user.target=======================================[root@mail ~]# vim /etc/systemd/system/zabbix-server.service
[root@mail ~]# cat /etc/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
After=mysql.service
After=mysqld.service
After=mariadb.service
After=postgresql.service
After=pgbouncer.service
After=postgresql-9.4.service
After=postgresql-9.5.service
After=postgresql-9.6.service
After=postgresql-10.service
After=postgresql-11.service
After=postgresql-12.service[Service]
Environment="CONFFILE=/etc/zabbix/zabbix_server.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/run/zabbix/zabbix_server.pid
KillMode=control-group
ExecStart=/usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
# -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0[Install]
WantedBy=multi-user.target
[root@mail ~]#----------------------------
#! /bin/shPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=zabbix_server
ZABBIX_BIN=/usr/local/zabbix_server/sbin/$NAME
CONFIGFILE=/usr/local/zabbix_server/etc/$NAME.confcase "$1" instart)$ZABBIX_BIN -c $CONFIGFILEecho "$NAME 服务已经启用了!";;stop)kill `ps aux | grep zabbix | awk '{print $2}' | head -n 1`echo "$NAME 服务已经停止了";;status)if netstat -tnpl | grep -q zabbix; thenecho "$NAME 运行中..."elseecho "$NAME 停止运行状态!"exit 0fi;;restart)kill `ps aux | grep zabbix | awk '{print $2}' | head -n 1`$ZABBIX_BIN -c $CONFIGFILEecho "$NAME 服务重启成功!!!";;esac
mariadb配置文件
root@zabbix-server:~# apt install mariadb-server -yroot@zabbix-server:~# systemctl start mariadb
root@zabbix-server:~# systemctl enable mariadb
Synchronizing state of mariadb.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable mariadbroot@zabbix-server:~# mysql_secure_installationNOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDBSERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.Enter current password for root (enter for none):
OK, successfully used password, moving on...Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.You already have your root account protected, so you can safely answer 'n'.Switch to unix_socket authentication [Y/n] y # 切换到unix_socket身份验证 y
Enabled successfully!
Reloading privilege tables..... Success!You already have your root account protected, so you can safely answer 'n'.Change the root password? [Y/n] y # 改变 root 密码 y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..... Success!By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.Remove anonymous users? [Y/n] y # 删除匿名用户... Success!Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.Disallow root login remotely? [Y/n] n # 禁止 root 用户远程登录... skipping.By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.Remove test database and access to it? [Y/n] y # 移除 测试数据库- Dropping test database...... Success!- Removing privileges on test database...... Success!Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.Reload privilege tables now? [Y/n] y # 现在重新加载特权表... Success!Cleaning up...All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.Thanks for using MariaDB!MariaDB [(none)]> set global log_bin_trust_function_creators = 0;
Query OK, 0 rows affected (0.000 sec)MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| zabbix |
+--------------------+
5 rows in set (0.001 sec)MariaDB [(none)]> use zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
MariaDB [zabbix]> show tables;
+----------------------------+
| Tables_in_zabbix |
+----------------------------+
| acknowledges |
| actions |
| alerts |
| auditlog |
| autoreg_host |
| changelog |
| conditions |
| config |
| config_autoreg_tls |
| connector |
| connector_tag |
| corr_condition |
| corr_condition_group |
| corr_condition_tag |
| corr_condition_tagpair |
| corr_condition_tagvalue |
| corr_operation |
| correlation |
| dashboard |
| dashboard_page |
| dashboard_user |
| dashboard_usrgrp |
| dbversion |
| dchecks |
| dhosts |
| drules |
| dservices |
| escalations |
| event_recovery |
| event_suppress |
| event_symptom |
| event_tag |
| events |
| expressions |
| functions |
| globalmacro |
| globalvars |
| graph_discovery |
| graph_theme |
| graphs |
| graphs_items |
| group_discovery |
| group_prototype |
| ha_node |
| history |
| history_log |
| history_str |
| history_text |
| history_uint |
| host_discovery |
| host_inventory |
| host_rtdata |
| host_tag |
| hostmacro |
| hosts |
| hosts_groups |
| hosts_templates |
| housekeeper |
| hstgrp |
| httpstep |
| httpstep_field |
| httpstepitem |
| httptest |
| httptest_field |
| httptest_tag |
| httptestitem |
| icon_map |
| icon_mapping |
| ids |
| images |
| interface |
| interface_discovery |
| interface_snmp |
| item_condition |
| item_discovery |
| item_parameter |
| item_preproc |
| item_rtdata |
| item_tag |
| items |
| lld_macro_path |
| lld_override |
| lld_override_condition |
| lld_override_opdiscover |
| lld_override_operation |
| lld_override_ophistory |
| lld_override_opinventory |
| lld_override_opperiod |
| lld_override_opseverity |
| lld_override_opstatus |
| lld_override_optag |
| lld_override_optemplate |
| lld_override_optrends |
| maintenance_tag |
| maintenances |
| maintenances_groups |
| maintenances_hosts |
| maintenances_windows |
| media |
| media_type |
| media_type_message |
| media_type_param |
| module |
| opcommand |
| opcommand_grp |
| opcommand_hst |
| opconditions |
| operations |
| opgroup |
| opinventory |
| opmessage |
| opmessage_grp |
| opmessage_usr |
| optemplate |
| problem |
| problem_tag |
| profiles |
| proxy_autoreg_host |
| proxy_dhistory |
| proxy_history |
| regexps |
| report |
| report_param |
| report_user |
| report_usrgrp |
| rights |
| role |
| role_rule |
| scim_group |
| script_param |
| scripts |
| service_alarms |
| service_problem |
| service_problem_tag |
| service_status_rule |
| service_tag |
| services |
| services_links |
| sessions |
| sla |
| sla_excluded_downtime |
| sla_schedule |
| sla_service_tag |
| sysmap_element_trigger |
| sysmap_element_url |
| sysmap_shape |
| sysmap_url |
| sysmap_user |
| sysmap_usrgrp |
| sysmaps |
| sysmaps_element_tag |
| sysmaps_elements |
| sysmaps_link_triggers |
| sysmaps_links |
| tag_filter |
| task |
| task_acknowledge |
| task_check_now |
| task_close_problem |
| task_data |
| task_remote_command |
| task_remote_command_result |
| task_result |
| timeperiods |
| token |
| trends |
| trends_uint |
| trigger_depends |
| trigger_discovery |
| trigger_queue |
| trigger_tag |
| triggers |
| user_scim_group |
| userdirectory |
| userdirectory_idpgroup |
| userdirectory_ldap |
| userdirectory_media |
| userdirectory_saml |
| userdirectory_usrgrp |
| users |
| users_groups |
| usrgrp |
| valuemap |
| valuemap_mapping |
| widget |
| widget_field |
+----------------------------+
186 rows in set (0.001 sec)MariaDB [zabbix]> exit;
Bye
root@zabbix-server:~# vim /etc/zabbix/zabbix_server.conf
root@zabbix-server:~# systemctl restart zabbix-server zabbix-agent apache2
root@zabbix-server:~# systemctl enable zabbix-server zabbix-agent apache2
Synchronizing state of zabbix-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable zabbix-server
Synchronizing state of zabbix-agent.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable zabbix-agent
Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable apache2
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-server.service → /lib/systemd/system/zabbix-server.service.
root@zabbix-server:~#[root@mail ~]# rpm -qa mariadb
mariadb-10.3.28-1.module_el8.3.0+757+d382997d.x86_64
[root@mail ~]# rpm -e mariadb-10.3.28-1.module_el8.3.0+757+d382997d.x86_64
error: Failed dependencies:mariadb(x86-64) is needed by (installed) mariadb-server-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64
[root@mail ~]# rpm -e mariadb-server-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64
error: Failed dependencies:mariadb-server(x86-64) = 3:10.3.28-1.module_el8.3.0+757+d382997d is needed by (installed) mariadb-backup-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64mariadb-server(x86-64) = 3:10.3.28-1.module_el8.3.0+757+d382997d is needed by (installed) mariadb-gssapi-server-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64mariadb-server(x86-64) = 3:10.3.28-1.module_el8.3.0+757+d382997d is needed by (installed) mariadb-server-utils-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64[root@mail ~]# rpm -e mariadb-server-utils-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64
[root@mail ~]# rpm -e mariadb-gssapi-server-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64
[root@mail ~]# rpm -e mariadb-backup-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64
[root@mail ~]# rpm -e mariadb-server-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64
[root@mail ~]# rpm -e mariadb-10.3.28-1.module_el8.3.0+757+d382997d.x86_64
[root@mail ~]#[root@mail etc]# cat my.cnf
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]#
# include all files from the config directory
#
!includedir /etc/my.cnf.d[root@mail etc]#[root@mail my.cnf.d]# ls
auth_gssapi.cnf client.cnf enable_encryption.preset mariadb-server.cnf mysql-clients.cnf
[root@mail my.cnf.d]# pwd
/etc/my.cnf.d
[root@mail my.cnf.d]#[root@mail my.cnf.d]# cat client.cnf
#
# These two groups are read by the client library
# Use it for options that affect all clients, but not the server
#[client]# This group is not read by mysql client library,
# If you use the same .cnf file for MySQL and MariaDB,
# use it for MariaDB-only client options
[client-mariadb][root@mail my.cnf.d]# cat mariadb-server.cnf
#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
## this is read by the standalone daemon and embedded servers
[server]# this is only for the mysqld standalone daemon
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld/mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid#
# * Galera-related settings
#
[galera]
# Mandatory settings
#wsrep_on=ON
#wsrep_provider=
#wsrep_cluster_address=
#binlog_format=row
#default_storage_engine=InnoDB
#innodb_autoinc_lock_mode=2
#
# Allow server to accept connections on all interfaces.
#
#bind-address=0.0.0.0
#
# Optional setting
#wsrep_slave_threads=1
#innodb_flush_log_at_trx_commit=0# this is only for embedded server
[embedded]# This group is only read by MariaDB servers, not by MySQL.
# If you use the same .cnf file for MySQL and MariaDB,
# you can put MariaDB-only options here
[mariadb]# This group is only read by MariaDB-10.3 servers.
# If you use the same .cnf file for MariaDB of different versions,
# use this group for options that older servers don't understand
[mariadb-10.3][root@mail my.cnf.d]#[root@mail my.cnf.d]# cat mysql-clients.cnf
#
# These groups are read by MariaDB command-line tools
# Use it for options that affect only one utility
#[mysql][mysql_upgrade][mysqladmin][mysqlbinlog][mysqlcheck][mysqldump][mysqlimport][mysqlshow][mysqlslap][root@mail my.cnf.d]#
centos7 实战
mysql> desc user;
+--------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host | char(255) | NO | PRI | | |
| User | char(32) | NO | PRI | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
| Create_tablespace_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int unsigned | NO | | 0 | |
| max_updates | int unsigned | NO | | 0 | |
| max_connections | int unsigned | NO | | 0 | |
| max_user_connections | int unsigned | NO | | 0 | |
| plugin | char(64) | NO | | caching_sha2_password | |
| authentication_string | text | YES | | NULL | |
| password_expired | enum('N','Y') | NO | | N | |
| password_last_changed | timestamp | YES | | NULL | |
| password_lifetime | smallint unsigned | YES | | NULL | |
| account_locked | enum('N','Y') | NO | | N | |
| Create_role_priv | enum('N','Y') | NO | | N | |
| Drop_role_priv | enum('N','Y') | NO | | N | |
| Password_reuse_history | smallint unsigned | YES | | NULL | |
| Password_reuse_time | smallint unsigned | YES | | NULL | |
| Password_require_current | enum('N','Y') | YES | | NULL | |
| User_attributes | json | YES | | NULL | |
+--------------------------+-----------------------------------+------+-----+-----------------------+-------+
51 rows in set (0.01 sec)# 进入仓库目录
[root@mail ~]# cd /etc/yum.repos.d/# 配置仓库 安装仓库
[root@mail yum.repos.d]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/8/x86_64/zabbix-release-4.0-2.el8.noarch.rpm# 清空缓存
[root@mail yum.repos.d]# yum clean all# 生成新的缓存
[root@mail yum.repos.d]# yum makecache[root@mail yum.repos.d]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/8/x86_64/zabbix-release-4.0-2.el8.noarch.rpm
Retrieving https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/8/x86_64/zabbix-release-4.0-2.el8.noarch.rpm
warning: /var/tmp/rpm-tmp.jyHCxJ: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...1:zabbix-release-4.0-2.el8 ################################# [100%][root@mail ~]# yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent mariadb-serverInstalled:OpenIPMI-libs-2.0.31-3.el8.x86_64 fping-5.1-1.el8.x86_64mariadb-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64 mariadb-backup-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64mariadb-common-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64 mariadb-errmsg-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64mariadb-gssapi-server-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64 mariadb-server-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64mariadb-server-utils-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64 nginx-filesystem-1:1.14.1-9.module_el8.0.0+184+e34fea82.noarchperl-DBD-MySQL-4.046-3.module_el8.3.0+419+c2dec72b.x86_64 php-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64php-bcmath-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64 php-cli-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64php-common-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64 php-fpm-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64php-gd-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64 php-json-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64php-ldap-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64 php-mbstring-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64php-mysqlnd-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64 php-pdo-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64php-xml-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64 unixODBC-2.3.7-1.el8.x86_64zabbix-agent-4.0.50-1.el8.x86_64 zabbix-server-mysql-4.0.50-1.el8.x86_64zabbix-web-4.0.50-1.el8.noarch zabbix-web-mysql-4.0.50-1.el8.noarchComplete!# 修改时区
[root@mail ~]# grep -i -n 'shanghai' /etc/httpd/conf.d/zabbix.conf
21: php_value date.timezone Asia/Shanghai