quick start
大约 3 分钟
建议使用 kube-prometheus,参考Prometheus Operator 与 kube-prometheus
介绍
- Prometheus Server:存储和抓取时间序列数据的主要服务器,且内置的Express Browser UI,通过这个UI可以直接通过PromQL实现数据的查询以及可视化。
- TSDB:指标是任何系统了解其健康状况和运行状态的关键方面。任何系统的设计都需要收集、存储和报告指标,以提供系统的脉搏。数据存储在一系列时间间隔内,需要一个高效的数据库来存储和检索这些数据。OpenTSDB 时序数据库就是这样一种可以满足这种需求的时序数据库。
- PromQL: Prometheus 以 PromQL 的形式定义了一种丰富的查询语言,用于从时序数据库中查询数据。
- Pushgateway:可用于支持短期工作,代理等
- 导出器:它们用于将指标数据提升到普罗米修斯服务器。
- Alertmanager:用于将通知发送到各种通信渠道,如 Slack、Email 以通知用户。
- Exporter: 将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus Server。分为两类,直接采集:这一类Exporter直接内置了对Prometheus监控的支持,比如cAdvisor,Kubernetes,Etcd,Gokit等。间接采集:间接采集,原有监控目标并不直接支持Prometheus,因此我们需要通过Prometheus提供的Client Library编写该监控目标的监控采集程序。例如: Mysql Exporter,JMX Exporter,Consul Exporter等。
server
https://prometheus.io/download/
解压
drwxr-xr-x 2 nginx docker 38 3月 11 23:21 console_libraries
drwxr-xr-x 2 nginx docker 173 3月 11 23:21 consoles
-rw-r--r-- 1 nginx docker 12K 3月 11 23:21 LICENSE
-rw-r--r-- 1 nginx docker 3.7K 3月 11 23:21 NOTICE
-rwxr-xr-x 1 nginx docker 128M 3月 11 23:10 prometheus
-rw-r--r-- 1 nginx docker 934 3月 11 23:21 prometheus.yml
-rwxr-xr-x 1 nginx docker 120M 3月 11 23:10 promtool
启动
默认加载当前路径下的 prometheus.yaml
,默认的存储路径为当前目录的data/
, 也可以通过--storage.tsdb.path="data/"
指定路径
./prometheus --storage.tsdb.path="data/"
node exporter
https://github.com/prometheus/node_exporter
tar -zxvf node_exporter-1.7.0.linux-amd64.tar.gz
cd node_exporter-1.7.0.linux-amd64
mv node_exporter /usr/local/bin/
启动脚本
cat > /etc/systemd/system/node_exporter.service << "EOF"
[Unit]
Description=node_export
Documentation=https://github.com/prometheus/node_exporter
[Service]
ExecStart=/opt/prometheus/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable node_exporter
systemctl start node_exporter
systemctl status node_exporter
访问9100端口
添加target
修改Prometheus配置文件,编辑prometheus.yml并在scrape_configs节点下添加内容
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
# 采集node exporter监控数据,这里定义的node 会在server中看到
- job_name: "node"
static_configs:
- targets:
- "192.168.1.32:9100"
图形化
数据源
选模版即可,也可以自己通过PromeQL语句,自行定义
https://grafana.com/grafana/dashboards/
云原生
下载
helm pull oci://registry-1.docker.io/bitnamicharts/prometheus --version 0.12.1
配置
global:
imageRegistry: ""
ingress:
apiVersion: ""
alertmanager:
enabled: true
replicaCount: 1
ingress:
enabled: true
hostname: alert.prometheus.zili.work
path: /
annotations:
kubernetes.io/ingress.class: nginx
service:
type: LoadBalancer
server:
replicaCount: 1
thanos:
create: false
ingress:
enabled: true
pathType: ImplementationSpecific
hostname: prometheus.zili.work
ingressClassName: "nginx"
path: /
annotations:
kubernetes.io/ingress.class: nginx
安装
helm upgrade --install prometheus . -f prometheus-values.yaml -n prometheus --create-namespace