一款炫技的监控系统-Prometheus+Grafana安装记

更新日志:
2019.08.23  添加增加针对centos6的/etc/init.d/prometheus启动脚本;

一、前言:

  之前部门用的zabbix 2.0版本的监控系统年事已高,看着那古老又单调的界面真是一点兴趣都没有。正好最近在学习k8s,偶然间看到一篇文章介绍了使用(Prometheus+Grafana)搭建的监控系统,页面很炫,本着喜新厌旧,颜值即正义,特地搭建了个研究研究,毕竟学习使我快乐!

二、Prometheus(普罗米修斯)的特点简介:

  用过zabbix的朋友应该知道,它是用C(agent/server端)+PHP(前端)+Mysql(存储)的架构。本司1800+主机,8W+的监控项,每月近80G的监控数据(history,history_unit等表),虽然做了按月分区分表,但是数据库压力还是很大。而且前端页面单调,二次开发难度高(其实是小破厂本部门没有专门的PHP开发人员,C更没用了)。
  而Prometheus(普罗米修斯),使用Go语言开发(Golang好火!有个同学竟然在朋友圈里大声宣布说Go是世界上最好的语言!),是Google BorgMon监控系统的开源版本。(k8s是Google Borg的开源版本)。
  监控数据则是存储在自研的基于时间序列的数据库(TSDB)内,获取各节点监控数据的方式是使用pull模型调各监控节点的http端口(服务端主动去客户端拉取数据)(Go语言开发+pull方式调各节点http端口,像不像小米自研那个open-falcon)等等......
  Prometheus特点很多,之后的文章再详细介绍以及和zabbix的对比,此篇点到为止

三、安装Prometheus主节点:

Prometheus官网:https://prometheus.io/

wget https://github.com/prometheus/prometheus/releases/download/v2.12.0/prometheus-2.12.0.linux-amd64.tar.gz
tar zxvf prometheus-2.12.0.linux-amd64.tar.gz
cd prometheus-2.12.0.linux-amd64

  解压后查看文件夹中两个主要程序和文件:

prometheus         #prometheus的应用程序
prometheus.yml     #prometheus的配置文件

  查看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: ['localhost:9090']

  暂时先不用改,注意最后一行为登录页面
  编辑systemctl配置文件(ExecStart行请根据个人情况修改,--storage.tsdb.path是监控数据存储位置)(适用于centos7

vim /etc/systemd/system/prometheus.service

[Unit]
Description=prometheus
After=network.target
[Service]
Type=simple
User=root
ExecStart=/data/prometheus/prometheus/prometheus --config.file=/data/prometheus/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus/storage
Restart=on-failure
[Install]
WantedBy=multi-user.target

systemctl start prometheus   #启动prometheus
systemctl status prometheus  #查看prometheus运行状态

  针对centos6可编写/etc/init.d/prometheus启动脚本:

#!/bin/bash
#
# Comments to support chkconfig
# chkconfig: 2345 98 02
# description: prometheus service script
#
# Source function library.
. /etc/init.d/functions
 
### Default variables
prog_name="prometheus"
config_file="/data/${prog_name}/${prog_name}/${prog_name}.yml"
prog_path="/data/${prog_name}/${prog_name}/${prog_name}"
data_path="/data/${prog_name}/storage"
pidfile="/var/run/${prog_name}.pid"
prog_logs="/var/log/${prog_name}.log"
#启动项,监听本地9090端口,支持配置热加载
options="--config.file=${config_file} --storage.tsdb.path=${data_path}"
DESC="Prometheus Server"

# Check if requirements are met
[ -x "${prog_path}" ] || exit 1
 
RETVAL=0
 
start(){
  action $"Starting $DESC..." su -s /bin/sh -c "nohup $prog_path $options >> $prog_logs 2>&1 &" 2> /dev/null
  RETVAL=$?
  PID=$(pidof ${prog_path})
  [ ! -z "${PID}" ] && echo ${PID} > ${pidfile}
  echo
  [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog_name
  return $RETVAL
}
 
stop(){
  echo -n $"Shutting down $prog_name: "
  killproc -p ${pidfile}
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog_name
  return $RETVAL
}
 
restart() {
  stop
  start
}
 
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    restart
    ;;
  status)
    status $prog_path
    RETVAL=$?
    ;;
  *)
    echo $"Usage: $0 {start|stop|restart|status}"
    RETVAL=1
esac
 
exit $RETVAL

  打开http:127.0.0.1:9090,可见监控页面(用过open-falcon的朋友说说像不像/大雾):


prometheus_01.jpg

  点击上方Status --> targets可见各监控节点(现在只有自己)


prometheus_02.jpg
四、安装Prometheus被监控端:

  下载node端包(prometheus里跟k8s一样管被监控端叫node,zabbix里叫agentd)

wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
tar zxvf node_exporter-0.18.1.linux-amd64.tar.gz 
cd node_exporter-0.18.1.linux-amd64

  编辑systemctl配置文件(ExecStart行请根据个人情况修改

vim /etc/systemd/system/node_exporter.service

[Unit]
Description=node_exporter
After=network.target
[Service]
Type=simple
User=root
ExecStart=/data/prometheus_node/prometheus_node/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target

systemctl start node_exporter  #启动被监控端
systemctl status node_exporter  #查看被监控端状态

curl 127.0.0.1:9100/metrics  #返回的事监控数据
五、在Prometheus主节点配置被监控端:

  编辑主节点配置文件prometheus.yml,在最后添加下面的内容(IP请根据个人情况修改):

  - job_name: 'monitor_nodes'
    static_configs:
      - targets: ['10.1.129.121:9100']
        labels:
          instance: node01

systemctl restart prometheus  #重启主节点服务

  刷新页面即可查看到新节点:


prometheus_03.jpg
六、安装Grafana:

  默认的Prometheus的页面也不好看,好在可以使用Grafana给它一个炫技的页面。(Grafana官网:https://grafana.com,其实它也支持zabbix)
  安装Grafana:(https://grafana.com/grafana/download

wget  https://dl.grafana.com/oss/release/grafana-6.3.3-1.x86_64.rpm
sudo yum localinstall grafana-6.3.3-1.x86_64.rpm

systemctl start grafana-server  #启动granfana
systemctl status grafana-server  #查看granfana状态

  打开http://10.1.129.86:3000配置(默认用户密码为admin/admin,第一次登陆会提示你改密码
  选择Prometheus为数据源:

grafana_01.jpg

  按需配置,点击save:
grafana_002.jpg

  之后点击添加模板:

grafana_03.jpg

可在此页面找寻相应的模板然后下载json文件再倒入进去:https://grafana.com/grafana/dashboards

  譬如下载个这个 https://grafana.com/grafana/dashboards/8919,下面有说明要安装饼图的插件,按需操作即可,下载json倒入进去:

grafana_04.jpg

  最终效果:

grafana_05.jpg

  至此,一个Prometheus+Grafana的测试环境已经安装完毕,此篇分享结束
  关于Prometheus+Grafana更深入的研究敬请期待下篇,谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容