Promethus部署与简介
目录
Promethus(普罗米修斯)
Prometheus(由go语言(golang)开发)是一套开源的监控&报警&时间序列数据库的组合。适合监控docker容器。因为kubernetes(俗称k8s)的流行带动了prometheus的发展。
时间序列数据
时间序列数据(TimeSeries Data) : 按照时间顺序记录系统、设备状态变化的数据被称为时序数据。
特点
-
性能好
关系型数据库对于大规模数据的处理性能糟糕。NOSQL可以比较好的处理大规模数据,让依然比不上时间序列数据库。
-
成本低
高效的压缩算法,节省存储空间,有效降低IO
Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5byte左右空间,上百万条时间序列,30秒间隔,保留60天,大概花了200多G(来自官方数据)
特征
- 多维度数据模型
- 灵活的查询语言
- 不依赖分布式存储,单个服务器节点是自主的
- 以HTTP方式,通过pull模型拉去时间序列数据
- 也可以通过中间网关支持push模型
- 通过服务发现或者静态配置,来发现目标服务对象
- 支持多种多样的图表和界面展示
部署promethus
1、下载二进制包
从官网下载二进制包,部署到服务器上直接使用,无需编译
[root@promethus ~]# wget https://github.com/prometheus/prometheus/releases/download/v2.25.0/prometheus-2.25.0.linux-amd64.tar.gz
[root@promethus ~]# tar -xf prometheus-2.25.0.linux-amd64.tar.gz
[root@promethus ~]# ll
total 64732
-rw-------. 1 root root 1426 Nov 17 16:08 anaconda-ks.cfg
drwxr-xr-x 4 3434 3434 132 Feb 18 00:13 prometheus-2.25.0.linux-amd64
-rw-r--r-- 1 root root 66280932 Feb 18 00:16 prometheus-2.25.0.linux-amd64.tar.gz
[root@promethus ~]# mv prometheus-2.25.0.linux-amd64 /usr/local/promethus-2-25.0
2、做软连接
[root@promethus local]# ln -s /usr/local/promethus-2-25.0 /usr/local/promethus
3、添加环境变量
[root@promethus ~]# vim /etc/profile
... ...
export PROMETHUS_HOME=/usr/local/promethus
PATH=$PATH:$PROMETHUS_HOME
export PATH
source /etc/profile
4、配置文件
[root@promethus promethus]# cat /usr/local/promethus/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']
5、启动
[root@promethus promethus]# prometheus
--config.file=#[指定配置文件]
--web.listen-address="0.0.0.0:9090"#[默认监听端口]
[root@promethus promethus]# /usr/local/promethus/prometheus --config.file="/usr/local/promethus/prometheus.yml"
6、浏览器访问
promethus监控其他服务器
1、下载监控指标器
#到被监控服务器上,下载监控指标器
[root@k8s-master-01 ~]# cd /opt
[root@k8s-master-01 opt]# wget https://github.com/prometheus/node_exporter/releases/download/v1.1.1/node_exporter-1.1.1.linux-amd64.tar.gz
2、部署监控指标器
[root@k8s-master-01 opt]# tar -xf node_exporter-1.1.1.linux-amd64.tar.gz -C /usr/local/
[root@k8s-master-01 opt]# cd /usr/local/
3、执行
[root@k8s-master-01 ~]# nohup /usr/local/node_exporter-1.1.1.linux-amd64/node_exporter &
4、promethus监控端修改配置文件
[root@promethus promethus]# vim /usr/local/promethus/prometheus.yml
#添加以下内容
- job_name: "k8s-master-01" #给监控急服务器命名
static_configs:
- targets: ['192.168.15.31:9100'] #设置监控的IP与端口
- targets: #[可以添加多个被监控端]
5、浏览器访问
promethus监控mysql
1、创建数据库
此处用k8s创建
kind: Deployment
apiVersion: apps/v1
metadata:
name: mysql
spec:
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.7
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
---
kind: Service
apiVersion: v1
metadata:
name: mysql
spec:
ports:
- port: 3306
targetPort: 3306
nodePort: 30306
selector:
app: mysql
type: NodePort
2、下载监控Mysql的组件
[root@k8s-master-01 opt]# tar -xf mysqld_exporter-0.12.1.linux-amd64.tar.gz
[root@k8s-master-01 opt]# mv mysqld_exporter-0.12.1.linux-amd64 mysqld_exporter-0.12.1
[root@k8s-master-01 opt]# mv mysqld_exporter-0.12.1 /usr/local/
[root@k8s-master-01 ~]# ll /usr/local/mysqld_exporter-0.12.1/
total 14484
-rw-r--r-- 1 3434 3434 11325 Jul 29 2019 LICENSE
-rwxr-xr-x 1 3434 3434 14813452 Jul 29 2019 mysqld_exporter
-rw-r--r-- 1 3434 3434 65 Jul 29 2019 NOTICE
3、mysql新建监控用户
[root@k8s-master-01 ~]# kubectl exec -it mysql-56f8cdb464-hzsdb -- bash
root@mysql-56f8cdb464-hzsdb:/# mysql -p
Enter password:123456
mysql> grant select,replication client,process ON *.* to 'mysql_monitor'@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
4、编写配置文件
[root@k8s-master-01 mysqld_exporter-0.12.1]# pwd
/usr/local/mysqld_exporter-0.12.1
[root@k8s-master-01 mysqld_exporter-0.12.1]# vim .my.cnf
[client]
user=mysql_monitor
password=123456
port=30306
5、开始监控
[root@k8s-master-01 mysqld_exporter-0.12.1]# ./mysqld_exporter --config.my-cnf=".my.cnf"
INFO[0000] Starting mysqld_exporter (version=0.12.1, branch=HEAD, revision=48667bf7c3b438b5e93b259f3d17b70a7c9aff96) source="mysqld_exporter.go:257"
INFO[0000] Build context (go=go1.12.7, user=root@0b3e56a7bc0a, date=20190729-12:35:58) source="mysqld_exporter.go:258"
INFO[0000] Enabled scrapers: source="mysqld_exporter.go:269"
INFO[0000] --collect.global_status source="mysqld_exporter.go:273"
INFO[0000] --collect.global_variables source="mysqld_exporter.go:273"
INFO[0000] --collect.slave_status source="mysqld_exporter.go:273"
INFO[0000] --collect.info_schema.innodb_cmp source="mysqld_exporter.go:273"
INFO[0000] --collect.info_schema.innodb_cmpmem source="mysqld_exporter.go:273"
INFO[0000] --collect.info_schema.query_response_time source="mysqld_exporter.go:273"
INFO[0000] Listening on :9104
6、修改promethus服务器的配置文件
[root@promethus promethus]# vim prometheus.yml
... ...
- job_name: 'mysql'
static_configs:
- targets: ['192.168.15.31:9104']