Prometheus+Grafana+Altermanager监控告警

tar zxvf prometheus-2.3.0.linux-amd64.tar.gz -C ~/software #解压包至指定任意目录,本人习惯所有工具放在一个地方统一管理
cd ~/software/prometheus-2.3.0.linux-amd64 #进入解压后的文件
vim prometheus.yml #编辑配置文件


* 修改/添加配置文件prometheus.yml  
 job\_name酌情命名,因为现在还不支持删除job信息;并且修改也是生成一个新的job,会出现新旧并存的情况(博主遇坑,回来做个提醒)



scrape_configs:

The job name is added as a label job=<job_name> to any timeseries scraped from this config.

  • job_name: ‘prometheus’

    metrics_path defaults to ‘/metrics’

    scheme defaults to ‘http’.

    static_configs:

    • targets: [‘localhost:9090’]
      labels:
      instance: prometheus
  • job_name: node
    static_configs:

    • targets: [‘localhost:9100’] #博主的node_exporter安装在本地,如果安装在其他机器使用IP即可,9100是node_exporter的端口号
      labels:
      instance: server1 #名称,根据自己爱好取就行了
  • job_name: mysql
    static_configs:

    • targets: [‘localhost:9104’] #博主的mysqld_exporter安装在本地,如果安装在其他机器使用IP即可,9104是mysqld_exporter的端口号
      labels:
      instance: db1 #名称,根据自己爱好取就行了
  • job_name: redis
    static_configs:

    • targets: [‘localhost:9121’] #博主的redis_exporter安装在本地,如果安装在其他机器使用IP即可,9121是redis_exporter的端口号
      labels:
      instance: redis1 #名称,根据自己爱好取就行了

* 启动prometheus



cd ~/software/prometheus-2.3.0.linux-amd64
nohup ./prometheus --config.file=prometheus.yml & #启动prometheus并后台运行,推荐cd到目录下再运行,这样nohup的日志就会存在当前目录,如果在系统根目录下运行,所有的nohup.out日志文件会混淆
ps -ef | grep prometheus #检查进程的方式查看是否运行成功,如果没有运行成功就去掉nohup直接运行查看一下错误原因


### node\_exporter


* node\_exporter也是需要go的环境,安装在被监控的设备上(本文是都安装在同一台机器)
* 安装node\_exporter



wget https://github.com/prometheus/node_exporter/releases/download/v0.18.0/node_exporter-0.18.0.linux-amd64.tar.gz #下载包,v0.18版本,由于grafana仪表板支持v0.16、v0.17、v0.18版本
tar xvf node_exporter-0.18.0.linux-amd64.tar.gz -C ~/software #解压包至指定任意目录,此处不多说


* 启动node\_exporter



cd ~/software/node_exporter-0.18.0.linux-amd64 #进入解压后的文件
nohup ./node_exporter & #启动node_pxporter并后台运行,推荐cd到目录下再运行,这样nohup的日志就会存在当前目录,如果在系统根目录下运行,所有的nohup.out日志文件会混淆
ps -ef | grep node_exporter #检查进程的方式查看是否运行成功,如果没有运行成功就去掉nohup直接运行查看一下错误原因


### mysqld\_exporter


* mysqld\_exporter也是需要go的环境,安装在被监控的设备上(本文是都安装在同一台机器)
* 安装mysqld\_exporter



wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.10.0/mysqld_exporter-0.10.0.linux-amd64.tar.gz #下载包
tar xvf mysqld_exporter-0.10.0.linux-amd64.tar.gz -C ~/software #解压包至指定任意目录,此处不多说


* mysqld\_exporter需要连接到Mysql,所以需要Mysql的权限,我们先为它创建用户并赋予所需的权限.



mysql -uroot -p密码
mysql> GRANT REPLICATION CLIENT,PROCESS ON . TO ‘mysql_monitor’@‘localhost’ identified by ‘mysql_monitor’;
mysql> GRANT SELECT ON . TO ‘mysql_monitor’@‘localhost’;


* 创建.my.cnf文件



vim ~/softwar/mysqld_exporter-0.10.0.linux-amd64/.my.cnf #编辑.my.cnf文件,vim保存后会自动生成文件,写入如下内容
[client]
user=mysql_monitor
password=mysql_monitor


* 启动mysqld\_exporter



cd ~/software/mysqld_exporter-0.10.0.linux-amd64 #进入解压后的文件
nohup ./mysqld_exporter -config.my-cnf=.my.cnf & #启动mysqld_exporter并后台运行,推荐cd到目录下再运行,这样nohup的日志就会存在当前目录,如果在系统根目录下运行,所有的nohup.out日志文件会混淆
ps -ef | grep mysqld_exporter #检查进程的方式查看是否运行成功,如果没有运行成功就去掉nohup直接运行查看一下错误原因


### redis\_exporter


* 安装redis\_exporter



wget https://github.com/oliver006/redis_exporter/releases/download/v1.0.2/redis_exporter-v1.0.2.linux-amd64.tar.gz #下载包
tar xvf redis_exporter-v1.0.2.linux-amd64.tar.gz -C ~/software #解压包至指定任意目录,此处不多说


* 启动redis\_exporter



cd ~/software/redis_exporter-v1.0.2.linux-amd64 #进入解压后的文件
nohup ./redis_exporter exporter redis://localhost:16379 & #启动redis_exporter并后台运行,推荐cd到目录下再运行,这样nohup的日志就会存在当前目录,如果在系统根目录下运行,所有的nohup.out日志文件会混淆
ps -ef | grep redis_exporter #检查进程的方式查看是否运行成功,如果没有运行成功就去掉nohup直接运行查看一下错误原因


### 查看prometheus配置


安装完成后,查看一下prometheus是否识别到相应监控,访问  
 http://localhost:9090/targets Status->Targets页面,如果可以看到Target的状态已经变成UP,就是成功  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190613120827259.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzM2OTQzMDc1,size_16,color_FFFFFF,t_70)  
 如果没有成功,建议杀掉prometheus进程,重新启动一次


### 安装Grafana


grafana官网有安装方式的教程 https://grafana.com/grafana/download


ubuntu安装,命令行执行如下命令



wget https://dl.grafana.com/oss/release/grafana_6.2.2_amd64.deb #下载安装包
sudo dpkg -i grafana_6.2.2_amd64.deb #安装
sudo service grafana-server start #启动grafana


启动后,访问本地链接 http://localhost:3000/login ,默认用户名“admin”默认密码“admin”,登录后重置密码。


## Grafana图形化


### 配置grafana-prometheus


* 添加data sources,点击添加选择prometheus即可  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190613123218854.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzM2OTQzMDc1,size_16,color_FFFFFF,t_70)
* 添加后配置相关信息即可,写入prometheus的URL,点击“Save&Test”提示绿色成功即可  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190613123157701.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzM2OTQzMDc1,size_16,color_FFFFFF,t_70)


### 配置grafana-node\_exporter仪表版


* 导入Prometheus仪表版,Dashboards–Manage–import
* 在 Granfana.com-Dashboard中填写8919,点击load即可。(https://grafana.com/dashboards 中可以直接搜索prometheus,copy ID to Clipboard,grafana官网提供了大量的仪表板模板可以使用)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190613123249866.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzM2OTQzMDc1,size_16,color_FFFFFF,t_70)
* 修改仪表版名称和选择“prometheus\_111”为Prometheus即可(如果这里提示没有数据库,就是前面的data sources没有添加好需要重新检查)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190613123259662.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzM2OTQzMDc1,size_16,color_FFFFFF,t_70)
* 进入仪表板就可以在仪表版看到相应的监控  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2019061312331157.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzM2OTQzMDc1,size_16,color_FFFFFF,t_70)
* 仪表板中有一个提示“Panel plugin not found: grafana-piechart-panel”,则grafana安装饼图插件既可以了



sudo grafana-cli plugins install grafana-piechart-panel #grafana安装饼图插件
sudo service grafana-server restart #重启grafana即可


![在这里插入图片描述](https://img-blog.csdnimg.cn/20190613123330224.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzM2OTQzMDc1,size_16,color_FFFFFF,t_70)


### 配置grafana-mysqld\_exporter仪表版


* 导入Prometheus仪表版,Dashboards–Manage–import。方式同上
* 在 Granfana.com-Dashboard中填写7362,点击load即可。(https://grafana.com/dashboards 中可以直接搜索MySQL Overview,copy ID to Clipboard,grafana官网提供了大量的仪表板模板可以使用)。方式同上
* 修改仪表版名称和选择“prometheus”为Prometheus即可(如果这里提示没有数据库,就是前面的data sources没有添加好需要重新检查)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190613123420286.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzM2OTQzMDc1,size_16,color_FFFFFF,t_70)
* 进入仪表板就可以在仪表版看到相应的监控  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190613123427550.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzM2OTQzMDc1,size_16,color_FFFFFF,t_70)


### 配置grafana-redis\_exporter仪表版


* 导入Prometheus仪表版,Dashboards–Manage–import
* 在 Granfana.com-Dashboard中填写2751,点击load即可。(https://grafana.com/dashboards 中可以直接搜索Prometheus Redis,copy ID to Clipboard,grafana官网提供了大量的仪表板模板可以使用)
* 修改仪表版名称和选择“prom”为Prometheus即可(如果这里提示没有数据库,就是前面的data sources没有添加好需要重新检查)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190613142710947.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzM2OTQzMDc1,size_16,color_FFFFFF,t_70)
* 进入仪表板就可以在仪表版看到相应的监控(本机并未安装redis所以为空)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190613142716528.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzM2OTQzMDc1,size_16,color_FFFFFF,t_70)


### Altermanager监控告警


1. 首先配置邮件服务



sudo apt-get install sendmail # 安装邮件发送服务
vim /etc/grafana/grafana.ini # 添加邮件配置,如下图
sudo service grafana-server restart # 重启grafana服务


![在这里插入图片描述](https://img-blog.csdnimg.cn/20191014141330276.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzM2OTQzMDc1,size_16,color_FFFFFF,t_70)  
 2. 配置grafana邮件  
 填写收件邮箱即可,点击send test可以测试邮件发送,成功会有如图绿色提示。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20191014141407735.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzM2OTQzMDc1,size_16,color_FFFFFF,t_70)  
 邮箱收到测试邮件  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20191014141413925.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzM2OTQzMDc1,size_16,color_FFFFFF,t_70)  
 3. altermanager介绍


实现prometheus的告警,需要通过altermanager这个组件;在prometheus服务端写告警规则,在altermanager组件配置邮箱


Alertmanager与Prometheus是相互分离的两个组件。Prometheus服务器根据报警规则将警报发送给Alertmanager,然后Alertmanager将silencing、inhibition、aggregation等消息通过电子邮件、dingtalk和HipChat发送通知。


Alertmanager处理由例如Prometheus服务器等客户端发来的警报。它负责删除重复数据、分组,并将警报通过路由发送到正确的接收器,比如电子邮件、Slack、dingtalk等。Alertmanager还支持groups,silencing和警报抑制的机制。


4. 安装altermanager



wget https://github.com/prometheus/alertmanager/releases/download/v0.19.0/alertmanager-0.19.0.linux-amd64.tar.gz # 下载altermanager
tar xvf alertmanager-0.19.0.linux-amd64.tar.gz -C ~/software #解压至指定文件夹
vim ~/software/alertmanager-0.19.0.linux-amd64/altermanager.yml # altermanager配置邮箱,如下
nohup ./alertmanager --config.file=alertmanager.yml & # 根据配置启动altermanager


**(最好是用QQ邮箱!本人亲试公司邮箱host不可用,总是报错TLS证书问题。  
 QQ邮箱服务器smtp@qq.com:465 ,smtp\_require\_tls一定要改为false,QQ邮箱不支持。  
 同时smtp\_auth\_password填写的是第三方登录 QQ 邮箱的授权码,非 QQ 账户登录密码。  
 获取方式在 QQ 邮箱服务端设置开启 POP3/SMTP 服务时会提示)**  
 **真的很坑爹**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20191014152126768.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzM2OTQzMDc1,size_16,color_FFFFFF,t_70)  
 5. 修改prometheus配置文件



vim ~/software/prometheus-2.3.0.linux-amd64/prometheus.yml # 修改prometheus配置文件

修改如下(规则文件名根据自定义配置, rule_files可以指定多个规则)


![在这里插入图片描述](https://img-blog.csdnimg.cn/20191014154026596.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzM2OTQzMDc1,size_16,color_FFFFFF,t_70)  
 6. 编写规则文件  
 规则文件有标准的语法需要注意,以下为样例(从别人那里复制来的):



vim ~/software/prometheus-2.3.0.linux-amd64/rules.yml # 创建并编写规则文件(要求与配置中名称一致)



groups:
- name: test-rules
rules:
- alert: InstanceDown
expr: up == 0
for: 2m
labels:
status: warning
annotations:
summary: “{{KaTeX parse error: Expected 'EOF', got '}' at position 16: labels.instance}̲}: has been dow…labels.instance}}: job {{KaTeX parse error: Expected 'EOF', got '}' at position 11: labels.job}̲} has been down…labels.instance}}: CPU usage is above 99% (current value is: {{ KaTeX parse error: Expected 'EOF', got '}' at position 7: value }̲}" - aler…labels.instance}}: MEM usage is above 90% (current value is: {{ KaTeX parse error: Expected 'EOF', got '}' at position 7: value }̲}" - aler…labels.instance}}: Disk usage is above 80% (current value is: {{ KaTeX parse error: Expected 'EOF', got '}' at position 7: value }̲}" - aler…labels.instance}}: File Descriptor usage is above 80% (current value is: {{ KaTeX parse error: Expected 'EOF', got '}' at position 7: value }̲}" - aler…labels.instance}}: Load15 is above 100 (current value is: {{ KaTeX parse error: Expected 'EOF', got '}' at position 7: value }̲}" - aler…labels.instance}}: Node Agent is down (current value is: {{ KaTeX parse error: Expected 'EOF', got '}' at position 7: value }̲}" - aler…labels.instance}}: Node Blocked Procs detected!(current value is: {{ KaTeX parse error: Expected 'EOF', got '}' at position 7: value }̲}" - aler…labels.instance}}: Node Transmit Rate is above 100MB/s (current value is: {{ KaTeX parse error: Expected 'EOF', got '}' at position 7: value }̲}" - aler…labels.instance}}: Node Receive Rate is above 100MB/s (current value is: {{ KaTeX parse error: Expected 'EOF', got '}' at position 7: value }̲}" - aler…labels.instance}}: Node Disk Read Rate is above 50MB/s (current value is: {{ $value }}”
- alert: NodeDiskWriteRate
expr: avg by (instance) (floor(irate(node_disk_bytes_written{}[2m]) / 1024 / 1024)) > 50
for: 2m
labels:
service_name: test
level: warning

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值