基础监控;服务器基础指标(cpu load、内存、用户线程数、端口连接数、存储)
语言相关比如jvm以及go、php等
基础中间件监控;redis、mysql、rabbitmq
应用监控;应用接口调用频率、应用接口响应时间、应用接口异常次数
根据监控指标可配置定制化的阈值告警
特点:
2、在多维度上灵活的查询语言(PromQl)
3、不依赖分布式存储(内置数据库),单主节点工作.
4、基于HHTP的pull方式采集时间序列数据
5、可以通过pushgateway进行时序列数据推送(pushing)
6、可以通过服务发现或者静态配置去获取要采集的目标服务器
数据采集:
通常有两种方式:
1、侵入式埋点监控(直接采集),通过在客户端集成,如果Kubernetes API直接通过引入Prometheus go client,提供/metrics接口查询kubernetes API各种指标;这一类Exporter直接内置了对Prometheus监控的支持,比如cAdvisor,Kubernetes,Etcd,Gokit等,都直接内置了用于向Prometheus暴露监控数据的端点。
HTTP返回Header和Body如上图所示,指标前面两行#是注释,标识指标的含义和类型。指标和指标的值通过空格分割,开发者通常不需要自己拼接这种个数的数据, Prometheus提供了各种语言的SDK支持。
主要组件:
prometheus server:主要获取和存储时间序列数据
exporters:主要是作为agent收集数据发送到prometheus server,不同的数据收集由不同的exporters实现,如监控主机有node-exporters,mysql有MySQL server exporters。
pushgateway:允许短暂和批处理的jobs推送它们的数据到prometheus;由于这类工作的存在时间不够长,所以需要他们主动将数据推送到pushgateway,然后由pushgateway将数据发送的prometheus。
架构:
prometheus直接或通过pushgateway抓取数据。(短周期任务数据)
将数据存储在本地,并对这些数据运行规则,以便从现有数据聚合和记录新时间序列,或者生成警报。
Prometheus targets:采集mysql数据,
1. 下载最新版的Prometheus 2.17.1
2. 直接解压并建立软连接
▼▼▼
tar -zxvf usr/local/src/prometheus-2.17.1.linux-amd64.tar.gz -C usr/local ln -s usr/local/src/prometheus-2.17.1.linux-amd64 usr/local/prometheus
3. 创建用于运行Prometheus的组和用户
4. 给Prometheus主目录赋用户Prometheus权限
chown -R prometheus:prometheus usr/local/prometheus/
5. 将Prometheus加入到系统管理程序中
▼▼▼
cat >/etc/systemd/system/prometheus.service<<EOF[Unit]Description=PrometheusDocumentation=https://prometheus.io/ After=network.target[Service] Type=simple User=prometheusExecStart=/usr/local/prometheus/prometheusconfig.file=/usr/local/prometheus/prometheus.ymlstorage.tsdb.path=/var/lib/prometheusRestart=on-failure[Install]WantedBy=multi-user.targetEOF
6.将客户端加入到Prometheus监控中
7. 启动Prometheus服务
查看日志
8. 验证prometheus的Web页面
浏览器输入http://192.168.**.***:9090/
下载并解压node_exporter
wget -P usr/local/srchttps://github.com/prometheus/node_exporter/releases/download/v1.0.0-rc.0/node_exporter-1.0.0-rc.0.linux-amd64.tar.gz
tar -zxvf /usr/local/src/node_exporter-1.0.0-rc.0.linux-amd64.tar.gz -C /usr/local
建立软连接
ln -s /usr/local/node_exporter-1.0.0-rc.0.linux-amd64/ /usr/local/node_exporter
添加用户名和用户组
group add prometheus
useradd -g prometheus -s /sbin/nologinprometheus
给node_exporter主目录赋权限
chown -R prometheus:prometheus /usr/local/node_exporter/
启动并设置开机自启
systemctl start node_exporter
systemctl enable node_exporter
检查node_exporter是否已启动node_exporter默认的端口是9100
systemctl status node_exporter
ss -ntl |grep 9100
直接关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
在prometheus的web上检查是否监控到了本机
global:
scrape_interval: 15s //全局配置,多久搜集一次evaluation_interval: 15s //全局配置,多久搜集一次rule_files: //规则文件# - "first.rules"# - "second.rules"scrape_configs: //搜集的配置- job_name: prometheus //监控的服务名称static_configs:- targets: ['localhost:9090'] //监控入口
多个地址依次添加即可。
下载Grafana的rpm包
wgethttps://dl.grafana.com/oss/release/grafana-6.7.2-1.x86_64.rpm
安装Grafana
yum install grafana-6.7.2-1.x86_64.rpm
启动grafana,并设置其开机自启
systemctl restart grafana-server
systemctl enable grafana-server
浏览器打开Grafana主页 http://192.168.48.150:3000/
配置数据源类型Prometheus,并设置相关参数
总结:上文提到 Prometheus 是一款基于时序数据库的监控系统,时序数据库常简写为 TSDB(Time Series Database)。很多流行的监控系统都在使用时序数据库来保存数据,这是因为时序数据库的特点和监控系统不谋而合。本次分享到此结束,如有错误之处,还请多多指出。
更多精彩干货分享
点击下方名片关注
IT那活儿