prometheus安装实践

组件1:Prometheus 搜集时间戳监控项内容,编写函数触发警告

组件2:alertmanager 获取警告,并发送告警信息给邮箱,钉钉等

组件3:node_exporter 客户端,用来响应请求时间戳监控内容

下载地址:https://prometheus.io/download/

单机部署,只为做新手入门,生产建议配置2台Prometheus同时监控,互相监控。

alertmanager做keepalive冗余,或nginx代理。

环境阿里云3台主机:

OS:centos7.5

我已下载至home,解压得到二进制文件

#tar -xzf prometheus-2.34.0-rc.2.linux-amd64.tar.gz

#tar -zxf alertmanager-0.23.0.linux-amd64.tar.gz

scp node_exporter-1.3.1.linux-amd64.tar.gz root@k8s-node101:/home

scp node_exporter-1.3.1.linux-amd64.tar.gz root@k8s-node102:/home

3台节点都运行

#tar -zxf node_exporter-1.3.1.linux-amd64.tar.gz

把二进制目录移动至自己喜欢的地方,比如我放在/usr/local/,当然你也可以放在别的地方

#mv prometheus-2.34.0-rc.2.linux-amd64 /usr/local/prometheus

#mv alertmanager-0.23.0.linux-amd64 /usr/local/alertmanager

3台节点都运行

#mv node_exporter-1.3.1.linux-amd64 /usr/local/node_exporter

用二进制文件配置systemd,这一步主要是为了systemctl 管理服务,并设置开机启动

#vim /usr/lib/systemd/system/prometheus.service

[Unit]
Description=https://prometheus.io
After=network.target

[Service]
WorkingDirectory=/usr/local/prometheus
Restart=on-failure
ExecStart=/usr/local/prometheus/prometheus
ExecReload=/bin/kill -HUP $MAINPID
Type=simple
KillMode=control-group
RestartSec=10

[Install]
WantedBy=multi-user.target
 

#vim /usr/lib/systemd/system/alertmanager.service

[Unit]
Description=https://prometheus.io
After=network.target

[Service]
WorkingDirectory=/usr/local/alertmanager
Restart=on-failure
ExecStart=/usr/local/alertmanager/systemctl daemon-reload
ExecStop=/bin/kill -KILL $MAINPID
Type=simple
ExecReload=/bin/kill -HUP $MAINPID
KillMode=control-group
RestartSec=10

[Install]
WantedBy=multi-user.target
 

3台节点都运行(这里用了http认证,三台的用户名密码一样)

#vim /usr/local/node_exporter/web-config.yml

basic_auth_users:

  k8s: $2y$10$1ak5ZyK2wfbnMsv0/L78aOOAEiR3JI6PC2AnTf/Ictdh6prB4Um0.

注意格式:

这里的密码需要加密,加密命令为:htpasswd -nBC 10 "k8s" ,根据提示输入密码:

htpasswd 命令需要 yum install -y httpd-tools

如果想用https,请参考:

https://github.com/prometheus/exporter-toolkit/blob/v0.1.0/https/README.md

3台节点都运行

#vim /usr/lib/systemd/system/node_exporter.service

[Unit]
Description=https://prometheus.io
After=network.target

[Service]
WorkingDirectory=/usr/local/node_exporter
Restart=on-failure
ExecStart=/usr/local/node_exporter/node_exporter --web.config=web-config.yml
ExecStop=/bin/kill -KILL $MAINPID
Type=simple
#ExecReload=/bin/kill -HUP $MAINPID
KillMode=control-group
RestartSec=10

[Install]
WantedBy=multi-user.target
 

#systemctl daemon-reload

组件1监听端口:9090,无账号认证

#systemctl enable prometheus

组件2监听端口:9093

#systemctl enable alertmanager

组件3监听端口:9100

3台节点都运行

#systemctl start node_exporter

#systemctl enable node_exporter

添加被监控节点,注意yml格式

此处的密码,是你上面输入的密码

#vim /usr/local/prometheus/prometheus.yml

检查语法

#cd /usr/local/prometheus

#./promtool check config prometheus.yml

启动prometheus

#systemctl start prometheus

登录:IP:9090,进去自己熟悉一下【status】,因为不需要密码,记得不要放在公网

让我们添加3个监控项

#内存使用率
node_memory_Active_bytes/node_memory_MemTotal_bytes*100

#CPU使用率-平均5分钟内
avg(irate(node_cpu_seconds_total{mode="idle"}[5m]))by(instance)*100

#磁盘使用率
(1-node_filesystem_avail_bytes{mountpoint=~"/|/run ",device="rootfs"}/node_filesystem_size_bytes{mountpoint=~"/|/run ",device="rootfs"})*100

 

告警需要设置prometheus,发送alertmanager,然后在alertmanager设置邮箱和钉钉推送

继续,启动alertmanager

#systemctl start alertmanager

在Prometheus中添加告警规则

#vim /usr/local/prometheus/prometheus.yml

#vim /usr/local/prometheus/rules/k8s_basic.yml 

groups:
  - name: alert_test
    rules:
    - alert: "memory high > 85"
      expr: avg(irate(node_cpu_seconds_total{mode="idle"}[5m]))by(instance)*100 >= 85
      for: 2m
      labels:
        severity: 'critical'

再次提醒注意yml的格式

检查语法

#/usr/local/prometheus/r/promtool check rules rules/k8s_basic.yml

systemctl reload prometheus

这时,表达式如果触发,Prometheus就会告警了。

我的1台节点cpu使用率90%,我设置这个大于85的时候触发告警

因为我设置了for: 2m,所以2m之内pending,变黄

2分钟之后告警,变红

注意,这里是Prometheus的告警哟,我们要想收到通知的话,就要使用alertmanager了。

下面介绍alertmanager,怎么把这个告警通知到你。

把alertmanager地址添加到Prometheus中

#vim /usr/local/prometheus/prometheus.yml

systemctl reload prometheus

此时,Prometheus会把告警推给alertmanager

 访问alertmanager:IP:9093

alertmanager已收到Prometheus的告警。

接下来,让alertmanager把告警推送出去!

#vim /usr/local/alertmanager/alertmanager.yml

global:
  resolve_timeout: 5m     #故障恢复后多久发恢复邮件

route:
  group_by: ['alertname']
  group_wait: 30s           #首次触发,等30秒搜集汇总
  group_interval: 5m       #群组收到告警5分钟内不变化,才发送
  repeat_interval: 1h       #故障不解决,1小时发送一次
  receiver: 'email-me'
receivers:
- name: 'email-me'
  email_configs:
  - to: "接收者@qq.com"
    from: "your@qq.com"
    smarthost: "your-smtp.qq.com:465" #你的邮件服务器
    auth_username: "your@qq.com"
    auth_identity: "your@qq.com"
    auth_password: "XXXXX"  #你的邮件服务器授权码
    require_tls: false  #不使用https
    send_resolved: true  #告警消除邮件发送

inhibit_rules: #告警抑制
  - source_match:
      alert: "memory high > 85"
      severity: 'critical'
    target_match:
      alert: "memory high > 85"
      severity: 'critical'
    equal: ['alertname', 'dev', 'instance']

#systemctl reload  alertmanager

查看邮件接收告警

大功告成!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值