Prometheus普罗米修斯监控+Alertmanager预警+钉钉预警

简单实操,可直接拷贝命令执行

前提条件:

centos7  10.11.7.95

关闭selinux
vi /etc/sysconfig/selinux
    SELINUX=disabled
setenforce 0

关闭防火墙或者开放对应端口
systemctl stop firewalld
systemctl start firewalld

需要开放端口
9090/tcp 3000/tcp 9093/tcp 8060/tcp

9090 prometheus
3000 grafana
9093 alertmanager
8060 prometheus-ding



firewall-cmd --zone=public --list-ports 查看端口
firewall-cmd --zone=public --query-port=80/tcp    查看端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent        添加端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent    删除端口
firewall-cmd --reload
systemctl reload firewalld.service

一、安装Prometheus平台

 https://prometheus.io/download/ 下载相应版本 并 安装 

访问地址:http://10.11.7.95:9090/

cd /home/ && mkdir package && cd package

下载对应安装包:
wget https://github.com/prometheus/prometheus/releases/download/v2.37.0/prometheus-2.37.0.linux-amd64.tar.gz

解压至指定文件夹
tar -zxvf /home/package/prometheus-2.37.0.linux-amd64.tar.gz -C /usr/local/

创建软链
ln -s /usr/local/prometheus-2.37.0.linux-amd64/ /usr/local/prometheus

配置prometheus开机自启
vi /usr/lib/systemd/system/prometheus.service
写入以下信息:
[Unit]
Description=https://prometheus.io

[Service]
Restart=on-failure
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/usr/local/prometheus/data
[Install]
WantedBy=multi-user.target


systemctl start prometheus
systemctl status prometheus
systemctl enable prometheus

二、搭建grafana平台

https://grafana.com/grafana/download

wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.0.2-1.x86_64.rpm
yum -y install grafana-enterprise-9.0.2-1.x86_64.rpm

启动-并开机自启
systemctl start grafana-server
systemctl enable grafana-server

访问地址:http://10.11.7.95:3000/login        admin/admin登陆后修改密码

data sources添加数据源:http://10.11.7.95:9090

三、安装node_exporter

四、节点添加入监控--展示

cd /usr/local/prometheus/
cp /usr/local/prometheus/prometheus.yml /usr/local/prometheus/prometheus.yml.bak

添加对应的需监控信息
vi /usr/local/prometheus/prometheus.yml

检测填写是否正确
./promtool check config prometheus.yml
 Checking prometheus.yml
 SUCCESS: prometheus.yml is valid prometheus config file syntax


重启prometheus
systemctl restart prometheus

导入模板id :16098

 五、安装alertmanager报警

cd /home/package
wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz

解压至指定文件夹
tar -zxvf /home/package/alertmanager-0.21.0.linux-amd64.tar.gz -C /usr/local/
软连接
ln -s /usr/local/alertmanager-0.21.0.linux-amd64/ /usr/local/alertmanager

cd /usr/local/alertmanager && cp alertmanager.yml alertmanager.yml.bak
vi alertmanager.yml

global:
  resolve_timeout: 5m
  smtp_smarthost: 'smtp.126.com:25'      # smtp地址
  smtp_from: 'XXXXXXXX@126.com'          # 谁发邮件
  smtp_auth_username: 'XXXXXXXX@126.com' # 邮箱用户
  smtp_auth_password: 'XXXXXXXXXXXXXXXX' # 邮箱客户端授权密码
  smtp_require_tls: false
 
templates:                               # 指定邮件模板的路径,可以使用相对路径,template/*.tmp的方式
  - '/usr/local/alertmanager/template/*.tmp'
 
route:                                   # route用来设置报警的分发策略
  group_by: ["alertname"]                # 分组名
  group_wait: 30s                        # 当收到告警的时候,等待三十秒看是否还有告警,如果有就一起发出去
  group_interval: 30s                    # 发送警告间隔时间
  repeat_interval: 20m                   # 重复报警的间隔时间
  receiver: Node_warning                 # 设置默认接收人,如果想分组接收,把下面这段的注释去掉

receivers:                               # 定义接收者,将告警发送给谁
- name: 'Node_warning'
  email_configs:
  - send_resolved: true
    to: 'Austines@163.com'
    html: '{{ template "email.html" . }}' # 指定使用模板,如果不指定,还是会加载默认的模板的
    headers: { Subject: "[WARN]告警" }    # 配置邮件主题

  webhook_configs:
  - url: http://127.0.0.1:8060/dingtalk/webhook/send       
    #警报被解决之后是否通知 消息模板/usr/local/prometheus-webhook-dingtalk/config.yml
    send_resolved: true

################结束###############

webhook_configs为钉钉消息

mkdir template && vi template/email.tmp

{{ define "email.html" }}
    {{ range .Alerts }}
<pre>
    ========start==========
    告警程序: prometheus_alert 
    告警级别: {{ .Labels.severity }} 
    告警类型: {{ .Labels.alertname }} 
    故障主机: {{ .Labels.instance }} 
    告警主题: {{ .Annotations.summary }}
    告警详情: {{ .Annotations.description }}
    触发时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
    ========end==========
</pre>
    {{ end }}
{{ end }}

################结束###############

检测配置是否正确
./amtool check-config alertmanager.yml


配置alertmanager开机自启动
vi /usr/lib/systemd/system/alertmanager.service

[Unit]
Description=https://prometheus.io

[Service]
Restart=on-failure
ExecStart=/usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml
[Install]
WantedBy=multi-user.target

启动 && 自启动
systemctl start alertmanager
systemctl enable alertmanager

访问地址http://10.11.7.95:9093/#/alerts


 

在grafana的alert-admin中添加alertmanager地址

在grafana的alert-Concat point中添加Alertmanager预警

在grafana的alert-Policies中使用Alertmanager预警

 

六、配置钉钉预警

cd /home/package

wget https://github.com/timonwong/prometheus-webhook-dingtalk/releases/download/v1.4.0/prometheus-webhook-dingtalk-1.4.0.linux-amd64.tar.gz

tar -zxvf prometheus-webhook-dingtalk-1.4.0.linux-amd64.tar.gz -C /usr/local/

ln -s /usr/local/prometheus-webhook-dingtalk-1.4.0.linux-amd64/ /usr/local/prometheus-webhook-dingtalk

cd /usr/local/prometheus-webhook-dingtalk

修改相关配置
vi config.yml

# Request timeout
 timeout: 5s

## Customizable templates path
# templates:
#   - contrib/templates/legacy/template.tmpl
#模板文件
 templates:
    - /usr/local/prometheus-webhook-dingtalk/template/*.tmp

## You can also override default template using `default_message`
## The following example to use the 'legacy' template from v0.3.0
# default_message:
#   title: '{{ template "legacy.title" . }}'
#   text: '{{ template "legacy.content" . }}'

## Targets, previously was known as "profiles"
 targets:
   webhook:
     url: https://oapi.dingtalk.com/robot/send?access_token=**************
     message:
       # Use legacy template
       title: '{{ template "ding.link.title" . }}'
       text: '{{ template "ding.link.content" . }}'


###############结束#############

创建模板文件
mkdir template && vi template/template.tmp

{{ define "__subject" }}[Linux 基础监控告警:{{ .Alerts.Firing | len }}] {{ end }}

{{ define "__text_list" }}{{ range . }}

{{ range .Labels.SortedPairs }}
{{ if eq .Name "instance" }}> 实例: {{ .Value | html }}{{ end }}
{{ end }}

{{ range .Labels.SortedPairs }}
{{ if eq .Name "serverity" }}> 告警级别: {{ .Value | html }}{{ end }}
{{ if eq .Name "hostname" }}> 主机名称: {{ .Value | html }}{{ end }}
{{ end }}

{{ range .Annotations.SortedPairs }}
{{ if eq .Name "description" }}> 告警详情: {{ .Value | html }}{{ end }}
{{ end }}
触发时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}

{{"============================"}}
{{ end }}{{ end }}

{{ define "ding.link.title" }}{{ template "__subject" . }}{{ end }}
{{ define "ding.link.content" }}
{{ if gt (len .Alerts.Firing) 0 }}#### [{{ .Alerts.Firing | len }}]【Linux 报警触发】
{{ template "__text_list" .Alerts.Firing }}{{ end }}
{{ if gt (len .Alerts.Resolved) 0 }}#### [{{ .Alerts.Resolved | len }}]【Linux 报警恢复】
{{ end }}
{{ end }}


配置开机自启动服务
vi /usr/lib/systemd/system/prometheus-webhook-dingtalk.service

[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk  --config.file=/usr/local/prometheus-webhook-dingtalk/config.yml
[Install]
WantedBy=default.target

启动 && 开机自启动
systemctl start prometheus-webhook-dingtalk
systemctl enable prometheus-webhook-dingtalk



七、编写prometheus告警规则

cd /usr/local/prometheus && mkdir rules && cd rules

参考
https://www.bbsmax.com/A/1O5EQv7G57/

修改对应位置
vi prometheus.yml

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
           - 127.0.0.1:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
   - "rules/*.yml"
  # - "first_rules.yml"
  # - "second_rules.yml"


重启服务
systemctl restart prometheus

 

到此时,钉钉已经能推送消息

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是Shell脚本+钉钉机器人实现服务及服务器监控告警的步骤: 1. 创建一个Shell脚本,用于监控服务器或服务的运行状态,比如检查CPU、内存、硬盘使用情况、网络连接等。 2. 在Shell脚本中,使用curl命令调用钉钉机器人接口,将告警信息发送到指定的钉钉群中。比如: ``` #!/bin/bash # 获取CPU使用率 cpu_usage=$(top -b -n1 | grep "Cpu(s)" | awk '{print $2+$4}') # 获取内存使用率 mem_usage=$(free | awk '/Mem/{printf("%.2f"), $3/$2*100}') # 获取硬盘使用率 disk_usage=$(df -h | awk '$NF=="/"{printf "%s", $5}') # 获取网络连接数 net_conn=$(netstat -an | grep ESTABLISHED | wc -l) # 配置钉钉机器人URL和access_token url="https://oapi.dingtalk.com/robot/send?access_token=your_access_token" # 组装告警消息 msg="服务器告警:\nCPU使用率:${cpu_usage}%\n内存使用率:${mem_usage}%\n硬盘使用率:${disk_usage}\n当前连接数:${net_conn}" # 发送告警消息到钉钉群 curl -H "Content-Type: application/json" -d "{\"msgtype\": \"text\", \"text\": {\"content\": \"${msg}\"}}" ${url} ``` 3. 在服务器上设置定时任务,定期执行Shell脚本,比如每5分钟执行一次。可以使用crontab命令设置定时任务,比如: ``` */5 * * * * /path/to/your/script.sh ``` 4. 在钉钉群中添加机器人,并获取机器人的access_token。 5. 将access_token替换到Shell脚本中的url参数中,然后保存Shell脚本。 6. 等待定时任务执行,当服务器或服务的运行状态异常时,Shell脚本会自动发送告警消息到钉钉群中。 以上就是使用Shell脚本+钉钉机器人实现服务及服务器监控告警的步骤。通过这种方式,可以及时发现服务器或服务的运行异常,避免出现更大的问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值