那么在my-kube-prometheus的目录结构就是:jsonnetfile.json jsonnetfile.lock.json vendor

之后我们需要将git clone https://github.com/coreos/kube-prometheus.git克隆下来

prometheus 报错no space left on device prometheus-operator_软件测试

进入该目录/root/prometheus-operator/contrib/kube-prometheus 将build.sh和example.jsonnet 复制到

my-kube-prometheus的目录下

之后复制并修改example.jsonnet

prometheus 报错no space left on device prometheus-operator_prometheus_02

其中es-dashboard.json就是grafana的dashboard的json数据 我们只要将grafana的json数据通过import导入就可以了,所以我们要在此目录下新建一个json文件es-dashboard.json

json的数据通过grafana 临时生成复制出json:

prometheus 报错no space left on device prometheus-operator_prometheus_03

将以上json复制出来到es-dashboard.json,这样dashboard的数据就完成了

之后新加一个datasource用以支撑es-dashboard.json

修改grafana.libsonnet:

vim vendor/grafana/grafana.libsonnet

新增es的数据源:

{
name: ‘es’,
type: ‘elasticsearch’,
url: ‘http://elasticsearch-api.kube-system.svc.cluster.local:9200’,
access: ‘proxy’,
database: ‘[java-]YYYY.MM.DD’,
jsonData: {
esVersion: ‘56’,
interval: ‘Daily’ ,
maxConcurrentShardRequests: ‘2560’,
timeField: “@timestamp”,
},

prometheus 报错no space left on device prometheus-operator_json_04

之后通过./build.sh example.jsonnet 直接build,如果成功的话会生成manifests文件,并且该文件里会存在多个yaml文件:

prometheus 报错no space left on device prometheus-operator_json_05

如果之前已经按照官网的部署了那么我们只要replace grafana-dashboardDatasources.yaml,grafana-dashboardDefinitions.yaml 并且重启pod就可以了

效果图:

prometheus 报错no space left on device prometheus-operator_prometheus_06

prometheus 报错no space left on device prometheus-operator_json_07

之后无论怎么重启配置将不会丢失

同样邮件也是类似,我这里直接贴我的配置

邮件报警配置路径在:/root/my-kube-prometheus/vendor/kube-prometheus/alertmanager

修改alertmanager.libsonnet:

_config+:: {
namespace: ‘default’,
versions+:: {
alertmanager: ‘v0.16.1’,
},
imageRepos+:: {
alertmanager: ‘quay.io/prometheus/alertmanager’,
},
alertmanager+:: {
name: $._config.alertmanager.name,
config: {
global: {
resolve_timeout: ‘5m’,
smtp_smarthost: ‘smtp.mxhichina.com:465’,
smtp_from: ‘*****************’,
smtp_auth_username: ‘******************’,
smtp_auth_password: '**********************,
smtp_require_tls: false,
},
route: {
group_by: [‘job’],