来自 科技 2020-04-08 15:02 的文章
如何打造漂亮的监控系统
监控系统在一家公司是尤为重要的,它能帮你在7x24小时的实时的关注线上服务器的运行情况,当有问题的时候第一时间通知给相应的人员今天说下我们的主角就是我们prometheus+grafana+node_exporter
Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。
Prometheus作为TSDB具有以下特点:
具有由指标名称和键/值对标识的时间序列数据的多维度数据模型。PromQL灵活的查询语言。不依赖分布式存储,单个服务器节点是自主的。通过基于HTTP的pull方式采集时序数据。可以通过中间网关(Pushgateway)进行时序列数据推送。通过服务发现或者静态配置来发现目标服务对象。支持多种多样的图表和界面展示,比如Grafana等。
Prometheus的安装下载二进制安装包wget https://github.com/prometheus/prometheus/releases/download/v2.16.0/prometheus-2.16.0.linux-amd64.tar.gz
解压prometheus压缩包$ tar zxvf prometheus-2.16.0.linux-amd64.tar.gz -C /usr/local/prometheus
添加prometheus 用户$ groupadd prometheus
$ useradd -g prometheus -s /sbin/nologin prometheus
创建prometheus 启动文件cat > /usr/lib/systemd/system/prometheus.service << EOF
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
启动服务并设为开机启动$ systemctl start prometheus
$ systemctl enable prometheus
以下为一个简单的prometheus.yml示例:# Prometheus全局配置项
global:
scrape_interval: 15s # 设定抓取数据的周期,默认为1min
evaluation_interval: 15s # 设定更新rules文件的周期,默认为1min
scrape_timeout: 15s # 设定抓取数据的超时时间,默认为10s
external_labels: # 额外的属性,会添加到拉取得数据并存到数据库中
monitor: 'codelab_monitor'
# Alertmanager配置
alerting:
alertmanagers:
- static_configs:
- targets: ["localhost:9093"] # 设定alertmanager和prometheus交互的接口,即alertmanager监听的ip地址和端口
# rule配置,首次读取默认加载,之后根据evaluation_interval设定的周期加载
rule_files:
- "alertmanager_rules.yml"
- "prometheus_rules.yml"
# scrape配置
scrape_configs:
- job_name: 'prometheus' # job_name默认写入timeseries的labels中,可以用于查询使用
scrape_interval: 15s # 抓取周期,默认采用global配置
static_configs: # 静态配置
- targets: ['localhost:9090'] # prometheus所要抓取数据的地址,即instance实例项
- job_name: 'node_exporter' # job_name默认写入timeseries的labels中,可以用于查询使用
scrape_interval: 15s # 抓取周期,默认采用global配置
static_configs: # 静态配置
- targets: ['localhost:9100'] # prometheus所要抓取数据的地址,即instance实例项
安装 node_exporterRHEL/CentOS$ curl -Lo /etc/yum.repos.d/_copr_ibotty-prometheus-exporters.repo https://copr.fedorainfracloud.org/coprs/ibotty/prometheus-exporters/repo/epel-7/ibotty-prometheus-exporters-epel-7.repo
$ yum install node_exporter
$ systemctl start node_exporter
配置grafana
1.添加 prometheus 数据源

导入node_exporter 模板 接下来就能看到实际的效果了,今天只给大家简单的介绍一下,接下来会为大家详细的介绍,prometheus 的语法 自动发现 告警 以及怎么实现数据的长时间存储。