Prometheus+Grafana+Onealert

Prometheus(由go语言(golang)开发)是一套开源的监控&报警&时间序列数据库的组合。适合监控docker容器。

基于时间序列的数值数据的容器监控解决方案。

按照时间顺序记录系统、设备状态变化的数据被称为时序数据

优势

  易于管理

  轻易获取服务内部状态

  高效灵活的查询语句

  支持本地和远程存储

  采用http协议,默认pull模式拉取数据,也可以通过中间网关push数据

  支持自动发现

  可扩展

  易集成

grafana 将Prometheus收集到的数据以图形化展现

通过grafana+onealert实现报警

模拟项目---对远程机器进行监控

实现7*24小时监控

报警分级

一级 电话通知

二级 微信通知

三级 邮件通知

完成报警处理机制

异地集中监控

实验环境准备

grafana服务器一台,prometheus服务器一台,被监控服务器一台

初始化服务器

设置好IP后,修改/etc/hosts

172.16.30.217 prometheus

172.16.30.222 grafana

172.16.30.223 agent

1 #!/bin/bash

2 for li in `cat ip.txt`

3 do

4    echo "lianjie $li..."

5    sshpass -p saka ssh -o "StrictHostKeyChecking=no" root@$li mv /etc/hosts /etc/hosts.bk

6    scp /etc/hosts root@$li:/etc/

7 done

时间同步

由于连接了外网,使用了外网的NTP server 在此只做时间检查

#!/bin/bash

for li in `cat ip.txt`

do

sshpass -p saka ssh -o StrictHostKeyChecking=no root@$li date

done

prometheus安装

tar -xvf prometheus-2.5.0.linux-amd64.tar.gz -C /usr/local

mv prometheus-2.5.0.linux-amd64 prometheus

cd prometheus

./prometheus --config.file="/usr/local/prometheus/prometheus.yml" & //执行后台安装

ss -natlp | grep 9090 //测试端口占用情况

ip:9090 即可看到prometheus的自带界面

默认监控自己

监控项有搜索提示

监控远程主机

在被监控的主机上安装组件(所有需要监控的机器都需要安装)

监控不同的服务需要不同的组件,比如mysqld_exporter

安装node_exporter(主要监控系统信息)

tar -xvf node_exporter-0.16.0.linux-amd64.tar.gz -C /usr/local

mv node_exporter-0.16.0.linux-amd64 node_exporter

cd node_exporter

nohup ./node_exporter & //永久运行node_exporter

查看是否运行

lsof -i:9100 //node_exporter 默认监听9100端口

通过ip:9100/metrices 来查看监控的数据

回到prometheus服务器的配置文件中添加被监控机器的地址段

vim prometheus.yml

- job_name: 'agent1'

  static_configs:

  - targets: ['172.16.30.223:9100'] //严格控制缩进

改完后重启服务

回到prometheus服务器的监控页面,已经可以看到添加的被监控主机

监控mysqld_exporter

解压安装

安装mysql(start enable)

lsof -i:3306 //查看是否运行

创建mysql账号,只允许本机访问

grant select,replication client,process ON *.* to 'mysql_monitor'@'localhost' identified by '123';

刷新权限

flush privileges;

完成之后,需要去添加配置文件来给prometheus登录Mysql来拉取数据

vim /usr/local/mysqld_exporter/.my.cnf

[client]

user=mysql_monitor

password=123

运行mysqld_exporter

nohup /usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf & //添加参数,指明配置文件路径

ss -natlp | grep 9104 //确认已启动

到网页中查看是否已搜集到数据

回到prometheus服务器的配置文件中添加被监控机器的地址段

  - job_name: 'agent1_mariadb'

static_configs:

- targets: ['172.16.30.223:9104']

修改完成后重启prometheus服务,在web上已经能看到监控的targets

grafana图形工具

grafana是开源的度量分析和可视化工具,可以通过将prometheus采集的数据分析,查询,然后进行可视化的展示,并实现报警。监听3000端口

安装

rpm -ivh grafana-5.3.4-1.x86_64.rpm

systemctl start grafana-server

systemctl enable grafana-server

通过Ip:3000进入 grafana测试页面,默认用户名密码均为admin,第一次登陆后需要更改密码

与prometheus关联

添加数据源

点击页面中的add data source添加prometheus服务器的信息

点+给数据源做图形展示

可以通过两种方式来筛选监控数据

1.{instance="IP:PORT"}

2.{job="JOB NAME"} //job name在prometheus的配置文件中

通过grafana监控mysql数据

需要安装模板并修改配置文件

修改配置文件

vim /etc/grafana/grafana.ini

[dashboards.json]

enabled = true //开启json

path = /var/lib/grafana/dashboards //模板路径

cd /var/lib/grafana/dashboards后

git clone https://github.com/percona/grafana-dashboards.git //下载模板

cp -r grafana-dashboards/dashboards/ /var/lib/grafana  //把模板拉出来

systemctl restart grafana-server

在grafana中导入json 文件

页面中存在上传页面

选择上传mysql_overview.json

//上传后没有数据,因为没设置数据源

//设置数据源

//默认名字为Prometheus,之前的名字叫prometheus_data

//一觉睡醒grafana没采集到数据,prometheus报错no data points 发现3台机器时间不同步,重新校时 ntpdate cn.ntp.org.cn 所有机器保证时间同步

更改dashboards界面 https://grafana.com/grafana/dashboards 

编号9276比较酷炫,是收集系统信息的,需要node_exporter

grafana+onealert实现报警

prometheus报警需要alertmanager组件,且报警规则需要手动添加,并不友好,所以使用grafana+onealert实现报警

onealert需要注册

https://caweb.aiops.com/#/  //页面有创建提示

在grafana中配置webhook url

在grafana中创建Notification channel 类型为webhook

链接地址不能填错

将webhook Notification Channel添加到grafana Alert中

在grafana dashboards中添加报警触发条件

cat /dev/urandom | md5sum

//目前未付费状态 只能微信推送或者钉钉 //绑定微信后已经可以从邮箱和微信推送获取报警信息

dpkg-reconfigure openssh-server重新生成ssh配置文件

你可能感兴趣的:(Prometheus+Grafana+Onealert)