chrony时间同步服务
本想简单的找点chrony的讲解视频看看,但没找到;我想,可能是因为服务这个服务太简单了吧,觉得没什么讲的;所以都忽略了;现在只有自己烧烧脑,手动研究一下下
公司里 虚拟机加物理机 2000+ 台 机器,一直使用的是 ntpdate 直接强行同步三台NTP服务器,就这么暴力的用了几年,到现在,也没出啥问题;但是身为一名运维屌丝,预感到了强烈安全隐患。
是时候展现真正的技术了 ~~~
一啪啦的扯淡,进入正题。
我的 rhel8上面没有,我使用过yum安装的
安装完成之后,系统会多出一个 chronyd的服务
查看服务状态: systemctl status chronyd
停止服务: systemctl stop chronyd
重启服务: systemctl restart chronyd
我们可以用 rpm -ql chrony 看一下安装 chrony 后产生的安装文件,帮助了解这个服务的大体结构,与复杂度,不想看也可以不看;
大体上就是这些东西了
下面开始介绍,将chrony配置为 NTP 服务端,用来供NTP 客户端同步使用的,后面再讲客户端
配置前先讲一下 配置文件件:
经过一番烧脑,大致的理解了一下主配置文件里的参数,并做了一下注释,方便以后查阅
配置都很简单
就更改一下域名服务器,与允许同步的网段就可以了,其余的基本都是默认;更改完后重启一下服务
阿里云的时间服务器:
ntp1aliyuncom
ntp2aliyuncom
中科院的时间服务器:
ntpntscaccn
显示目前同步的状态:
与外部互联网同步的时间间隔不能设置为小于64秒,否则会因为过于平凡与NTP服务器同步,而视为垃圾数据报被丢弃,这个需要注意一下
就是添加一个ntp服务IP就行了,其余的基本不用动;重启服务器,并加入开机启动
1、Sync4oss的文件同步工具不走FTP协议,利用操作系统的监测机制,高效获取磁盘文件变化情况,然后实时同步到OSS,直接从Sync4oss工具传到OSS,无需中转,性能效率高;
2、您的不能显示,我个人分析是你的配置不正确(软件配置或者网站配置),和FTP应该是没有关系的,因为FTP只是一个帮你把传到OSS的工具而已;(基于我们的FTP云工具分析)
需要在电脑上安装同步盘的Windows客户端,并且登录您的账户。然后您的文件将同步到该电脑上。
您可以从网页版左侧的回收站里找到被删除的文档。
您可以 点击这里下载 最新的Windows客户端 ,下载成功后双击运行文件,显示如下画面。
安装之前建议您关闭其他所有应用程序。单击“下一步”,同步盘会开始安装。
完成安装,然后登录自己的账号。
同步盘由易美云(北京)信息技术有限公司开发设计,致力于为中小企业提供最安全、最可靠的企业云存储服务。
同步盘不受时间,地点,设备的限制。只要有网络,可以在任何时间,任何地点,任何PC或手机上对文件进行存储和共享。从此告别FTP,不再需要部署FTP或者活动目录,不再需要采购主机硬盘或担心硬盘损坏,不再需要远程***访问公司文件。
您保存到同步盘的文件都会安全的存储到同步盘云服务器,无需担心文件丢失。
同步盘为企业提供至少1000GB的云存储空间,不再需要为企业数据备份而发愁,不再需要为硬盘满了而苦恼。
同步盘企业免费版可为注册企业提供50G免费存储空间,供50人的团队协同工作,支持任意格式的合法文件上传,最大可传送文件为05G。
在拥有个人版存储特色的同时,企业免费版功能更增添了文件加密传输、文件搜索、文件夹打包下载、用户管理、权限分配和群组等功能。
企业免费版最大的特点是安全性更高。企业间对文件传输的安全性有很高的要求,同步盘通过文件加密传输的方式,保障企业间传输文件不外泄,保障企业的心智成果。通过同步盘内强大的文件搜索功能,用户可以轻松找到自己想要的文件。
企业免费版的另一个特色就是通过用户管理、权限分配和群组等方式,实现团队间的协同工作。
管理员可将公司员工名单整体导入系统中,每位员工就拥有了同步盘的登录账户。管理员可将具有相同属性的人添加到同一群组,例如,公司可以按部门分成市场、技术、研发、行政等多个群组,然后将公司成员添加到各群组中。
各群组间可根据各自的情况共享文件。管理员还可以指定3个以内的人同时管理群组,根据需求随时调整各成员共享文件的权限。
Prometheus 实现邮件告警(Prometheus+Alertmanager+QQ邮箱或者网易163邮箱,目前测试过这两种邮箱都可以发送告警邮件)
Prometheus实现邮件告警原理如下:
Prometheus官方有一个附带的中间件:alertmanager,通过设置rules规则和路由转发可以实现邮件告警,前提是你需要有一个可以发送邮件的邮件服务端(可以自建或者使用互联网公司提供的免费邮箱)
告警原理图
Prometheus完整架构图
我之前得出的错误结论如下:
推荐直接在虚拟机操作系统上直接安装Prometheus和Alertmanager,不推荐其中任何一方在容器中运行,因为测试过在容器中运行Prometheus和alertmanager,结果出现如下错误情况
第一种情况是:我的node-exporter掉线跌机了(手动关机,模拟突然掉线跌机),Prometheus却提示节点依然在线?有时候却能够正常显示节点掉线跌机,生成告警发送邮件
第二种情况是:我的node-exporter掉线跌机了(手动关机,模拟突然掉线跌机),Prometheus提示节点掉线,告警生成,但是没有发送邮件,我手动恢复node-exporter后,告警解除,邮件能正常发送邮件提示告警已经解除。。。。
第三种情况是:我的node-exporter掉线跌机了(手动关机,模拟突然掉线跌机),Prometheus提示节点掉线,告警生成,正常成功发送邮件,我手动恢复node-exporter后,告警解除,邮件没有发送出来。。。。
以上三种情况之前经常出现,当时第一步以为是自己设置的scrape_interval不合理导致的,结果调试几次,问题没有解决,第二步以为是自己的服务器时间没有做到精确同步,然后我去设置和阿里云的ntp服务器同步,结果问题依然没有解决,第三步,换个方向,把alertmanager迁移到虚拟机操作系统上安装运行,问题解决!
北京时间是GMT+8小时,有些同志的时间可能是UTC的,但是如果是在要求不太十分精确的情况下,UTC时间是刚刚好等于GMT时间
为了避免时区的混乱,prometheus所有的组件内部都强制使用Unix时间,对外展示使用GMT时间。
要改时区有两个办法
1 修改源码,重新编译。
2 使用 docker 运行 Prometheus,挂载本地时区文件
docker run --restart always -e TZ=Asia/Shanghai --hostname prometheus --name prometheus-server -d -p 9090:9090 -v /data/prometheus/server/data:/prometheus -v /data/prometheus/server/conf/prometheusyml:/etc/prometheus/prometheusyml -u root prom/prometheus:v250
正文开始
安装alertmanager
容器安装方式:
docker run -d --name alertmanager -p 9093:9093 -v /usr/local/Prometheus/alertmanager/alertmanageryml:/etc/alertmanager/alertmanageryml prom/alertmanager:latest
先在宿主机/usr/local/Prometheus下创建一个文件夹alertmanager,然后在文件夹里创建alertmanageryml配置文件,待会才能映射到alertmanager容器里的/etc/alertmanager目录下
global:全局配置
resolve_timeout: 问题解决的超时时间
smtp_from: 发送告警邮件的邮箱账号
smtp_smarthost: 邮箱 SMTP 服务地址,这里是以QQ邮箱为例,也可以用网易163邮箱,这个和我之前设置zabbix邮件告警时的配置一样
smtp_auth_username: 如果没有设置邮箱别名,那就是账户名
smtp_auth_password: 邮箱的授权码,不是 账户密码,你可以在QQ邮箱或者网易163邮箱网页端设置,开启 POP3/SMTP 服务时会提示,和配置zabbix邮件告警的时候几乎一样
smtp_require_tls: 是否使用 tls,根据环境不同,来选择开启和关闭。如果提示报错 emailloginAuth failed: 530 Must issue a STARTTLS command first,那么就需要设置为 true。着重说明一下,如果开启了 tls,提示报错 starttls failed: x509: certificate signed by unknown authority,需要在 email_configs 下配置 insecure_skip_verify: true 来跳过 tls 验证。
templates: 告警模板目录,可以不编写模板,有默认模板
Subject: '{{ template "emaildefaultsubject" }}'
html: '{{ template "emaildefaulthtml" }}'
route:报警的分发设置
group_by:分组
group_wait: 分组等待时间
group_interval: 5m 每组时间间隔
repeat_interval: 10m 重复间隔
receiver: 接收方式,请注意!这里的名字要对应下面receivers中的任何一个名字,不然会报错,这里其实就是选择方式,有邮箱,企业微信,wehook,victorops等等
receivers:接受方式汇总,即告警方式汇总
例子:
receivers:
- name:'default-receiver'
email_configs:
- to:'whiiip@163com'
html: '{{ template "alerthtml" }}'
headers: { Subject: "[WARN] 报警邮件test"}
inhibit_rules: 抑制规则
当存在与另一组匹配的警报(源)时,抑制规则将禁用与一组匹配的警报(目标)。
包括源匹配和目标匹配
alertmanager官方是这样说的
Inhibition
Inhibition is a concept of suppressing notifications for certain alerts if certain other alerts are already firing
Example: An alert is firing that informs that an entire cluster is not reachable Alertmanager can be configured to mute all other alerts concerning this cluster if that particular alert is firing This prevents notifications for hundreds or thousands of firing alerts that are unrelated to the actual issue
Inhibitions are configured through the Alertmanager's configuration file
当存在与另一组匹配器匹配的警报(源)时,禁止规则会使与一组匹配器匹配的警报(目标)静音。目标警报和源警报的equal列表中的标签名称都必须具有相同的标签值。
在语义上,缺少标签和带有空值的标签是同一件事。因此,如果equal源警报和目标警报都缺少列出的所有标签名称,则将应用禁止规则。
为了防止警报禁止自身,与规则的目标和源端 都 匹配的警报不能被警报(包括其本身)为真来禁止。但是,我们建议选择目标匹配器和源匹配器,以使警报永远不会同时匹配双方。这很容易进行推理,并且不会触发此特殊情况。
接着是规则rules
不解释了,自己研究官方文档
alertmanager的非容器安装方式是
wget https://githubcom/prometheus/alertmanager/releases/download/v0200/alertmanager-0200linux-amd64targz
tar xf alertmanager-0200linux-amd64targz
mv alertmanager-0200linux-amd64 /usr/local/alertmanager
vim /usr/lib/systemd/system/alertmanagerservice
[Unit]
Description=alertmanager
Documentation=https://githubcom/prometheus/alertmanager
After=networktarget
[Service]
Type=simple
User=root
ExecStart=/usr/local/alertmanager/alertmanager --configfile=/usr/local/alertmanager/alertmanageryml
Restart=on-failure
[Install]
WantedBy=multi-usertarget
Alertmanager 安装目录下默认有 alertmanageryml 配置文件,可以创建新的配置文件,在启动时指定即可。
其余方式和上面一样
接着是Prometheus,我之前的博客里有写了容器安装和非容器安装的方法,自己去翻阅
然后是在prometheusyml里修改相关配置
首先去掉alertmanager的注释,改成IP加你设置的端口号,默认是9093
接着在rule_files: 下面写下规则文件的绝对路径,可以是具体文件名,也可以是,也可以分几级文件,默认是全部匹配
接着是被监控项的设置,这里设置完成可以在Prometheus网页里的targets里看得到
请注意,这里设置的参数名字要和rule规则中设置的参数名字一模一样,否则你的prometheus服务会无法启动,然后报错
如果不在特定的job下设置scrape_interval(优先级高于全局),则默认采用gobal下的scrape_interval
最后模拟节点掉线,手动关闭node-exporter或者Cadvisor
docker stop node-exporter 或者容器ID
docker stop cadvisor 或者容器ID
或者把up{{job='prometheus'}} == 1 设置成1,反向设置,不用关掉服务,就可以看看告警成不成功
说明一下 Prometheus Alert 告警状态有三种状态:Inactive、Pending、Firing。
Inactive:非活动状态,表示正在监控,但是还未有任何警报触发。
Pending:表示这个警报必须被触发。由于警报可以被分组、压抑/抑制或静默/静音,所以等待验证,一旦所有的验证都通过,则将转到 Firing 状态。
Firing:将警报发送到 AlertManager,它将按照配置将警报的发送给所有接收者。一旦警报解除,则将状态转到 Inactive,如此循环。
没有配置告警模板时的默认告警格式是这样的
节点恢复后邮件告知是这样的
写了模板后是这样的
还要重新映射模板文件夹路径到alertmanager容器里的相对路径,然后重启alertmanager,当然,如果目录下没有模板文件,则不显示
告警模板
在alertmanageryml中修改相关设置
重启alertmanager
docker restart alertmanager
最终效果不是很好
0条评论