docker基础
docker run -it --name centos -v $HOME:/tmp -p 8080:8080 centos
docker inspect container #查看已启动容器启动命令
docker container prune #删除退出的容器
docker ps -a --no-trunc #查看容器启动参数
反查dockerfile
方法一:
docker history --format {{.CreatedBy}} --no-trunc=true 0e0218889c33|sed "s?/bin/sh\ -c\ \#(nop)\ ??g"|sed "s?/bin/sh\ -c?RUN?g" | tac
方法二:
apt-get install npm #管理前端包工具
npm install npx
npx dockerfile-from-image node:8 > dockerfile #解析dockerfile
#使用宿主机网络,并将容器名称修改为prometheus,-d后台运行
docker run -d -p 9090:9090 --name prometheus --net=host prom/prometheus
#将容器里文件拷贝出来到root目录
docker cp prometheus:/etc/prometheus/prometheus.yml /root/
#修改后挂载加进去
docker run -d -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-p 9090:9090 --name prometheus --net=host prom/prometheus
docker logs contianid #查看日志
docker search java #从docker hub中搜索java镜像,可以查看版本
容器端口
9100 node-export
9090 prometheus
3000 grafana
启动
- 启动node-exporter
docker run -d --name=node-exporter -p 9100:9100 prom/node-exporter
- 启动grafana
密码:admin,admin;配置文件/etc/grafana
docker run -d --name=grafana -p 3000:3000 grafana/grafana
- 启动prom
#将容器里文件拷贝出来到root目录
docker cp prometheus:/etc/prometheus/prometheus.yml /root/
#修改后挂载加进去
docker run -d -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-p 9090:9090 --name prometheus --net=host prom/prometheus
docker 镜像自启动
- 在运行docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启:
docker run --restart=always
如果已经启动了则可以使用如下命令:
docker update --restart=always <CONTAINER ID>
配置文件
prom配置
配置帮助
global:
#默认情况下抓取目标的频率.
[ scrape_interval: <duration> | default = 1m ]
# 抓取超时时间.
[ scrape_timeout: <duration> | default = 10s ]
# 评估规则的频率.
[ evaluation_interval: <duration> | default = 1m ]
# 与外部系统通信时添加到任何时间序列或警报的标签
#(联合,远程存储,Alertma# nager).
external_labels:
[ <labelname>: <labelvalue> ... ]
# 规则文件指定了一个globs列表.
# 从所有匹配的文件中读取规则和警报.
rule_files:
[ - <filepath_glob> ... ]
# 抓取配置列表.
scrape_configs:
[ - <scrape_config> ... ]
# 警报指定与Alertmanager相关的设置.
alerting:
alert_relabel_configs:
[ - <relabel_config> ... ]
alertmanagers:
[ - <alertmanager_config> ... ]
# 与远程写入功能相关的设置.
remote_write:
[ - <remote_write> ... ]
# 与远程读取功能相关的设置.
remote_read:
[ - <remote_read> ... ]
具体配置
root@ubuntu:~# cat 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.
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
- job_name: prometheus
static_configs:
- targets: ['192.168.191.128:9090']
labels:
instance: prometheus
- job_name: 'consul' #prometheus与consul配置段
consul_sd_configs:
- server: '192.168.191.128:8500'
services: [ ]
- job_name: node-exporter
static_configs:
- targets: ['192.168.191.128:9100']
labels:
instance: node-exporter
动态配置file_sd_config:
- 修改/usr/local/prometheus/*.json增加删除,支持动态更新
在prometheus.yaml配置文件最后增加
- job_name: 'node-discorvery' #发现规则名称
file_sd_configs: #选择适配器
- files:
- /usr/local/prometheus/*.json #匹配文件
在对应目录/usr/local/prometheus/*.json添加,容器启动时需要挂载进去
[
{
"targets": [ "10.10.2.99:9100"],
"labels": {
"job": "linux-bj",
"idc": "bj-jiuxianqiao"
}
},
{
"targets": [ "10.10.2.62:9100","10.10.1.35:9100"],
"labels": {
"job": "linux-gx",
"idc": "gz-daxuecheng"
}
}
]
rule_files:配置
- 配置告警规则,在prometheus.yml中指定规则文件目录
- prometheus根据这些规则信息,会推送报警信息到alertmanager中。
alertmanager_config:配置
- 指定Prometheus服务器向其发送警报的Alertmanager实例
- 提供参数以配置如何与这些Alertmanagers进行通信。
- Alertmanagers支持静态指定或者动态发现指定
- relabel_configs允许从发现的实体中选择Alertmanagers,并对使用的API路径提供高级修改,该路径通过__alerts_path__标签公开
# Alertmanager configuration #告警配置
alerting:
alertmanagers:
- static_configs: #告警规则,也可以基于动态的方式进行告警。
- targets:
# - alertmanager:9093
remote_write
指定后端的存储的写入api地址。
remote_read
指定后端的存储的读取api地址。
relabel_config
- 重新标记是一种强大的工具,可以在抓取目标之前动态重写目标的标签集。 每个抓取配置可以配置多个重新标记步骤。 它们按照它们在配置文件中的出现顺序应用于每个目标的标签集。标签默认在prometheus web console可以看到相关的标签:
使用
promtheus
node_cpu_seconds_total{cpu="0"}
参考博客
- alinode 官方镜像分析并提取 Dockerfile | Web技术试炼地
- hub.docker.com针对docker中的grafana,提供的官方帮助文档