一、概念

Prometheus

时间序列化数据库,我的理解就是将数据打上标签,以时间维度存储。

Grafana

Prometheus中存储的数据,通过Grafana很优美的展现出来。

Prometheus基础架构图详解:

 

适用场景

Prometheus在记录纯数字时间序列方面表现非常好。它既适用于面向服务器等硬件指标的监控,也适用于高动态的面向服务架构的监控。对于现在流行的微服务,Prometheus的多维度数据收集和数据筛选查询语言也是非常的强大。Prometheus是为服务的可靠性而设计的,当服务出现故障时,它可以使你快速定位和诊断问题。它的搭建过程对硬件和服务没有很强的依赖关系。

Prometheus,它的价值在于可靠性,甚至在很恶劣的环境下,你都可以随时访问它和查看系统服务各种指标的统计信息。 如果你对统计数据需要100%的精确,它并不适用,例如:它不适用于实时计费系统

二、prometheus下载&&安装

官网下载(https://prometheus.io/download),支持Linux、Mac、Windows系统,很好很强大。这里的实例以linux的centos为准。我这下载的prometheus版本是2.3.2

prometheus程序包下载

alertmanager程序包下载(监控告警模块)

node_exporter程序包下载 (监控主机磁盘、内存、CPU等硬件性能指标的采集程序包)

mysqld_exporter程序包下载 ( 监控mysql各种性能指标的采集程序包)

还有其他一些组件程序包,如:blackbox_exporter,consul_exporter,graphite_exporter,haproxy_exporter,memcached_exporter,pushgateway,statsd_exporter

我这边暂时用不到,就不一一列举了。

prometheus安装

下载:

#cd /usr/local/src

#wget https://github.com/prometheus/prometheus/releases/download/v2.3.2/prometheus-2.3.2.linux-amd64.tar.gz -O prometheus.tgz     -O参数将文件名更改成prometheus.tgz

#tar xvf prometheus.tgz

#mv prometheus-2.3.2.linux-amd64 prometheus 重命名

# cat prometheus/prometheus.yml 查看配置文件

#nohup ./prometheus –storage.tsdb.retention=30d   >> /tmp/prometheus.out 2>&1 &        启动 ,数据保留30天

grafana安装

grafana是一个出图展示框架,grafana根据grafana-dashboards来进行展示,grafana-dashboards就类似于grafana的出图配置文件,根据在grafana-dashboards中的定义来确定在页面中需要展示什么指标,需要如何展示等,需要分别对这两个组件进行下载与安装。

#wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.3.linux-amd64.tar.gz –no-check-certificate  #不验证安全证书

#tar xvf  grafana-5.2.3.linux-amd64.tar.gz

# cd grafana-5.2.3/bin/

# nohup ./grafana-server >> /tmp/grafana.out 2>&1 & 后台启动

打开grafana页面(默认帐号和密码:admin/admin,默认的端口为3000,通过地址:http://ip:3000 访问),配置数据来源。

或者yum安装grafana

2、使用yum安装稳定版本的Grafana
或者在CentOS/RedHat上手工安装rpm包
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.1-1.x86_64.rpm
yum install initscripts fontconfig
rpm -Uvh grafana-4.6.1-1.x86_64.rpm
或者使用Grafana的yum仓库
在/etc/yum.repos.d/grafana.repo文件中新增如下内容:
[grafana]
name=grafana
baseurl=https://packagecloud.io/grafana/stable/el/6/$basearch
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packagecloud.io/gpg.key https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
然后在使用yum命令直接安装Grafana
yum install grafana
使用yum安装后相关的软件包的一些信息:
/usr/sbin/grafana-server 主要是grafana-server的安装二进制
/etc/init.d/grafana-server grafana的启动脚本
/etc/sysconfig/grafana-server 存放默认的环境变量
/etc/grafana/grafana.ini grafana存放grafana的默认配置文件
grafana-server.service CentOS 7 的服务管理操作
/var/log/grafana/grafana.log 默认配置中日志存放路径
/var/lib/grafana/grafana.db 默认的sqlite3存放文件
启动服务:
service grafana-server start

登录后选择add data source

指定prometheus地址,这里我们把grafana装在了同一台机器,直接使用localhost的地址配置即可,注意的是Name要填Prometheus ,如下图:

在grafana中导入grafana-dashboards

先下载grafana-dashboards,下载地址:https://github.com/percona/grafana-dashboards/releases

#wgt https://github.com/percona/grafana-dashboards/archive/v1.14.0.tar.gz

#mv  v1.14.0 v1.14.0.tgz

#tar xvf v1.14.0.tgz

在web界面先点击Home,再点击import dashboards,在点击upload.json file。上传json文件,json文件就在上面解压的 v1.14.0.tgz中。

# cd grafana-dashboards-1.14.0/dashboards/

里面有很多json文件,你的需求导入。我这边监控主机及Mysql。只用到了下面这些json文件,将这些文件导入进去

CPU_Utilization_Details_Cores.json
Disk_Performance.json
Disk_Space.json
MySQL_InnoDB_Metrics.json
MySQL_InnoDB_Metrics_Advanced.json
MySQL_Overview.json
MySQL_Performance_Schema.json
MySQL_Replication.json
MySQL_Table_Statistics.json
Summary_Dashboard.json
System_Overview.json

一直import完这些json包。

三、监控节点部署

添加主机监控

下载&&解压node_exporter压缩包

#wget https://github.com/prometheus/node_exporter/releases/download/v0.16.0/node_exporter-0.16.0.linux-amd64.tar.gz -O node_exporter.tgz

#tar xvf node_exporter.tgz

#cd node_exporter-0.16.0.linux-amd64/

#nohup ./node_exporter >> /tmp/node.out 2>&1 & 启动节点

配置prometheus主机监控配置列表文件

#cat /usr/local/src/prometheus/prometheus.yml

# cat prometheus.yml
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
alertmanagers:
– static_configs:
– targets:
# – alertmanager:9093

# Load rules once and periodically evaluate them according to the global ‘evaluation_interval’.
rule_files:
# – “first_rules.yml”
# – “second_rules.yml”

# A scrape configuration containing exactly one endpoint to scrape:
# Here it’s Prometheus itself.
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: [‘192.168.40.4:9090’]
– job_name: ‘node_localhost’
static_configs:
– targets: [‘192.168.40.4:9100’]

# nohup ./prometheus –storage.tsdb.retention=30d   >> /tmp/prometheus.out 2>&1 &  启动prometheus

在浏览其中访问192.168.40.4:9090

#nohup ./grafana-server >> /tmp/grafana.out 2>&1 & 启动grafana

 

redis 主从复制及keepalived高可用

前言及思路: 这边的思路是以3作为主,4作为从,110作为VIP漂移地址,应用通过110的6379端口访问redis数据库。 正常运行下,当主节点3宕机后,VIP飘逸到4上,...

阅读全文

jenkins对gethub分支的管理

一、背景 现在很多开发的代码都托管在github上。而github会有多个不同的代码分支,我们在使用jenkins构建时需要选择不同的github分支进行构建。 二、测试准备...

阅读全文

redis的数据库持久化机制

一、redis的 rdb 和 aof 持久化的区别 aof,rdb是两种 redis持久化的机制。用于crash后,redis的恢复。 rdb的特性如下: fork一个进程,遍历hash table,利用...

阅读全文

欢迎留言