diff --git a/alertmanager/alertmanager-configmap.yaml b/alertmanager/alertmanager-configmap.yaml new file mode 100644 index 0000000..b958d4f --- /dev/null +++ b/alertmanager/alertmanager-configmap.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: alertmanager-config + namespace: default +data: + alertmanager.yml: | + route: + group_by: ['alertname'] + group_wait: 10s + group_interval: 10s + repeat_interval: 1h + receiver: 'default-receiver' + + receivers: + - name: 'default-receiver' diff --git a/alertmanager/alertmanager-deployment.yaml b/alertmanager/alertmanager-deployment.yaml new file mode 100644 index 0000000..055bdb1 --- /dev/null +++ b/alertmanager/alertmanager-deployment.yaml @@ -0,0 +1,51 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: alertmanager + namespace: default + labels: + app: alertmanager +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app: alertmanager + template: + metadata: + labels: + app: alertmanager + spec: + nodeSelector: + node-role.kubernetes.io/control-plane: "true" + containers: + - name: alertmanager + image: registry.t-aaron.com/prom/alertmanager:latest + ports: + - containerPort: 9093 + args: + - "--config.file=/etc/alertmanager/alertmanager.yml" + - "--storage.path=/alertmanager/" + - "--web.external-url=http://alertmanager.example.com" + - "--web.route-prefix=/" + resources: + requests: + memory: "256Mi" + cpu: "250m" + limits: + memory: "512Mi" + cpu: "500m" + volumeMounts: + - name: alertmanager-config + mountPath: /etc/alertmanager/ + - name: alertmanager-storage + mountPath: /alertmanager/ + volumes: + - name: alertmanager-config + configMap: + name: alertmanager-config + - name: alertmanager-storage + hostPath: + path: /opt/alertmanager/data + type: DirectoryOrCreate diff --git a/alertmanager/alertmanager-ingress.yaml b/alertmanager/alertmanager-ingress.yaml new file mode 100644 index 0000000..07de315 --- /dev/null +++ b/alertmanager/alertmanager-ingress.yaml @@ -0,0 +1,24 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: alertmanager-ingress + namespace: default + annotations: + traefik.ingress.kubernetes.io/router.entrypoints: web,websecure + traefik.ingress.kubernetes.io/router.tls: "true" +spec: + tls: + - hosts: + - alertmanager-ops.t-aaron.com + secretName: tls + rules: + - host: alertmanager-ops.t-aaron.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: alertmanager-service + port: + number: 9093 diff --git a/alertmanager/alertmanager-service.yaml b/alertmanager/alertmanager-service.yaml new file mode 100644 index 0000000..cd2b731 --- /dev/null +++ b/alertmanager/alertmanager-service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + name: alertmanager-service + namespace: default + labels: + app: alertmanager +spec: + selector: + app: alertmanager + ports: + - name: http + port: 9093 + targetPort: 9093 + protocol: TCP + type: ClusterIP diff --git a/alertmanager/install-alertmanager.sh b/alertmanager/install-alertmanager.sh new file mode 100755 index 0000000..4abd345 --- /dev/null +++ b/alertmanager/install-alertmanager.sh @@ -0,0 +1,22 @@ +#!/bin/bash +set -euo pipefail + +echo "开始安装 Alertmanager..." + +# 创建数据目录并设置权限 +sudo mkdir -p /opt/alertmanager/data +sudo chown -R 65534:65534 /opt/alertmanager/data + +# 应用配置文件 +kubectl apply -f alertmanager-configmap.yaml +kubectl apply -f alertmanager-deployment.yaml +kubectl apply -f alertmanager-service.yaml +kubectl apply -f alertmanager-ingress.yaml + +echo "等待 Alertmanager 启动..." +kubectl wait --for=condition=available --timeout=300s deployment/alertmanager + +echo "Alertmanager 安装完成!" +echo "查看状态: kubectl get pods -l app=alertmanager" +echo "查看服务: kubectl get svc alertmanager-service" +echo "访问地址: https://alertmanager.example.com" diff --git a/grafana/install-grafana.sh b/grafana/install-grafana.sh index ac71ef8..b35f8ef 100644 --- a/grafana/install-grafana.sh +++ b/grafana/install-grafana.sh @@ -15,4 +15,5 @@ kubectl wait --for=condition=available --timeout=300s deployment/grafana echo "Grafana 安装完成!" echo "查看状态: kubectl get pods -l app=grafana" - +默认用户名:admin +默认密码:admin123