热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PrometheusGrafana实现对LinuxKubernetesNginx的监控系统

2019独角兽企业重金招聘Python工程师标准用Prometheus配合Grafana实现多用途的服务监控系统。一.Prometheus简介Prometheus是一个开源监

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

用Prometheus配合Grafana实现多用途的服务监控系统。

一. Prometheus简介 

Prometheus是一个开源监控系统,它前身是SoundCloud的警告工具包。从2012年开始,许多公司和组织开始使用Prometheus。该项目的开发人员和用户社区非常活跃,越来越多的开发人员和用户参与到该项目中。

具体介绍及架构信息参考Prometheus官网:https://prometheus.io

二. Grafana介绍

grafana是用于可视化大型测量数据的开源程序,他提供了强大和优雅的方式去创建、共享、浏览数据。dashboard中显示了你不同metric数据源中的数据。

具体参考Grafana官网:https://grafana.com

 

三.实现实例

1.监控Openresty(Nginx)

1.1下载安装Openresty及nginx-module-vts监控模块

#安装编译环境
yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel#下载openresty和nginx-module-vts监控模块
cd /data/server
wget https://openresty.org/download/openresty-1.13.6.2.tar.gz
git clone https://github.com/vozlt/nginx-module-vts.git#解压openresty
tar -zxf openresty-1.13.6.2.tar.gz#添加模块编译
./configure --add-module=/data/server/nginx-module-vts
make && make install

1.2 修改Openresty配置

不指定安装路径的话Openresty默认安装在/usr/local/openresty

进入目录/usr/local/openresty/nginx/conf 修改配置文件

cd /usr/local/openresty/nginx/conf
#先备份
cp nginx.conf nginx.conf.bak
vim nginx.conf

变更配置如下:

主要两个配置,1.指定时间同步,输出日志格式。2.添加http访问路由

user nobody;
worker_processes 1;events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;vhost_traffic_status_zone;log_format main '{ "@timestamp": "$time_local", ''"@fields": { ''"uri":"$request_uri",''"url":"$uri",''"upstream_addr":"$upstream_addr",''"remote_addr": "$remote_addr", ''"remote_user": "$remote_user", ''"body_bytes_sent": "$body_bytes_sent", ''"host":"$host",''"server_addr":"$server_addr",''"request_time": "$request_time", ''"request_time":"$request_time",''"status":"$status",''"request": "$request", ''"request_method": "$request_method", ''"size":$body_bytes_sent,''"upstream_time":"$upstream_response_time"''"http_referrer": "$http_referer", ''"body_bytes_sent":"$body_bytes_sent", ''"http_x_forwarded_for": "$http_x_forwarded_for", ''"http_user_agent": "$http_user_agent" } }';sendfile on;keepalive_timeout 65;gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.0;gzip_comp_level 3;gzip_types text/plain text/css application/x-Javascript text/xml application/xml application/xml+rss text/Javascript application/json application/Javascript;gzip_vary on;proxy_http_version 1.1;proxy_set_header Connection "";server {listen 80;server_name localhost;location / {root html;index index.html index.htm;}location /status {vhost_traffic_status_display;vhost_traffic_status_display_format html;}}
}

测试配置文件是否有误 

./sbin/nginx -t

通过测试后启动Openresty

./sbin/nginx

访问地址http://[ip:port]/status

可以看到如下信息:

1.3配置监控转发模块

这里先使用一个Github上已经开发好的第三方监控模块nginx-vts-exporter

下载地址:https://github.com/hnlq715/nginx-vts-exporter/releases

cd /data/server
wget https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
tar -zxf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
mv nginx-vts-exporter-0.10.3.linux-amd64 nginx-vts-exporter

把nginx-vts-exporter 写成服务(以Centos7.X为例):

在/usr/lib/systemd/system/下创建启动文件

vim /usr/lib/systemd/system/nginx-vts-exporter.service

配置启动可执行文件和参数

[Unit]
Description=nginx-vts-exporter
After=network.target[Service]
Type=simple
ExecStart=/data/server/nginx-vts-exporter/nginx-vts-exporter -nginx.scrape_uri=http://127.0.0.1/status/format/json
Restart=on-failure[Install]
WantedBy=multi-user.target

生效配置文件并启动nginx-vts-exporter

#启动服务,nginx-vts-exporter 默认监听端口为 9913
systemctl enable nginx-vts-exporter
systemctl start nginx-vts-exporter
systemctl status nginx-vts-exporter

1.4 配置Prometheus

配置文件路径:/data/server/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=` to any timeseries scraped from this config.- job_name: 'prometheus'# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ['localhost:9090']- job_name: 'openresty-master'static_configs:- targets: ['localhost:9913']

配置服务来启动

vim /usr/lib/systemd/system/prometheus.service

写入如下内容:

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

启动prometheus服务

#启动prometheus服务
systemctl enable prometheus
systemctl start prometheus
systemctl status prometheus

1.5 安装配置Grafana

下载地址:https://grafana.com/grafana/download?platform=linux

按上述页面说明安装

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

我比较习惯先修改一下登录密码(默认账号密码 admin admin)

先看一下安装位置

whereis grafana

发现安装在/etc/grafana 去/etc/grafana下编辑grafana.ini文件

修改[security]节点下的password为你期望的值

新版本 安装后输入admin默认密码第一次进入会提示修改密码

启动Grafana服务并查看状态

systemctl start grafana-server
systemctl status grafana-server

访问页面http://[ip]:3000

进入后点击设置data sources  add data sources

选择Prometheus填写如下信息

使用Prometheus 2.0 Stats作为Dashboard效果如下:

 

2.监控Linux主机

2.1监控代理Node exporter 安装

首先在prometheus官网下载 node_exporter。官网地址为: https://prometheus.io/docs/introduction/overview/

#下载 解压
wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
tar -zxf node_exporter-0.17.0.linux-amd64.tar.gz
mv node_exporter-0.17.0.linux-amd64.tar.gz node_exporter
cd node_exporter
#后台启动
nohup ./node_exporter &

服务模式启动:

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

 

*查询 node_exporter进程

#默认监听9100
netstat -ntlp|grep 9100
netstat -anp | grep 9100

2.2 prometheus添加代理配置

vim prometheus.yml

添加如下配置:

- job_name: 'tx-server'static_configs:- targets: ['94.191.16.32:9100']

重启prometheus

systemctl restart prometheus

 

3.监控Kubernetes(k8s)

待补充...

 

 

附录:

1.Grafana安装插件

grafana-cli plugins install [michaeldmoore-annunciator-panel]
service grafana-server restart

2.command

#启动nginx服务
systemctl start nginx.service
#设置开机自启动
systemctl enable nginx.service
#停止开机自启动
systemctl disable nginx.service
#查看服务当前状态
systemctl status nginx.service
#重新启动服务
systemctl restart nginx.service
#查看所有已启动的服务
systemctl list-units --type=service

 


转:https://my.oschina.net/mrpei123/blog/3035664



推荐阅读
  • 在Ubuntu 18.04上使用Nginx搭建RTMP流媒体服务器
    本文详细介绍了如何在Ubuntu 18.04上使用Nginx和nginx-rtmp-module模块搭建RTMP流媒体服务器,包括环境搭建、配置文件修改和推流拉流操作。适用于需要搭建流媒体服务器的技术人员。 ... [详细]
  • 【小白学习C++ 教程】二十三、如何安装和使用 C++ 标准库
    【小白学习C++ 教程】二十三、如何安装和使用 C++ 标准库 ... [详细]
  • 本文详细记录了 MIT 6.824 课程中 MapReduce 实验的开发过程,包括环境搭建、实验步骤和具体实现方法。 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • Git命令基础应用指南
    本指南详细介绍了Git命令的基础应用,包括如何使用`git clone`从远程服务器克隆仓库(例如:`git clone [url/path/repository]`)以及如何克隆本地仓库(例如:`git clone [local/path/repository]`)。此外,还提供了常见的Git操作技巧,帮助开发者高效管理代码版本。 ... [详细]
  • Python正则表达式(Python RegEx)
    Python正则表达式快速参考常用函数:re.match():从字符串的起始位置匹配一个正则表达式。re.search():扫描整个字符串并返回第一个成功的匹配。re.s ... [详细]
  • 本文介绍了GitHub上的一些Python开源项目,特别是IM(即时通讯)技术的应用。通过Sealtalk项目,探讨了如何利用开源SDK提升开发效率。 ... [详细]
  • 尽管Medium是一个优秀的发布平台,但在其之外拥有自己的博客仍然非常重要。这不仅提供了另一个与读者互动的渠道,还能确保您的内容安全。本文将介绍如何使用Bash脚本将Medium文章迁移到个人博客。 ... [详细]
  • Django与Python及其他Web框架的对比
    本文详细介绍了Django与其他Python Web框架(如Flask和Tornado)的区别,并探讨了Django的基本使用方法及与其他语言(如PHP)的比较。 ... [详细]
  • pypy 真的能让 Python 比 C 还快么?
    作者:肖恩顿来源:游戏不存在最近“pypy为什么能让python比c还快”刷屏了,原文讲的内容偏理论,干货比较少。我们可以再深入一点点,了解pypy的真相。正式开始之前,多唠叨两句 ... [详细]
  • 本文将详细介绍如何在Android Studio中导入和编译OSChina Android 2.4版本的源码。包括所需软件、下载地址以及一些注意事项。 ... [详细]
  • 本文将详细介绍如何注册码云账号、配置SSH公钥、安装必要的开发工具,并逐步讲解如何下载、编译 HarmonyOS 2.0 源码。通过本文,您将能够顺利完成 HarmonyOS 2.0 的环境搭建和源码编译。 ... [详细]
  • 解决问题:1、批量读取点云las数据2、点云数据读与写出3、csf滤波分类参考:https:github.comsuyunzzzCSF论文题目ÿ ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
author-avatar
悸末丶C彼岸花开
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有